Skip to content

Commit 02771bf

Browse files
AlexStocksOmX
andcommitted
test(ci): make Linux contracts lint clean
The Ubuntu lint matrix compiles Linux-only runner contract tests that Windows does not see. Those tests still used Result::unwrap even though the repository lint gate denies clippy::unwrap_used. Replace each unwrap with an operation-specific expect message. This preserves the test behavior while making failures diagnosable and keeping the same fail-closed assertions. Co-authored-by: OmX <omx@oh-my-codex.dev> Signed-off-by: Xin.Zh <alexstocks@foxmail.com>
1 parent 6903a4c commit 02771bf

1 file changed

Lines changed: 39 additions & 35 deletions

File tree

tools/compat/tests/ci_contract.rs

Lines changed: 39 additions & 35 deletions
Original file line numberDiff line numberDiff line change
@@ -1544,30 +1544,31 @@ fn vector_differential_runner_rejects_collection_and_result_drift() {
15441544
std::process::id(),
15451545
std::time::SystemTime::now()
15461546
.duration_since(std::time::UNIX_EPOCH)
1547-
.unwrap()
1547+
.expect("clock must be after the Unix epoch")
15481548
.as_nanos()
15491549
));
1550-
fs::create_dir(&scratch).unwrap();
1550+
fs::create_dir(&scratch).expect("create differential validator scratch directory");
15511551
let collection = scratch.join("collection.log");
15521552
let summary = scratch.join("summary.json");
15531553
let passing = r#"{"collected":40,"passed":40,"failed":0,"skipped":0,"xfailed":0,"xpassed":0,"deselected":0}"#;
1554-
let yaml = fs::read_to_string(&registry).unwrap();
1554+
let yaml = fs::read_to_string(&registry).expect("read required job registry");
15551555
let node_ids = yaml
15561556
.lines()
15571557
.filter_map(|line| line.strip_prefix(" - tests/python/"))
15581558
.map(|line| format!("tests/python/{line}"))
15591559
.collect::<Vec<_>>();
15601560
assert_eq!(node_ids.len(), 40);
15611561

1562-
fs::write(&collection, format!("{}\n", node_ids.join("\n"))).unwrap();
1563-
fs::write(&summary, passing).unwrap();
1562+
fs::write(&collection, format!("{}\n", node_ids.join("\n")))
1563+
.expect("write exact collection evidence");
1564+
fs::write(&summary, passing).expect("write passing summary evidence");
15641565
assert!(
15651566
runner_command(&runner)
15661567
.arg("--validate-collection")
15671568
.arg(&registry)
15681569
.arg(&collection)
15691570
.status()
1570-
.unwrap()
1571+
.expect("collection validator must start")
15711572
.success()
15721573
);
15731574
for (name, mutant) in [
@@ -1589,14 +1590,14 @@ fn vector_differential_runner_rejects_collection_and_result_drift() {
15891590
),
15901591
] {
15911592
let mutant_registry = scratch.join(format!("{name}.yaml"));
1592-
fs::write(&mutant_registry, mutant).unwrap();
1593+
fs::write(&mutant_registry, mutant).expect("write registry mutant");
15931594
assert!(
15941595
!runner_command(&runner)
15951596
.arg("--validate-collection")
15961597
.arg(&mutant_registry)
15971598
.arg(&collection)
15981599
.status()
1599-
.unwrap()
1600+
.expect("collection validator mutant must start")
16001601
.success(),
16011602
"runner accepted {name} registry mutant"
16021603
);
@@ -1606,32 +1607,33 @@ fn vector_differential_runner_rejects_collection_and_result_drift() {
16061607
.arg(&mutant_registry)
16071608
.arg(&summary)
16081609
.status()
1609-
.unwrap()
1610+
.expect("summary validator mutant must start")
16101611
.success(),
16111612
"summary validator accepted {name} registry mutant"
16121613
);
16131614
}
1614-
fs::write(&collection, "27 tests collected\n").unwrap();
1615+
fs::write(&collection, "27 tests collected\n").expect("write collection count mutant");
16151616
assert!(
16161617
!runner_command(&runner)
16171618
.arg("--validate-collection")
16181619
.arg(&registry)
16191620
.arg(&collection)
16201621
.status()
1621-
.unwrap()
1622+
.expect("collection count mutant validator must start")
16221623
.success()
16231624
);
16241625
let mut drifted_node_ids = node_ids.clone();
16251626
drifted_node_ids[0] =
16261627
"tests/python/test_vector_set_differential.py::test_unregistered_node".to_string();
1627-
fs::write(&collection, format!("{}\n", drifted_node_ids.join("\n"))).unwrap();
1628+
fs::write(&collection, format!("{}\n", drifted_node_ids.join("\n")))
1629+
.expect("write collection identity mutant");
16281630
assert!(
16291631
!runner_command(&runner)
16301632
.arg("--validate-collection")
16311633
.arg(&registry)
16321634
.arg(&collection)
16331635
.status()
1634-
.unwrap()
1636+
.expect("collection identity mutant validator must start")
16351637
.success()
16361638
);
16371639

