Skip to content

Commit 2368a14

Browse files
committed
Implement test for optional non-dev dependency fix
1 parent 38f9edd commit 2368a14

5 files changed

Lines changed: 72 additions & 3 deletions

File tree

.gitignore

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1 +1 @@
1-
/target
1+
target

fixtures/optional_non_dev_dep/Cargo.lock

Lines changed: 25 additions & 0 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.
Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,13 @@
1+
[package]
2+
name = "optional_non_dev_dep"
3+
version = "0.1.0"
4+
edition = "2024"
5+
publish = false
6+
7+
[dependencies]
8+
libz-rs-sys = { version = "=0.5.5", optional = true }
9+
10+
[dev-dependencies]
11+
libz-rs-sys = "=0.5.5"
12+
13+
[workspace]
Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,14 @@
1+
pub fn add(left: u64, right: u64) -> u64 {
2+
left + right
3+
}
4+
5+
#[cfg(test)]
6+
mod tests {
7+
use super::*;
8+
9+
#[test]
10+
fn it_works() {
11+
let result = add(2, 2);
12+
assert_eq!(result, 4);
13+
}
14+
}

src/common.rs

Lines changed: 19 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -231,7 +231,7 @@ pub fn comma_separated_list(list: &[String]) -> String {
231231
#[cfg(test)]
232232
mod tests {
233233
use super::{sourced_dependencies_from_metadata, SourcedPackage};
234-
use cargo_metadata::Metadata;
234+
use cargo_metadata::{Metadata, MetadataCommand};
235235
use std::{
236236
cmp::Ordering,
237237
env::var,
@@ -281,7 +281,8 @@ mod tests {
281281
}
282282
}
283283

284-
// `cargo` has `snapbox` as a dev dependency. `snapbox` has `snapbox-macros` as a normal dependency.
284+
// `cargo` has `snapbox` as a dev dependency. `snapbox` has `snapbox-macros` as a normal
285+
// dependency.
285286

286287
#[test]
287288
fn cargo() {
@@ -306,6 +307,22 @@ mod tests {
306307
assert!(deps.iter().any(|dep| dep.package.name == "snapbox-macros"));
307308
}
308309

310+
#[test]
311+
fn optional_dependency_excluded_when_not_activated() {
312+
let metadata = MetadataCommand::new()
313+
.current_dir("fixtures/optional_non_dev_dep")
314+
.exec()
315+
.unwrap();
316+
317+
let deps = sourced_dependencies_from_metadata(metadata.clone(), false).unwrap();
318+
assert!(deps.iter().any(|dep| dep.package.name == "libz-rs-sys"));
319+
320+
let deps_no_dev = sourced_dependencies_from_metadata(metadata, true).unwrap();
321+
assert!(!deps_no_dev
322+
.iter()
323+
.any(|dep| dep.package.name == "libz-rs-sys"));
324+
}
325+
309326
fn sourced_dependencies_from_file(path: impl AsRef<Path>) -> Vec<SourcedPackage> {
310327
let contents = read_to_string(path).unwrap();
311328
serde_json::from_str::<Vec<SourcedPackage>>(&contents).unwrap()

0 commit comments

Comments
 (0)