summaryrefslogtreecommitdiff
path: root/libs/greatest/CHANGELOG.md
diff options
context:
space:
mode:
authorAldrik Ramaekers <aldrikboy@gmail.com>2025-09-14 15:27:51 +0200
committerAldrik Ramaekers <aldrikboy@gmail.com>2025-09-14 15:27:51 +0200
commit76d3082e5b89fe54acaaaaadd201ccc92f4f346e (patch)
tree32d5212d87bc0b4cab06bcbe923f7eeb019268b0 /libs/greatest/CHANGELOG.md
parent38019a9693375ac6719ffec43bff63774e142387 (diff)
tests for administration io
Diffstat (limited to 'libs/greatest/CHANGELOG.md')
-rw-r--r--libs/greatest/CHANGELOG.md544
1 files changed, 544 insertions, 0 deletions
diff --git a/libs/greatest/CHANGELOG.md b/libs/greatest/CHANGELOG.md
new file mode 100644
index 0000000..47f37ec
--- /dev/null
+++ b/libs/greatest/CHANGELOG.md
@@ -0,0 +1,544 @@
+# greatest Changes By Release
+
+## v1.5.0 - 2021-02-15
+
+### API Changes
+
+Changed default: `GREATEST_USE_LONGJMP` now defaults to 0. This eliminates
+a warning about variables that can possibly become stale/corrupt in the
+presence of `longjmp`. Since `GREATEST_FAIL_WITH_LONGJMP` isn't frequently
+used, it should probably be opt-in.
+
+Added `greatest_set_exact_name_match()` / `-e` flag, which changes the
+name-based filtering from substring to exact match. Note that filtering
+on an exact suite name will not skip tests run outside of any suite.
+
+Added `GREATEST_ASSERT_NEQ` and `GREATEST_ASSERT_NEQm`. (Thanks @tekknolagi.)
+
+Added `GREATEST_ASSERT_GT`, `GREATEST_ASSERT_GTE`, `GREATEST_ASSERT_LT`,
+and `GREATEST_ASSERT_LTE`, along with their custom message (`m`)
+variants.
+
+
+### Bug Fixes
+
+Makefile: Fix targets so all files are rebuilt when `greatest.h` or the
+`Makefile` are modified, but without potentially breaking the build due
+to including `greatest.h` as a linker argument to `example_trunc` (which
+could happen with clang). (Thanks @vemakereporter, @theosotr.)
+
+Calls to `GREATEST_RUN_TEST` from inside another test are now ignored.
+
+Other flags starting with `--` besides `--help` (print help) and `--`
+(ignore rest of ARGV) now produce an "Unknown argument" message;
+previously they were unintentionally handled like `--`.
+
+
+### Other Improvements
+
+Added built `example_cpp` executable to `.gitignore`.
+
+Expanded on the role of `RUN_TEST`, `RUN_TEST1`, `RUN_TESTp`,
+`PASS`, `SKIP`, and `FAIL` in the README.
+
+Addressed a `-Wimplicit-fallthrough` warning when building with clang
+using `-Weverything`.
+
+
+## v1.4.2 - 2019-03-24
+
+### API Changes
+
+None.
+
+
+### Other Improvements
+
+Fixed configuration parameters for the PRNG (used for shuffling).
+Previously, certain rare combinations of test counts and input states
+could prevent the linear congruential RNG from having its full period
+before repeating values, which could cause tests to be run multiple
+times or skipped during shuffling.
+
+Fixed an assertion in the example code where the expected annd actual
+parameters were swapped. (Reported by @shaohuasong.)
+
+Updated a comment to reflect that `GREATEST_ASSERT_STR_EQm` compares
+using `strncmp`, not `strcmp`. (Reported by @orangewait.)
+
+Minor formatting improvements in the README.
+
+
+## v1.4.1 - 2018-12-30
+
+### API Changes
+
+None.
+
+
+### Other Improvements
+
+Fixed a warning when compiled with `-Wconversion`. (Thanks @HawkSK.)
+
+Replaced a remaining direct use of `fprintf` with `GREATEST_FPRINTF`.
+(Thanks @ligurio.)
+
+Fixed typo in example code. (Thanks @ligurio.)
+
+Bugfix: Previously, a test failure in first-fail mode didn't prevent
+later suites from running.
+
+Added a comment noting that the duplicated declaration inside the
+`GREATEST_SUITE` macro is intentional.
+
+Renamed `exp` local variable to `expd`, to prevent a possible
+warning about shadowing `exp(3)`.
+
+Updated the command line argument documentation in the README and
+the usage message.
+
+Added a description of output behaviors for each test case
+result type, and clarified that the custom message variants
+(e.g. `SKIPm("TODO")`) can be used to set custom messages, but
+do not affect whether or not the message is printed.
+
+
+## v1.4.0 - 2018-03-05
+
+### API Changes
+
+Added `greatest_abort_on_fail`, which sets a flag to call `abort()` on
+the first test failure (`-a` in the CLI test runner). If tests are
+running inside a debugger, this will break right on the failure.
+Feature suggestion and initial implementation by @fsaintjacques.
+
+Added `greatest_list_only()`, which sets the same flag as the `-l`
+option in the CLI test runner.
+
+Added `greatest_set_test_suffix(const char *suffix)`, which can
+be used to add a suffix to the name printed for the next test.
+This can be used to distinguish between tests when running
+parametric tests (particularly when shuffled). Note that this
+suffix is included in the matching for `-t` and `-x`.
+
+The `greatest_info` struct now allocates a `char` buffer for the test
+name and optional '_' separator & suffix. The buffer size can be
+configured by `#define`ing `GREATEST_TESTNAME_BUF_SIZE`. (See
+`example_trunc.c`.) If the test name plus optional suffix does not fit
+in the buffer, it will be truncated and `\0` terminated.
+
+Made a couple functions `static` that were previously exposed, but
+explictly listed as being internal (`greatest_do_pass`,
+`greatest_do_fail`, `greatest_do_skip`, `greatest_suite_pre`,
+`greatest_suite_post`, `greatest_usage`).
+
+
+### Other Improvements
+
+Fixed link to ISC license in README.md. (Thanks @vaibhavsagar.)
+
+Fixed issue link and whitespace in README.md and CONTRIBUTING.md.
+(Thanks @bebehei.)
+
+Change a couple macros into functions: `GREATEST_INIT` and
+`GREATEST_PRINT_REPORT`. Most of the macros have variable capture,
+return from their call site, etc., but these two don't need to be
+macros.
+
+
+## v1.3.1 - 2017-09-22
+
+### API Changes
+
+None.
+
+
+### Other Improvements
+
+Bugfix: `GREATEST_SHUFFLE_TESTS` and `GREATEST_SHUFFLE_SUITES`
+did not check for the `stop_at_first_fail` flag, and could get
+stuck in an infinite loop. Now their loops stop as expected.
+
+Renamed `example_random.c` to `example_shuffle.c`, since its
+focus is really on random shuffling of suites and tests.
+
+
+## v1.3.0 - 2017-08-13
+
+### API Changes
+
+Added `GREATEST_SHUFFLE_SUITES(SEED, BODY)` macro (and `SHUFFLE_SUITES`
+abbreviation). This runs any suites within BODY in pseudorandom order,
+seeded by SEED.
+
+Added `GREATEST_SHUFFLE_TESTS(SEED, BODY)` macro (and `SHUFFLE_TESTS`
+abbreviation). This runs any tests within BODY in pseudorandom order,
+seeded by SEED.
+
+If `GREATEST_NO_EXTERN_CPLUSPLUS` is `#define`d, then the C++
+`extern "C" { ... }` namespacing around greatest is disabled.
+
+All calls to `fprintf` have been wrapped in a macro, `GREATEST_FPRINTF`,
+which can be `#define`d to substitute another function with the same
+interface. Feature suggestion and initial implementation by
+@AndreasMartin72.
+
+Added `greatest_stop_at_first_fail()`, to set the flag to stop the test
+runner at the first failure (`-f` in the CLI test runner).
+
+Added `void greatest_test_exclude(const char *filter)`, which takes a
+filter string and ignores all tests whose names contain the filter
+string. This takes precedence over `greatest_test_filter` matches.
+
+Added a CLI test runner option, `-x`, which calls
+`greatest_test_exclude` with its argument.
+
+
+### Other Improvements
+
+Bugfix: `GREATEST_SAVE_CONTEXT()` was only used in `GREATEST_RUN_TEST`,
+not `GREATEST_RUN_TEST1` or `GREATEST_RUN_TESTp`, which could cause
+corruption when tests using them called `ASSERT_OR_LONGJMPm` or
+`FAIL_WITH_LONGJMPm`. Reported and fixed by @tcarmelveilleux.
+
+Add `contrib/entapment` script, which converts a greatest test runner's
+verbose-style output to TAP version 13 format.
+
+Add `contrib/testify` script, which converts calls to `RUN_TEST(test);`
+to test functions with `SKIPm("TODO");`.
+
+Disabled `-Weverything` in Makefile: it isn't portable.
+
+Various improvements to the documentation.
+
+If list (`-l`) and test name filtering are both used, only tests that
+would have run are printed. This can be used to test filter strings.
+
+
+## v1.2.2 - 2017-04-26
+
+### API Changes
+
+None.
+
+
+### Other Improvements
+
+Explicitly mention ISC License in README.
+
+Always `fflush(GREATEST_STDOUT)` after tests, rather than checking
+whether `GREATEST_STDOUT` expands to `stdout` (the default) first. This
+avoids a tautological comparison warning. Reported by @jibsen and
+@nemequ.
+
+Address warnings that can appear under `-Weverything`: padding in
+`struct greatest_run_info`, a pointer cast that unintentionally removed
+`const`, and a non-literal `printf` format string (caused by a literal
+format string constructed and saved to a variable in a macro). Reported
+by @kozross.
+
+
+## v1.2.1 - 2016-06-25
+
+### API Changes
+
+None.
+
+
+### Other Improvements
+
+Accept "--help" as an alternate form of "-h" in command line test
+runners. (Thanks @jibsen).
+
+Avoid redundant evaluation of arguments in `ASSERT_ENUM_EQ`.
+
+Clarify type of `ENUM_STR` argument in `ASSERT_ENUM_EQ`. Use a function
+pointer typedef so the compiler can give better type errors.
+
+Warn about redundant evaluation of arguments in `ASSERT_EQ_FMT`.
+
+Prefix the variables used in the expansion of the `ASSERT_EQ_FMT`,
+`ASSERT_ENUM_EQ`, and `ASSERT_IN_RANGE` macros, to avoid name clashes
+that can cause confusing compiler errors.
+
+
+## v1.2.0 - 2016-06-06
+
+### API Changes
+
+Added `GREATEST_IGNORE_TEST`, which skips a test without warning about
+the function being unused.
+
+Added `GREATEST_ASSERT_STRN_EQ`, which does a string comparison with an
+explicit length (using `strncmp`, rather than `strcmp`).
+
+Added `GREATEST_ASSERT_MEM_EQ`, which does a memory comparison with an
+explicit length (using `memcmp`). If the memory differs, it will print a
+hexdump which highlights the lines and individual bytes which differ.
+(The `greenest` script was also updated to colorize the hexdump's
+difference markers.)
+
+Added `GREATEST_ASSERT_ENUM_EQ`, which compares two values and uses an
+enum-specific function to convert them to strings before printing
+failures.
+
+The `greenest` script has been moved into `contrib/`.
+
+
+### Other Improvements
+
+Fixed a bug that kept the `-f` (stop after first failure) flag from
+stopping the test runner immediately when a failure occured just
+before running a new suite.
+
+Added `extern "C" { ... }` guards for improved C++ compatibility.
+
+Fixed a warning when compiling as C++.
+
+Several updates to the README.
+
+A file with contribution guidelines (`CONTRIBUTING.md`) was added.
+
+
+## v1.1.1 - 2016-02-14
+
+### API Changes
+
+Align "Expected:"/"Got:" messages, so it's easier to compare values.
+
+
+### Other Improvements
+
+Fixed a bug that could lead to test suites running previous suites'
+setup/teardown callbacks. This was a bug in the optional suite support,
+so only v1.1.0 is affected.
+
+Updated the README to note that the `greenest` awk script expects
+a Unix-like environment (i.e., it doesn't work on Windows).
+
+
+## v1.1.0 - 2015-11-29
+
+### API Changes
+
+Made suites optional, so that `RUN_TEST` works outside of any suites.
+This reduces boilerplate in cases where there would only be one "main"
+suite anyway.
+
+Added `greatest_get_report()`, to populate a struct with the pass, fail,
+skip, and assertion counts, for cases where getting the counts directly
+is preferable to printing them with `GREATEST_PRINT_REPORT()` or
+`GREATEST_MAIN_END()` (i.e., without a CLI test runner).
+
+Added `greatest_set_test_filter(substring)` and
+`greatest_set_suite_filter(substring)`, so only tests or suites matching a
+filter substring can be run without using the CLI test runner.
+
+Added `greatest_set_flag()`, so the FIRST_FAIL flag can be set without
+using the CLI test runner.
+
+Added `SUITE_EXTERN` macro, for declaring suites in other compilation units.
+They could previously be declared using the `SUITE` macro, but this made a
+redundant declaration that could cause warnings.
+
+Added multiple levels of verbosity. Can be checked and set with
+`greatest_get_verbosity()`, and `greatest_set_verbosity()` respectively.
+(`GREATEST_IS_VERBOSE()` remains in the API.)
+
+Stop parsing CLI options if `--` is reached, so user code can include
+its own afterward.
+
+
+### Other Improvements
+
+Added the "Key Features" section to the README, and updated the
+tagline to reflect that greatest isn't specific to unit testing.
+
+Added this changelog.
+
+Added LICENSE file (ISC License), to match common project layouts.
+greatest already had its license in the `greatest.h` header, but this
+makes it easier to find at a glance.
+
+Added a URL for finding the newest version of greatest to the header.
+
+Updated the default report message: print "1 test", not "1 tests";
+print "X passed, Y failed," instead of "X pass, Y fail,", etc.
+
+Updated the CLI test runner's help message to reflect that the
+`-s` and `-t` switches match by substring, not the full name.
+
+Fixed C89 error due to incrementing assertion count before
+declaring variables (mixing declarations and code).
+
+Fixed warnings.
+
+
+### Known Issues
+
+The `greatest_printf_cb` callback in `struct greatest_type_info` type
+should have an extra `FILE *` argument (i.e., behave like fprintf, not
+printf). This leads to cases where `GREATEST_STDOUT` has been customized
+and `GREATEST_ASSERT_EQUAL_T`'s "Expected:", "Got:" messages are printed
+to the correct stream, but the callback still prints the values on
+stdout. Resolving this is an interface change, so it will have to wait
+until release v2.0.0. (The actual code change will be minor -- adding an
+extra f argument to the callback, and passing it to fprinf rather than
+using printf.)
+
+The `greatest_type_info` struct is typedef'd, which is inconsistent with
+the API otherwise not typedef-ing user facing structs. (It is also in the
+struct namespace.) Fixing this will have to wait until v2.0.0.
+
+
+## v1.0.0 - 2015-05-11
+
+### API Changes
+
+Added `ASSERT_EQ_FMT(expected, actual, format)` to compare scalar values and
+print them (if different) using the given format string (e.g. "0x%08x").
+
+Added `ASSERT_IN_RANGE(expected, actual, tolerance)` to check whether the
+actual value is within a +/- tolerance, as a floating point comparison,
+and print the actual value if out of bounds. The floating point type used
+can be configured by overriding GREATEST_FLOAT.
+
+Added `GREATEST_USE_TIME` compile-time #define, which can be set to 0
+to compile out all time.h / clock() related functionality.
+
+Added check for `_MSC_VER`, to detect C99 compatibility when built with
+Visual Studio.
+
+
+## v0.11.1 - 2015-01-17
+
+Patch version, increased due to bug fixes (thanks @pmj):
+
+. Fix for issue #26 - must not longjmp to a context in an exited function.
+. Corrected use of non-prefixed FAILm() macro in ASSERT macros.
+. Avoid compile warnings about no previous definition of suite functions.
+
+
+## v0.11.0 - 2015-01-02
+
+### API Changes
+
+Added `CHECK_CALL()` macro, to wrap a function call that can fail a test.
+
+Added `ASSERT_OR_LONGJMP()` / `FAIL_WITH_LONGJMP()`, to longjmp(3) from
+failing functions rather than returning. This is optional, and can be
+compiled out by `#define`-ing `GREATEST_USE_LONGJMP` to 0.
+
+Restructured API so a CLI test runner is no longer necessary.
+`GREATEST_INIT()` and `GREATEST_PRINT_REPORT()` can be called directly.
+
+
+### Other Improvements
+
+Explicitly documented the protocol for calling functions from a test that
+themselves call ASSERT(), SKIP(), FAIL(), etc. Added an enum for the
+test return type.
+
+Fixed warnings, improved the documentation.
+
+
+## v0.10.1 - 2014-11-16
+
+Fixed error when compiled as C++ by adding `extern` to
+`greatest_type_info` struct.
+
+
+## v0.10.0 - 2014-10-12
+
+### API Changes
+
+Added `ASSERT_EQUAL_T`, for comparing arbitrary structs and printing
+them when they differ.
+
+
+### Other Improvements
+
+Added `greenest` awk script, to color output.
+
+
+## v0.9.4 - 2014-08-06
+
+Started counting the total number of assertions.
+
+Fixed warnings.
+
+
+## v0.9.3 - 2014-05-30
+
+### API Changes
+
+Changed filters for test (`-t`) and suite (`-s`) names to use substring
+search, rather than exact matches.
+
+Added `GREATEST_FAILURE_ABORT()`, to check whether the test runner is in
+first-fail (`-f`) mode and there have been failures.
+
+
+### Other Improvements
+
+Added check to always print a line break for "FAIL" messages, unless at
+column 0.
+
+
+## v0.9.2 - 2013-08-06
+
+### API Changes
+
+Added a C89-compatible form of parametric testing (`GREATEST_RUN_TEST1`).
+
+
+### Other Improvements
+
+Fixed warnings when compiled as C++.
+
+
+## v0.9.1 - 2013-07-14
+
+Added `-f` to usage line in documentation.
+
+Fixed warnings.
+
+
+## v0.9.0 - 2013-03-02
+
+### API Changes
+
+Added finish-at-first-failure (`-f`) to CLI test runner.
+
+Added suite-level setup/teardown hooks.
+
+
+### Other Improvements
+
+Fixed warnings.
+
+
+## v0.8 - 2012-04-08
+
+### API Changes
+
+Added help (`-h`) and list (`-l`) options to CLI test runner.
+
+Added `GREATEST_RUN_TESTp` for parametric testing in C99.
+
+Added `GREATEST_IS_VERBOSE()`, to check whether the verbose (`-v`) flag
+was set.
+
+Added `GREATEST_SET_TEARDOWN_CB()`, for setting a teardown callback.
+
+Added custom message forms of PASS, FAIL, SKIP, e.g. `PASSm()`.
+
+
+### Other Improvements
+
+Fixed warnings.
+
+
+## Pre-v0.8 - 2012-01-09
+
+Initial public release of project.