@@ -1641,7 +1643,7 @@ fn vector_differential_runner_rejects_collection_and_result_drift() {
16411643
.arg(&registry)
16421644
.arg(&summary)
16431645
.status()
1644-
.unwrap()
1646+
.expect("summary validator must start")
16451647
.success()
16461648
);
16471649
for mutant in [
@@ -1652,14 +1654,14 @@ fn vector_differential_runner_rejects_collection_and_result_drift() {
16521654
passing.replace("\"xpassed\":0", "\"xpassed\":1"),
16531655
passing.replace("\"deselected\":0", "\"deselected\":1"),
16541656
] {
1655-
fs::write(&summary, mutant).unwrap();
1657+
fs::write(&summary, mutant).expect("write summary mutant");
16561658
assert!(
16571659
!runner_command(&runner)
16581660
.arg("--validate-summary")
16591661
.arg(&registry)
16601662
.arg(&summary)
16611663
.status()
1662-
.unwrap()
1664+
.expect("summary mutant validator must start")
16631665
.success()
16641666
);
16651667
}
@@ -1669,7 +1671,7 @@ fn vector_differential_runner_rejects_collection_and_result_drift() {
16691671
.env("OSTYPE", "linux-gnu")
16701672
.env("KIWI_COMPAT_REQUIRE_ORACLE", "1")
16711673
.status()
1672-
.unwrap();
1674+
.expect("unavailable runner probe must start");
16731675
assert!(!unavailable.success());
16741676
let identity_mismatch = runner_command(&runner)
16751677
.arg("--callback")
@@ -1683,17 +1685,17 @@ fn vector_differential_runner_rejects_collection_and_result_drift() {
16831685
"/runtime-evidence.json",
16841686
)
16851687
.status()
1686-
.unwrap();
1688+
.expect("identity mismatch runner probe must start");
16871689
assert!(!identity_mismatch.success());
16881690
let runtime_evidence = scratch.join("runtime-evidence.json");
16891691
let valid_runtime = r#"{"build_role":"rebuild","binary_sha256":"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa","binary_identity":{"device":1,"inode":2,"mode":33261,"size":3,"nlink":1},"held_fd":true,"pid":42,"info_redis_versions":["8.8.1"]}"#;
1690-
fs::write(&runtime_evidence, valid_runtime).unwrap();
1692+
fs::write(&runtime_evidence, valid_runtime).expect("write valid runtime evidence");
16911693
assert!(
16921694
runner_command(&runner)
16931695
.arg("--validate-runtime-evidence")
16941696
.arg(&runtime_evidence)
16951697
.status()
1696-
.unwrap()
1698+
.expect("runtime evidence validator must start")
16971699
.success()
16981700
);
16991701
for mutant in [
@@ -1707,25 +1709,25 @@ fn vector_differential_runner_rejects_collection_and_result_drift() {
17071709
),
17081710
valid_runtime.replace("\"inode\":2", "\"inode\":0"),
17091711
] {
1710-
fs::write(&runtime_evidence, mutant).unwrap();
1712+
fs::write(&runtime_evidence, mutant).expect("write runtime evidence mutant");
17111713
assert!(
17121714
!runner_command(&runner)
17131715
.arg("--validate-runtime-evidence")
17141716
.arg(&runtime_evidence)
17151717
.status()
1716-
.unwrap()
1718+
.expect("runtime evidence mutant validator must start")
17171719
.success()
17181720
);
17191721
}
17201722
assert!(
17211723
!runner_command(&runner)
17221724
.args(["--validate-callback-result", "0", "1"])
17231725
.status()
1724-
.unwrap()
1726+
.expect("callback result validator must start")
17251727
.success()
17261728
);
17271729

1728-
fs::remove_dir_all(&scratch).unwrap();
1730+
fs::remove_dir_all(&scratch).expect("remove differential validator scratch directory");
17291731
}
17301732

17311733
#[test]
@@ -1739,10 +1741,10 @@ fn vector_differential_runner_requires_observed_raw_coverage_for_every_command()
17391741
std::process::id(),
17401742
std::time::SystemTime::now()
17411743
.duration_since(std::time::UNIX_EPOCH)
1742-
.unwrap()
1744+
.expect("clock must be after the Unix epoch")
17431745
.as_nanos()
17441746
));
1745-
fs::create_dir(&scratch).unwrap();
1747+
fs::create_dir(&scratch).expect("create raw coverage scratch directory");
17461748
let coverage = scratch.join("raw-coverage.jsonl");
17471749
let node_ids = [
17481750
"tests/python/test_vector_set_differential.py::test_zero_vector_values_raw_differential[resp2]",
@@ -1776,18 +1778,18 @@ fn vector_differential_runner_requires_observed_raw_coverage_for_every_command()
17761778
"b".repeat(64)
17771779
));
17781780
}
1779-
fs::write(&coverage, &records).unwrap();
1781+
fs::write(&coverage, &records).expect("write valid raw coverage evidence");
17801782
let validate = |registry_path: &std::path::Path, coverage_path: &std::path::Path| {
17811783
runner_command(&runner)
17821784
.arg("--validate-raw-coverage")
17831785
.arg(registry_path)
17841786
.arg(coverage_path)
17851787
.status()
1786-
.unwrap()
1788+
.expect("raw coverage validator must start")
17871789
.success()
17881790
};
17891791
assert!(validate(&registry, &coverage));
1790-
let yaml = fs::read_to_string(&registry).unwrap();
1792+
let yaml = fs::read_to_string(&registry).expect("read required job registry");
17911793
for (name, mutant) in [
17921794
(
17931795
"unknown-field",
@@ -1807,7 +1809,7 @@ fn vector_differential_runner_requires_observed_raw_coverage_for_every_command()
18071809
),
18081810
] {
18091811
let mutant_registry = scratch.join(format!("{name}.yaml"));
1810-
fs::write(&mutant_registry, mutant).unwrap();
1812+
fs::write(&mutant_registry, mutant).expect("write raw coverage registry mutant");
18111813
assert!(
18121814
!validate(&mutant_registry, &coverage),
18131815
"raw coverage validator accepted {name} registry mutant"
@@ -1819,7 +1821,8 @@ fn vector_differential_runner_requires_observed_raw_coverage_for_every_command()
18191821
.filter(|line| !(line.contains("\"command\":\"VCARD\"") && line.contains("[resp3]")))
18201822
.collect::<Vec<_>>()
18211823
.join("\n");
1822-
fs::write(&coverage, format!("{missing_vcard}\n")).unwrap();
1824+
fs::write(&coverage, format!("{missing_vcard}\n"))
1825+
.expect("write missing command coverage mutant");
18231826
assert!(!validate(&registry, &coverage));
18241827

18251828
let typed_equivalence = records.replacen(
@@ -1835,7 +1838,7 @@ fn vector_differential_runner_requires_observed_raw_coverage_for_every_command()
18351838
),
18361839
1,
18371840
);
1838-
fs::write(&coverage, typed_equivalence).unwrap();
1841+
fs::write(&coverage, typed_equivalence).expect("write frame hash mismatch mutant");
18391842
assert!(!validate(&registry, &coverage));
18401843

18411844
let without_populated_vinfo = records
@@ -1847,16 +1850,17 @@ fn vector_differential_runner_requires_observed_raw_coverage_for_every_command()
18471850
})
18481851
.collect::<Vec<_>>()
18491852
.join("\n");
1850-
fs::write(&coverage, format!("{without_populated_vinfo}\n")).unwrap();
1853+
fs::write(&coverage, format!("{without_populated_vinfo}\n"))
1854+
.expect("write missing populated VINFO mutant");
18511855
assert!(!validate(&registry, &coverage));
18521856

18531857
let wrong_evidence_kind = records.replacen(
18541858
"\"case_id\":\"populated\",\"command\":\"VINFO\",\"evidence_kind\":\"raw-schema\"",
18551859
"\"case_id\":\"populated\",\"command\":\"VINFO\",\"evidence_kind\":\"exact-frame\"",
18561860
1,
18571861
);
1858-
fs::write(&coverage, wrong_evidence_kind).unwrap();
1862+
fs::write(&coverage, wrong_evidence_kind).expect("write evidence kind mutant");
18591863
assert!(!validate(&registry, &coverage));
18601864

1861-
fs::remove_dir_all(&scratch).unwrap();
1865+
fs::remove_dir_all(&scratch).expect("remove raw coverage scratch directory");
18621866
}

0 commit comments

Comments
 (0)