Merge nucleic/sleek-thistle-egret-fyej into dev
This commit is contained in:
@@ -0,0 +1,333 @@
|
||||
name: "Filename expansion"
|
||||
cases:
|
||||
- name: "Single file expansion"
|
||||
stdin: "echo file1.txt"
|
||||
|
||||
- name: "Expansion with noglob"
|
||||
test_files:
|
||||
- path: "file1.txt"
|
||||
- path: "file2.txt"
|
||||
stdin: |
|
||||
set -f
|
||||
echo "*.txt:" *.txt
|
||||
|
||||
- name: "Multiple file expansion"
|
||||
test_files:
|
||||
- path: "file1.txt"
|
||||
- path: "file2.txt"
|
||||
stdin: |
|
||||
echo *.txt
|
||||
echo *."txt"
|
||||
|
||||
- name: "File expansion with nocaseglob"
|
||||
test_files:
|
||||
- path: "FILE1.TXT"
|
||||
- path: "file2.txt"
|
||||
stdin: |
|
||||
shopt -s nocaseglob
|
||||
echo "*.txt:" *.txt
|
||||
echo "*.TXT:" *.txt
|
||||
|
||||
- name: "Nested directory expansion"
|
||||
test_files:
|
||||
- path: "dir/file1.txt"
|
||||
stdin: "echo dir/*"
|
||||
|
||||
- name: "Multiple level directory expansion"
|
||||
test_files:
|
||||
- path: "dir/subdir/file1.txt"
|
||||
stdin: "echo dir/subdir/*.txt"
|
||||
|
||||
- name: "Expansion with no matches"
|
||||
test_files:
|
||||
- path: "file1.txt"
|
||||
stdin: "echo *.jpg"
|
||||
|
||||
- name: "Expansion with no matches + nullglob"
|
||||
test_files:
|
||||
- path: "file1.txt"
|
||||
stdin: |
|
||||
shopt -s nullglob
|
||||
echo "*.jpg:" *.jpg
|
||||
|
||||
- name: "Expansion with special characters"
|
||||
test_files:
|
||||
- path: "file1.txt"
|
||||
- path: "file2.txt"
|
||||
stdin: "echo file?.txt"
|
||||
|
||||
- name: "Expansion with brackets"
|
||||
test_files:
|
||||
- path: "file1.txt"
|
||||
- path: "file2.txt"
|
||||
stdin: "echo file[12].txt"
|
||||
|
||||
- name: "Expansion with range"
|
||||
test_files:
|
||||
- path: "file1.txt"
|
||||
- path: "file2.txt"
|
||||
stdin: "echo file[1-2].txt"
|
||||
|
||||
- name: "Expansion with negation"
|
||||
test_files:
|
||||
- path: "file1.txt"
|
||||
- path: "file2.txt"
|
||||
stdin: "echo file[!2].txt"
|
||||
|
||||
- name: "Expansion with tilde"
|
||||
env:
|
||||
HOME: /some/dir
|
||||
stdin: |
|
||||
echo ~/file1.txt
|
||||
echo ~/file1.txt:~/file1.txt
|
||||
|
||||
- name: "Expansion with dots"
|
||||
stdin: |
|
||||
echo ./file1.txt
|
||||
echo ../file1.txt
|
||||
|
||||
- name: "Expansion with mixed patterns"
|
||||
test_files:
|
||||
- path: "dir/subdir/file1.txt"
|
||||
stdin: "echo dir/*/file?.txt"
|
||||
|
||||
- name: "Expansion with escaped characters"
|
||||
test_files:
|
||||
- path: "file*.txt"
|
||||
stdin: "echo file\\*.txt"
|
||||
|
||||
- name: "Pathname expansion: extglob disabled"
|
||||
ignore_stderr: true
|
||||
test_files:
|
||||
- path: "ab.txt"
|
||||
- path: "abc.txt"
|
||||
- path: "abd.txt"
|
||||
- path: "def.txt"
|
||||
- path: "abadac.txt"
|
||||
- path: "fabadac.txt"
|
||||
- path: "f.txt"
|
||||
- path: "script.sh"
|
||||
contents: |
|
||||
echo !(a*)
|
||||
echo "result: $?"
|
||||
|
||||
echo @(abc|abd).txt
|
||||
echo "result: $?"
|
||||
|
||||
echo ab?(c).txt
|
||||
echo "result: $?"
|
||||
|
||||
echo *(ab|ad|ac).txt
|
||||
echo "result: $?"
|
||||
|
||||
echo f+(ab|ad|ac).txt
|
||||
echo "result: $?"
|
||||
stdin: |
|
||||
shopt -u extglob
|
||||
chmod +x ./script.sh
|
||||
./script.sh
|
||||
|
||||
- name: "Pathname expansion: Inverted patterns"
|
||||
ignore_stderr: true
|
||||
test_files:
|
||||
- path: "abc.txt"
|
||||
- path: "abd.txt"
|
||||
- path: "def.txt"
|
||||
stdin: |
|
||||
shopt -s extglob
|
||||
echo "1: " !(a*)
|
||||
echo "2: " !(abc.txt)
|
||||
echo "3: " !(abc)
|
||||
echo "4: " !(*)
|
||||
|
||||
- name: "Pathname expansion: Degenerate inverted pattern"
|
||||
test_files:
|
||||
- path: "abc.txt"
|
||||
- path: "abd.txt"
|
||||
- path: "def.txt"
|
||||
stdin: |
|
||||
shopt -s extglob
|
||||
echo !()
|
||||
|
||||
- name: "Pathname expansion: Extended patterns"
|
||||
ignore_stderr: true
|
||||
test_files:
|
||||
- path: "abc.txt"
|
||||
- path: "abd.txt"
|
||||
stdin: |
|
||||
shopt -s extglob
|
||||
echo "1: " @(abc|abd).txt
|
||||
echo "2: " @(abc.txt)
|
||||
echo "3: " @(abc)
|
||||
echo "4: " @(|abc.txt)
|
||||
|
||||
- name: "Pathname expansion: Optional patterns"
|
||||
ignore_stderr: true
|
||||
test_files:
|
||||
- path: "ab.txt"
|
||||
- path: "abc.txt"
|
||||
stdin: |
|
||||
shopt -s extglob
|
||||
echo ab?(c).txt
|
||||
|
||||
- name: "Pathname expansion: Star patterns"
|
||||
ignore_stderr: true
|
||||
test_files:
|
||||
- path: "abadac.txt"
|
||||
- path: "ab.txt"
|
||||
stdin: |
|
||||
shopt -s extglob
|
||||
echo *(ab|ad|ac).txt
|
||||
|
||||
- name: "Pathname expansion: Plus patterns"
|
||||
ignore_stderr: true
|
||||
test_files:
|
||||
- path: "fabadac.txt"
|
||||
- path: "f.txt"
|
||||
stdin: |
|
||||
shopt -s extglob
|
||||
echo f+(ab|ad|ac).txt
|
||||
|
||||
- name: "Pathname expansion: quoting"
|
||||
test_files:
|
||||
- path: test.txt
|
||||
- path: subdir/test.txt
|
||||
stdin: |
|
||||
echo "./test"*.txt
|
||||
echo "subdir"/*.txt
|
||||
echo "test.*"
|
||||
|
||||
- name: "Pathname expansion: dot files (no dotglob)"
|
||||
min_oracle_version: 5.2
|
||||
stdin: |
|
||||
touch .file
|
||||
touch .dir
|
||||
|
||||
shopt -u dotglob
|
||||
echo "* : " *
|
||||
echo "*i* : " *i*
|
||||
echo "./* : " ./*
|
||||
echo ".* : " .*
|
||||
echo "./.*: " ./.*
|
||||
|
||||
- name: "Glob results are sorted"
|
||||
test_files:
|
||||
- path: "cherry.txt"
|
||||
- path: "apple.txt"
|
||||
- path: "banana.txt"
|
||||
stdin: |
|
||||
echo *.txt
|
||||
|
||||
- name: "Multiple globs on one command line"
|
||||
test_files:
|
||||
- path: "a.txt"
|
||||
- path: "b.txt"
|
||||
- path: "x.log"
|
||||
- path: "y.log"
|
||||
stdin: |
|
||||
echo *.txt *.log
|
||||
|
||||
- name: "Glob does not expand in variable assignment"
|
||||
test_files:
|
||||
- path: "file1.txt"
|
||||
- path: "file2.txt"
|
||||
stdin: |
|
||||
x=*.txt
|
||||
echo "$x"
|
||||
|
||||
- name: "Glob expands in unquoted variable use"
|
||||
test_files:
|
||||
- path: "file1.txt"
|
||||
- path: "file2.txt"
|
||||
stdin: |
|
||||
x=*.txt
|
||||
echo $x
|
||||
|
||||
- name: "Glob with trailing slash matches directories"
|
||||
known_failure: true
|
||||
test_files:
|
||||
- path: "mydir/file.txt"
|
||||
- path: "myfile.txt"
|
||||
stdin: |
|
||||
echo */
|
||||
|
||||
- name: "Globstar disabled by default"
|
||||
known_failure: true
|
||||
test_files:
|
||||
- path: "a/b/c.txt"
|
||||
stdin: |
|
||||
shopt -u globstar
|
||||
echo **/c.txt
|
||||
|
||||
- name: "Globstar recursive matching"
|
||||
known_failure: true
|
||||
test_files:
|
||||
- path: "a/b/c.txt"
|
||||
- path: "a/d.txt"
|
||||
- path: "e.txt"
|
||||
stdin: |
|
||||
shopt -s globstar
|
||||
echo **/*.txt
|
||||
|
||||
- name: "GLOBIGNORE filters glob results"
|
||||
known_failure: true
|
||||
test_files:
|
||||
- path: "a.txt"
|
||||
- path: "b.txt"
|
||||
- path: "c.txt"
|
||||
stdin: |
|
||||
GLOBIGNORE="b.txt"
|
||||
echo *.txt
|
||||
|
||||
- name: "GLOBIGNORE with multiple patterns"
|
||||
known_failure: true
|
||||
test_files:
|
||||
- path: "a.txt"
|
||||
- path: "b.txt"
|
||||
- path: "c.txt"
|
||||
- path: "d.log"
|
||||
stdin: |
|
||||
GLOBIGNORE="b.txt:c.txt"
|
||||
echo *.txt
|
||||
echo *.log
|
||||
|
||||
- name: "GLOBIGNORE implicitly enables dotglob"
|
||||
known_failure: true
|
||||
min_oracle_version: 5.2
|
||||
test_files:
|
||||
- path: "a.txt"
|
||||
- path: ".hidden.txt"
|
||||
stdin: |
|
||||
GLOBIGNORE="a.txt"
|
||||
echo *.txt
|
||||
|
||||
- name: "Unsetting GLOBIGNORE restores behavior"
|
||||
known_failure: true
|
||||
test_files:
|
||||
- path: "a.txt"
|
||||
- path: "b.txt"
|
||||
stdin: |
|
||||
GLOBIGNORE="a.txt"
|
||||
echo *.txt
|
||||
unset GLOBIGNORE
|
||||
echo *.txt
|
||||
|
||||
- name: "Star does not match slash in path"
|
||||
test_files:
|
||||
- path: "dir/file.txt"
|
||||
- path: "top.txt"
|
||||
stdin: |
|
||||
echo *.txt
|
||||
|
||||
- name: "Pathname expansion: dot files (with dotglob)"
|
||||
min_oracle_version: 5.2
|
||||
stdin: |
|
||||
touch .file
|
||||
touch .dir
|
||||
|
||||
shopt -s dotglob
|
||||
echo "* : " *
|
||||
echo "*i* : " *i*
|
||||
echo "./* : " ./*
|
||||
echo ".* : " .*
|
||||
echo "./.*: " ./.*
|
||||
Reference in New Issue
Block a user