Bash · 1009 bytes Raw Blame History
1 #!/bin/sh
2 TEST_PREFIX="[readonly]"
3 . "$(cd "$(dirname "$0")/.." && pwd)/test_harness.sh"
4
5 section "1. readonly basic"
6 compare_output "readonly VAR=value preserves value" 'readonly MYRO=hello; echo $MYRO'
7 compare_output "readonly existing var" 'MYVAR=test; readonly MYVAR; echo $MYVAR'
8 compare_output "readonly with empty value" 'readonly MYRO=""; echo ">${MYRO}<"'
9 compare_output "readonly multiple vars" 'readonly A=1 B=2; echo $A $B'
10
11 section "2. readonly enforcement"
12 compare_exit "modify readonly var fails" 'readonly MYRO=hello; MYRO=world 2>/dev/null'
13 compare_exit "unset readonly var fails" 'readonly MYRO=hello; unset MYRO 2>/dev/null'
14 compare_output "readonly var in subshell" 'readonly MYRO=hello; echo $MYRO'
15 compare_exit "export readonly var succeeds" 'readonly MYRO=hello; export MYRO 2>/dev/null'
16
17 section "3. readonly listing"
18 check_exit "readonly -p lists vars" 'readonly -p' "0"
19 compare_output "readonly -p shows declared vars" 'readonly TESTRO=abc; readonly -p | grep TESTRO'
20
21 print_summary