mirror of
https://github.com/sharkdp/bat
synced 2024-11-26 13:50:25 +00:00
Add test for what jobs 'all-jobs' references
This commit is contained in:
parent
c6cae09f99
commit
6baebd79fa
1 changed files with 53 additions and 0 deletions
53
tests/github-actions.rs
Normal file
53
tests/github-actions.rs
Normal file
|
@ -0,0 +1,53 @@
|
|||
#[test]
|
||||
fn all_jobs_not_missing_any_jobs() {
|
||||
let yaml: serde_yaml::Value =
|
||||
serde_yaml::from_reader(std::fs::File::open(".github/workflows/CICD.yml").unwrap())
|
||||
.unwrap();
|
||||
let jobs = yaml.get("jobs").unwrap();
|
||||
|
||||
// Get all jobs that all-jobs depends on:
|
||||
//
|
||||
// jobs:
|
||||
// all-jobs:
|
||||
// needs:
|
||||
// - this
|
||||
// - list
|
||||
// - ...
|
||||
let actual = jobs
|
||||
.get("all-jobs")
|
||||
.unwrap()
|
||||
.get("needs")
|
||||
.unwrap()
|
||||
.as_sequence()
|
||||
.unwrap();
|
||||
|
||||
// Get all jobs used in CI, except the ones we want to ignore:
|
||||
//
|
||||
// jobs:
|
||||
// this: ...
|
||||
// list: ...
|
||||
// ...
|
||||
let exceptions = [
|
||||
"all-jobs", // 'all-jobs' should not reference itself
|
||||
"winget", // only used when publishing a release
|
||||
];
|
||||
let expected = jobs
|
||||
.as_mapping()
|
||||
.unwrap()
|
||||
.keys()
|
||||
.filter_map(|k| {
|
||||
if exceptions.contains(&k.as_str().unwrap_or_default()) {
|
||||
None
|
||||
} else {
|
||||
Some(k)
|
||||
}
|
||||
})
|
||||
.map(ToOwned::to_owned)
|
||||
.collect::<Vec<_>>();
|
||||
|
||||
// Make sure they match
|
||||
assert_eq!(
|
||||
*actual, expected,
|
||||
"`all-jobs` should depend on all other jobs"
|
||||
);
|
||||
}
|
Loading…
Reference in a new issue