Squashed 'vendor/git.knownelement.com/ExternalVendorCode/mo/' content from commit 7e86c1a
git-subtree-dir: vendor/git.knownelement.com/ExternalVendorCode/mo git-subtree-split: 7e86c1a5f525f352983077d743c2ce2f5d75f4fa
This commit is contained in:
		
							
								
								
									
										42
									
								
								tests/function-args-read
									
									
									
									
									
										Executable file
									
								
							
							
						
						
									
										42
									
								
								tests/function-args-read
									
									
									
									
									
										Executable file
									
								
							@@ -0,0 +1,42 @@
 | 
			
		||||
#!/usr/bin/env bash
 | 
			
		||||
cd "${0%/*}" || exit 1
 | 
			
		||||
. ../run-tests
 | 
			
		||||
 | 
			
		||||
testArgs() {
 | 
			
		||||
    local args
 | 
			
		||||
    # shellcheck disable=SC2031
 | 
			
		||||
    args=$(declare -p MO_FUNCTION_ARGS)
 | 
			
		||||
 | 
			
		||||
    # The output from declare -p could look like these
 | 
			
		||||
    #     declare -a MO_FUNCTION_ARGS=([0]="one")
 | 
			
		||||
    #     declare -ax MO_FUNCTION_ARGS='([0]="one")'
 | 
			
		||||
    # Trim leading declare statement and variable name
 | 
			
		||||
    args="${args#*=}"
 | 
			
		||||
 | 
			
		||||
    # If there are any quotes, remove them. The function arguments will always
 | 
			
		||||
    # be an array.
 | 
			
		||||
    if [[ "${args:0:1}" == "'" ]]; then
 | 
			
		||||
        args=${args#\'}
 | 
			
		||||
        args=${args%\'}
 | 
			
		||||
    fi
 | 
			
		||||
 | 
			
		||||
    echo -n "$args"
 | 
			
		||||
}
 | 
			
		||||
template() {
 | 
			
		||||
    cat <<EOF
 | 
			
		||||
No args: {{testArgs}} - done
 | 
			
		||||
One arg: {{testArgs 'one'}} - done
 | 
			
		||||
Multiple arguments: {{testArgs 'aa' 'bb' 'cc' 'x' "" '!' '{[_.|' }} - done
 | 
			
		||||
Evil: {{testArgs bla; cat /etc/issue}} - done
 | 
			
		||||
EOF
 | 
			
		||||
}
 | 
			
		||||
expected() {
 | 
			
		||||
    cat <<EOF
 | 
			
		||||
No args: () - done
 | 
			
		||||
One arg: ([0]="one") - done
 | 
			
		||||
Multiple arguments: ([0]="aa" [1]="bb" [2]="cc" [3]="x" [4]="" [5]="!" [6]="{[_.|") - done
 | 
			
		||||
Evil: ([0]="" [1]="" [2]="") - done
 | 
			
		||||
EOF
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
runTest
 | 
			
		||||
		Reference in New Issue
	
	Block a user