#!/bin/bash # Build and Run the different test permutations. # This helps validate that nothing gets broken. _build_proceed() { # return success (0) if we should, and 1 (fail) if not if [[ "${zforce}" ]]; then return 0; fi for a in "fastpath.generated.go" "json.mono.generated.go"; do if [[ ! -e "$a" ]]; then return 0; fi for b in `ls -1 *.go.tmpl gen.go gen_mono.go values_test.go`; do if [[ "$a" -ot "$b" ]]; then return 0; fi done done return 1 } # _build generates fastpath.go _build() { # if ! [[ "${zforce}" || $(_ng "fastpath.generated.go") || $(_ng "json.mono.generated.go") ]]; then return 0; fi _build_proceed if [ $? -eq 1 ]; then return 0; fi if [ "${zbak}" ]; then _zts=`date '+%m%d%Y_%H%M%S'` _gg=".generated.go" [ -e "fastpath${_gg}" ] && mv fastpath${_gg} fastpath${_gg}__${_zts}.bak [ -e "gen${_gg}" ] && mv gen${_gg} gen${_gg}__${_zts}.bak fi rm -f fast*path.generated.go *mono*generated.go *_generated_test.go gen-from-tmpl*.generated.go local btags="codec.build codec.notmono codec.safe codec.notfastpath" cat > gen-from-tmpl.codec.generated.go < gen-from-tmpl.generated.go <>>> TAGS: 'alltests $i'; RUN: 'TestCodecSuite'" _tests_run_one [[ "$zwait" == "1" ]] && wait # if [[ "$?" != 0 ]]; then return 1; fi done wait [[ "$zcover" == "1" ]] && echo "go tool covdata output" && ${gocmd} tool covdata percent -i $covdir && ${gocmd} tool covdata textfmt -i $covdir -o __cov.out && ${gocmd} tool cover -html=__cov.out } _usage() { # hidden args: # -pf [p=prebuild (f=force)] cat < t=tests [e=extra, s=short, o=cover, w=wait] -[md] -> [m=make, d=race detector] -v -> v=verbose (more v's to increase verbose level) EOF if [[ "$(type -t _usage_run)" = "function" ]]; then _usage_run ; fi } _main() { if [[ -z "$1" ]]; then _usage; return 1; fi local x # determines the main action to run in this build local zforce # force local zcover # generate cover profile and show in browser when done local zwait # run tests in sequence, not parallel ie wait for one to finish before starting another local zextra # means run extra (python based tests, etc) during testing local ztestargs=() local zargs=() local zverbose=() local zbenchflags="" local gocmd=${MYGOCMD:-go} OPTIND=1 while getopts ":cetmnrgpfvldsowikxyz" flag do case "x$flag" in 'xw') zwait=1 ;; 'xv') zverbose+=(1) ;; 'xo') zcover=1 ;; 'xe') zextra=1 ;; 'xf') zforce=1 ;; 'xs') ztestargs+=("-short") ;; 'xl') zargs+=("-gcflags"); zargs+=("-l=4") ;; 'xn') zargs+=("-gcflags"); zargs+=("-m=2") ;; 'xd') zargs+=("-race") ;; # 'xi') x='i'; zbenchflags=${OPTARG} ;; x\?) _usage; return 1 ;; *) x=$flag ;; esac done shift $((OPTIND-1)) # echo ">>>> _main: extra args: $@" case "x$x" in 'xt') _tests "$@" ;; 'xm') _make "$@" ;; 'xr') _release "$@" ;; 'xg') _go ;; 'xp') _prebuild "$@" ;; 'xc') _clean "$@" ;; esac # handle from local run.sh case "x$x" in 'xi') _check_inlining_one "$@" ;; 'xk') _go_compiler_validation_suite ;; 'xx') _analyze_checks "$@" ;; 'xy') _analyze_debug_types "$@" ;; 'xz') _analyze_do_inlining_and_more "$@" ;; esac # unset zforce zargs zbenchflags } [ "." = `dirname $0` ] && _main "$@" # _xtrace() { # local - # set -x # "${@}" # }