mirror of
https://github.com/uutils/coreutils
synced 2024-10-01 13:35:03 +00:00
tests: do not generate module structure in build.rs
Generating the tests to run in build.rs created problems for tooling. For example, cargo fmt, was ignoring the test_*.rs files and needed to be passed these files manually to be formatted. Now we simply use the feature mechanism to decide which tests to run.
This commit is contained in:
parent
e523a56dab
commit
adf4bab03c
14
.github/workflows/CICD.yml
vendored
14
.github/workflows/CICD.yml
vendored
|
@ -138,20 +138,6 @@ jobs:
|
|||
# * convert any errors/warnings to GHA UI annotations; ref: <https://help.github.com/en/actions/reference/workflow-commands-for-github-actions#setting-a-warning-message>
|
||||
S=$(cargo fmt -- --check) && printf "%s\n" "$S" || { printf "%s\n" "$S" ; printf "%s\n" "$S" | sed -E -n -e "s/^Diff[[:space:]]+in[[:space:]]+${PWD//\//\\/}\/(.*)[[:space:]]+at[[:space:]]+[^0-9]+([0-9]+).*$/::${fault_type} file=\1,line=\2::${fault_prefix}: \`cargo fmt\`: style violation (file:'\1', line:\2; use \`cargo fmt -- \"\1\"\`)/p" ; fault=true ; }
|
||||
if [ -n "${{ steps.vars.outputs.FAIL_ON_FAULT }}" ] && [ -n "$fault" ]; then exit 1 ; fi
|
||||
- name: "`cargo fmt` testing of integration tests"
|
||||
if: success() || failure() # run regardless of prior step success/failure
|
||||
shell: bash
|
||||
run: |
|
||||
## `cargo fmt` testing of integration tests
|
||||
unset fault
|
||||
fault_type="${{ steps.vars.outputs.FAULT_TYPE }}"
|
||||
fault_prefix=$(echo "$fault_type" | tr '[:lower:]' '[:upper:]')
|
||||
# 'tests' is the standard/usual integration test directory
|
||||
if [ -d tests ]; then
|
||||
# * convert any errors/warnings to GHA UI annotations; ref: <https://help.github.com/en/actions/reference/workflow-commands-for-github-actions#setting-a-warning-message>
|
||||
S=$(find tests -name "*.rs" -print0 | xargs -0 cargo fmt -- --check) && printf "%s\n" "$S" || { printf "%s\n" "$S" ; printf "%s\n" "$S" | sed -E -n "s/^Diff[[:space:]]+in[[:space:]]+${PWD//\//\\/}\/(.*)[[:space:]]+at[[:space:]]+[^0-9]+([0-9]+).*$/::${fault_type} file=\1,line=\2::${fault_prefix}: \`cargo fmt\`: style violation (file:'\1', line:\2; use \`cargo fmt \"\1\"\`)/p" ; fault=true ; }
|
||||
fi
|
||||
if [ -n "${{ steps.vars.outputs.FAIL_ON_FAULT }}" ] && [ -n "$fault" ]; then exit 1 ; fi
|
||||
|
||||
style_lint:
|
||||
name: Style/lint
|
||||
|
|
51
build.rs
51
build.rs
|
@ -18,10 +18,6 @@ pub fn main() {
|
|||
|
||||
let out_dir = env::var("OUT_DIR").unwrap();
|
||||
// println!("cargo:warning=out_dir={}", out_dir);
|
||||
let manifest_dir = env::var("CARGO_MANIFEST_DIR").unwrap().replace('\\', "/");
|
||||
// println!("cargo:warning=manifest_dir={}", manifest_dir);
|
||||
let util_tests_dir = format!("{}/tests/by-util", manifest_dir);
|
||||
// println!("cargo:warning=util_tests_dir={}", util_tests_dir);
|
||||
|
||||
let mut crates = Vec::new();
|
||||
for (key, val) in env::vars() {
|
||||
|
@ -41,7 +37,6 @@ pub fn main() {
|
|||
crates.sort();
|
||||
|
||||
let mut mf = File::create(Path::new(&out_dir).join("uutils_map.rs")).unwrap();
|
||||
let mut tf = File::create(Path::new(&out_dir).join("test_modules.rs")).unwrap();
|
||||
|
||||
mf.write_all(
|
||||
"type UtilityMap<T> = phf::Map<&'static str, (fn(T) -> i32, fn() -> Command<'static>)>;\n\
|
||||
|
@ -60,42 +55,15 @@ pub fn main() {
|
|||
"uu_test" => {
|
||||
phf_map.entry("test", &map_value);
|
||||
phf_map.entry("[", &map_value);
|
||||
|
||||
tf.write_all(
|
||||
format!(
|
||||
"#[path=\"{dir}/test_test.rs\"]\nmod test_test;\n",
|
||||
dir = util_tests_dir,
|
||||
)
|
||||
.as_bytes(),
|
||||
)
|
||||
.unwrap();
|
||||
}
|
||||
k if k.starts_with(OVERRIDE_PREFIX) => {
|
||||
phf_map.entry(&k[OVERRIDE_PREFIX.len()..], &map_value);
|
||||
tf.write_all(
|
||||
format!(
|
||||
"#[path=\"{dir}/test_{k}.rs\"]\nmod test_{k};\n",
|
||||
k = &krate[OVERRIDE_PREFIX.len()..],
|
||||
dir = util_tests_dir,
|
||||
)
|
||||
.as_bytes(),
|
||||
)
|
||||
.unwrap();
|
||||
}
|
||||
"false" | "true" => {
|
||||
phf_map.entry(
|
||||
krate,
|
||||
&format!("(r#{krate}::uumain, r#{krate}::uu_app)", krate = krate),
|
||||
);
|
||||
tf.write_all(
|
||||
format!(
|
||||
"#[path=\"{dir}/test_{krate}.rs\"]\nmod test_{krate};\n",
|
||||
krate = krate,
|
||||
dir = util_tests_dir,
|
||||
)
|
||||
.as_bytes(),
|
||||
)
|
||||
.unwrap();
|
||||
}
|
||||
"hashsum" => {
|
||||
phf_map.entry(
|
||||
|
@ -123,27 +91,9 @@ pub fn main() {
|
|||
phf_map.entry("shake256sum", &map_value_bits);
|
||||
phf_map.entry("b2sum", &map_value);
|
||||
phf_map.entry("b3sum", &map_value_b3sum);
|
||||
tf.write_all(
|
||||
format!(
|
||||
"#[path=\"{dir}/test_{krate}.rs\"]\nmod test_{krate};\n",
|
||||
krate = krate,
|
||||
dir = util_tests_dir,
|
||||
)
|
||||
.as_bytes(),
|
||||
)
|
||||
.unwrap();
|
||||
}
|
||||
_ => {
|
||||
phf_map.entry(krate, &map_value);
|
||||
tf.write_all(
|
||||
format!(
|
||||
"#[path=\"{dir}/test_{krate}.rs\"]\nmod test_{krate};\n",
|
||||
krate = krate,
|
||||
dir = util_tests_dir,
|
||||
)
|
||||
.as_bytes(),
|
||||
)
|
||||
.unwrap();
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -151,5 +101,4 @@ pub fn main() {
|
|||
mf.write_all(b"\n}\n").unwrap();
|
||||
|
||||
mf.flush().unwrap();
|
||||
tf.flush().unwrap();
|
||||
}
|
||||
|
|
412
tests/tests.rs
412
tests/tests.rs
|
@ -4,4 +4,414 @@ mod common;
|
|||
#[cfg(unix)]
|
||||
extern crate rust_users;
|
||||
|
||||
include!(concat!(env!("OUT_DIR"), "/test_modules.rs"));
|
||||
#[cfg(feature = "arch")]
|
||||
#[path = "by-util/test_arch.rs"]
|
||||
mod test_arch;
|
||||
|
||||
#[cfg(feature = "base32")]
|
||||
#[path = "by-util/test_base32.rs"]
|
||||
mod test_base32;
|
||||
|
||||
#[cfg(feature = "base64")]
|
||||
#[path = "by-util/test_base64.rs"]
|
||||
mod test_base64;
|
||||
|
||||
#[cfg(feature = "basename")]
|
||||
#[path = "by-util/test_basename.rs"]
|
||||
mod test_basename;
|
||||
|
||||
#[cfg(feature = "basenc")]
|
||||
#[path = "by-util/test_basenc.rs"]
|
||||
mod test_basenc;
|
||||
|
||||
#[cfg(feature = "cat")]
|
||||
#[path = "by-util/test_cat.rs"]
|
||||
mod test_cat;
|
||||
|
||||
#[cfg(feature = "chcon")]
|
||||
#[path = "by-util/test_chcon.rs"]
|
||||
mod test_chcon;
|
||||
|
||||
#[cfg(feature = "chgrp")]
|
||||
#[path = "by-util/test_chgrp.rs"]
|
||||
mod test_chgrp;
|
||||
|
||||
#[cfg(feature = "chmod")]
|
||||
#[path = "by-util/test_chmod.rs"]
|
||||
mod test_chmod;
|
||||
|
||||
#[cfg(feature = "chown")]
|
||||
#[path = "by-util/test_chown.rs"]
|
||||
mod test_chown;
|
||||
|
||||
#[cfg(feature = "chroot")]
|
||||
#[path = "by-util/test_chroot.rs"]
|
||||
mod test_chroot;
|
||||
|
||||
#[cfg(feature = "cksum")]
|
||||
#[path = "by-util/test_cksum.rs"]
|
||||
mod test_cksum;
|
||||
|
||||
#[cfg(feature = "comm")]
|
||||
#[path = "by-util/test_comm.rs"]
|
||||
mod test_comm;
|
||||
|
||||
#[cfg(feature = "cp")]
|
||||
#[path = "by-util/test_cp.rs"]
|
||||
mod test_cp;
|
||||
|
||||
#[cfg(feature = "csplit")]
|
||||
#[path = "by-util/test_csplit.rs"]
|
||||
mod test_csplit;
|
||||
|
||||
#[cfg(feature = "cut")]
|
||||
#[path = "by-util/test_cut.rs"]
|
||||
mod test_cut;
|
||||
|
||||
#[cfg(feature = "date")]
|
||||
#[path = "by-util/test_date.rs"]
|
||||
mod test_date;
|
||||
|
||||
#[cfg(feature = "dd")]
|
||||
#[path = "by-util/test_dd.rs"]
|
||||
mod test_dd;
|
||||
|
||||
#[cfg(feature = "df")]
|
||||
#[path = "by-util/test_df.rs"]
|
||||
mod test_df;
|
||||
|
||||
#[cfg(feature = "dir")]
|
||||
#[path = "by-util/test_dir.rs"]
|
||||
mod test_dir;
|
||||
|
||||
#[cfg(feature = "dircolors")]
|
||||
#[path = "by-util/test_dircolors.rs"]
|
||||
mod test_dircolors;
|
||||
|
||||
#[cfg(feature = "dirname")]
|
||||
#[path = "by-util/test_dirname.rs"]
|
||||
mod test_dirname;
|
||||
|
||||
#[cfg(feature = "du")]
|
||||
#[path = "by-util/test_du.rs"]
|
||||
mod test_du;
|
||||
|
||||
#[cfg(feature = "echo")]
|
||||
#[path = "by-util/test_echo.rs"]
|
||||
mod test_echo;
|
||||
|
||||
#[cfg(feature = "env")]
|
||||
#[path = "by-util/test_env.rs"]
|
||||
mod test_env;
|
||||
|
||||
#[cfg(feature = "expand")]
|
||||
#[path = "by-util/test_expand.rs"]
|
||||
mod test_expand;
|
||||
|
||||
#[cfg(feature = "expr")]
|
||||
#[path = "by-util/test_expr.rs"]
|
||||
mod test_expr;
|
||||
|
||||
#[cfg(feature = "factor")]
|
||||
#[path = "by-util/test_factor.rs"]
|
||||
mod test_factor;
|
||||
|
||||
#[cfg(feature = "false")]
|
||||
#[path = "by-util/test_false.rs"]
|
||||
mod test_false;
|
||||
|
||||
#[cfg(feature = "fmt")]
|
||||
#[path = "by-util/test_fmt.rs"]
|
||||
mod test_fmt;
|
||||
|
||||
#[cfg(feature = "fold")]
|
||||
#[path = "by-util/test_fold.rs"]
|
||||
mod test_fold;
|
||||
|
||||
#[cfg(feature = "groups")]
|
||||
#[path = "by-util/test_groups.rs"]
|
||||
mod test_groups;
|
||||
|
||||
#[cfg(feature = "hashsum")]
|
||||
#[path = "by-util/test_hashsum.rs"]
|
||||
mod test_hashsum;
|
||||
|
||||
#[cfg(feature = "head")]
|
||||
#[path = "by-util/test_head.rs"]
|
||||
mod test_head;
|
||||
|
||||
#[cfg(feature = "hostid")]
|
||||
#[path = "by-util/test_hostid.rs"]
|
||||
mod test_hostid;
|
||||
|
||||
#[cfg(feature = "hostname")]
|
||||
#[path = "by-util/test_hostname.rs"]
|
||||
mod test_hostname;
|
||||
|
||||
#[cfg(feature = "id")]
|
||||
#[path = "by-util/test_id.rs"]
|
||||
mod test_id;
|
||||
|
||||
#[cfg(feature = "install")]
|
||||
#[path = "by-util/test_install.rs"]
|
||||
mod test_install;
|
||||
|
||||
#[cfg(feature = "join")]
|
||||
#[path = "by-util/test_join.rs"]
|
||||
mod test_join;
|
||||
|
||||
#[cfg(feature = "kill")]
|
||||
#[path = "by-util/test_kill.rs"]
|
||||
mod test_kill;
|
||||
|
||||
#[cfg(feature = "link")]
|
||||
#[path = "by-util/test_link.rs"]
|
||||
mod test_link;
|
||||
|
||||
#[cfg(feature = "ln")]
|
||||
#[path = "by-util/test_ln.rs"]
|
||||
mod test_ln;
|
||||
|
||||
#[cfg(feature = "logname")]
|
||||
#[path = "by-util/test_logname.rs"]
|
||||
mod test_logname;
|
||||
|
||||
#[cfg(feature = "ls")]
|
||||
#[path = "by-util/test_ls.rs"]
|
||||
mod test_ls;
|
||||
|
||||
#[cfg(feature = "mkdir")]
|
||||
#[path = "by-util/test_mkdir.rs"]
|
||||
mod test_mkdir;
|
||||
|
||||
#[cfg(feature = "mkfifo")]
|
||||
#[path = "by-util/test_mkfifo.rs"]
|
||||
mod test_mkfifo;
|
||||
|
||||
#[cfg(feature = "mknod")]
|
||||
#[path = "by-util/test_mknod.rs"]
|
||||
mod test_mknod;
|
||||
|
||||
#[cfg(feature = "mktemp")]
|
||||
#[path = "by-util/test_mktemp.rs"]
|
||||
mod test_mktemp;
|
||||
|
||||
#[cfg(feature = "more")]
|
||||
#[path = "by-util/test_more.rs"]
|
||||
mod test_more;
|
||||
|
||||
#[cfg(feature = "mv")]
|
||||
#[path = "by-util/test_mv.rs"]
|
||||
mod test_mv;
|
||||
|
||||
#[cfg(feature = "nice")]
|
||||
#[path = "by-util/test_nice.rs"]
|
||||
mod test_nice;
|
||||
|
||||
#[cfg(feature = "nl")]
|
||||
#[path = "by-util/test_nl.rs"]
|
||||
mod test_nl;
|
||||
|
||||
#[cfg(feature = "nohup")]
|
||||
#[path = "by-util/test_nohup.rs"]
|
||||
mod test_nohup;
|
||||
|
||||
#[cfg(feature = "nproc")]
|
||||
#[path = "by-util/test_nproc.rs"]
|
||||
mod test_nproc;
|
||||
|
||||
#[cfg(feature = "numfmt")]
|
||||
#[path = "by-util/test_numfmt.rs"]
|
||||
mod test_numfmt;
|
||||
|
||||
#[cfg(feature = "od")]
|
||||
#[path = "by-util/test_od.rs"]
|
||||
mod test_od;
|
||||
|
||||
#[cfg(feature = "paste")]
|
||||
#[path = "by-util/test_paste.rs"]
|
||||
mod test_paste;
|
||||
|
||||
#[cfg(feature = "pathchk")]
|
||||
#[path = "by-util/test_pathchk.rs"]
|
||||
mod test_pathchk;
|
||||
|
||||
#[cfg(feature = "pinky")]
|
||||
#[path = "by-util/test_pinky.rs"]
|
||||
mod test_pinky;
|
||||
|
||||
#[cfg(feature = "pr")]
|
||||
#[path = "by-util/test_pr.rs"]
|
||||
mod test_pr;
|
||||
|
||||
#[cfg(feature = "printenv")]
|
||||
#[path = "by-util/test_printenv.rs"]
|
||||
mod test_printenv;
|
||||
|
||||
#[cfg(feature = "printf")]
|
||||
#[path = "by-util/test_printf.rs"]
|
||||
mod test_printf;
|
||||
|
||||
#[cfg(feature = "ptx")]
|
||||
#[path = "by-util/test_ptx.rs"]
|
||||
mod test_ptx;
|
||||
|
||||
#[cfg(feature = "pwd")]
|
||||
#[path = "by-util/test_pwd.rs"]
|
||||
mod test_pwd;
|
||||
|
||||
#[cfg(feature = "readlink")]
|
||||
#[path = "by-util/test_readlink.rs"]
|
||||
mod test_readlink;
|
||||
|
||||
#[cfg(feature = "realpath")]
|
||||
#[path = "by-util/test_realpath.rs"]
|
||||
mod test_realpath;
|
||||
|
||||
#[cfg(feature = "relpath")]
|
||||
#[path = "by-util/test_relpath.rs"]
|
||||
mod test_relpath;
|
||||
|
||||
#[cfg(feature = "rm")]
|
||||
#[path = "by-util/test_rm.rs"]
|
||||
mod test_rm;
|
||||
|
||||
#[cfg(feature = "rmdir")]
|
||||
#[path = "by-util/test_rmdir.rs"]
|
||||
mod test_rmdir;
|
||||
|
||||
#[cfg(feature = "runcon")]
|
||||
#[path = "by-util/test_runcon.rs"]
|
||||
mod test_runcon;
|
||||
|
||||
#[cfg(feature = "seq")]
|
||||
#[path = "by-util/test_seq.rs"]
|
||||
mod test_seq;
|
||||
|
||||
#[cfg(feature = "shred")]
|
||||
#[path = "by-util/test_shred.rs"]
|
||||
mod test_shred;
|
||||
|
||||
#[cfg(feature = "shuf")]
|
||||
#[path = "by-util/test_shuf.rs"]
|
||||
mod test_shuf;
|
||||
|
||||
#[cfg(feature = "sleep")]
|
||||
#[path = "by-util/test_sleep.rs"]
|
||||
mod test_sleep;
|
||||
|
||||
#[cfg(feature = "sort")]
|
||||
#[path = "by-util/test_sort.rs"]
|
||||
mod test_sort;
|
||||
|
||||
#[cfg(feature = "split")]
|
||||
#[path = "by-util/test_split.rs"]
|
||||
mod test_split;
|
||||
|
||||
#[cfg(feature = "stat")]
|
||||
#[path = "by-util/test_stat.rs"]
|
||||
mod test_stat;
|
||||
|
||||
#[cfg(feature = "stdbuf")]
|
||||
#[path = "by-util/test_stdbuf.rs"]
|
||||
mod test_stdbuf;
|
||||
|
||||
#[cfg(feature = "stty")]
|
||||
#[path = "by-util/test_stty.rs"]
|
||||
mod test_stty;
|
||||
|
||||
#[cfg(feature = "sum")]
|
||||
#[path = "by-util/test_sum.rs"]
|
||||
mod test_sum;
|
||||
|
||||
#[cfg(feature = "sync")]
|
||||
#[path = "by-util/test_sync.rs"]
|
||||
mod test_sync;
|
||||
|
||||
#[cfg(feature = "tac")]
|
||||
#[path = "by-util/test_tac.rs"]
|
||||
mod test_tac;
|
||||
|
||||
#[cfg(feature = "tail")]
|
||||
#[path = "by-util/test_tail.rs"]
|
||||
mod test_tail;
|
||||
|
||||
#[cfg(feature = "tee")]
|
||||
#[path = "by-util/test_tee.rs"]
|
||||
mod test_tee;
|
||||
|
||||
#[cfg(feature = "test")]
|
||||
#[path = "by-util/test_test.rs"]
|
||||
mod test_test;
|
||||
|
||||
#[cfg(feature = "timeout")]
|
||||
#[path = "by-util/test_timeout.rs"]
|
||||
mod test_timeout;
|
||||
|
||||
#[cfg(feature = "touch")]
|
||||
#[path = "by-util/test_touch.rs"]
|
||||
mod test_touch;
|
||||
|
||||
#[cfg(feature = "tr")]
|
||||
#[path = "by-util/test_tr.rs"]
|
||||
mod test_tr;
|
||||
|
||||
#[cfg(feature = "true")]
|
||||
#[path = "by-util/test_true.rs"]
|
||||
mod test_true;
|
||||
|
||||
#[cfg(feature = "truncate")]
|
||||
#[path = "by-util/test_truncate.rs"]
|
||||
mod test_truncate;
|
||||
|
||||
#[cfg(feature = "tsort")]
|
||||
#[path = "by-util/test_tsort.rs"]
|
||||
mod test_tsort;
|
||||
|
||||
#[cfg(feature = "tty")]
|
||||
#[path = "by-util/test_tty.rs"]
|
||||
mod test_tty;
|
||||
|
||||
#[cfg(feature = "uname")]
|
||||
#[path = "by-util/test_uname.rs"]
|
||||
mod test_uname;
|
||||
|
||||
#[cfg(feature = "unexpand")]
|
||||
#[path = "by-util/test_unexpand.rs"]
|
||||
mod test_unexpand;
|
||||
|
||||
#[cfg(feature = "uniq")]
|
||||
#[path = "by-util/test_uniq.rs"]
|
||||
mod test_uniq;
|
||||
|
||||
#[cfg(feature = "unlink")]
|
||||
#[path = "by-util/test_unlink.rs"]
|
||||
mod test_unlink;
|
||||
|
||||
#[cfg(feature = "uptime")]
|
||||
#[path = "by-util/test_uptime.rs"]
|
||||
mod test_uptime;
|
||||
|
||||
#[cfg(feature = "users")]
|
||||
#[path = "by-util/test_users.rs"]
|
||||
mod test_users;
|
||||
|
||||
#[cfg(feature = "vdir")]
|
||||
#[path = "by-util/test_vdir.rs"]
|
||||
mod test_vdir;
|
||||
|
||||
#[cfg(feature = "wc")]
|
||||
#[path = "by-util/test_wc.rs"]
|
||||
mod test_wc;
|
||||
|
||||
#[cfg(feature = "who")]
|
||||
#[path = "by-util/test_who.rs"]
|
||||
mod test_who;
|
||||
|
||||
#[cfg(feature = "whoami")]
|
||||
#[path = "by-util/test_whoami.rs"]
|
||||
mod test_whoami;
|
||||
|
||||
#[cfg(feature = "yes")]
|
||||
#[path = "by-util/test_yes.rs"]
|
||||
mod test_yes;
|
||||
|
|
Loading…
Reference in a new issue