3 # Run all the different permutations of all the tests and other things
4 # This helps ensure that nothing gets broken.
7 local gover=$( go version | cut -f 3 -d ' ' )
8 # note that codecgen requires fastpath, so you cannot do "codecgen notfastpath"
9 local a=( "" "safe" "notfastpath" "notfastpath safe" "codecgen" "codecgen safe" )
13 local i2=${i:-default}
15 go1.[0-6]*) go vet -printfuncs "errorf" "$@" &&
16 go test ${zargs[*]} -vet off -tags "$i" "$@" ;;
17 *) go vet -printfuncs "errorf" "$@" &&
18 go test ${zargs[*]} -vet off -tags "alltests $i" -run "Suite" -coverprofile "${i2// /-}.cov.out" "$@" ;;
20 if [[ "$?" != 0 ]]; then return 1; fi
22 echo "++++++++ TEST SUITES ALL PASSED ++++++++"
26 # is a generation needed?
29 if [[ ! -e "$a" ]]; then echo 1; return; fi
30 for i in `ls -1 *.go.tmpl gen.go values_test.go`
32 if [[ "$a" -ot "$i" ]]; then echo 1; return; fi
45 # _build generates fast-path.go and gen-helper.go.
47 if ! [[ "${zforce}" || $(_ng "fast-path.generated.go") || $(_ng "gen-helper.generated.go") || $(_ng "gen.generated.go") ]]; then return 0; fi
49 if [ "${zbak}" ]; then
50 _zts=`date '+%m%d%Y_%H%M%S'`
52 [ -e "gen-helper${_gg}" ] && mv gen-helper${_gg} gen-helper${_gg}__${_zts}.bak
53 [ -e "fast-path${_gg}" ] && mv fast-path${_gg} fast-path${_gg}__${_zts}.bak
54 [ -e "gen${_gg}" ] && mv gen${_gg} gen${_gg}__${_zts}.bak
56 rm -f gen-helper.generated.go fast-path.generated.go gen.generated.go \
57 *safe.generated.go *_generated_test.go *.generated_ffjson_expose.go
59 cat > gen.generated.go <<EOF
60 // +build codecgen.exec
62 // Copyright (c) 2012-2015 Ugorji Nwoke. All rights reserved.
63 // Use of this source code is governed by a MIT license found in the LICENSE file.
67 // DO NOT EDIT. THIS FILE IS AUTO-GENERATED FROM gen-dec-(map|array).go.tmpl
69 const genDecMapTmpl = \`
71 cat >> gen.generated.go < gen-dec-map.go.tmpl
72 cat >> gen.generated.go <<EOF
75 const genDecListTmpl = \`
77 cat >> gen.generated.go < gen-dec-array.go.tmpl
78 cat >> gen.generated.go <<EOF
81 const genEncChanTmpl = \`
83 cat >> gen.generated.go < gen-enc-chan.go.tmpl
84 cat >> gen.generated.go <<EOF
87 cat > gen-from-tmpl.codec.generated.go <<EOF
90 func GenInternalGoFile(r io.Reader, w io.Writer) error {
91 return genInternalGoFile(r, w)
94 cat > gen-from-tmpl.generated.go <<EOF
102 func run(fnameIn, fnameOut string) {
103 println("____ " + fnameIn + " --> " + fnameOut + " ______")
104 fin, err := os.Open(fnameIn)
105 if err != nil { panic(err) }
107 fout, err := os.Create(fnameOut)
108 if err != nil { panic(err) }
110 err = codec.GenInternalGoFile(fin, fout)
111 if err != nil { panic(err) }
115 run("fast-path.go.tmpl", "fast-path.generated.go")
116 run("gen-helper.go.tmpl", "gen-helper.generated.go")
117 run("mammoth-test.go.tmpl", "mammoth_generated_test.go")
118 run("mammoth2-test.go.tmpl", "mammoth2_generated_test.go")
122 # explicitly return 0 if this passes, else return 1
123 go run -tags "notfastpath safe codecgen.exec" gen-from-tmpl.generated.go &&
124 rm -f gen-from-tmpl.*generated.go &&
131 $(_ng "values_codecgen${zsfx}") ]]; then return 0; fi
133 # Note: ensure you run the codecgen for this codebase (using $zgobase/bin/codecgen)
134 local c9="codecgen-scratch.go"
136 echo "codecgen ... " &&
137 $zgobase/bin/codecgen -rt codecgen -t 'codecgen generated' -o values_codecgen${zsfx} -d 19780 $zfin $zfin2 &&
138 cp mammoth2_generated_test.go $c9 &&
139 $zgobase/bin/codecgen -t '!notfastpath' -o mammoth2_codecgen${zsfx} -d 19781 mammoth2_generated_test.go &&
141 echo "generators done!"
145 echo "prebuild: zforce: $zforce , zexternal: $zexternal"
147 zfin="test_values.generated.go"
148 zfin2="test_values_flex.generated.go"
149 zsfx="_generated_test.go"
150 # zpkg="ugorji.net/codec"
151 zpkg=${zmydir##*/src/}
152 zgobase=${zmydir%%/src/*}
153 # rm -f *_generated_test.go
154 rm -f codecgen-*.go &&
156 cp $zmydir/values_test.go $zmydir/$zfin &&
157 cp $zmydir/values_flex_test.go $zmydir/$zfin2 &&
159 if [[ "$(type -t _codegenerators_external )" = "function" ]]; then _codegenerators_external ; fi &&
160 if [[ $zforce ]]; then go install ${zargs[*]} .; fi &&
161 echo "prebuild done successfully"
162 rm -f $zmydir/$zfin $zmydir/$zfin2
168 ( cd codecgen && go install ${zargs[*]} . ) && _prebuild && go install ${zargs[*]} .
169 unset zforce zexternal
173 rm -f gen-from-tmpl.*generated.go \
175 test_values.generated.go test_values_flex.generated.go
181 -[tmpfxnld] for [tests, make, prebuild (force) (external), inlining diagnostics, mid-stack inlining, race detector]
183 if [[ "$(type -t _usage_run)" = "function" ]]; then _usage_run ; fi
187 if [[ -z "$1" ]]; then _usage; return 1; fi
189 unset zforce zexternal
191 while getopts ":ctbqmnrgupfxlzd" flag
196 'xl') zargs+=("-gcflags"); zargs+=("-l=4") ;;
197 'xn') zargs+=("-gcflags"); zargs+=("-m") ;;
198 'xd') zargs+=("-race") ;;
199 x\?) _usage; return 1 ;;
206 'xq') _benchquick "$@" ;;
209 'xr') _release "$@" ;;
211 'xu') _githubupdate ;;
212 'xp') _prebuild "$@" ;;
214 'xz') _analyze "$@" ;;
216 unset zforce zexternal
219 [ "." = `dirname $0` ] && _main "$@"