git-subtree-dir: third_party/nix
git-subtree-mainline: cf8cd640c1
git-subtree-split: be66c7a6b24e3c3c6157fd37b86c7203d14acf10
		
	
			
		
			
				
	
	
		
			85 lines
		
	
	
	
		
			2.1 KiB
		
	
	
	
		
			Bash
		
	
	
		
			Executable file
		
	
	
	
	
			
		
		
	
	
			85 lines
		
	
	
	
		
			2.1 KiB
		
	
	
	
		
			Bash
		
	
	
		
			Executable file
		
	
	
	
	
| source common.sh
 | |
| 
 | |
| set +x
 | |
| 
 | |
| expect_trace() {
 | |
|     expr="$1"
 | |
|     expect="$2"
 | |
|     actual=$(
 | |
|         nix-instantiate \
 | |
|             --trace-function-calls \
 | |
|             --expr "$expr" 2>&1 \
 | |
|             | grep "function-trace" \
 | |
|             | sed -e 's/ [0-9]*$//'
 | |
|     );
 | |
| 
 | |
|     echo -n "Tracing expression '$expr'"
 | |
|     set +e
 | |
|     msg=$(diff -swB \
 | |
|                <(echo "$expect") \
 | |
|                <(echo "$actual")
 | |
|     );
 | |
|     result=$?
 | |
|     set -e
 | |
|     if [ $result -eq 0 ]; then
 | |
|         echo " ok."
 | |
|     else
 | |
|         echo " failed. difference:"
 | |
|         echo "$msg"
 | |
|         return $result
 | |
|     fi
 | |
| }
 | |
| 
 | |
| # failure inside a tryEval
 | |
| expect_trace 'builtins.tryEval (throw "example")' "
 | |
| function-trace entered undefined position at
 | |
| function-trace exited undefined position at
 | |
| function-trace entered (string):1:1 at
 | |
| function-trace entered (string):1:19 at
 | |
| function-trace exited (string):1:19 at
 | |
| function-trace exited (string):1:1 at
 | |
| "
 | |
| 
 | |
| # Missing argument to a formal function
 | |
| expect_trace '({ x }: x) { }' "
 | |
| function-trace entered undefined position at
 | |
| function-trace exited undefined position at
 | |
| function-trace entered (string):1:1 at
 | |
| function-trace exited (string):1:1 at
 | |
| "
 | |
| 
 | |
| # Too many arguments to a formal function
 | |
| expect_trace '({ x }: x) { x = "x"; y = "y"; }' "
 | |
| function-trace entered undefined position at
 | |
| function-trace exited undefined position at
 | |
| function-trace entered (string):1:1 at
 | |
| function-trace exited (string):1:1 at
 | |
| "
 | |
| 
 | |
| # Not enough arguments to a lambda
 | |
| expect_trace '(x: y: x + y) 1' "
 | |
| function-trace entered undefined position at
 | |
| function-trace exited undefined position at
 | |
| function-trace entered (string):1:1 at
 | |
| function-trace exited (string):1:1 at
 | |
| "
 | |
| 
 | |
| # Too many arguments to a lambda
 | |
| expect_trace '(x: x) 1 2' "
 | |
| function-trace entered undefined position at
 | |
| function-trace exited undefined position at
 | |
| function-trace entered (string):1:1 at
 | |
| function-trace exited (string):1:1 at
 | |
| function-trace entered (string):1:1 at
 | |
| function-trace exited (string):1:1 at
 | |
| "
 | |
| 
 | |
| # Not a function
 | |
| expect_trace '1 2' "
 | |
| function-trace entered undefined position at
 | |
| function-trace exited undefined position at
 | |
| function-trace entered (string):1:1 at
 | |
| function-trace exited (string):1:1 at
 | |
| "
 | |
| 
 | |
| set -e
 |