PackageTrack
Sign in Get early access

quick-junit

Data model, serializer, and deserializer for JUnit/XUnit XML

0.7.0 11M downloads/mo #2929 most downloaded on crates.io nextest-rs/quick-junit

What this package is like to depend on

Last release 1 months ago

20 Jul 2026

Ships fairly regularly

a new release about every 4 months

Nearly every release is documented

notes for 21 of 21 stable releases

Nothing withdrawn

no release was ever pulled

5 years old

22 releases · first in 2022

4 releases in the last 12 months

see the full history below

Release timeline

22 releases · Jan 2022 to Jul 2026
2023 2024 2025 2026
Release Pre-release

Releases

latest 22
  1. 0.7.0 20 Jul 2026
    Release notes

    Changed

    Skipped test counts

    Skipped test counts are now reported via the skipped attribute rather than disabled. For <testsuite>, skipped matches the llg schema and the Jenkins junit-10 schema, as well as pytest and Maven Surefire.

    • Each <testsuite> now emits skipped="N", and the root <testsuites> element now emits an aggregated skipped="N" count. Previously the root didn't carry a skip count at all.
    • Root-level skipped is a quick-junit extension. It follows the modern JUnit convention (as documented, for example, by testmoapp/junitxml) and is similar to quick-junit's existing extensions such as uuid.
    • TestSuite's disabled field has been renamed to skipped.
    • Report gains new public skipped and disabled fields, and Report::add_test_suite now aggregates skip counts into Report::skipped.

    disabled is now modeled as a separate optional count on both Report and TestSuite, distinct from skipped. (disabled is intended to count tests that are disabled by design, such as googletest's DISABLED_-prefixed tests. Note, however, that quick-junit doesn't have a notion of disabled tests at the moment.)

    Other changes

    • Report is now #[non_exhaustive], consistent with TestSuite and TestCase. Construct it via Report::new and then assign fields, so that future field additions are non-breaking.
    • Childless <testsuite> and <testcase> elements are now serialized as self-closing tags (for example, <testcase name="my-test"/> rather than <testcase name="my-test"></testcase>). The output is semantically identical XML, only more compact and idiomatic. The deserializer already accepted these self-closing forms, so serializing them means round-trip tests now cover those parse paths.
    Open source →
    Release notes

    Changed

    Skipped test counts

    Skipped test counts are now reported via the skipped attribute rather than disabled. For <testsuite>, skipped matches the llg schema and the Jenkins junit-10 schema, as well as pytest and Maven Surefire.

    • Each <testsuite> now emits skipped="N", and the root <testsuites> element now emits an aggregated skipped="N" count. Previously the root didn't carry a skip count at all.
    • Root-level skipped is a quick-junit extension. It follows the modern JUnit convention (as documented, for example, by testmoapp/junitxml) and is similar to quick-junit's existing extensions such as uuid.
    • TestSuite's disabled field has been renamed to skipped.
    • Report gains new public skipped and disabled fields, and Report::add_test_suite now aggregates skip counts into Report::skipped.

    disabled is now modeled as a separate optional count on both Report and TestSuite, distinct from skipped. (disabled is intended to count tests that are disabled by design, such as googletest's DISABLED_-prefixed tests. Note, however, that quick-junit doesn't have a notion of disabled tests at the moment.)

    Other changes

    • Report is now #[non_exhaustive], consistent with TestSuite and TestCase. Construct it via Report::new and then assign fields, so that future field additions are non-breaking.
    • Childless <testsuite> and <testcase> elements are now serialized as self-closing tags (for example, <testcase name="my-test"/> rather than <testcase name="my-test"></testcase>). The output is semantically identical XML, only more compact and idiomatic. The deserializer already accepted these self-closing forms, so serializing them means round-trip tests now cover those parse paths.
    Open source →
  2. 0.6.1 02 Jul 2026
    Release notes

    Updated

    Internal dependency update: quick-xml updated to 0.41.0. This resolves the following deserialize-time denial of service issues:

    Open source →
    Release notes

    Updated

    Internal dependency update: quick-xml updated to 0.41.0. This resolves the following deserialize-time denial of service issues:

    Open source →
  3. 0.6.0 13 Mar 2026
    Release notes

    Changed

    • TestCaseStatus::NonSuccess's reruns field is now a NonSuccessReruns struct. NonSuccessReruns bundles the list of reruns with a FlakyOrRerun kind that controls whether they are serialized as <flakyFailure>/<flakyError> or <rerunFailure>/<rerunError>. This enables representing tests that both failed and exhibited flaky behavior, as permitted by the JUnit XSD and as supported by an upcoming version of cargo-nextest.
    • The deserializer now handles all valid combinations of main status and rerun/flaky elements, modeled as a decision table, and errors out on unrepresentable combinations such as both flakyFailure and rerunFailure being present.
    • MSRV updated to Rust 1.79.
    Open source →
    Release notes

    Changed

    • TestCaseStatus::NonSuccess's reruns field is now a NonSuccessReruns struct. NonSuccessReruns bundles the list of reruns with a FlakyOrRerun kind that controls whether they are serialized as <flakyFailure>/<flakyError> or <rerunFailure>/<rerunError>. This enables representing tests that both failed and exhibited flaky behavior, as permitted by the JUnit XSD and as supported by an upcoming version of cargo-nextest.
    • The deserializer now handles all valid combinations of main status and rerun/flaky elements, modeled as a decision table, and errors out on unrepresentable combinations such as both flakyFailure and rerunFailure being present.
    • MSRV updated to Rust 1.79.
    Open source →
  4. 0.5.2 11 Nov 2025
    Release notes

    Added

    • A long-requested feature: deserialization support for reports! The new deserializer has undergone fuzzing and property-based testing, and it is known to work with JUnit reports generated by quick-junit. The deserializer should work with JUnit reports generated by other tools as well. If it doesn't, fixes are welcome.
    • The new proptest feature allows for generation of arbitrary Reports.

    Updated

    Internal dependency update: quick-xml updated to 0.38.3.

    Open source →
    Release notes

    Added

    • A long-requested feature: deserialization support for reports! The new deserializer has undergone fuzzing and property-based testing, and it is known to work with JUnit reports generated by quick-junit. The deserializer should work with JUnit reports generated by other tools as well. If it doesn't, fixes are welcome.
    • The new proptest feature allows for generation of arbitrary Reports.

    Updated

    Internal dependency update: quick-xml updated to 0.38.3.

    Open source →
  5. 0.5.1 18 Nov 2024
    Release notes

    Updated

    Internal dependency update: quick-xml updated to 0.37.1.

    Open source →
    Release notes

    Updated

    Internal dependency update: quick-xml updated to 0.37.1.

    Open source →
  6. 0.5.0 01 Sep 2024
    Release notes

    Changed

    • The Output type, which strips invalid XML characters from a string, has been renamed to
      XmlString.
    • All internal storage now uses XmlString rather than String.
    Open source →
    Release notes

    Changed

    • The Output type, which strips invalid XML characters from a string, has been renamed to XmlString.
    • All internal storage now uses XmlString rather than String.
    Open source →
  7. 0.4.0 19 Apr 2024
    Release notes

    Changed

    • Use newtype-uuid for the report UUID.
    Open source →
    Release notes

    Changed

    • Use newtype-uuid for the report UUID.
    Open source →
  8. 0.3.6 08 Apr 2024
    Release notes Open source →
    Release notes Open source →
  9. 0.3.6-rc.1 08 Apr 2024 pre-release
    Release notes Open source →
  10. 0.3.5 27 Oct 2023
    Release notes

    [quick-junit] version 0.3.5

    Open source →
    Release notes

    Fixed

    • Corrected the rust-version field in Cargo.toml to 1.70.

    Changed

    • The chrono dependency no longer imports the clock feature. This helps cut down on the dependency tree. Thanks @littledivy for your first contribution!
    Open source →
  11. 0.3.4 22 Oct 2023
    Release notes

    Fixed

    • Output::new now strips ANSI escapes as well. Thanks @MaienM for your first contribution!

    Changed

    • Internal dependency update: quick-xml updated to 0.31.0.
    • MSRV updated to Rust 1.70.
    Open source →
  12. 0.3.3 07 Jul 2023
    Release notes

    Added

    • TestCase now has an extra properties section and an add_property method, similar to TestSuite. Thanks @skycoop for your first contribution!

    Changed

    • Internal dependency update: quick-xml updated to 0.29.0.
    • MSRV updated to Rust 1.66.
    Open source →
  13. 0.3.2 23 Nov 2022
    Release notes

    Changed

    • Internal dependency update: quick-xml updated to 0.26.0.
    • MSRV updated to Rust 1.62.
    Open source →
  14. 0.3.1 23 Nov 2022
    Release notes

    (This version was not published due to a code issue.)

    Open source →
  15. 0.3.0 28 Jul 2022
    Release notes

    Added

    • Report contains a new uuid field with a unique identifier for a particular run. This is an extension to the JUnit spec.
    Open source →
  16. 0.2.0 21 Jun 2022
    Release notes

    Changed

    • quick-xml updated to 0.23.0.
    • The error type is now defined by quick-junit, so that future breaking changes to quick-xml will not necessitate a breaking change to this crate.
    • MSRV bumped to Rust 1.59.
    Open source →
  17. 0.1.5 13 Feb 2022
    Release notes

    Changed

    • Lower MSRV to Rust 1.54.
    Open source →
  18. 0.1.4 08 Feb 2022
    Release notes

    Fixed

    • In readme, fix link to cargo-nextest.

    Changed

    • Update repository location.
    Open source →
  19. 0.1.3 29 Jan 2022
    Release notes
    • In the readme, replace Markdown checkboxes with Unicode ✅ to make them render properly on crates.io.
    Open source →
  20. 0.1.2 29 Jan 2022
    Release notes
    • Expand readme.
    • Add keywords and categories.
    Open source →
  21. 0.1.1 29 Jan 2022
    Release notes
    • Fix repository field in Cargo.toml.
    Open source →
  22. 0.1.0 29 Jan 2022
    Release notes
    • Initial version.

    <!-- next-url --> [0.7.0]: https://github.com/nextest-rs/quick-junit/releases/tag/quick-junit-0.7.0 [0.6.1]: https://github.com/nextest-rs/quick-junit/releases/tag/quick-junit-0.6.1 [0.6.0]: https://github.com/nextest-rs/quick-junit/releases/tag/quick-junit-0.6.0 [0.5.2]: https://github.com/nextest-rs/quick-junit/releases/tag/quick-junit-0.5.2 [0.5.1]: https://github.com/nextest-rs/quick-junit/releases/tag/quick-junit-0.5.1 [0.5.0]: https://github.com/nextest-rs/quick-junit/releases/tag/quick-junit-0.5.0 [0.4.0]: https://github.com/nextest-rs/quick-junit/releases/tag/quick-junit-0.4.0 [0.3.6]: https://github.com/nextest-rs/quick-junit/releases/tag/quick-junit-0.3.6 [0.3.5]: https://github.com/nextest-rs/nextest/releases/tag/quick-junit-0.3.5 [0.3.4]: https://github.com/nextest-rs/nextest/releases/tag/quick-junit-0.3.4 [0.3.3]: https://github.com/nextest-rs/nextest/releases/tag/quick-junit-0.3.3 [0.3.2]: https://github.com/nextest-rs/nextest/releases/tag/quick-junit-0.3.2 [0.3.1]: https://github.com/nextest-rs/nextest/releases/tag/quick-junit-0.3.1 [0.3.0]: https://github.com/nextest-rs/nextest/releases/tag/quick-junit-0.3.0 [0.2.0]: https://github.com/nextest-rs/nextest/releases/tag/quick-junit-0.2.0 [0.1.5]: https://github.com/nextest-rs/nextest/releases/tag/quick-junit-0.1.5 [0.1.4]: https://github.com/nextest-rs/nextest/releases/tag/quick-junit-0.1.4 [0.1.3]: https://github.com/diem/diem-devtools/releases/tag/quick-junit-0.1.3 [0.1.2]: https://github.com/diem/diem-devtools/releases/tag/quick-junit-0.1.2 [0.1.1]: https://github.com/diem/diem-devtools/releases/tag/quick-junit-0.1.1 [0.1.0]: https://github.com/diem/diem-devtools/releases/tag/quick-junit-0.1.0

    Open source →

Every package, every release, already written down.

The archive is open and free. Watching your own project is what we are building next.

Browse the archive