mirror of
https://github.com/uutils/coreutils
synced 2024-10-01 13:35:03 +00:00
Merge pull request #2581 from sylvestre/freebsd
Use github action for FreeBSD testing and remove cirrus CI
This commit is contained in:
commit
68c9bfa658
21
.cirrus.yml
21
.cirrus.yml
|
@ -1,21 +0,0 @@
|
||||||
env:
|
|
||||||
# Temporary workaround for error `error: sysinfo not supported on
|
|
||||||
# this platform` seen on FreeBSD platforms, affecting Rustup
|
|
||||||
#
|
|
||||||
# References: https://github.com/rust-lang/rustup/issues/2774
|
|
||||||
RUSTUP_IO_THREADS: 1
|
|
||||||
|
|
||||||
task:
|
|
||||||
name: stable x86_64-unknown-freebsd-12
|
|
||||||
freebsd_instance:
|
|
||||||
image: freebsd-12-2-release-amd64
|
|
||||||
setup_script:
|
|
||||||
- pkg install -y curl gmake
|
|
||||||
- curl https://sh.rustup.rs -sSf --output rustup.sh
|
|
||||||
- sh rustup.sh -y --profile=minimal
|
|
||||||
build_script:
|
|
||||||
- . $HOME/.cargo/env
|
|
||||||
- cargo build
|
|
||||||
test_script:
|
|
||||||
- . $HOME/.cargo/env
|
|
||||||
- cargo test -p uucore -p coreutils
|
|
45
.github/workflows/CICD.yml
vendored
45
.github/workflows/CICD.yml
vendored
|
@ -521,6 +521,51 @@ jobs:
|
||||||
n_fails=$(echo "$output" | grep "^FAIL:\s" | wc --lines)
|
n_fails=$(echo "$output" | grep "^FAIL:\s" | wc --lines)
|
||||||
if [ $n_fails -gt 0 ] ; then echo "::warning ::${n_fails}+ test failures" ; fi
|
if [ $n_fails -gt 0 ] ; then echo "::warning ::${n_fails}+ test failures" ; fi
|
||||||
|
|
||||||
|
test_freebsd:
|
||||||
|
runs-on: macos-latest
|
||||||
|
name: Tests/FreeBSD test suite
|
||||||
|
env:
|
||||||
|
mem: 2048
|
||||||
|
steps:
|
||||||
|
- uses: actions/checkout@v2
|
||||||
|
- name: Prepare, build and test
|
||||||
|
id: test
|
||||||
|
uses: vmactions/freebsd-vm@v0.1.4
|
||||||
|
with:
|
||||||
|
usesh: true
|
||||||
|
prepare: pkg install -y curl gmake sudo
|
||||||
|
run: |
|
||||||
|
# Need to be run in the same block. Otherwise, we are back on the mac host.
|
||||||
|
set -e
|
||||||
|
pw adduser -n cuuser -d /root/ -g wheel -c "Coreutils user to build" -w random
|
||||||
|
chown -R cuuser:wheel /root/ /Users/runner/work/coreutils/
|
||||||
|
whoami
|
||||||
|
|
||||||
|
# Needs to be done in a sudo as we are changing users
|
||||||
|
sudo -i -u cuuser sh << EOF
|
||||||
|
whoami
|
||||||
|
curl https://sh.rustup.rs -sSf --output rustup.sh
|
||||||
|
sh rustup.sh -y --profile=minimal
|
||||||
|
## Info
|
||||||
|
# environment
|
||||||
|
echo "## environment"
|
||||||
|
echo "CI='${CI}'"
|
||||||
|
# tooling info display
|
||||||
|
echo "## tooling"
|
||||||
|
. $HOME/.cargo/env
|
||||||
|
cargo -V
|
||||||
|
rustc -V
|
||||||
|
env
|
||||||
|
|
||||||
|
# where the files are resynced
|
||||||
|
cd /Users/runner/work/coreutils/coreutils/
|
||||||
|
cargo build
|
||||||
|
cargo test --features feat_os_unix -p uucore -p coreutils
|
||||||
|
# Clean to avoid to rsync back the files
|
||||||
|
cargo clean
|
||||||
|
EOF
|
||||||
|
|
||||||
|
|
||||||
coverage:
|
coverage:
|
||||||
name: Code Coverage
|
name: Code Coverage
|
||||||
runs-on: ${{ matrix.job.os }}
|
runs-on: ${{ matrix.job.os }}
|
||||||
|
|
|
@ -28,9 +28,6 @@ use std::fmt::Display;
|
||||||
#[cfg(unix)]
|
#[cfg(unix)]
|
||||||
use std::mem;
|
use std::mem;
|
||||||
|
|
||||||
#[cfg(target_os = "freebsd")]
|
|
||||||
use uucore::libc::{c_char, fsid_t, uid_t};
|
|
||||||
|
|
||||||
#[cfg(windows)]
|
#[cfg(windows)]
|
||||||
use std::path::Path;
|
use std::path::Path;
|
||||||
|
|
||||||
|
|
|
@ -195,6 +195,8 @@ fn test_chown_failed_stdout() {
|
||||||
}
|
}
|
||||||
|
|
||||||
#[test]
|
#[test]
|
||||||
|
// FixME: Fails on freebsd because of chown: invalid group: 'root:root'
|
||||||
|
#[cfg(not(target_os = "freebsd"))]
|
||||||
fn test_chown_owner_group() {
|
fn test_chown_owner_group() {
|
||||||
// test chown username:group file.txt
|
// test chown username:group file.txt
|
||||||
|
|
||||||
|
@ -242,8 +244,11 @@ fn test_chown_owner_group() {
|
||||||
}
|
}
|
||||||
|
|
||||||
#[test]
|
#[test]
|
||||||
// TODO: on macos group name is not recognized correctly: "chown: invalid group: ':groupname'
|
// FixME: on macos & freebsd group name is not recognized correctly: "chown: invalid group: ':groupname'
|
||||||
#[cfg(any(windows, all(unix, not(target_os = "macos"))))]
|
#[cfg(any(
|
||||||
|
windows,
|
||||||
|
all(unix, not(any(target_os = "macos", target_os = "freebsd")))
|
||||||
|
))]
|
||||||
fn test_chown_only_group() {
|
fn test_chown_only_group() {
|
||||||
// test chown :group file.txt
|
// test chown :group file.txt
|
||||||
|
|
||||||
|
@ -408,6 +413,8 @@ fn test_chown_owner_group_id() {
|
||||||
}
|
}
|
||||||
|
|
||||||
#[test]
|
#[test]
|
||||||
|
// FixME: Fails on freebsd because of chown: invalid group: '0:root'
|
||||||
|
#[cfg(not(target_os = "freebsd"))]
|
||||||
fn test_chown_owner_group_mix() {
|
fn test_chown_owner_group_mix() {
|
||||||
// test chown 1111:group file.txt
|
// test chown 1111:group file.txt
|
||||||
|
|
||||||
|
|
|
@ -10,8 +10,8 @@ fn test_hostname() {
|
||||||
assert!(ls_default_res.stdout().len() >= ls_domain_res.stdout().len());
|
assert!(ls_default_res.stdout().len() >= ls_domain_res.stdout().len());
|
||||||
}
|
}
|
||||||
|
|
||||||
// FixME: fails for "MacOS"
|
// FixME: fails for "MacOS" and "freebsd" "failed to lookup address information: Name does not resolve"
|
||||||
#[cfg(not(target_vendor = "apple"))]
|
#[cfg(not(any(target_os = "macos", target_os = "freebsd")))]
|
||||||
#[test]
|
#[test]
|
||||||
fn test_hostname_ip() {
|
fn test_hostname_ip() {
|
||||||
let result = new_ucmd!().arg("-i").succeeds();
|
let result = new_ucmd!().arg("-i").succeeds();
|
||||||
|
|
|
@ -563,7 +563,8 @@ fn strip_source_file() -> &'static str {
|
||||||
}
|
}
|
||||||
|
|
||||||
#[test]
|
#[test]
|
||||||
#[cfg(not(windows))]
|
// FixME: Freebsd fails on 'No such file or directory'
|
||||||
|
#[cfg(not(any(windows, target_os = "freebsd")))]
|
||||||
fn test_install_and_strip() {
|
fn test_install_and_strip() {
|
||||||
let scene = TestScenario::new(util_name!());
|
let scene = TestScenario::new(util_name!());
|
||||||
let at = &scene.fixtures;
|
let at = &scene.fixtures;
|
||||||
|
@ -586,7 +587,8 @@ fn test_install_and_strip() {
|
||||||
}
|
}
|
||||||
|
|
||||||
#[test]
|
#[test]
|
||||||
#[cfg(not(windows))]
|
// FixME: Freebsd fails on 'No such file or directory'
|
||||||
|
#[cfg(not(any(windows, target_os = "freebsd")))]
|
||||||
fn test_install_and_strip_with_program() {
|
fn test_install_and_strip_with_program() {
|
||||||
let scene = TestScenario::new(util_name!());
|
let scene = TestScenario::new(util_name!());
|
||||||
let at = &scene.fixtures;
|
let at = &scene.fixtures;
|
||||||
|
|
|
@ -102,7 +102,7 @@ fn test_invalid_option() {
|
||||||
new_ucmd!().arg("-w").arg("-q").arg("/").fails();
|
new_ucmd!().arg("-w").arg("-q").arg("/").fails();
|
||||||
}
|
}
|
||||||
|
|
||||||
#[cfg(any(target_os = "linux", target_vendor = "apple"))]
|
#[cfg(unix)]
|
||||||
const NORMAL_FORMAT_STR: &str =
|
const NORMAL_FORMAT_STR: &str =
|
||||||
"%a %A %b %B %d %D %f %F %g %G %h %i %m %n %o %s %u %U %x %X %y %Y %z %Z"; // avoid "%w %W" (birth/creation) due to `stat` limitations and linux kernel & rust version capability variations
|
"%a %A %b %B %d %D %f %F %g %G %h %i %m %n %o %s %u %U %x %X %y %Y %z %Z"; // avoid "%w %W" (birth/creation) due to `stat` limitations and linux kernel & rust version capability variations
|
||||||
#[cfg(any(target_os = "linux"))]
|
#[cfg(any(target_os = "linux"))]
|
||||||
|
|
|
@ -477,7 +477,9 @@ fn test_nonexistent_file_is_not_symlink() {
|
||||||
}
|
}
|
||||||
|
|
||||||
#[test]
|
#[test]
|
||||||
#[cfg(not(windows))] // Windows has no concept of sticky bit
|
// FixME: freebsd fails with 'chmod: sticky_file: Inappropriate file type or format'
|
||||||
|
// Windows has no concept of sticky bit
|
||||||
|
#[cfg(not(any(windows, target_os = "freebsd")))]
|
||||||
fn test_file_is_sticky() {
|
fn test_file_is_sticky() {
|
||||||
let scenario = TestScenario::new(util_name!());
|
let scenario = TestScenario::new(util_name!());
|
||||||
let mut ucmd = scenario.ucmd();
|
let mut ucmd = scenario.ucmd();
|
||||||
|
|
|
@ -290,6 +290,8 @@ fn test_touch_set_both() {
|
||||||
}
|
}
|
||||||
|
|
||||||
#[test]
|
#[test]
|
||||||
|
// FixME: Fails on freebsd because of a different nanos
|
||||||
|
#[cfg(not(target_os = "freebsd"))]
|
||||||
fn test_touch_no_dereference() {
|
fn test_touch_no_dereference() {
|
||||||
let (at, mut ucmd) = at_and_ucmd!();
|
let (at, mut ucmd) = at_and_ucmd!();
|
||||||
let file_a = "test_touch_no_dereference_a";
|
let file_a = "test_touch_no_dereference_a";
|
||||||
|
|
|
@ -65,7 +65,8 @@ fn test_wrong_argument() {
|
||||||
}
|
}
|
||||||
|
|
||||||
#[test]
|
#[test]
|
||||||
#[cfg(not(windows))]
|
// FixME: freebsd panic
|
||||||
|
#[cfg(not(any(windows, target_os = "freebsd")))]
|
||||||
fn test_stdout_fail() {
|
fn test_stdout_fail() {
|
||||||
let mut child = new_ucmd!().run_no_wait();
|
let mut child = new_ucmd!().run_no_wait();
|
||||||
drop(child.stdout.take());
|
drop(child.stdout.take());
|
||||||
|
|
Loading…
Reference in a new issue