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
95 fn regex_matches() {95 fn regex_matches() {
96 let repo = repo("complex_graph").unwrap();96 let repo = repo("complex_graph").unwrap();
97 97
98 // On the full linux CI `test` workflow, archived baseline aren't used - instead fixtures will be re-evaluated.98 // The full Linux CI `test` job regenerates baselines instead of taking them from archives.
99 // As of Git 2.47, its behaviour changed which makes the following assertion fail.99 // In Git 2.47.0 (and 2.47.1), the traversal order differs, so some `parse_spec` assertions
100 // We decided to just ignore it until it's clear that this isn't a bug - obviously the traversal order changed.100 // fail. This is a Git bug with a forthcoming fix. For now, we use `parse_spec_no_baseline`
101 let is_in_test_ci_workflow = is_ci::cached() && std::env::var_os("GIX_TEST_IGNORE_ARCHIVES").is_some();101 // for them when tests are run that way with known-affected Git versions. For details, see:
102 if is_in_test_ci_workflow {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 {
103 assert_eq!(111 assert_eq!(
104 parse_spec_no_baseline(":/mes.age", &repo).unwrap(),112 parse_spec_no_baseline(":/mes.age", &repo).unwrap(),
105 Spec::from_id(hex_to_id("ef80b4b77b167f326351c93284dc0eb00dd54ff4").attach(&repo))113 Spec::from_id(hex_to_id("ef80b4b77b167f326351c93284dc0eb00dd54ff4").attach(&repo))
@@ -116,7 +124,7 @@ mod find_youngest_matching_commit { · 10 unmodified lines
116 "None of 10 commits reached from all references matched regex \"not there\""124 "None of 10 commits reached from all references matched regex \"not there\""
117 );125 );
118 126
119 if is_in_test_ci_workflow {127 if skip_some_baselines {
120 assert_eq!(128 assert_eq!(
121 parse_spec_no_baseline(":/!-message", &repo).unwrap(),129 parse_spec_no_baseline(":/!-message", &repo).unwrap(),
122 Spec::from_id(hex_to_id("55e825ebe8fd2ff78cad3826afb696b96b576a7e").attach(&repo))130 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