Skip to content

Commit 959c566

Browse files
committed
add a test specifically for the VersionDeleted variant.
1 parent b0f84d0 commit 959c566

9 files changed

+62
-7
lines changed

Cargo.toml

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -46,7 +46,6 @@ ahash = "0.8.0"
4646
hashbrown = { version = "0.14.0", features = ["raw"] }
4747

4848
[dev-dependencies]
49-
gix = { version = "0.48.0", default-features = false, features = ["regex"] }
5049
gix-testtools = "0.12.0"
5150
crates-index = "0.19.10"
5251
tempdir = "0.3.5"

src/types.rs

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -40,6 +40,9 @@ pub enum Change {
4040
versions: Vec<CrateVersion>,
4141
},
4242
/// A crate version was deleted.
43+
///
44+
/// Note that this is equivalent to deleting a line from a crates version file.
45+
/// Should more than one lines be removed per commit, the order of these changes is nondeterministic.
4346
VersionDeleted(CrateVersion),
4447
}
4548

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,3 @@
11
version https://git-lfs.github.com/spec/v1
2-
oid sha256:0fb4eff8580681c0ba6251b18ec7b78503881bd38b185b0209745d24b7fffedd
3-
size 593240
2+
oid sha256:1815d2acb56808df48ff0a06c15b20114959d33ee9bdcaf37e1674a4b7ffbded
3+
size 589032

tests/fixtures/index-parts/commit.list

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -332,3 +332,4 @@ reproduce-#26-1
332332
reproduce-#26-2
333333
reproduce-#26-3
334334
reproduce-#26-4
335+
single-version-deletion
Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,12 @@
1+
diff --git a/an/si/ansi-color-codec b/an/si/ansi-color-codec
2+
index f240492..7ca212b 100644
3+
--- a/an/si/ansi-color-codec
4+
+++ b/an/si/ansi-color-codec
5+
@@ -1,7 +1,5 @@
6+
{"name":"ansi-color-codec","vers":"0.2.9","deps":[{"name":"clap","req":"^4.0.23","features":["derive"],"optional":false,"default_features":true,"target":null,"kind":"normal"},{"name":"ctrlc","req":"^3.2.3","features":[],"optional":false,"default_features":true,"target":null,"kind":"normal"}],"cksum":"a18b40315b9f13d98ae2ee8df35cdb810d696d197f859c15365fb6d34ecbba11","features":{},"yanked":true,"links":null}
7+
-{"name":"ansi-color-codec","vers":"0.3.1","deps":[{"name":"clap","req":"^4.0.23","features":["derive"],"optional":false,"default_features":true,"target":null,"kind":"normal"},{"name":"ctrlc","req":"^3.2.3","features":[],"optional":false,"default_features":true,"target":null,"kind":"normal"}],"cksum":"b14431739f0b027eede3789fc83f1c13deae067f369e8456ef5d183ddbdf82c4","features":{},"yanked":true,"links":null}
8+
{"name":"ansi-color-codec","vers":"0.3.2","deps":[{"name":"clap","req":"^4.0.23","features":["derive"],"optional":false,"default_features":true,"target":null,"kind":"normal"},{"name":"ctrlc","req":"^3.2.3","features":[],"optional":false,"default_features":true,"target":null,"kind":"normal"}],"cksum":"fed46d46cba320856b6a9186d60129dfad6c142a5a6c00c922cfa6990140c26f","features":{},"yanked":true,"links":null}
9+
{"name":"ansi-color-codec","vers":"0.3.3","deps":[{"name":"clap","req":"^4.0.23","features":["derive"],"optional":false,"default_features":true,"target":null,"kind":"normal"},{"name":"ctrlc","req":"^3.2.3","features":[],"optional":false,"default_features":true,"target":null,"kind":"normal"}],"cksum":"ad5a24fc4e47f61b52b8b4c6544bb47db648666f5a742b8776cc90a98a4c2459","features":{},"yanked":true,"links":null}
10+
-{"name":"ansi-color-codec","vers":"0.3.4","deps":[{"name":"clap","req":"^4.0.23","features":["derive"],"optional":false,"default_features":true,"target":null,"kind":"normal"},{"name":"ctrlc","req":"^3.2.3","features":[],"optional":false,"default_features":true,"target":null,"kind":"normal"}],"cksum":"1048f2e4c18e0a4ca910a8f78da2b31c8257f5ffe4922432c85ac1677933722b","features":{},"yanked":true,"links":null}
11+
{"name":"ansi-color-codec","vers":"0.3.5","deps":[{"name":"clap","req":"^4.0.23","features":["derive"],"optional":false,"default_features":true,"target":null,"kind":"normal"},{"name":"ctrlc","req":"^3.2.3","features":[],"optional":false,"default_features":true,"target":null,"kind":"normal"}],"cksum":"9b56ec379f35520cdb52f98d3269cd26d59088414fef86817d4f933c06b9374a","features":{},"yanked":true,"links":null}
12+
{"name":"ansi-color-codec","vers":"0.3.11","deps":[{"name":"clap","req":"^4.0.23","features":["derive"],"optional":false,"default_features":true,"target":null,"kind":"normal"},{"name":"ctrlc","req":"^3.2.3","features":[],"optional":false,"default_features":true,"target":null,"kind":"normal"}],"cksum":"92d898f94a19fefba0f0b9906376ef7e1be7e542cd958fd0fd4de1c7c2c9818a","features":{},"yanked":false,"links":null}
Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
trigger a single-version deletion event created when deleting a line from a version file

