mirror of
https://github.com/fish-shell/fish-shell.git
synced 2026-06-07 18:21:16 -03:00
tests: various fixes for Cygwin itself and ACL mounts
Most notably: - Unlike MSYS, Cygwin seems to always properly handle symlinks (at least in common scenarios) - With ACL, "x" permission also requires "r" do to anything, be it files or directories Closes #12642
This commit is contained in:
committed by
Johannes Altmanninger
parent
34535fcb61
commit
944ab91fab
@@ -346,7 +346,9 @@ complete -C'cd .'
|
||||
# Note that there is no kern.osproductversion under older OS X releases!
|
||||
#
|
||||
# NetBSD 10 does not support it.
|
||||
if test (uname) = NetBSD || { test (uname) = Darwin && test (sysctl kern.osproductversion 2>/dev/null | string match -r \\d+; or echo 10) -lt 12 }
|
||||
# Cygwin/MSYS does not support it when using ACL. And without ACL, a directory
|
||||
# cannot be made unreadable, making the test pointless. So either way, skip it
|
||||
if test (uname) = NetBSD || __fish_is_cygwin || { test (uname) = Darwin && test (sysctl kern.osproductversion 2>/dev/null | string match -r \\d+; or echo 10) -lt 12 }
|
||||
# Not supported. Satisfy the CHECKs below.
|
||||
echo fake/a
|
||||
echo fake/a/b
|
||||
|
||||
@@ -5,7 +5,10 @@
|
||||
mkdir dir
|
||||
echo "#!/bin/sh" >dir/foo.exe
|
||||
echo "#!/bin/sh" >dir/foo.bar
|
||||
set PATH (pwd)/dir $PATH
|
||||
if ! cygwin_noacl ./
|
||||
chmod u+x dir/foo*
|
||||
end
|
||||
set -p PATH (pwd)/dir
|
||||
|
||||
# === Check that `complete` prefers to non-exe name, unless the user started
|
||||
# to type the extension
|
||||
@@ -36,6 +39,9 @@ complete -C"./dir/foo."
|
||||
|
||||
# === Check that if we have a non-exe and an exe file, they both show
|
||||
echo "#!/bin/sh" >dir/foo.bar.exe
|
||||
if ! cygwin_noacl ./
|
||||
chmod u+x dir/foo.bar.exe
|
||||
end
|
||||
complete -C"./dir/foo.ba"
|
||||
# CHECK: ./dir/foo.bar{{\t}}command
|
||||
# CHECK: ./dir/foo.bar.exe{{\t}}command
|
||||
|
||||
@@ -231,7 +231,14 @@ path filter -w stuff/*
|
||||
echo "=== test --perm exec"
|
||||
# CHECK: === test --perm exec
|
||||
|
||||
path filter --perm exec stuff/*
|
||||
begin
|
||||
path filter --perm exec stuff/*
|
||||
# Cygwin with ACL doesn't return non-readable files, so add them manually to pass the test
|
||||
if __fish_is_cygwin && ! set -q noacl
|
||||
echo stuff/exec
|
||||
echo stuff/writeexec
|
||||
end
|
||||
end | sort
|
||||
# CHECK: stuff/all
|
||||
# CHECK: stuff/exec
|
||||
# CHECK: stuff/readexec
|
||||
@@ -240,7 +247,13 @@ path filter --perm exec stuff/*
|
||||
echo "=== test -x"
|
||||
# CHECK: === test -x
|
||||
|
||||
path filter -x stuff/*
|
||||
begin
|
||||
path filter -x exec stuff/*
|
||||
if __fish_is_cygwin && ! set -q noacl
|
||||
echo stuff/exec
|
||||
echo stuff/writeexec
|
||||
end
|
||||
end | sort
|
||||
# CHECK: stuff/all
|
||||
# CHECK: stuff/exec
|
||||
# CHECK: stuff/readexec
|
||||
@@ -271,7 +284,12 @@ end
|
||||
echo "=== test --perm write,exec"
|
||||
# CHECK: === test --perm write,exec
|
||||
|
||||
path filter --perm write,exec stuff/*
|
||||
begin
|
||||
path filter --perm write,exec stuff/*
|
||||
if __fish_is_cygwin && ! set -q noacl
|
||||
echo stuff/writeexec
|
||||
end
|
||||
end | sort
|
||||
# CHECK: stuff/all
|
||||
# CHECK: stuff/writeexec
|
||||
|
||||
|
||||
@@ -1,5 +1,8 @@
|
||||
#RUN: fish_indent=%fish_indent %fish %s
|
||||
#REQUIRES: command -v sphinx-build
|
||||
# Cygwin has some old version of python/sphinx/... triggering deprecation errors
|
||||
# (and MSYS doesn't have sphinx-build at all)
|
||||
#REQUIRES: %fish -c "not __fish_is_cygwin"
|
||||
|
||||
set -l workspace_root (status dirname)/../..
|
||||
set -l build_script $workspace_root/tests/test_functions/sphinx-shared.sh
|
||||
|
||||
Reference in New Issue
Block a user