mirror of
https://github.com/fish-shell/fish-shell.git
synced 2026-06-06 17:31:14 -03:00
The main changes are: - disabling some checks related to POSIX file permissions when a filesystem is mounted with "noacl" (default on MSYS2) - disabling some checks related to symlinks when using fake ones (file copy) Windows with acl hasn't been tested because 1) Cygwin itself does not have any Rust package yet to compile fish, and 2) MSYS2 defaults to `noacl` Part of #12171
156 lines
3.7 KiB
Fish
156 lines
3.7 KiB
Fish
# RUN: %fish --features test-require-arg %s
|
|
#
|
|
# Tests for the `test` builtin, aka `[`.
|
|
test inf -gt 0
|
|
# CHECKERR: Number is infinite
|
|
# CHECKERR: {{.*}}test.fish (line {{\d+}}):
|
|
# CHECKERR: test inf -gt 0
|
|
# CHECKERR: ^
|
|
|
|
test 5 -eq nan
|
|
# CHECKERR: Not a number
|
|
# CHECKERR: {{.*}}test.fish (line {{\d+}}):
|
|
# CHECKERR: test 5 -eq nan
|
|
# CHECKERR: ^
|
|
|
|
test -z nan || echo nan is fine
|
|
# CHECK: nan is fine
|
|
|
|
test 1 =
|
|
# CHECKERR: test: Missing argument at index 3
|
|
# CHECKERR: 1 =
|
|
# CHECKERR: ^
|
|
# CHECKERR: {{.*}}test.fish (line {{\d+}}):
|
|
# CHECKERR: test 1 =
|
|
# CHECKERR: ^
|
|
|
|
test 1 = 2 and echo true or echo false
|
|
# CHECKERR: test: Expected a combining operator like '-a' at index 4
|
|
# CHECKERR: 1 = 2 and echo true or echo false
|
|
# CHECKERR: ^
|
|
# CHECKERR: {{.*}}test.fish (line {{\d+}}):
|
|
# CHECKERR: test 1 = 2 and echo true or echo false
|
|
# CHECKERR: ^
|
|
|
|
function t
|
|
test $argv[1] -eq 5
|
|
end
|
|
|
|
t foo
|
|
# CHECKERR: Argument is not a number: 'foo'
|
|
# CHECKERR: {{.*}}test.fish (line {{\d+}}):
|
|
# CHECKERR: test $argv[1] -eq 5
|
|
# CHECKERR: ^
|
|
# CHECKERR: in function 't' with arguments 'foo'
|
|
# CHECKERR: called on line {{\d+}} of file {{.*}}test.fish
|
|
|
|
t 5,2
|
|
# CHECKERR: Integer 5 in '5,2' followed by non-digit
|
|
# CHECKERR: {{.*}}test.fish (line {{\d+}}):
|
|
# CHECKERR: test $argv[1] -eq 5
|
|
# CHECKERR: ^
|
|
# CHECKERR: in function 't' with arguments '5,2'
|
|
# CHECKERR: called on line {{\d+}} of file {{.*}}test.fish
|
|
|
|
test -x /usr/bin/go /usr/local/bin/go
|
|
# CHECKERR: test: unexpected argument at index 3: '/usr/local/bin/go'
|
|
# CHECKERR: -x /usr/bin/go /usr/local/bin/go
|
|
# CHECKERR: {{ \^}}
|
|
# CHECKERR: {{.*}}test.fish (line {{\d+}}):
|
|
# CHECKERR: test -x /usr/bin/go /usr/local/bin/go
|
|
# CHECKERR: ^
|
|
|
|
# Test `test` date comparison logic for dates older than epoch
|
|
touch -m -t 197001010000 epoch
|
|
touch -m -t 190212112045 old
|
|
touch -m -t 203801080314 newest
|
|
|
|
# Some filesystem do not support dates older than epoch, so silently skip this test - there's no
|
|
# guarantee that an FS supports pre-epoch timestamps and lxfs (virtual WSLv1 fs) doesn't.
|
|
if not path mtime epoch | string match -qr -- '^[^-]'
|
|
test newest -nt old || echo bad nt
|
|
test epoch -nt newest && echo bad nt
|
|
end
|
|
|
|
for file in epoch old newest
|
|
test $file -nt nonexist && echo good nt || echo $file: bad nt
|
|
end
|
|
#CHECK: good nt
|
|
#CHECK: good nt
|
|
#CHECK: good nt
|
|
|
|
for file in epoch old newest
|
|
test nonexist -ot $file && echo good ot || echo $file: bad ot
|
|
end
|
|
#CHECK: good ot
|
|
#CHECK: good ot
|
|
#CHECK: good ot
|
|
|
|
if cygwin_nosymlinks
|
|
echo good ef
|
|
else
|
|
ln -sf epoch epochlink
|
|
test epoch -ef epochlink && echo good ef || echo bad ef
|
|
end
|
|
#CHECK: good ef
|
|
|
|
test epoch -ef old && echo bad ef || echo good ef
|
|
#CHECK: good ef
|
|
|
|
rm -f epoch old newest epochlink
|
|
|
|
test -n
|
|
echo -- -n $status
|
|
#CHECK: -n 1
|
|
test -z
|
|
echo -- -z $status
|
|
#CHECK: -z 0
|
|
|
|
test -d
|
|
#CHECKERR: test: Missing argument at index 2
|
|
#CHECKERR: -d
|
|
#CHECKERR: ^
|
|
#CHECKERR: {{.*}}test.fish (line {{\d+}}):
|
|
#CHECKERR: test -d
|
|
#CHECKERR: ^
|
|
|
|
test foo
|
|
#CHECKERR: test: Missing argument at index 2
|
|
#CHECKERR: foo
|
|
#CHECKERR: ^
|
|
#CHECKERR: {{.*}}test.fish (line {{\d+}}):
|
|
#CHECKERR: test foo
|
|
#CHECKERR: ^
|
|
|
|
test ""
|
|
#CHECKERR: test: Missing argument at index 2
|
|
#CHECKERR: ^
|
|
#CHECKERR: {{.*}}test.fish (line {{\d+}}):
|
|
#CHECKERR: test ""
|
|
#CHECKERR: ^
|
|
|
|
test -z "" -a foo
|
|
#CHECKERR: test: Missing argument at index 5
|
|
#CHECKERR: -z -a foo
|
|
#CHECKERR: ^
|
|
#CHECKERR: {{.*}}test.fish (line {{\d+}}):
|
|
#CHECKERR: test -z "" -a foo
|
|
#CHECKERR: ^
|
|
|
|
echo $status
|
|
#CHECK: 1
|
|
|
|
test
|
|
#CHECKERR: test: Expected at least one argument
|
|
#CHECKERR: {{.*}}test.fish (line {{\d+}}):
|
|
#CHECKERR: test
|
|
#CHECKERR: ^
|
|
#CHECKERR: (Type 'help test' for related documentation)
|
|
|
|
[ -z
|
|
#CHECKERR: [: the last argument must be ']'
|
|
#CHECKERR: {{.*}}test.fish (line {{\d+}}):
|
|
#CHECKERR: [ -z
|
|
#CHECKERR: ^
|
|
#CHECKERR: (Type 'help [' for related documentation)
|