coreutils/tests/by-util/test_basename.rs

103 lines
2.2 KiB
Rust
Raw Normal View History

use crate::common::util::*;
use std::ffi::OsStr;
#[test]
fn test_directory() {
2020-04-13 18:36:03 +00:00
new_ucmd!()
.args(&["/root/alpha/beta/gamma/delta/epsilon/omega/"])
.succeeds()
.stdout_only("omega\n");
}
#[test]
fn test_file() {
2020-04-13 18:36:03 +00:00
new_ucmd!()
.args(&["/etc/passwd"])
.succeeds()
.stdout_only("passwd\n");
}
#[test]
fn test_remove_suffix() {
2020-04-13 18:36:03 +00:00
new_ucmd!()
.args(&["/usr/local/bin/reallylongexecutable.exe", ".exe"])
.succeeds()
.stdout_only("reallylongexecutable\n");
}
#[test]
fn test_dont_remove_suffix() {
2020-04-13 18:36:03 +00:00
new_ucmd!()
.args(&["/foo/bar/baz", "baz"])
.succeeds()
.stdout_only("baz\n");
2016-02-16 07:16:19 +00:00
}
2016-02-16 07:16:19 +00:00
#[test]
fn test_multiple_param() {
for multiple_param in vec!["-a", "--multiple"] {
let path = "/foo/bar/baz";
2020-04-13 18:36:03 +00:00
new_ucmd!()
.args(&[multiple_param, path, path])
.succeeds()
.stdout_only("baz\nbaz\n");
2016-02-16 07:16:19 +00:00
}
}
#[test]
fn test_suffix_param() {
for suffix_param in vec!["-s", "--suffix"] {
let path = "/foo/bar/baz.exe";
new_ucmd!()
.args(&[suffix_param, ".exe", path, path])
2020-04-13 18:36:03 +00:00
.succeeds()
.stdout_only("baz\nbaz\n");
2016-02-16 07:16:19 +00:00
}
}
#[test]
fn test_zero_param() {
for zero_param in vec!["-z", "--zero"] {
let path = "/foo/bar/baz";
2020-04-13 18:36:03 +00:00
new_ucmd!()
.args(&[zero_param, "-a", path, path])
.succeeds()
.stdout_only("baz\0baz\0");
2016-02-16 07:16:19 +00:00
}
}
2016-02-16 07:17:04 +00:00
fn expect_error(input: Vec<&str>) {
assert!(new_ucmd!().args(&input).fails().no_stdout().stderr().len() > 0);
}
2016-02-16 07:17:04 +00:00
#[test]
fn test_invalid_option() {
let path = "/foo/bar/baz";
expect_error(vec!["-q", path]);
2016-02-16 07:17:04 +00:00
}
#[test]
fn test_no_args() {
expect_error(vec![]);
2016-02-16 07:17:04 +00:00
}
#[test]
fn test_too_many_args() {
expect_error(vec!["a", "b", "c"]);
2016-02-16 07:17:04 +00:00
}
fn test_invalid_utf8_args(os_str: &OsStr) {
let test_vec = vec![os_str.to_os_string()];
new_ucmd!().args(&test_vec).succeeds().stdout_is("fo<EFBFBD>o\n");
}
#[cfg(any(unix, target_os = "redox"))]
#[test]
fn invalid_utf8_args_unix() {
use std::os::unix::ffi::OsStrExt;
let source = [0x66, 0x6f, 0x80, 0x6f];
let os_str = OsStr::from_bytes(&source[..]);
test_invalid_utf8_args(os_str);
}