92 lines
2.5 KiB
Bash
92 lines
2.5 KiB
Bash
|
#!/bin/bash
|
||
|
# fail out of the script if anything here fails
|
||
|
set -e
|
||
|
set -o pipefail
|
||
|
|
||
|
# set the path to the present working directory
|
||
|
export GOPATH=`pwd`
|
||
|
|
||
|
function git_clone() {
|
||
|
path=$1
|
||
|
branch=$2
|
||
|
version=$3
|
||
|
if [ ! -d "src/$path" ]; then
|
||
|
mkdir -p src/$path
|
||
|
git clone https://$path.git src/$path
|
||
|
fi
|
||
|
pushd src/$path
|
||
|
git checkout "$branch"
|
||
|
git reset --hard "$version"
|
||
|
popd
|
||
|
}
|
||
|
|
||
|
# Remove potential previous runs
|
||
|
rm -rf src test_program_bin toml-test
|
||
|
|
||
|
# Run go vet
|
||
|
go vet ./...
|
||
|
|
||
|
go get github.com/pelletier/go-buffruneio
|
||
|
go get github.com/davecgh/go-spew/spew
|
||
|
go get gopkg.in/yaml.v2
|
||
|
go get github.com/BurntSushi/toml
|
||
|
|
||
|
# get code for BurntSushi TOML validation
|
||
|
# pinning all to 'HEAD' for version 0.3.x work (TODO: pin to commit hash when tests stabilize)
|
||
|
git_clone github.com/BurntSushi/toml master HEAD
|
||
|
git_clone github.com/BurntSushi/toml-test master HEAD #was: 0.2.0 HEAD
|
||
|
|
||
|
# build the BurntSushi test application
|
||
|
go build -o toml-test github.com/BurntSushi/toml-test
|
||
|
|
||
|
# 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
|
||
|
mkdir -p src/github.com/pelletier/go-toml/query
|
||
|
cp *.go *.toml src/github.com/pelletier/go-toml
|
||
|
cp -R cmd/* src/github.com/pelletier/go-toml/cmd
|
||
|
cp -R query/* src/github.com/pelletier/go-toml/query
|
||
|
go build -o test_program_bin src/github.com/pelletier/go-toml/cmd/test_program.go
|
||
|
|
||
|
# Run basic unit tests
|
||
|
go test github.com/pelletier/go-toml -covermode=count -coverprofile=coverage.out
|
||
|
go test github.com/pelletier/go-toml/cmd/tomljson
|
||
|
go test github.com/pelletier/go-toml/query
|
||
|
|
||
|
# run the entire BurntSushi test suite
|
||
|
if [[ $# -eq 0 ]] ; then
|
||
|
echo "Running all BurntSushi tests"
|
||
|
./toml-test ./test_program_bin | tee test_out
|
||
|
else
|
||
|
# run a specific test
|
||
|
test=$1
|
||
|
test_path='src/github.com/BurntSushi/toml-test/tests'
|
||
|
valid_test="$test_path/valid/$test"
|
||
|
invalid_test="$test_path/invalid/$test"
|
||
|
|
||
|
if [ -e "$valid_test.toml" ]; then
|
||
|
echo "Valid Test TOML for $test:"
|
||
|
echo "===="
|
||
|
cat "$valid_test.toml"
|
||
|
|
||
|
echo "Valid Test JSON for $test:"
|
||
|
echo "===="
|
||
|
cat "$valid_test.json"
|
||
|
|
||
|
echo "Go-TOML Output for $test:"
|
||
|
echo "===="
|
||
|
cat "$valid_test.toml" | ./test_program_bin
|
||
|
fi
|
||
|
|
||
|
if [ -e "$invalid_test.toml" ]; then
|
||
|
echo "Invalid Test TOML for $test:"
|
||
|
echo "===="
|
||
|
cat "$invalid_test.toml"
|
||
|
|
||
|
echo "Go-TOML Output for $test:"
|
||
|
echo "===="
|
||
|
echo "go-toml Output:"
|
||
|
cat "$invalid_test.toml" | ./test_program_bin
|
||
|
fi
|
||
|
fi
|