Update test*.sh to support input file pattern
This is useful for testing fork(s) against subset of test samples
This commit is contained in:
		
				
					committed by
					
						
						Gunnar Morling
					
				
			
			
				
	
			
			
			
						parent
						
							4df425fb9b
						
					
				
				
					commit
					af269e39fc
				
			
							
								
								
									
										27
									
								
								test.sh
									
									
									
									
									
								
							
							
						
						
									
										27
									
								
								test.sh
									
									
									
									
									
								
							@@ -17,22 +17,35 @@
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
set -euo pipefail
 | 
					set -euo pipefail
 | 
				
			||||||
 | 
					
 | 
				
			||||||
if [ -z "$1" ]; then
 | 
					DEFAULT_INPUT="src/test/resources/samples/*.txt"
 | 
				
			||||||
  echo "Usage: test.sh <fork name>"
 | 
					FORK=${1:-""}
 | 
				
			||||||
 | 
					INPUT=${2:-$DEFAULT_INPUT}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					if [ "$#" -eq 0 ] || [ "$#" -gt 2 ] || [ "$FORK" = "-h" ]; then
 | 
				
			||||||
 | 
					  echo "Usage: ./test.sh <fork name> [input file pattern]"
 | 
				
			||||||
 | 
					  echo
 | 
				
			||||||
 | 
					  echo "For each test sample matching <input file pattern> (default '$DEFAULT_INPUT')"
 | 
				
			||||||
 | 
					  echo "runs <fork name> implementation and diffs the result with the expected output."
 | 
				
			||||||
 | 
					  echo "Note that optional <input file pattern> should be quoted if contains wild cards."
 | 
				
			||||||
 | 
					  echo
 | 
				
			||||||
 | 
					  echo "Examples:"
 | 
				
			||||||
 | 
					  echo "./test.sh baseline"
 | 
				
			||||||
 | 
					  echo "./test.sh baseline src/test/resources/samples/measurements-1.txt"
 | 
				
			||||||
 | 
					  echo "./test.sh baseline 'src/test/resources/samples/measurements-*.txt'"
 | 
				
			||||||
  exit 1
 | 
					  exit 1
 | 
				
			||||||
fi
 | 
					fi
 | 
				
			||||||
 | 
					
 | 
				
			||||||
if [ -f "./prepare_$1.sh" ]; then
 | 
					if [ -f "./prepare_$FORK.sh" ]; then
 | 
				
			||||||
  "./prepare_$1.sh"
 | 
					  "./prepare_$FORK.sh"
 | 
				
			||||||
fi
 | 
					fi
 | 
				
			||||||
 | 
					
 | 
				
			||||||
for sample in $(ls src/test/resources/samples/*.txt); do
 | 
					for sample in $(ls $INPUT); do
 | 
				
			||||||
  echo "Validating calculate_average_$1.sh -- $sample"
 | 
					  echo "Validating calculate_average_$FORK.sh -- $sample"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
  rm -f measurements.txt
 | 
					  rm -f measurements.txt
 | 
				
			||||||
  ln -s $sample measurements.txt
 | 
					  ln -s $sample measurements.txt
 | 
				
			||||||
 | 
					
 | 
				
			||||||
  diff <("./calculate_average_$1.sh") ${sample%.txt}.out
 | 
					  diff <("./calculate_average_$FORK.sh") ${sample%.txt}.out
 | 
				
			||||||
done
 | 
					done
 | 
				
			||||||
 | 
					
 | 
				
			||||||
rm measurements.txt
 | 
					rm measurements.txt
 | 
				
			||||||
 
 | 
				
			|||||||
							
								
								
									
										24
									
								
								test_all.sh
									
									
									
									
									
								
							
							
						
						
									
										24
									
								
								test_all.sh
									
									
									
									
									
								
							@@ -17,14 +17,30 @@
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
set -euo pipefail
 | 
					set -euo pipefail
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					INPUT=${1:-""}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					if [ "$INPUT" = "-h" ] || [ "$#" -gt 1 ]; then
 | 
				
			||||||
 | 
					  echo "Usage: ./test_all.sh [input file pattern]"
 | 
				
			||||||
 | 
					  echo
 | 
				
			||||||
 | 
					  echo "For each available fork run ./test.sh <fork name> [input file pattern]."
 | 
				
			||||||
 | 
					  echo "Note that optional <input file pattern> should be quoted if contains wild cards."
 | 
				
			||||||
 | 
					  echo
 | 
				
			||||||
 | 
					  echo "Examples:"
 | 
				
			||||||
 | 
					  echo "./test_all.sh"
 | 
				
			||||||
 | 
					  echo "./test_all.sh 2>/dev/null"
 | 
				
			||||||
 | 
					  echo "./test_all.sh src/test/resources/samples/measurements-1.txt"
 | 
				
			||||||
 | 
					  echo "./test_all.sh 'src/test/resources/samples/measurements-*.txt'"
 | 
				
			||||||
 | 
					  exit 1
 | 
				
			||||||
 | 
					fi
 | 
				
			||||||
 | 
					
 | 
				
			||||||
for impl in $(ls calculate_average_*.sh | sort); do
 | 
					for impl in $(ls calculate_average_*.sh | sort); do
 | 
				
			||||||
  noext="${impl%%.sh}"
 | 
					  noext="${impl%%.sh}"
 | 
				
			||||||
  name=${noext##calculate_average_}
 | 
					  fork=${noext##calculate_average_}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
  if output=$(./test.sh "$name" 2>&1); then
 | 
					  if output=$(./test.sh "$fork" "$INPUT" 2>&1); then
 | 
				
			||||||
    echo "PASS $name"
 | 
					    echo "PASS $fork"
 | 
				
			||||||
  else
 | 
					  else
 | 
				
			||||||
    echo "FAIL $name"
 | 
					    echo "FAIL $fork"
 | 
				
			||||||
    echo "$output" 1>&2
 | 
					    echo "$output" 1>&2
 | 
				
			||||||
  fi
 | 
					  fi
 | 
				
			||||||
done
 | 
					done
 | 
				
			||||||
 
 | 
				
			|||||||
		Reference in New Issue
	
	Block a user