mirror of
https://github.com/tests-always-included/mo.git
synced 2024-12-18 16:27:52 +00:00
Add test for --source flag and pull request suggestions
Add a demo/sourcing.vars file to be used by the associated demo script. Modified mo argument parsing so that --help and --source=file do not need to be the first arguments for mo. And can in fact appear after or in the middle of filenames.
This commit is contained in:
parent
4f7fd392b0
commit
45475ec77e
1
.gitignore
vendored
1
.gitignore
vendored
@ -4,4 +4,3 @@ diagnostic.test
|
|||||||
tests/*.diff
|
tests/*.diff
|
||||||
spec/
|
spec/
|
||||||
spec-runner/
|
spec-runner/
|
||||||
demo/sourcing.vars
|
|
||||||
|
@ -4,11 +4,6 @@
|
|||||||
|
|
||||||
cd "$(dirname "$0")" # Go to the script's directory
|
cd "$(dirname "$0")" # Go to the script's directory
|
||||||
|
|
||||||
cat <<EOF >sourcing.vars
|
|
||||||
export NAME="Alex"
|
|
||||||
export ARRAY=( AAA BBB CCC )
|
|
||||||
EOF
|
|
||||||
|
|
||||||
cat <<EOF | ../mo --source=sourcing.vars
|
cat <<EOF | ../mo --source=sourcing.vars
|
||||||
Hello, my name is {{NAME}}.
|
Hello, my name is {{NAME}}.
|
||||||
And this is ARRAY's conntents:
|
And this is ARRAY's conntents:
|
||||||
|
2
demo/sourcing.vars
Normal file
2
demo/sourcing.vars
Normal file
@ -0,0 +1,2 @@
|
|||||||
|
export NAME="Alex"
|
||||||
|
export ARRAY=( AAA BBB CCC )
|
37
mo
37
mo
@ -29,25 +29,38 @@
|
|||||||
mo() (
|
mo() (
|
||||||
# This function executes in a subshell so IFS is reset.
|
# This function executes in a subshell so IFS is reset.
|
||||||
# Namespace this variable so we don't conflict with desired values.
|
# Namespace this variable so we don't conflict with desired values.
|
||||||
local moContent
|
local moContent files=()
|
||||||
|
|
||||||
IFS=$' \n\t'
|
IFS=$' \n\t'
|
||||||
|
|
||||||
if [[ $# -gt 0 ]]; then
|
if [[ $# -gt 0 ]]; then
|
||||||
case "$1" in
|
for arg in "$@"; do
|
||||||
-h|--h|--he|--hel|--help)
|
case "$arg" in
|
||||||
moUsage "$0"
|
-h|--h|--he|--hel|--help)
|
||||||
exit 0
|
moUsage "$0"
|
||||||
;;
|
exit 0
|
||||||
|
;;
|
||||||
|
|
||||||
--source=*)
|
--source=*)
|
||||||
. "${1#--source=}"
|
local f2source="${1#--source=}"
|
||||||
shift 1
|
if [[ -f "$f2source" ]]; then
|
||||||
;;
|
. "$f2source"
|
||||||
esac
|
continue
|
||||||
|
else
|
||||||
|
printf "%s: %s: %s\n"\
|
||||||
|
"$0" "$f2source" "No such file" >&2
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
;;
|
||||||
|
|
||||||
|
*) # Every arg that is not a flag or a option should be a file
|
||||||
|
files+=("$arg")
|
||||||
|
;;
|
||||||
|
esac
|
||||||
|
done
|
||||||
fi
|
fi
|
||||||
|
|
||||||
moGetContent moContent "$@"
|
moGetContent moContent "${files[@]}"
|
||||||
moParse "$moContent" "" true
|
moParse "$moContent" "" true
|
||||||
)
|
)
|
||||||
|
|
||||||
|
5
tests/source.expected
Normal file
5
tests/source.expected
Normal file
@ -0,0 +1,5 @@
|
|||||||
|
value
|
||||||
|
* 1
|
||||||
|
* 2
|
||||||
|
* 3
|
||||||
|
AAA BBB
|
17
tests/source.sh
Executable file
17
tests/source.sh
Executable file
@ -0,0 +1,17 @@
|
|||||||
|
#!/usr/bin/env bash
|
||||||
|
|
||||||
|
cd "${0%/*}"
|
||||||
|
cat <<EOF | ../mo --source=source.vars
|
||||||
|
{{VAR}}
|
||||||
|
{{#ARR}}
|
||||||
|
* {{.}}
|
||||||
|
{{/ARR}}
|
||||||
|
{{ASSOC_ARR.a}} {{ASSOC_ARR.b}}
|
||||||
|
EOF
|
||||||
|
|
||||||
|
|
||||||
|
# Prints the string should mo NOT fail. Meaning that the output will not match
|
||||||
|
# tests/source.expected and therefore the test will fail.
|
||||||
|
|
||||||
|
../mo --source=a/non/existent/file files >/dev/null 2>&1
|
||||||
|
[[ "$?" -ne 1 ]] && echo "mo accepted a non existent file"
|
4
tests/source.vars
Normal file
4
tests/source.vars
Normal file
@ -0,0 +1,4 @@
|
|||||||
|
export VAR=value
|
||||||
|
export ARR=(1 2 3)
|
||||||
|
declare -A ASSOC_ARR
|
||||||
|
export ASSOC_ARR=([a]=AAA [b]=BBB)
|
Loading…
Reference in New Issue
Block a user