Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

ci: use -pcoreutils when running clippy #6247

Merged
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
24 changes: 1 addition & 23 deletions .github/workflows/code-quality.yml
Original file line number Diff line number Diff line change
Expand Up @@ -49,11 +49,6 @@ jobs:
*) FAIL_ON_FAULT=true ; FAULT_TYPE=error ;;
esac;
outputs FAIL_ON_FAULT FAULT_TYPE
# target-specific options
# * CARGO_FEATURES_OPTION
CARGO_FEATURES_OPTION='' ;
if [ -n "${{ matrix.job.features }}" ]; then CARGO_FEATURES_OPTION='--features "${{ matrix.job.features }}"' ; fi
outputs CARGO_FEATURES_OPTION
- name: "`cargo fmt` testing"
shell: bash
run: |
Expand Down Expand Up @@ -99,23 +94,6 @@ jobs:
*) FAIL_ON_FAULT=true ; FAULT_TYPE=error ;;
esac;
outputs FAIL_ON_FAULT FAULT_TYPE
# target-specific options
# * CARGO_FEATURES_OPTION
CARGO_FEATURES_OPTION='--all-features' ;
if [ -n "${{ matrix.job.features }}" ]; then CARGO_FEATURES_OPTION='--features ${{ matrix.job.features }}' ; fi
outputs CARGO_FEATURES_OPTION
# * determine sub-crate utility list
UTILITY_LIST="$(./util/show-utils.sh ${CARGO_FEATURES_OPTION})"
echo UTILITY_LIST=${UTILITY_LIST}
CARGO_UTILITY_LIST_OPTIONS="$(for u in ${UTILITY_LIST}; do echo -n "-puu_${u} "; done;)"
outputs CARGO_UTILITY_LIST_OPTIONS
- name: Install/setup prerequisites
shell: bash
run: |
## Install/setup prerequisites
case '${{ matrix.job.os }}' in
macos-latest) brew install coreutils ;; # needed for show-utils.sh
esac
- name: "`cargo clippy` lint testing"
uses: nick-fields/retry@v3
with:
Expand All @@ -130,7 +108,7 @@ jobs:
fault_type="${{ steps.vars.outputs.FAULT_TYPE }}"
fault_prefix=$(echo "$fault_type" | tr '[:lower:]' '[:upper:]')
# * convert any warnings to GHA UI annotations; ref: <https://help.github.com/en/actions/reference/workflow-commands-for-github-actions#setting-a-warning-message>
S=$(cargo clippy --all-targets ${{ matrix.job.cargo-options }} ${{ steps.vars.outputs.CARGO_UTILITY_LIST_OPTIONS }} -- ${CLIPPY_FLAGS} -D warnings 2>&1) && printf "%s\n" "$S" || { printf "%s\n" "$S" ; printf "%s" "$S" | sed -E -n -e '/^error:/{' -e "N; s/^error:[[:space:]]+(.*)\\n[[:space:]]+-->[[:space:]]+(.*):([0-9]+):([0-9]+).*$/::${fault_type} file=\2,line=\3,col=\4::${fault_prefix}: \`cargo clippy\`: \1 (file:'\2', line:\3)/p;" -e '}' ; fault=true ; }
S=$(cargo clippy --all-targets --features ${{ matrix.job.features }} -pcoreutils -- ${CLIPPY_FLAGS} -D warnings 2>&1) && printf "%s\n" "$S" || { printf "%s\n" "$S" ; printf "%s" "$S" | sed -E -n -e '/^error:/{' -e "N; s/^error:[[:space:]]+(.*)\\n[[:space:]]+-->[[:space:]]+(.*):([0-9]+):([0-9]+).*$/::${fault_type} file=\2,line=\3,col=\4::${fault_prefix}: \`cargo clippy\`: \1 (file:'\2', line:\3)/p;" -e '}' ; fault=true ; }
if [ -n "${{ steps.vars.outputs.FAIL_ON_FAULT }}" ] && [ -n "$fault" ]; then exit 1 ; fi

