Skip to content

0.5.0

Pre-release
Pre-release
Compare
Choose a tag to compare
@hovinen hovinen released this 17 Apr 13:34
· 456 commits to main since this release

New additions

  • The pattern used in matches_pattern! can now accept method invocations:

    impl MyStruct {
        fn get_foo(&self) -> u32 {...}
    }
    verify_that!(value, matches_pattern!(MyStruct {
        get_foo(): eq(5)
    }))
  • The unordered_elements_are!, contains_each!, and is_contained_in! macros now support map data structures such as HashMap and BTreeMap:

    let value = HashMap::from_iter([(1, "One"), (2, "Two")]);
    verify_that!(value, unordered_elements_are![(eq(2), eq("Two")), (eq(1), eq("One"))])
  • The pointwise! matcher now explicitly supports closures, and allows supplying up to three containers:

    verify_that!(value, pointwise!(|v| near(v, 0.1), [1.0, 2.0, 3.0])
    verify_that!(value, pointwise!(near, [1.0, 2.0, 3.0], [0.01, 0.001, 0.1])
  • There is now support for easily mapping errors from the anyhow crate to test results:

    #[test]
    fn invokes_fallible_function() -> Result<()> {
        a_fallible_function().into_test_result()?;
        ...
    }

Other improvements

  • Async tests should now work correctly with the googletest::test attribute (see below).
  • googletest::test should now be compatible with other test attributes such as tokio::test.
  • The syn dependency has been upgraded to major version 2.

API changes

  • The attribute macro google_test has been renamed to test:

    OLD:

    #[googletest::google_test]
    fn should_work() -> Result<()> {...}

    NEW:

    #[googletest::test]
    fn should_work() -> Result<()> {...}

    Downstream tests do not currently have to update their code. The old google_test name has been retained as an alias, but is marked deprecated.