tests/fixtures/make-index-parts.sh

Lines changed: 20 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -9,7 +9,7 @@ root="$(cd "${0%/*}" && pwd)"
99
out="$root/index-parts"
1010
mkdir -p "$out"
1111
(
12-
cd "${1:?first argument is the clone of https://github.com/arlosi/crates.io-index}"
12+
cd "${1:?first argument is the clone of https://github.com/arlosi/crates.io-index (use the 'regenerate' branch}"
1313
paths="gi/ .github"
1414
revlist="$root/.tmp.revs"
1515
{ git log --format=format:%H $paths; echo; } | tail -r > "$revlist"
@@ -124,4 +124,23 @@ index 36a32366eb..f24049269d 100644
124124
EOF
125125
echo "$base_name" >> "$commit_list"
126126
echo 'reproduce issue #26: yanking ansi-color-codec 0.3.5 92c18bdf30' > "$base.msg"
127+
128+
base_name='single-version-deletion'
129+
base="$out/$base_name"
130+
cat <<EOF > "$base.diff"
131+
diff --git a/an/si/ansi-color-codec b/an/si/ansi-color-codec
132+
index f240492..7ca212b 100644
133+
--- a/an/si/ansi-color-codec
134+
+++ b/an/si/ansi-color-codec
135+
@@ -1,7 +1,5 @@
136+
{"name":"ansi-color-codec","vers":"0.2.9","deps":[{"name":"clap","req":"^4.0.23","features":["derive"],"optional":false,"default_features":true,"target":null,"kind":"normal"},{"name":"ctrlc","req":"^3.2.3","features":[],"optional":false,"default_features":true,"target":null,"kind":"normal"}],"cksum":"a18b40315b9f13d98ae2ee8df35cdb810d696d197f859c15365fb6d34ecbba11","features":{},"yanked":true,"links":null}
137+
-{"name":"ansi-color-codec","vers":"0.3.1","deps":[{"name":"clap","req":"^4.0.23","features":["derive"],"optional":false,"default_features":true,"target":null,"kind":"normal"},{"name":"ctrlc","req":"^3.2.3","features":[],"optional":false,"default_features":true,"target":null,"kind":"normal"}],"cksum":"b14431739f0b027eede3789fc83f1c13deae067f369e8456ef5d183ddbdf82c4","features":{},"yanked":true,"links":null}
138+
{"name":"ansi-color-codec","vers":"0.3.2","deps":[{"name":"clap","req":"^4.0.23","features":["derive"],"optional":false,"default_features":true,"target":null,"kind":"normal"},{"name":"ctrlc","req":"^3.2.3","features":[],"optional":false,"default_features":true,"target":null,"kind":"normal"}],"cksum":"fed46d46cba320856b6a9186d60129dfad6c142a5a6c00c922cfa6990140c26f","features":{},"yanked":true,"links":null}
139+
{"name":"ansi-color-codec","vers":"0.3.3","deps":[{"name":"clap","req":"^4.0.23","features":["derive"],"optional":false,"default_features":true,"target":null,"kind":"normal"},{"name":"ctrlc","req":"^3.2.3","features":[],"optional":false,"default_features":true,"target":null,"kind":"normal"}],"cksum":"ad5a24fc4e47f61b52b8b4c6544bb47db648666f5a742b8776cc90a98a4c2459","features":{},"yanked":true,"links":null}
140+
-{"name":"ansi-color-codec","vers":"0.3.4","deps":[{"name":"clap","req":"^4.0.23","features":["derive"],"optional":false,"default_features":true,"target":null,"kind":"normal"},{"name":"ctrlc","req":"^3.2.3","features":[],"optional":false,"default_features":true,"target":null,"kind":"normal"}],"cksum":"1048f2e4c18e0a4ca910a8f78da2b31c8257f5ffe4922432c85ac1677933722b","features":{},"yanked":true,"links":null}
141+
{"name":"ansi-color-codec","vers":"0.3.5","deps":[{"name":"clap","req":"^4.0.23","features":["derive"],"optional":false,"default_features":true,"target":null,"kind":"normal"},{"name":"ctrlc","req":"^3.2.3","features":[],"optional":false,"default_features":true,"target":null,"kind":"normal"}],"cksum":"9b56ec379f35520cdb52f98d3269cd26d59088414fef86817d4f933c06b9374a","features":{},"yanked":true,"links":null}
142+
{"name":"ansi-color-codec","vers":"0.3.11","deps":[{"name":"clap","req":"^4.0.23","features":["derive"],"optional":false,"default_features":true,"target":null,"kind":"normal"},{"name":"ctrlc","req":"^3.2.3","features":[],"optional":false,"default_features":true,"target":null,"kind":"normal"}],"cksum":"92d898f94a19fefba0f0b9906376ef7e1be7e542cd958fd0fd4de1c7c2c9818a","features":{},"yanked":false,"links":null}
143+
EOF
144+
echo "$base_name" >> "$commit_list"
145+
echo 'trigger a single-version deletion event created when deleting a line from a version file' > "$base.msg"
127146
)

tests/index/changes_between_commits.rs

Lines changed: 20 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -114,6 +114,26 @@ fn crate_deletion_with_multiple_versions() -> crate::Result {
114114
Ok(())
115115
}
116116

117+
#[test]
118+
fn delete_single_version() -> crate::Result {
119+
let changes = changes(index_ro()?, "@^{/trigger a single-version deletion}")?;
120+
assert_eq!(changes.len(), 2);
121+
let mut changes: Vec<_> = changes
122+
.iter()
123+
.map(|change| {
124+
change
125+
.version_deleted()
126+
.expect("only single versions deleted here")
127+
.version
128+
.clone()
129+
})
130+
.collect();
131+
changes.sort();
132+
assert_eq!(changes[0], "0.3.1");
133+
assert_eq!(changes[1], "0.3.4");
134+
Ok(())
135+
}
136+
117137
#[test]
118138
fn new_version() -> crate::Result {
119139
let changes = changes(index_ro()?, ":/Updating crate `git-repository#0.22.1`")?;

tests/index/mod.rs

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,7 @@ use std::sync::atomic::AtomicBool;
77

88
mod changes_between_commits;
99

10-
const NUM_CHANGES_SINCE_EVER: usize = 3523;
10+
const NUM_CHANGES_SINCE_EVER: usize = 3521;
1111

1212
#[test]
1313
fn peek_changes() -> crate::Result {
@@ -102,8 +102,8 @@ fn changes_since_last_fetch() {
102102
"seen branch was updated again"
103103
);
104104
assert_eq!(
105-
num_seen_after_reset, 1,
106-
"normalization has no changes, but the commit before has one"
105+
num_seen_after_reset, 2,
106+
"normalization has no changes, but the commit before has one, and apparently the version-deleted commit also adds one here"
107107
);
108108

109109
assert_eq!(

0 commit comments

Comments
 (0)