'make perf': Unbreak by porting over 'make test' harness changes.
In particular, tests were relying on the harness to provide a sandbox working directory, but the perf harness wasn't providing that.
This commit is contained in:
		
							parent
							
								
									17fbcad8ac
								
							
						
					
					
						commit
						e60737d320
					
				|  | @ -1,6 +1,6 @@ | |||
| #!/usr/bin/env zsh | ||||
| # ------------------------------------------------------------------------------------------------- | ||||
| # Copyright (c) 2010-2011 zsh-syntax-highlighting contributors | ||||
| # Copyright (c) 2010-2015 zsh-syntax-highlighting contributors | ||||
| # All rights reserved. | ||||
| # | ||||
| # Redistribution and use in source and binary forms, with or without modification, are permitted | ||||
|  | @ -31,20 +31,20 @@ | |||
| 
 | ||||
| # Check an highlighter was given as argument. | ||||
| [[ -n "$1" ]] || { | ||||
|   echo "You must provide the name of a valid highlighter as argument." >&2 | ||||
|   exit 1 | ||||
|   echo >&2 "Bail out! You must provide the name of a valid highlighter as argument." | ||||
|   exit 2 | ||||
| } | ||||
| 
 | ||||
| # Check the highlighter is valid. | ||||
| [[ -f ${0:h:h}/highlighters/$1/$1-highlighter.zsh ]] || { | ||||
|   echo "Could not find highlighter '$1'." >&2 | ||||
|   exit 1 | ||||
|   echo >&2 "Bail out! Could not find highlighter '$1'." | ||||
|   exit 2 | ||||
| } | ||||
| 
 | ||||
| # Check the highlighter has test data. | ||||
| [[ -d ${0:h:h}/highlighters/$1/test-data ]] || { | ||||
|   echo "Highlighter '$1' has no test data." >&2 | ||||
|   exit 1 | ||||
|   echo >&2 "Bail out! Highlighter '$1' has no test data." | ||||
|   exit 2 | ||||
| } | ||||
| 
 | ||||
| # Load the main script. | ||||
|  | @ -53,23 +53,49 @@ | |||
| # Activate the highlighter. | ||||
| ZSH_HIGHLIGHT_HIGHLIGHTERS=($1) | ||||
| 
 | ||||
| # Process each test data file in test data directory. | ||||
| for data_file in ${0:h:h}/highlighters/$1/test-data/*; do | ||||
| # Runs a highlighting test | ||||
| # $1: data file | ||||
| run_test_internal() { | ||||
|   local -a highlight_zone | ||||
|   local unused_highlight='bg=red,underline' # a style unused by anything else, for tests to use | ||||
| 
 | ||||
|   local tests_tempdir="$1"; shift | ||||
|   local srcdir="$PWD" | ||||
|   builtin cd -q -- "$tests_tempdir" || { echo >&2 "Bail out! cd failed: $?"; return 1 } | ||||
| 
 | ||||
|   echo -n "# ${1:t:r}: " | ||||
| 
 | ||||
|   # Load the data and prepare checking it. | ||||
|   BUFFER= | ||||
|   echo -n "* ${data_file:t:r}: " | ||||
|   . $data_file | ||||
|   PREBUFFER= BUFFER= ; | ||||
|   . "$srcdir"/"$1" | ||||
| 
 | ||||
|   # Check the data declares $BUFFER. | ||||
|   if [[ ${#BUFFER} -eq 0 ]]; then | ||||
|     echo "KO\n   - 'BUFFER' is not declared or blank." | ||||
|   else | ||||
|   # Check the data declares $PREBUFFER or $BUFFER. | ||||
|   [[ -z $PREBUFFER && -z $BUFFER ]] && { echo >&2 "Bail out! Either 'PREBUFFER' or 'BUFFER' must be declared and non-blank"; return 1; } | ||||
| 
 | ||||
|     # Measure the time taken by _zsh_highlight. | ||||
|     TIMEFMT="%*Es" | ||||
|     time ( BUFFER="$BUFFER" && _zsh_highlight) | ||||
|   # Measure the time taken by _zsh_highlight. | ||||
|   TIMEFMT="%*Es" | ||||
|   time (BUFFER="$BUFFER" && _zsh_highlight) | ||||
| } | ||||
| 
 | ||||
|   fi | ||||
| run_test() { | ||||
|   # Do not combine the declaration and initialization: «local x="$(false)"» does not set $?. | ||||
|   local __tests_tempdir | ||||
|   __tests_tempdir="$(mktemp -d)" && [[ -d $__tests_tempdir ]] || { | ||||
|     echo >&2 "Bail out! mktemp failed"; return 1 | ||||
|   } | ||||
|   typeset -r __tests_tempdir # don't allow tests to override the variable that we will 'rm -rf' later on | ||||
| 
 | ||||
|   { | ||||
|     (run_test_internal "$__tests_tempdir" "$@") | ||||
|   } always { | ||||
|     rm -rf -- "$__tests_tempdir" | ||||
|   } | ||||
| } | ||||
| 
 | ||||
| # Process each test data file in test data directory. | ||||
| for data_file in ${0:h:h}/highlighters/$1/test-data/*.zsh; do | ||||
|   run_test "$data_file" | ||||
|   (( $pipestatus[1] )) && exit 2 | ||||
| done | ||||
| 
 | ||||
| exit 0 | ||||
|  |  | |||
		Loading…
	
		Reference in New Issue