Refactored testing approach to use 'vendorized' libraries at test time.
diff --git a/clean.sh b/clean.sh new file mode 100755 index 0000000..44d49d9 --- /dev/null +++ b/clean.sh
@@ -0,0 +1,6 @@ +#!/bin/bash +# fail out of the script if anything here fails +set -e + +# clear out stuff generated by test.sh +rm -rf src test_program_bin toml-test
diff --git a/test_program/test_program.go b/cmd/test_program.go similarity index 89% rename from test_program/test_program.go rename to cmd/test_program.go index 8912c05..2fa43f2 100644 --- a/test_program/test_program.go +++ b/cmd/test_program.go
@@ -40,6 +40,12 @@ return typed case *toml.TomlTree: return translate((map[string]interface{})(*orig)) + case []*toml.TomlTree: + typed := make([]map[string]interface{}, len(orig)) + for i, v := range orig { + typed[i] = translate(v).(map[string]interface{}) + } + return typed case []map[string]interface{}: typed := make([]map[string]interface{}, len(orig)) for i, v := range orig {
diff --git a/test.sh b/test.sh index b6ed4b4..07aa52e 100755 --- a/test.sh +++ b/test.sh
@@ -1,11 +1,28 @@ #!/bin/bash +# fail out of the script if anything here fails +set -e -# Run basic go unit tests -go test -v ./... -result=$? +# set the path to the present working directory +export GOPATH=`pwd` -# Run example-based toml tests -cd test_program && ./go-test.sh -result="$(( result || $? ))" +# Vendorize the BurntSushi test suite +# NOTE: this gets a specific release to avoid versioning issues +if [ ! -d 'src/github.com/BurntSushi/toml-test' ]; then + mkdir -p src/github.com/BurntSushi + git clone https://github.com/BurntSushi/toml-test.git src/github.com/BurntSushi/toml-test +fi +pushd src/github.com/BurntSushi/toml-test +git reset --hard '0.2.0' # use the released version, NOT tip +popd +go build -o toml-test github.com/BurntSushi/toml-test -exit $result +# vendorize the current lib for testing +# NOTE: this basically mocks an install without having to go back out to github for code +mkdir -p src/github.com/pelletier/go-toml/cmd +cp *.go *.toml src/github.com/pelletier/go-toml +cp cmd/*.go src/github.com/pelletier/go-toml/cmd +go build -o test_program_bin src/github.com/pelletier/go-toml/cmd/test_program.go + +# Run basic unit tests and then the BurntSushi test suite +go test -v github.com/pelletier/go-toml +./toml-test ./test_program_bin | tee test_out
diff --git a/test_program/go-test.sh b/test_program/go-test.sh deleted file mode 100755 index f34a54d..0000000 --- a/test_program/go-test.sh +++ /dev/null
@@ -1,25 +0,0 @@ -#!/bin/bash - -go get github.com/BurntSushi/toml-test # install test suite -go build -o test_program_bin github.com/pelletier/go-toml/test_program - -toml_test_wrapper() { - ret=0 - if hash toml-test 2>/dev/null; then # test availability in $PATH - toml-test "$@" - ret=$? - else - p="$HOME/gopath/bin/toml-test" # try in Travi's place - if [ -f "$p" ]; then - "$p" "$@" - ret=$? - else - "$GOPATH/bin/toml-test" "$@" - ret=$? - fi - fi -} - -toml_test_wrapper ./test_program_bin | tee test_out -ret="$([ `tail -n 1 test_out | sed -E 's/^.+([0-9]+) failed$/\1/'` -eq 0 ])" -exit $ret