mirror of
https://github.com/fish-shell/fish-shell.git
synced 2026-06-15 17:31:16 -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
95 lines
2.1 KiB
Fish
95 lines
2.1 KiB
Fish
# RUN: %fish %s
|
|
|
|
set -l oldpwd $PWD
|
|
cd (mktemp -d)
|
|
set tmpdir (pwd -P)
|
|
|
|
# Hidden files are only matched with explicit dot.
|
|
touch .hidden visible
|
|
string join \n * | sort
|
|
# CHECK: visible
|
|
string join \n .* | sort
|
|
# CHECK: .hidden
|
|
rm -Rf .hidden visible
|
|
|
|
# Trailing slash matches only directories.
|
|
touch abc1
|
|
mkdir abc2
|
|
string join \n * | sort
|
|
# CHECK: abc1
|
|
# CHECK: abc2
|
|
string join \n */ | sort
|
|
# CHECK: abc2/
|
|
rm -Rf *
|
|
|
|
# Symlinks are descended into independently.
|
|
# Here dir2/link2 is symlinked to dir1/child1.
|
|
# The contents of dir2 will be explored twice.
|
|
mkdir -p dir1/child1
|
|
touch dir1/child1/anyfile
|
|
mkdir dir2
|
|
ln -s ../dir1/child1 dir2/link2
|
|
string join \n **/anyfile | sort
|
|
# CHECK: dir1/child1/anyfile
|
|
# CHECK: dir2/link2/anyfile
|
|
|
|
# But symlink loops only get explored once.
|
|
mkdir -p dir1/child2/grandchild1
|
|
touch dir1/child2/grandchild1/differentfile
|
|
if cygwin_nosymlinks
|
|
echo dir1/child2/grandchild1/differentfile
|
|
else
|
|
ln -s ../../child2/grandchild1 dir1/child2/grandchild1/link2
|
|
echo **/differentfile
|
|
end
|
|
# CHECK: dir1/child2/grandchild1/differentfile
|
|
rm -Rf *
|
|
|
|
# Recursive globs handling.
|
|
mkdir -p dir_a1/dir_a2/dir_a3
|
|
touch dir_a1/dir_a2/dir_a3/file_a
|
|
mkdir -p dir_b1/dir_b2/dir_b3
|
|
touch dir_b1/dir_b2/dir_b3/file_b
|
|
string join \n **/file_* | sort
|
|
# CHECK: dir_a1/dir_a2/dir_a3/file_a
|
|
# CHECK: dir_b1/dir_b2/dir_b3/file_b
|
|
|
|
string join \n **a3/file_* | sort
|
|
# CHECK: dir_a1/dir_a2/dir_a3/file_a
|
|
|
|
string join \n ** | sort
|
|
# CHECK: dir_a1
|
|
# CHECK: dir_a1/dir_a2
|
|
# CHECK: dir_a1/dir_a2/dir_a3
|
|
# CHECK: dir_a1/dir_a2/dir_a3/file_a
|
|
# CHECK: dir_b1
|
|
# CHECK: dir_b1/dir_b2
|
|
# CHECK: dir_b1/dir_b2/dir_b3
|
|
# CHECK: dir_b1/dir_b2/dir_b3/file_b
|
|
|
|
string join \n **/ | sort
|
|
# CHECK: dir_a1/
|
|
# CHECK: dir_a1/dir_a2/
|
|
# CHECK: dir_a1/dir_a2/dir_a3/
|
|
# CHECK: dir_b1/
|
|
# CHECK: dir_b1/dir_b2/
|
|
# CHECK: dir_b1/dir_b2/dir_b3/
|
|
|
|
string join \n **a2/** | sort
|
|
# CHECK: dir_a1/dir_a2/dir_a3
|
|
# CHECK: dir_a1/dir_a2/dir_a3/file_a
|
|
|
|
rm -Rf *
|
|
|
|
# Special behavior for #7222.
|
|
# The literal segment ** matches in the same directory.
|
|
mkdir foo
|
|
touch bar foo/bar
|
|
string join \n **/bar | sort
|
|
# CHECK: bar
|
|
# CHECK: foo/bar
|
|
|
|
# Clean up.
|
|
cd $oldpwd
|
|
rm -Rf $tmpdir
|