Files
nucleic-brush/brush-shell/tests/cases/compat/builtins/dot.yaml
T

146 lines
3.3 KiB
YAML

name: "Builtins: dot"
cases:
- name: "Basic dot usage"
test_files:
- path: "script.sh"
contents: |
echo "In sourced script"
var="updated"
stdin: |
var="orig"
. script.sh
echo "var: ${var}"
- name: "Dot searches PATH for git setup scripts"
test_files:
- path: "git-core/git-sh-setup"
contents: |
require_work_tree() { echo "sourced git setup"; }
stdin: |
PATH="$PWD/git-core:$PATH"
. git-sh-setup
require_work_tree
- name: "Basic source usage"
test_files:
- path: "script.sh"
contents: |
echo "In sourced script"
for f in ${FUNCNAME[@]}; do
echo "FUNCNAME: '${f}'"
done
for s in ${BASH_SOURCE[@]}; do
echo "BASH_SOURCE: '${s}'"
done
var="updated"
function script_func() {
echo "In script func"
for f in ${FUNCNAME[@]}; do
echo "FUNCNAME: '${f}'"
done
for s in ${BASH_SOURCE[@]}; do
echo "BASH_SOURCE: '${s}'"
done
}
stdin: |
var="orig"
source ./script.sh
echo "var: ${var}"
script_func
- name: "Source non-existent file path"
ignore_stderr: true
stdin: |
source script.sh
echo "Result: $?"
- name: "Source dir"
ignore_stderr: true
stdin: |
source .
echo "Result: $?"
- name: "Source script without args"
test_files:
- path: "script.sh"
contents: |
echo "In sourced script"
echo "Args: $@"
stdin: |
set -- outer1 outer2 outer3
source script.sh
- name: "Source script with args"
test_files:
- path: "script.sh"
contents: |
echo "In sourced script"
echo "Args: $@"
stdin: |
set -- outer1 outer2 outer3
source script.sh inner1 inner2
- name: "Source with redirection"
test_files:
- path: "script.sh"
contents: |
echo "In sourced script"
stdin: |
source script.sh arg1 arg2 > out.txt
echo "Sourced script; dumping..."
cat out.txt
- name: "Source with return"
test_files:
- path: "script.sh"
contents: |
echo "Before return"
return 42
echo "After return"
stdin: |
echo "Before source"
source script.sh
echo "After source, exit code: $?"
- name: "Source with exit"
test_files:
- path: "script.sh"
contents: |
echo "Before exit"
exit 42
echo "After exit"
stdin: |
echo "Before source"
source script.sh
echo "After source"
- name: "Source with break in caller's loop"
test_files:
- path: "script.sh"
contents: |
echo "In script, breaking"
break
stdin: |
for i in 1 2 3; do
echo "Iteration $i"
source script.sh
echo "After source"
done
echo "After loop"
- name: "Source with continue in caller's loop"
test_files:
- path: "script.sh"
contents: |
echo "In script, continuing"
continue
echo "After continue"
stdin: |
for i in 1 2 3; do
echo "Iteration $i"
source script.sh
echo "After source"
done
echo "After loop"