Tests started on Thu Nov 28 11:27:30 AM PST 2024 and finished on Thu Nov 28 11:29:00 AM PST 2024
Start running snapdev tests v1.1.40 on Thu Nov 28 11:28:09 AM PST 2024 snapdev v1.1.40 [958726]:unittest: seed is 1732822089 source directory: "/home/snapwebsites/snapcpp/contrib/snapdev" binary directory: "/home/snapwebsites/snapcpp/BUILD/Debug/contrib/snapdev/coverage/BUILD" dist directory: "/home/snapwebsites/snapcpp/BUILD/Debug/dist" temporary directory: "/home/snapwebsites/snapcpp/BUILD/Debug/contrib/snapdev/tmp" Randomness seeded to: 714801122 SECTION: as_root: failing switch to root user SECTION: as_root: working to (not) switch to ourself SECTION: drop root privileges SECTION: safe_assert: make sure assert can pass SECTION: brs: push/restore char SECTION: brs: push/restore char SECTION: brs: push/restore signed char SECTION: brs: push/restore unsigned char SECTION: brs: push/restore shorts (16 bits) SECTION: brs: push/restore ints (32 bits) SECTION: brs: push/restore ints (64 bits) SECTION: brs: push/restore floats SECTION: brs: push/restore string SECTION: brs: push/restore array (varying name) SECTION: brs: push/restore array (same name) SECTION: brs: push/restore map of strings SECTION: brs: push/restore map of struct SECTION: brs: push/restore recursive SECTION: brs: name missing SECTION: brs: name too long SECTION: brs: hunk too long SECTION: brs: empty input SECTION: brs: magic unrecognized SECTION: brs: unknown hunk type SECTION: brs: field missing name SECTION: brs: field data mismatch reading SECTION: brs: missing array index SECTION: brs: missing array field name SECTION: brs: missing map sub-name length SECTION: brs: map sub-name length is zero SECTION: brs: missing map sub-name SECTION: brs: missing map name SECTION: callback manager: member function callback SECTION: callback manager: direct function callback with 3 parameters SECTION: callback manager: direct function callback with no parameters SECTION: callback manager: std::bind() function SECTION: chownnm: change group SECTION: chownnm: change owner warning: skipping change owner test because your are not root and/or the "snapwebsites" user doesn't exist. SECTION: file_contents: write -> read contents SECTION: file_contents: write temporary -> read fails SECTION: file_contents: empty filename is not accepted SECTION: file_contents: read from /proc/self/cmd SECTION: pathinfo: replace existing suffix SECTION: hexadecimal_string: verify hexadecimal digit detection SECTION: hexadecimal_string: all 16 bit values SECTION: hexadecimal_string: hex_to_bin & bin_to_hex, large (and small) random numbers SECTION: hexadecimal_string: bin_to_hex with empty SECTION: hexadecimal_string: large width for int_to_hex() SECTION: hexadecimal_string: invalid length SECTION: hexadecimal_string: invalid digits SECTION: hexadecimal_string: integer too small (overflow) SECTION: ostream_int128: small numbers (-10 to +10) SECTION: ostream_int128: positive numbers SECTION: ostream_int128: negative numbers SECTION: ostream_int128: most positive number SECTION: ostream_int128: most negative number SECTION: int128_literal: zero and powers of two SECTION: uint128_literal: unsigned zero and powers of two SECTION: [u]int128_literal: large numbers in decimal, hexadecimal, octal and binary SECTION: int128: 2^n with n from 0 to 127 SECTION: uint128: 2^n with n from 0 to 127 SECTION: [u]int128: n^0 where n is a random number SECTION: int128: 1^n with n < 0 SECTION: int128: -1^n with n < 0 SECTION: isatty: stringstream SECTION: isatty: cout/cerr/clog/cin SECTION: isatty: /dev/tty SECTION: join_string_view: join strings at compile time SECTION: join_strings: join strings at runtime with empty string in between SECTION: join_strings: join strings at runtime with commas SECTION: join_strings: "join" one string with commas SECTION: join_strings: nothing to join with commas SECTION: lockfile: simple lock/unlock test SECTION: lockfile: test a lock with a thread SECTION: lockfile: verify the automatic unlock with a thread SECTION: lockfile: a shared lock does not prevent the thread from finishing SECTION: lockfile: test a try_lock() with a thread SECTION: lockfile: test a shared lock and try_lock() with a thread SECTION: lockfile: test an exclusive lock and a shared try_lock() lock with a thread SECTION: lockfile: test a shared lock and an exclusive try_lock() lock with a thread SECTION: lockfile: test copying a lockfile SECTION: lockfile_error: no path generates an error trying to create the lock file SECTION: lockfd: test exclusive lock with -1, nothing happens SECTION: lockfd: test shared lock with -1, nothing happens SECTION: lockfd: test shared lock with actual file SECTION: log2: zero SECTION: log2: powers of 2 SECTION: log2: random numbers SECTION: matrix: empty SECTION: matrix: 2x2 SECTION: matrix: 3x3 SECTION: matrix: 4x4 SECTION: matrix: a+=SECTION: matrix: b=a+ SECTION: matrix: c=a+b SECTION: matrix: a+=b SECTION: matrix: b=a- SECTION: matrix: a-= SECTION: matrix: c=a-b SECTION: matrix: a-=b SECTION: matrix: minor SECTION: matrix: transpose 4x4 SECTION: matrix: transpose 6x2 SECTION: matrix: adjugate 2x2 SECTION: matrix: adjugate 3x3 SECTION: matrix: 2x2 determinant SECTION: matrix: 3x3 determinant with specific data SECTION: matrix: 3x3 determinant with random data SECTION: matrix: b=a* SECTION: matrix: a*= SECTION: matrix: c=a*b SECTION: matrix: a*=b SECTION: matrix: b=a/ SECTION: matrix: a/= SECTION: matrix: c=a/b SECTION: matrix: a/=b SECTION: matrix: b=a* (a is identity) SECTION: matrix: b=a* (a is identity) SECTION: matrix: b=a* (a is identity) SECTION: memsearch: verify memory search SECTION: mkdir_p: empty SECTION: mkdir_p: create SECTION: mkdir_p: create full path SECTION: not_reached: verify that snapdev::NOT_REACHED() generates a SIGABRT NOT_REACHED() called, process will abort. Stack trace: ../../../../src/libsanitizer/sanitizer_common/sanitizer_common_interceptors.inc:4193:28 /home/snapwebsites/snapcpp/contrib/libexcept/libexcept/stack_trace.cpp:157:33 in libexcept::collect_stack_trace_with_line_numbers[abi:cxx11](int) /home/snapwebsites/snapcpp/contrib/snapdev/snapdev/not_reached.h:55:86 /home/snapwebsites/snapcpp/contrib/snapdev/tests/catch_not_reached.cpp:79:33 BUILD/tests/unittest[557973170d4a] BUILD/tests/unittest[55797315a351] BUILD/tests/unittest[557973159098] BUILD/tests/unittest[557973158dad] BUILD/tests/unittest[557973156e60] BUILD/tests/unittest[55797310a747] BUILD/tests/unittest[55797310bc20] BUILD/tests/unittest[55797310b72a] /home/snapwebsites/snapcpp/BUILD/Debug/dist/include/catch2/snapcatch2.hpp:853:33 /home/snapwebsites/snapcpp/contrib/snapdev/tests/catch_main.cpp:82:51 ../sysdeps/nptl/libc_start_call_main.h:58:16 ../csu/libc-start.c:128:20 in __libc_start_main BUILD/tests/unittest[557972715d85] SECTION: not_reached: verify that snapdev::NOT_REACHED_IN_TEST() generates a SIGABRT when the sanitizer is active NOT_REACHED_IN_TEST() called, process will abort. Stack trace: ../../../../src/libsanitizer/sanitizer_common/sanitizer_common_interceptors.inc:4193:28 /home/snapwebsites/snapcpp/contrib/libexcept/libexcept/stack_trace.cpp:157:33 in libexcept::collect_stack_trace_with_line_numbers[abi:cxx11](int) /home/snapwebsites/snapcpp/contrib/snapdev/snapdev/not_reached.h:120:86 /home/snapwebsites/snapcpp/contrib/snapdev/tests/catch_not_reached.cpp:102:41 BUILD/tests/unittest[557973170d4a] BUILD/tests/unittest[55797315a351] BUILD/tests/unittest[557973159098] BUILD/tests/unittest[557973158dad] BUILD/tests/unittest[557973156e60] BUILD/tests/unittest[55797310a747] BUILD/tests/unittest[55797310bc20] BUILD/tests/unittest[55797310b72a] /home/snapwebsites/snapcpp/BUILD/Debug/dist/include/catch2/snapcatch2.hpp:853:33 /home/snapwebsites/snapcpp/contrib/snapdev/tests/catch_main.cpp:82:51 ../sysdeps/nptl/libc_start_call_main.h:58:16 ../csu/libc-start.c:128:20 in __libc_start_main BUILD/tests/unittest[557972715d85] SECTION: not_used: verify NOT_USED() without parameters SECTION: not_used: verify NOT_USED() works as expected (2 parameters) SECTION: number_to_string(int): convert integers (int) to a string SECTION: pathinfo_replace_suffix: replace existing suffix SECTION: pathinfo_replace_suffix: replace non-existant suffix SECTION: pathinfo_replace_suffix: remove suffix when present SECTION: pathinfo_replace_suffix: remove suffix when absent SECTION: pathinfo_replace_suffix: do nothing if non-existant suffix SECTION: pathinfo_canonicalize: canonicalize paths SECTION: pathinfo_has_pattern: has pattern function SECTION: pathinfo_is_child_path: is child path function SECTION: pathinfo_is_absolute: check absolute and relative paths SECTION: pathinfo_relative: verify that path gets properly changed SECTION: pathinfo_realpath: make sure the realpath works SECTION: pathinfo_realpath: realpath fails for non-existant files SECTION: pathinfo_realpath: realpath fails for file instead of directory SECTION: sort_and_remove_duplicates: empty container SECTION: sort_and_remove_duplicates: container without duplicates SECTION: sort_and_remove_duplicates: container with duplicates SECTION: sorted_remove_duplicates: empty container SECTION: sorted_remove_duplicates: container without duplicates SECTION: sorted_remove_duplicates: container with duplicates SECTION: sorted_remove_duplicates: container with one item duplicated SECTION: unsorted_remove_duplicates: empty container SECTION: unsorted_remove_duplicates: container without duplicates SECTION: unsorted_remove_duplicates: container with duplicates (vector) SECTION: unsorted_remove_duplicates: container with duplicates (list) SECTION: unsorted_remove_duplicates: container with one item duplicated SECTION: rm_r: missing SECTION: rm_r: empty directory SECTION: rm_r: directory with a few files SECTION: rm_r: directory tree SECTION: rm_r: directory tree with special files --- note that the special file test cannot create block and character devices. --- if you want to test those, make sure to run as root: --- sudo unittest ... rm_r SECTION: safe_object: expected usage SECTION: safe_object: with exception SECTION: safe_object: test both ways SECTION: safe_object: test with resource identifiers SECTION: safe_stream: hex/oct SECTION: saturated_add_uint8: test all possible cases with 8 bits SECTION: saturated_add_uint16: test many possible cases with 16 bits SECTION: saturated_add_uint32: test a few possible cases with 32 bits SECTION: saturated_add_uint64: test a few possible cases with 64 bits SECTION: saturated_add_uint128: test a few possible cases with 128 bits SECTION: saturated_add_int8: test all possible cases with 8 bits SECTION: saturated_add_int16: test many possible cases with 16 bits SECTION: saturated_add_int32: test a few possible cases with 32 bits SECTION: saturated_add_int64: test a few possible cases with 64 bits SECTION: saturated_add_int128: test a few possible cases with 128 bits SECTION: saturated_subtract_uint8: test all possible cases with 8 bits SECTION: saturated_subtract_uint16: test many possible cases with 16 bits SECTION: saturated_subtract: test a few possible cases with 32 bits SECTION: saturated_subtract_uint64: test a few possible cases with 64 bits SECTION: saturated_subtract_uint128: test a few possible cases with 128 bits SECTION: stringize: build year SECTION: timespec_ex_math: simple add SECTION: timespec_ex_math: simple subtract SECTION: timespec_ex_math: add "minus one day" SECTION: timespec_ex_math: add with nano overflow SECTION: timespec_ex_math: subtract with nano underflow SECTION: timespec_ex_math: -1, 0, +1 SECTION: timespec_ex_math: add nanos SECTION: timespec_ex_math: load/save SECTION: timespec_ex_math: negative + negative SECTION: timespec_ex_math: system time SECTION: timespec_ex_math: system time SECTION: timespec_ex_string: ostream SECTION: timespec_ex_string: convert to string SECTION: timespec_ex_string: convert to string when nl_langinfo("D_T_FMT") returns "". SECTION: timespec_ex_string: convert to string when nl_langinfo("D_T_FMT") returns "%T". SECTION: timespec_ex_string: convert to string when nl_langinfo("D_T_FMT") returns "%r %X %EX". SECTION: timespec_ex_string: to and from string. SECTION: timespec_ex_string: to and from string with %N. SECTION: timespec_ex_from_string_error: string does not start with a sign or digit SECTION: timespec_ex_from_string_error: seconds overflow SECTION: timespec_ex_from_string_error: bad unit SECTION: timespec_ex_from_string_error: bad unit SECTION: timespec_ex_from_string_error: output too long SECTION: tokenize_no_numbers_template: verify all the no-number functions SECTION: tokenize_format_printf: escape % SECTION: tokenize_format_printf: letters only SECTION: tokenize_format_printf: size + format SECTION: tokenize_format_printf: size defined twice SECTION: tokenize_format_printf: data driven tests SECTION: tokenize_format_strftime: no nanoseconds support SECTION: tokenize_format_strftime: no nanoseconds support (extended) SECTION: tokenize_format_strftime: data driven tests SECTION: tokenize_format_advgetopt: data driven tests SECTION: tokenize_format_shell: test the ${[ ][L]q|z} syntax (a bit like in a shell) SECTION: tokenize_format_star: test a * syntax (with angle brackets) +++ parsed [Without brackets *l or *r variables and double star: ** for escaping] compare item [Without brackets ] == [Without brackets ] +++ parsed [Without brackets *l or *r variables and double star: ** for escaping] compare item [*l] == [*l] +++ parsed [Without brackets *l or *r variables and double star: ** for escaping] compare item [ or ] == [ or ] +++ parsed [Without brackets *l or *r variables and double star: ** for escaping] compare item [*r] == [*r] +++ parsed [Without brackets *l or *r variables and double star: ** for escaping] compare item [ variables and double star: ] == [ variables and double star: ] +++ parsed [Without brackets *l or *r variables and double star: ** for escaping] compare item [*] == [*] +++ parsed [Without brackets *l or *r variables and double star: ** for escaping] compare item [ for escaping] == [ for escaping] +++ parsed [Enclosed * and * variables] compare item [Enclosed ] == [Enclosed ] +++ parsed [Enclosed * and * variables] compare item [* ] == [* ] +++ parsed [Enclosed * and * variables] compare item [ and ] == [ and ] +++ parsed [Enclosed * and * variables] compare item [* ] == [* ] +++ parsed [Enclosed * and * variables] compare item [ variables] == [ variables] SECTION: tokenize_string: empty input non-empty output if keeping empty entries SECTION: tokenize_string: empty input empty output when removing empty entries SECTION: tokenize_string: keep empty entries SECTION: tokenize_string: remove empty entries SECTION: tokenize_string: comma separated SECTION: tokenize_string: comma separated, remove empty SECTION: tokenize_string: comma separated, remove empty and trim SECTION: tokenize_string: arrow (string) separated, remove empty and trim SECTION: integer_to_string_literal: verify integral literals SECTION: trim_string many cases SECTION: unique_number: verify unique number basic counter SECTION: unique_number: verify unique number indexes SECTION: unique_number_error: non-empty filename is required SECTION: unique_number_error: index out of range SECTION: unique_number_error: file cannot be opened SECTION: user_groups: groups SECTION: user_groups: invalid user SECTION: version: snapdev version SECTION: version: check wanted/current version SECTION: version: check explicit versions SECTION: version: we need at least g++ 7.x =============================================================================== All tests passed (7514994 assertions in 65 test cases) Finished running snapdev tests v1.1.40 on Thu Nov 28 11:28:30 AM PST 2024