Skip to content

Commit 2caf814

Browse files
committed
split VersionDeleted from crate-deletes
1 parent 967836b commit 2caf814

File tree

4 files changed

+24
-18
lines changed

4 files changed

+24
-18
lines changed

src/index/diff/delegate.rs

Lines changed: 2 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -55,7 +55,7 @@ impl Delegate {
5555
for line in obj.data.lines() {
5656
deleted.push(version_from_json_line(line, change.location)?);
5757
}
58-
self.changes.push(Change::Deleted {
58+
self.changes.push(Change::CrateDeleted {
5959
name: change.location.to_string(),
6060
versions: deleted,
6161
});
@@ -90,7 +90,6 @@ impl Delegate {
9090
);
9191
}
9292

93-
let mut deleted = Vec::new();
9493
for line in old_lines.drain() {
9594
let old_version = version_from_json_line(line, location)?;
9695
let new_version = new_versions
@@ -106,15 +105,9 @@ impl Delegate {
106105
};
107106
self.changes.push(change)
108107
}
109-
None => deleted.push(old_version),
108+
None => self.changes.push(Change::VersionDeleted(old_version)),
110109
}
111110
}
112-
if !deleted.is_empty() {
113-
self.changes.push(Change::Deleted {
114-
name: deleted[0].name.to_string(),
115-
versions: deleted,
116-
})
117-
}
118111
for version in new_versions.drain() {
119112
let change = if version.yanked {
120113
Change::AddedAndYanked(version)

src/types.rs

Lines changed: 18 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -33,12 +33,14 @@ pub enum Change {
3333
/// A crate version was yanked.
3434
Yanked(CrateVersion),
3535
/// The name of the crate whose file was deleted, which implies all versions were deleted as well.
36-
Deleted {
36+
CrateDeleted {
3737
/// The name of the deleted crate.
3838
name: String,
3939
/// All of its versions that were deleted along with the file.
4040
versions: Vec<CrateVersion>,
4141
},
42+
/// A crate version was deleted.
43+
VersionDeleted(CrateVersion),
4244
}
4345

4446
impl Change {
@@ -67,9 +69,17 @@ impl Change {
6769
}
6870

6971
/// Return the deleted crate, if this is this kind of change.
70-
pub fn deleted(&self) -> Option<(&str, &[CrateVersion])> {
72+
pub fn crate_deleted(&self) -> Option<(&str, &[CrateVersion])> {
7173
match self {
72-
Change::Deleted { name, versions } => Some((name.as_str(), versions)),
74+
Change::CrateDeleted { name, versions } => Some((name.as_str(), versions)),
75+
_ => None,
76+
}
77+
}
78+
79+
/// Return the deleted version crate, if this is this kind of change.
80+
pub fn version_deleted(&self) -> Option<&CrateVersion> {
81+
match self {
82+
Change::VersionDeleted(v) => Some(v),
7383
_ => None,
7484
}
7585
}
@@ -84,8 +94,9 @@ impl Change {
8494
Change::Added(v)
8595
| Change::Unyanked(v)
8696
| Change::AddedAndYanked(v)
87-
| Change::Yanked(v) => slice::from_ref(v),
88-
Change::Deleted { versions, .. } => versions,
97+
| Change::Yanked(v)
98+
| Change::VersionDeleted(v) => slice::from_ref(v),
99+
Change::CrateDeleted { versions, .. } => versions,
89100
}
90101
}
91102
}
@@ -98,7 +109,8 @@ impl fmt::Display for Change {
98109
match *self {
99110
Change::Added(_) => "added",
100111
Change::Yanked(_) => "yanked",
101-
Change::Deleted { .. } => "deleted",
112+
Change::CrateDeleted { .. } => "crate deleted",
113+
Change::VersionDeleted(_) => "version deleted",
102114
Change::Unyanked(_) => "unyanked",
103115
Change::AddedAndYanked(_) => "added and yanked",
104116
}

tests/index/changes_between_commits.rs

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,7 @@ fn directory_deletions_are_not_picked_up() -> crate::Result {
77
let changes = changes(index_ro()?, ":/reproduce issue #20")?;
88
assert_eq!(changes.len(), 1);
99
assert_eq!(
10-
changes.first().and_then(|c| c.deleted().map(|t| t.0)),
10+
changes.first().and_then(|c| c.crate_deleted().map(|t| t.0)),
1111
Some("allowed")
1212
);
1313
Ok(())
@@ -89,7 +89,7 @@ fn deletion() -> crate::Result {
8989
let changes = changes(index_ro()?, "@^{/Delete crates}")?;
9090
assert_eq!(changes.len(), 1);
9191
assert_eq!(
92-
changes.first().and_then(|c| c.deleted().map(|t| t.0)),
92+
changes.first().and_then(|c| c.crate_deleted().map(|t| t.0)),
9393
Some("girl")
9494
);
9595
Ok(())

tests/shared/mod.rs

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -118,14 +118,15 @@ pub fn baseline(mode: Step) -> Result<(), Box<dyn std::error::Error + Send + Syn
118118
.expect("these events mean `Added*` events have been emitted") =
119119
v.yanked
120120
}
121-
Deleted {
121+
CrateDeleted {
122122
versions: deleted, ..
123123
} => {
124124
// delete a yanked crate
125125
for deleted_version in deleted {
126126
versions.remove(&deleted_version.checksum);
127127
}
128128
}
129+
VersionDeleted(v) => versions.remove(&v.checksum),
129130
}
130131
}
131132
let elapsed = start.elapsed().as_secs_f32();

0 commit comments

Comments
 (0)