History

Refine complex_graph `regex_matches` partial suppressions

This builds on #1635 by: - Updating the comment about #1622, including by adding links to Git mailing list posts by Aarni Koskela, who discovered the bug that turns out to be the cause of this, and Patrick Steinhardt, who analyzed the bug and wrote a fix (currently in testing); and https://github.com/GitoxideLabs/gitoxide/issues/1622#issuecomment-2529580735, which summarizes that and reports on its connection to #1622. - Narrowing the partial suppression of the failing test code (which consists of conditionally using `parse_spec_no_baseline` instead of `parse_spec` in some assertions) so that it is only done if Git is at one of the versions that is known to be affected. If any future Git versions are affected, such as by the currently cooking patch not being merged as soon as I expect, then this could potentially fail on CI again. But that is something we would probably want to find out about.

Eliah Kagan committed 1 year ago

Commit f4b4bf01 parent 801f9e91 file · +14 −6Browse files

Unified · Split

gix/tests/gix/revision/spec/from_bytes/regex.rs+14−6
@@ -95,11 +95,19 @@ mod find_youngest_matching_commit { · 94 unmodified lines
9595 fn regex_matches() {
9696 let repo = repo("complex_graph").unwrap();
9797
98− // On the full linux CI `test` workflow, archived baseline aren't used - instead fixtures will be re-evaluated.
99− // As of Git 2.47, its behaviour changed which makes the following assertion fail.
100− // We decided to just ignore it until it's clear that this isn't a bug - obviously the traversal order changed.
101− let is_in_test_ci_workflow = is_ci::cached() && std::env::var_os("GIX_TEST_IGNORE_ARCHIVES").is_some();
102− if is_in_test_ci_workflow {
98+ // The full Linux CI `test` job regenerates baselines instead of taking them from archives.
99+ // In Git 2.47.0 (and 2.47.1), the traversal order differs, so some `parse_spec` assertions
100+ // fail. This is a Git bug with a forthcoming fix. For now, we use `parse_spec_no_baseline`
101+ // for them when tests are run that way with known-affected Git versions. For details, see:
102+ //
103+ // - https://lore.kernel.org/git/Z1LJSADiStlFicTL@pks.im/T/
104+ // - https://lore.kernel.org/git/Z1LtS-8f8WZyobz3@pks.im/T/
105+ // - https://github.com/GitoxideLabs/gitoxide/issues/1622#issuecomment-2529580735
106+ let skip_some_baselines = is_ci::cached()
107+ && std::env::var_os("GIX_TEST_IGNORE_ARCHIVES").is_some()
108+ && ((2, 47, 0)..(2, 47, 2)).contains(&gix_testtools::GIT_VERSION);
109+
110+ if skip_some_baselines {
103111 assert_eq!(
104112 parse_spec_no_baseline(":/mes.age", &repo).unwrap(),
105113 Spec::from_id(hex_to_id("ef80b4b77b167f326351c93284dc0eb00dd54ff4").attach(&repo))
@@ -116,7 +124,7 @@ mod find_youngest_matching_commit { · 10 unmodified lines
116124 "None of 10 commits reached from all references matched regex \"not there\""
117125 );
118126
119− if is_in_test_ci_workflow {
127+ if skip_some_baselines {
120128 assert_eq!(
121129 parse_spec_no_baseline(":/!-message", &repo).unwrap(),
122130 Spec::from_id(hex_to_id("55e825ebe8fd2ff78cad3826afb696b96b576a7e").attach(&repo))

Keyboard shortcuts

General

Show keyboard shortcuts
?
Focus the current search
/

Issues and pull requests

Open filters
f

Issues, pull requests and Inbox

Select next item
j↓
Select previous item
k↑
Open selected item
Enter
Dismiss filters or clear selection
Esc

Repository code

Go to file
t