style_spellcheck:
Expand Down
36 changes: 36 additions & 0 deletions src/uu/env/src/env.rs
Original file line number Diff line number Diff line change
Expand Up @@ -606,3 +606,39 @@ fn apply_specified_env_vars(opts: &Options<'_>) {
pub fn uumain(args: impl uucore::Args) -> UResult<()> {
EnvAppData::default().run_env(args)
}

#[cfg(test)]
mod tests {
use super::*;

#[test]
fn test_split_string_environment_vars_test() {
std::env::set_var("FOO", "BAR");
assert_eq!(
NCvt::convert(vec!["FOO=bar", "sh", "-c", "echo xBARx =$FOO="]),
parse_args_from_str(&NCvt::convert(r#"FOO=bar sh -c "echo x${FOO}x =\$FOO=""#))
.unwrap(),
);
}

#[test]
fn test_split_string_misc() {
assert_eq!(
NCvt::convert(vec!["A=B", "FOO=AR", "sh", "-c", "echo $A$FOO"]),
parse_args_from_str(&NCvt::convert(r#"A=B FOO=AR sh -c "echo \$A\$FOO""#)).unwrap(),
);
assert_eq!(
NCvt::convert(vec!["A=B", "FOO=AR", "sh", "-c", "echo $A$FOO"]),
parse_args_from_str(&NCvt::convert(r#"A=B FOO=AR sh -c 'echo $A$FOO'"#)).unwrap()
);
assert_eq!(
NCvt::convert(vec!["A=B", "FOO=AR", "sh", "-c", "echo $A$FOO"]),
parse_args_from_str(&NCvt::convert(r#"A=B FOO=AR sh -c 'echo $A$FOO'"#)).unwrap()
);

assert_eq!(
NCvt::convert(vec!["-i", "A=B ' C"]),
parse_args_from_str(&NCvt::convert(r#"-i A='B \' C'"#)).unwrap()
);
}
}
4 changes: 2 additions & 2 deletions tests/by-util/test_chown.rs
Original file line number Diff line number Diff line change
Expand Up @@ -471,7 +471,7 @@ fn test_chown_fail_id() {
#[test]
fn test_chown_only_user_id_nonexistent_user() {
let ts = TestScenario::new(util_name!());
let at = ts.fixtures.clone();
let at = &ts.fixtures;
at.touch("f");
if let Ok(result) = run_ucmd_as_root(&ts, &["12345", "f"]) {
result.success().no_stdout().no_stderr();
Expand Down Expand Up @@ -537,7 +537,7 @@ fn test_chown_only_group_id() {
#[test]
fn test_chown_only_group_id_nonexistent_group() {
let ts = TestScenario::new(util_name!());
let at = ts.fixtures.clone();
let at = &ts.fixtures;
at.touch("f");
if let Ok(result) = run_ucmd_as_root(&ts, &[":12345", "f"]) {
result.success().no_stdout().no_stderr();
Expand Down
2 changes: 1 addition & 1 deletion tests/by-util/test_chroot.rs
Original file line number Diff line number Diff line change
Expand Up @@ -165,7 +165,7 @@ fn test_chroot_skip_chdir_not_root() {
#[test]
fn test_chroot_skip_chdir() {
let ts = TestScenario::new(util_name!());
let at = ts.fixtures.clone();
let at = &ts.fixtures;
let dirs = ["/", "/.", "/..", "isroot"];
at.symlink_file("/", "isroot");
for dir in dirs {
Expand Down
59 changes: 12 additions & 47 deletions tests/by-util/test_env.rs
Original file line number Diff line number Diff line change
Expand Up @@ -7,7 +7,6 @@
#[cfg(target_os = "linux")]
use crate::common::util::expected_result;
use crate::common::util::TestScenario;
use ::env::native_int_str::{Convert, NCvt};
use regex::Regex;
use std::env;
use std::path::Path;
Expand Down Expand Up @@ -473,40 +472,6 @@ fn test_gnu_e20() {
assert_eq!(out.stdout_str(), output);
}

#[test]
fn test_split_string_misc() {
use ::env::native_int_str::NCvt;
use ::env::parse_args_from_str;

assert_eq!(
NCvt::convert(vec!["A=B", "FOO=AR", "sh", "-c", "echo $A$FOO"]),
parse_args_from_str(&NCvt::convert(r#"A=B FOO=AR sh -c "echo \$A\$FOO""#)).unwrap(),
);
assert_eq!(
NCvt::convert(vec!["A=B", "FOO=AR", "sh", "-c", "echo $A$FOO"]),
parse_args_from_str(&NCvt::convert(r#"A=B FOO=AR sh -c 'echo $A$FOO'"#)).unwrap()
);
assert_eq!(
NCvt::convert(vec!["A=B", "FOO=AR", "sh", "-c", "echo $A$FOO"]),
parse_args_from_str(&NCvt::convert(r#"A=B FOO=AR sh -c 'echo $A$FOO'"#)).unwrap()
);

assert_eq!(
NCvt::convert(vec!["-i", "A=B ' C"]),
parse_args_from_str(&NCvt::convert(r#"-i A='B \' C'"#)).unwrap()
);
}

#[test]
fn test_split_string_environment_vars_test() {
std::env::set_var("FOO", "BAR");
assert_eq!(
NCvt::convert(vec!["FOO=bar", "sh", "-c", "echo xBARx =$FOO="]),
::env::parse_args_from_str(&NCvt::convert(r#"FOO=bar sh -c "echo x${FOO}x =\$FOO=""#))
.unwrap(),
);
}

#[macro_export]
macro_rules! compare_with_gnu {
( $ts:expr, $args:expr ) => {{
Expand Down Expand Up @@ -692,13 +657,13 @@ fn test_env_overwrite_arg0() {
fn test_env_arg_argv0_overwrite() {
let ts = TestScenario::new(util_name!());

let bin = ts.bin_path.clone();
let bin = &ts.bin_path;

// overwrite --argv0 by --argv0
ts.ucmd()
.args(&["--argv0", "dirname"])
.args(&["--argv0", "echo"])
.arg(&bin)
.arg(bin)
.args(&["aa/bb/cc"])
.succeeds()
.stdout_is("aa/bb/cc\n")
Expand All @@ -708,7 +673,7 @@ fn test_env_arg_argv0_overwrite() {
ts.ucmd()
.args(&["-a", "dirname"])
.args(&["-a", "echo"])
.arg(&bin)
.arg(bin)
.args(&["aa/bb/cc"])
.succeeds()
.stdout_is("aa/bb/cc\n")
Expand All @@ -718,7 +683,7 @@ fn test_env_arg_argv0_overwrite() {
ts.ucmd()
.args(&["--argv0", "dirname"])
.args(&["-a", "echo"])
.arg(&bin)
.arg(bin)
.args(&["aa/bb/cc"])
.succeeds()
.stdout_is("aa/bb/cc\n")
Expand All @@ -728,7 +693,7 @@ fn test_env_arg_argv0_overwrite() {
ts.ucmd()
.args(&["-a", "dirname"])
.args(&["--argv0", "echo"])
.arg(&bin)
.arg(bin)
.args(&["aa/bb/cc"])
.succeeds()
.stdout_is("aa/bb/cc\n")
Expand All @@ -740,13 +705,13 @@ fn test_env_arg_argv0_overwrite() {
fn test_env_arg_argv0_overwrite_mixed_with_string_args() {
let ts = TestScenario::new(util_name!());

let bin = ts.bin_path.clone();
let bin = &ts.bin_path;

// string arg following normal
ts.ucmd()
.args(&["-S--argv0 dirname"])
.args(&["--argv0", "echo"])
.arg(&bin)
.arg(bin)
.args(&["aa/bb/cc"])
.succeeds()
.stdout_is("aa/bb/cc\n")
Expand All @@ -756,7 +721,7 @@ fn test_env_arg_argv0_overwrite_mixed_with_string_args() {
ts.ucmd()
.args(&["-a", "dirname"])
.args(&["-S-a echo"])
.arg(&bin)
.arg(bin)
.args(&["aa/bb/cc"])
.succeeds()
.stdout_is("aa/bb/cc\n")
Expand All @@ -765,7 +730,7 @@ fn test_env_arg_argv0_overwrite_mixed_with_string_args() {
// one large string arg
ts.ucmd()
.args(&["-S--argv0 dirname -a echo"])
.arg(&bin)
.arg(bin)
.args(&["aa/bb/cc"])
.succeeds()
.stdout_is("aa/bb/cc\n")
Expand All @@ -775,7 +740,7 @@ fn test_env_arg_argv0_overwrite_mixed_with_string_args() {
ts.ucmd()
.args(&["-S-a dirname"])
.args(&["-S--argv0 echo"])
.arg(&bin)
.arg(bin)
.args(&["aa/bb/cc"])
.succeeds()
.stdout_is("aa/bb/cc\n")
Expand All @@ -786,7 +751,7 @@ fn test_env_arg_argv0_overwrite_mixed_with_string_args() {
.args(&["-a", "sleep"])
.args(&["-S-a dirname"])
.args(&["-a", "echo"])
.arg(&bin)
.arg(bin)
.args(&["aa/bb/cc"])
.succeeds()
.stdout_is("aa/bb/cc\n")
Expand Down Expand Up @@ -916,8 +881,8 @@ mod tests_split_iterator {

use std::ffi::OsString;

use ::env::parse_error::ParseError;
use env::native_int_str::{from_native_int_representation_owned, Convert, NCvt};
use env::parse_error::ParseError;

fn split(input: &str) -> Result<Vec<OsString>, ParseError> {
::env::split_iterator::split(&NCvt::convert(input)).map(|vec| {
Expand Down
2 changes: 1 addition & 1 deletion tests/by-util/test_install.rs
Original file line number Diff line number Diff line change
Expand Up @@ -1689,7 +1689,7 @@ fn test_target_file_ends_with_slash() {
#[test]
fn test_install_root_combined() {
let ts = TestScenario::new(util_name!());
let at = ts.fixtures.clone();
let at = &ts.fixtures;
at.touch("a");
at.touch("c");

Expand Down
Loading