Skip to content

gitoxide

vgix-testtools-v0.19.0 scope: gix-testtools Breaking

This release includes 3 breaking changes for platform teams planning a safe upgrade.

Published 9d Version Control
✓ No known CVEs patched
Read the diff → Tool health → What is this tool? →

✓ No known CVEs patched in this version

Topics

blazingly-fast built-with-rust cli git version-control

Summary

AI summary

Broad release touches Commit Details, New Features, Bug Fixes, and Commit Statistics.

Full changelog

New Features

  • greatly improve the index File debug output.
    This allows tests to rely on it more with insta, and not miss a thing.
  • allow fixtures to require checked-in archivesAddscripted_fixture_read_only_needs_archive()` for fixtures whose generated
    output can vary in byte order across platforms or filesystems. The helper
    still validates archive identity, but bypasses GIX_TEST_IGNORE_ARCHIVES and
    re-extracts the checked-in archive so tests can opt into frozen fixture bytes
    when rerunning the producer is non-deterministic,
    for instance due to filesystem order.
  • add git utility to call git easily like git(cwd, "log --oneline")
  • add invoke_bash test helper()
  • Add hash_kind_from_env() to obtain the value of GIX_TEST_FIXTURE_HASH
    This is useful when tests want to inspect the hash under test.
  • use GIX_TEST_FIXTURE_HASH environment variable.
    For now, there is no direct way to set it, but that may change
    once we have tests that need it.
  • Add variants of scripted_fixture_read_only that allow for Rust post modification.
    That way, we can have the benefit of scripts and Rust for final tweaks.
  • add rust_fixture_read_only and rust_fixture_writable functions to gix-testtools

Bug Fixes

  • disable automatic Git maintenance in gix-testtools, add apply_git_config_by_environment utility
    Disable maintenance.auto and gc.auto through command-scope Git config for
    gix-testtools process execution, including fixture scripts, helper-launched Git,
    cargo example builds, git-daemon wrappers, and shell helpers.
  • also override XDG_CONFIG_HOME for test-scripts and commands runs.

New Features (BREAKING)

  • Make gix-testtools independent of gix crates
    This means that a trait implementation has to always be passed
    for what boils down to ignore handling.

    The standalone portion of the API is also removed.

  • add object_hash() function and rename hash_kind_from_env() to object_hash_from_env()
    For consistency and convenience.

Bug Fixes (BREAKING)

  • remove winnow and replace it with hand-implemented parsers everywhere.
    This will allow for simplified maintenance and editing (both human and machine)
    down the road, and enable additional performance optimisations.

    Parser compbinators to me ultimately were a failed experiment as I couldn't maintain
    them anyway, with it being too difficult for me to grasp and express everything
    in its very own kind of language, with a lot of different things to consider.

    Note that this also removes detailed errors from all parsers that previously
    used winnow, with the option to re-add those if there is demand.

  • rename Creation::ExecuteScipt to Creation::Execute
    This is more fitting since the arrival of Rust-based fixtures.

Commit Statistics

  • 70 commits contributed to the release.
  • 14 commits were understood as conventional.
  • 0 issues like '(#ID)' were seen in commit messages

Commit Details

view details
  • Uncategorized
    • Release gix-error v0.2.4, gix-date v0.15.4, gix-actor v0.41.1, gix-trace v0.1.20, gix-validate v0.11.2, gix-path v0.12.1, gix-utils v0.3.3, gix-features v0.48.1, gix-hash v0.25.1, gix-hashtable v0.15.1, gix-object v0.61.0, gix-glob v0.26.1, gix-quote v0.7.2, gix-attributes v0.33.1, gix-command v0.9.1, gix-packetline v0.21.4, gix-filter v0.31.0, gix-fs v0.21.2, gix-chunk v0.7.2, gix-commitgraph v0.37.1, gix-revwalk v0.32.0, gix-traverse v0.58.0, gix-worktree-stream v0.33.0, gix-archive v0.33.0, gix-bitmap v0.3.2, gix-tempfile v23.0.1, gix-lock v23.0.1, gix-index v0.52.0, gix-config-value v0.18.1, gix-pathspec v0.18.1, gix-ignore v0.21.1, gix-worktree v0.53.0, gix-imara-diff v0.2.2, gix-diff v0.64.0, gix-blame v0.14.0, gix-ref v0.64.0, gix-sec v0.14.1, gix-config v0.57.0, gix-prompt v0.15.1, gix-url v0.36.1, gix-credentials v0.38.1, gix-discover v0.52.0, gix-dir v0.26.0, gix-mailmap v0.33.1, gix-revision v0.46.0, gix-merge v0.17.0, gix-negotiate v0.32.0, gix-pack v0.71.0, gix-odb v0.81.0, gix-refspec v0.42.0, gix-shallow v0.12.1, gix-transport v0.57.1, gix-protocol v0.62.0, gix-status v0.31.0, gix-submodule v0.31.0, gix-worktree-state v0.31.0, gix v0.84.0, gix-fsck v0.22.0, gitoxide-core v0.58.0, gitoxide v0.54.0, safety bump 27 crates (10c58bb)
    • Merge pull request #2612 from GitoxideLabs/improvements (4377485)
    • spawn_git_daemon now spawns the git daemon on a free port automatically (123cdaf)
    • Disable automatic Git maintenance in gix-testtools, add apply_git_config_by_environment utility (cad26e9)
    • Merge pull request #2591 from AaronMoat/untracked-extension-reading (85c6087)
    • Greatly improve the index File debug output. (e4bdd1f)
    • Also override XDG_CONFIG_HOME for test-scripts and commands runs. (83ab103)
    • Allow fixtures to require checked-in archives` (36d8498)
    • Merge pull request #2578 from cruessler/run-gix-tests-with-sha-256 (2d4a6f2)
    • Add git utility to call git easily like git(cwd, "log --oneline") (fa02742)
    • Merge pull request #2590 from GitoxideLabs/independent-testtools (575113d)
    • Adapt to changes in gix-testtools (ce9e6bd)
    • Make gix-testtools independent of gix crates (c825352)
    • Merge pull request #2589 from GitoxideLabs/fix-status-in-unborn-repo (ba7d9a4)
    • Stabilize filter-driver example use in parallel tests to remove flake (db16a05)
    • Merge pull request #2573 from cruessler/run-gix-traverse-tests-with-sha-256 (278d7ec)
    • Review (1cd36be)
    • Merge pull request #2568 from GitoxideLabs/dependabot/cargo/cargo-56d6b174d8 (ab2fee1)
    • Update crates to Rust 2024 edition (2cb17b2)
    • Raise MSRV for hash dependency updates (3675a8d)
    • Merge pull request #2559 from GitoxideLabs/fix/symlink-prefix-reuse-worktree-escape-ghsa-f89h-2fjh-2r9q (3af9b4a)
    • Release gix-fs v0.21.1 (d3e4c17)
    • Merge pull request #2543 from cruessler/run-gix-worktree-stream-tests-with-sha-256 (23af41a)
    • Adapt to changes in gix-testtoolsand rename hash_kind -> object_hash (d9648e8)
    • Add object_hash() function and rename hash_kind_from_env() to object_hash_from_env() (85961b5)
    • Merge pull request #2546 from GitoxideLabs/fix-2545 (adb8328)
    • Cargo fmt to fix CI (d1237b7)
    • Release gix-error v0.2.3, gix-date v0.15.3, gix-actor v0.41.0, gix-path v0.12.0, gix-features v0.48.0, gix-hash v0.25.0, gix-hashtable v0.15.0, gix-object v0.60.0, gix-glob v0.26.0, gix-attributes v0.33.0, gix-command v0.9.0, gix-filter v0.30.0, gix-fs v0.21.0, gix-commitgraph v0.37.0, gix-revwalk v0.31.0, gix-traverse v0.57.0, gix-worktree-stream v0.32.0, gix-archive v0.32.0, gix-tempfile v23.0.0, gix-lock v23.0.0, gix-index v0.51.0, gix-config-value v0.18.0, gix-pathspec v0.18.0, gix-ignore v0.21.0, gix-worktree v0.52.0, gix-imara-diff v0.2.1, gix-diff v0.63.0, gix-blame v0.13.0, gix-ref v0.63.0, gix-sec v0.14.0, gix-config v0.56.0, gix-prompt v0.15.0, gix-url v0.36.0, gix-credentials v0.38.0, gix-discover v0.51.0, gix-dir v0.25.0, gix-mailmap v0.33.0, gix-revision v0.45.0, gix-merge v0.16.0, gix-negotiate v0.31.0, gix-pack v0.70.0, gix-odb v0.80.0, gix-refspec v0.41.0, gix-shallow v0.12.0, gix-transport v0.57.0, gix-protocol v0.61.0, gix-status v0.30.0, gix-submodule v0.30.0, gix-worktree-state v0.30.0, gix v0.83.0, gix-fsck v0.21.0, gitoxide-core v0.57.0, gitoxide v0.53.0, safety bump 48 crates (53f880c)
    • Fix CI - and probably prevent can't connect to localhost in journey tests (09687eb)
    • Remove winnow and replace it with hand-implemented parsers everywhere. (91c854e)
    • Merge pull request #2540 from GitoxideLabs/reporting (4d5ba23)
    • Update changelogs prior to release (f9fbcba)
    • Merge pull request #2511 from GitoxideLabs/improvements (1fc129d)
    • Add invoke_bash test helper() (33c0a8b)
    • Merge pull request #2499 from GitoxideLabs/dependabot/cargo/cargo-17cc682121 (44020e0)
    • Bump the cargo group with 26 updates (9d04035)
    • Merge pull request #2496 from GitoxideLabs/improvements (2aedd14)
    • Remove unnecessary message when using fixtures (e68a42a)
    • Merge pull request #2448 from cruessler/add-sha-256-to-gix-refspec (9a78ae2)
    • Add hash_kind_from_env() to obtain the value of GIX_TEST_FIXTURE_HASH (2a5e787)
    • Make hash_kind_from_env public (726e1b9)
    • Merge pull request #2480 from GitoxideLabs/report (98bae84)
    • Release gix-error v0.2.1, gix-date v0.15.1, gix-path v0.11.2, gix-features v0.46.2, gix-hash v0.23.0, gix-hashtable v0.13.0, gix-object v0.58.0, gix-packetline v0.21.2, gix-filter v0.28.0, gix-fs v0.19.2, gix-commitgraph v0.35.0, gix-revwalk v0.29.0, gix-traverse v0.55.0, gix-worktree-stream v0.30.0, gix-archive v0.30.0, gix-tempfile v21.0.2, gix-lock v21.0.2, gix-index v0.49.0, gix-pathspec v0.16.1, gix-ignore v0.19.1, gix-worktree v0.50.0, gix-diff v0.61.0, gix-blame v0.11.0, gix-ref v0.61.0, gix-sec v0.13.2, gix-config v0.54.0, gix-prompt v0.14.1, gix-credentials v0.37.1, gix-discover v0.49.0, gix-dir v0.23.0, gix-revision v0.43.0, gix-merge v0.14.0, gix-negotiate v0.29.0, gix-pack v0.68.0, gix-odb v0.78.0, gix-refspec v0.39.0, gix-shallow v0.10.0, gix-transport v0.55.1, gix-protocol v0.59.0, gix-status v0.28.0, gix-submodule v0.28.0, gix-worktree-state v0.28.0, gix v0.81.0, gix-fsck v0.19.0, gitoxide-core v0.55.0, gitoxide v0.52.0, safety bump 31 crates (c389a2c)
    • Merge pull request #2454 from GitoxideLabs/dependabot/cargo/cargo-da044b9bb0 (6183fd0)
    • Bump the cargo group with 68 updates (6bdb331)
    • Merge pull request #2441 from cruessler/remove-sha-1-from-default-features (e8bf096)
    • Adapt to sha1 not being default feature of gix-hash (e71c703)
    • Merge pull request #2442 from GitoxideLabs/report (f7277f3)
    • Release gix-error v0.2.0, gix-date v0.15.0, gix-actor v0.40.0, gix-object v0.57.0, gix-quote v0.7.0, gix-attributes v0.31.0, gix-command v0.8.0, gix-filter v0.27.0, gix-chunk v0.7.0, gix-commitgraph v0.34.0, gix-revwalk v0.28.0, gix-traverse v0.54.0, gix-worktree-stream v0.29.0, gix-archive v0.29.0, gix-bitmap v0.3.0, gix-index v0.48.0, gix-pathspec v0.16.0, gix-worktree v0.49.0, gix-diff v0.60.0, gix-blame v0.10.0, gix-ref v0.60.0, gix-config v0.53.0, gix-prompt v0.14.0, gix-url v0.35.2, gix-credentials v0.37.0, gix-discover v0.48.0, gix-dir v0.22.0, gix-mailmap v0.32.0, gix-revision v0.42.0, gix-merge v0.13.0, gix-negotiate v0.28.0, gix-pack v0.67.0, gix-odb v0.77.0, gix-refspec v0.38.0, gix-shallow v0.9.0, gix-transport v0.55.0, gix-protocol v0.58.0, gix-status v0.27.0, gix-submodule v0.27.0, gix-worktree-state v0.27.0, gix v0.80.0, gix-fsck v0.18.0, gitoxide-core v0.54.0, gitoxide v0.51.0, safety bump 42 crates (ecf90fc)
    • Merge pull request #2377 from cruessler/add-sha-256-to-gix-commitgraph (228caf7)
    • Refactor (8ccd760)
    • Use GIX_TEST_FIXTURE_HASH environment variable. (7f50c30)
    • Merge branch 'release' (9327b73)
    • Release gix-error v0.1.0, gix-date v0.14.0, gix-actor v0.39.0, gix-trace v0.1.18, gix-path v0.11.1, gix-features v0.46.1, gix-hash v0.22.1, gix-object v0.56.0, gix-quote v0.6.2, gix-attributes v0.30.1, gix-command v0.7.1, gix-packetline v0.21.1, gix-filter v0.26.0, gix-fs v0.19.1, gix-chunk v0.6.0, gix-commitgraph v0.33.0, gix-revwalk v0.27.0, gix-traverse v0.53.0, gix-worktree-stream v0.28.0, gix-archive v0.28.0, gix-bitmap v0.2.16, gix-tempfile v21.0.1, gix-lock v21.0.1, gix-index v0.47.0, gix-config-value v0.17.1, gix-pathspec v0.15.1, gix-worktree v0.48.0, gix-diff v0.59.0, gix-blame v0.9.0, gix-ref v0.59.0, gix-sec v0.13.1, gix-config v0.52.0, gix-prompt v0.13.1, gix-url v0.35.1, gix-credentials v0.36.0, gix-discover v0.47.0, gix-dir v0.21.0, gix-mailmap v0.31.0, gix-revision v0.41.0, gix-merge v0.12.0, gix-negotiate v0.27.0, gix-pack v0.66.0, gix-odb v0.76.0, gix-refspec v0.37.0, gix-shallow v0.8.1, gix-transport v0.54.0, gix-protocol v0.57.0, gix-status v0.26.0, gix-submodule v0.26.0, gix-worktree-state v0.26.0, gix v0.79.0, safety bump 35 crates (d66ac10)
    • Merge pull request #2415 from GitoxideLabs/improvements (5c9e6ae)
    • Rename Creation::ExecuteScipt to Creation::Execute (f4bb106)
    • Merge pull request #2414 from GitoxideLabs/improvements (a3e7b6e)
    • Make sure rust-scripts are always executed in the final destination. (8c97151)
    • Merge pull request #2413 from GitoxideLabs/improvements (70a250c)
    • Change the signature of post Rust closures to allow returning values. (594fe4c)
    • Add variants of scripted_fixture_read_only that allow for Rust post modification. (61c504d)
    • Better docs for Rust fixture method in test tools (fd0328f)
    • Merge pull request #2412 from GitoxideLabs/copilot/add-execute-rust-closures-again (675ce68)
    • Address Copilot review (b63bf6f)
    • Deduplicate testtools marker implementation (fff844b)
    • Refactor (ab33ceb)
    • Add rust_fixture_read_only and rust_fixture_writable functions to gix-testtools (501da55)
    • Merge pull request #2407 from GitoxideLabs/dependabot/cargo/cargo-fb4135702f (8bceefb)
    • Bump the cargo group with 59 updates (7ce3c55)
    • Merge pull request #2398 from GitoxideLabs/release (3b6650a)

Breaking Changes

  • Make `gix-testtools` independent of `gix` crates, requiring trait implementations for ignore handling and removing the `standalone` API portion.
  • Remove `winnow` crate and replace all parsers with hand‑implemented equivalents, eliminating detailed error messages from former winnow parsers.
  • Rename `Creation::ExecuteScipt` to `Creation::Execute`.

Weekly OSS security release digest.

The CVE patches and breaking changes that affected production tools this week. One email, every Sunday.

No spam, unsubscribe anytime.

Share this release

Track gitoxide

Get notified when new releases ship.

Sign up free

About gitoxide

An idiomatic, lean, fast & safe pure Rust implementation of Git

All releases →

Related context

Earlier breaking changes

  • vgix-v0.84.0 Allow checkouts of empty repositories; `destination_must_be_empty` becomes `Option<bool>`
  • vgix-worktree-stream-v0.33.0 Changes API of `Stream::add_entry_from_path` to require `hash_kind` argument.
  • vgix-object-v0.61.0 Renames `Data::hash_kind` to `Data::object_hash` for consistency.

Beta — feedback welcome: [email protected]