Logs for the snapdev 1.1.40 tests

Tests started on Sat Feb 24 09:48:12 AM PST 2024 and finished on Sat Feb 24 09:49:42 AM PST 2024

Start running snapdev tests v1.1.40 on Sat Feb 24 09:48:52 AM PST 2024

snapdev v1.1.40 [2748227]:unittest: seed is 1708796932
source directory: "/home/snapwebsites/snapcpp/contrib/snapdev"
binary directory: "/home/snapwebsites/snapcpp/BUILD/Debug/contrib/snapdev/coverage/BUILD"
temporary directory: "/home/snapwebsites/snapcpp/BUILD/Debug/contrib/snapdev/tmp"
Randomness seeded to: 2162861637
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: 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_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: generate tokens: keep empty entries
SECTION: generate tokens: remove empty entries
SECTION: generate tokens: comma separated
SECTION: generate tokens: comma separated, remove empty
SECTION: generate tokens: comma separated, remove empty and trim
SECTION: generate tokens: 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
--- file: /home/snapwebsites/snapcpp/BUILD/Debug/contrib/snapdev/tmp/test-2.number
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 (7583723 assertions in 60 test cases)


Finished running snapdev tests v1.1.40 on Sat Feb 24 09:49:11 AM PST 2024