'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 | #!/usr/bin/env zsh | ||||||
| # ------------------------------------------------------------------------------------------------- | # ------------------------------------------------------------------------------------------------- | ||||||
| # Copyright (c) 2010-2011 zsh-syntax-highlighting contributors | # Copyright (c) 2010-2015 zsh-syntax-highlighting contributors | ||||||
| # All rights reserved. | # All rights reserved. | ||||||
| # | # | ||||||
| # Redistribution and use in source and binary forms, with or without modification, are permitted | # 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. | # Check an highlighter was given as argument. | ||||||
| [[ -n "$1" ]] || { | [[ -n "$1" ]] || { | ||||||
|   echo "You must provide the name of a valid highlighter as argument." >&2 |   echo >&2 "Bail out! You must provide the name of a valid highlighter as argument." | ||||||
|   exit 1 |   exit 2 | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
| # Check the highlighter is valid. | # Check the highlighter is valid. | ||||||
| [[ -f ${0:h:h}/highlighters/$1/$1-highlighter.zsh ]] || { | [[ -f ${0:h:h}/highlighters/$1/$1-highlighter.zsh ]] || { | ||||||
|   echo "Could not find highlighter '$1'." >&2 |   echo >&2 "Bail out! Could not find highlighter '$1'." | ||||||
|   exit 1 |   exit 2 | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
| # Check the highlighter has test data. | # Check the highlighter has test data. | ||||||
| [[ -d ${0:h:h}/highlighters/$1/test-data ]] || { | [[ -d ${0:h:h}/highlighters/$1/test-data ]] || { | ||||||
|   echo "Highlighter '$1' has no test data." >&2 |   echo >&2 "Bail out! Highlighter '$1' has no test data." | ||||||
|   exit 1 |   exit 2 | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
| # Load the main script. | # Load the main script. | ||||||
|  | @ -53,23 +53,49 @@ | ||||||
| # Activate the highlighter. | # Activate the highlighter. | ||||||
| ZSH_HIGHLIGHT_HIGHLIGHTERS=($1) | ZSH_HIGHLIGHT_HIGHLIGHTERS=($1) | ||||||
| 
 | 
 | ||||||
| # Process each test data file in test data directory. | # Runs a highlighting test | ||||||
| for data_file in ${0:h:h}/highlighters/$1/test-data/*; do | # $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. |   # Load the data and prepare checking it. | ||||||
|   BUFFER= |   PREBUFFER= BUFFER= ; | ||||||
|   echo -n "* ${data_file:t:r}: " |   . "$srcdir"/"$1" | ||||||
|   . $data_file |  | ||||||
| 
 | 
 | ||||||
|   # Check the data declares $BUFFER. |   # Check the data declares $PREBUFFER or $BUFFER. | ||||||
|   if [[ ${#BUFFER} -eq 0 ]]; then |   [[ -z $PREBUFFER && -z $BUFFER ]] && { echo >&2 "Bail out! Either 'PREBUFFER' or 'BUFFER' must be declared and non-blank"; return 1; } | ||||||
|     echo "KO\n   - 'BUFFER' is not declared or blank." |  | ||||||
|   else |  | ||||||
| 
 | 
 | ||||||
|   # Measure the time taken by _zsh_highlight. |   # Measure the time taken by _zsh_highlight. | ||||||
|   TIMEFMT="%*Es" |   TIMEFMT="%*Es" | ||||||
|     time ( BUFFER="$BUFFER" && _zsh_highlight) |   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 | done | ||||||
|  | 
 | ||||||
|  | exit 0 | ||||||
|  |  | ||||||
		Loading…
	
		Reference in New Issue