23f644976a
Move all the query system to its own package. The reason is to avoid it to rely on unexported methods and structures, and move it out of the main package since this is really not a core feature. It is still tied to the toml.TomlTree and toml.Position structures for now. * Move query mechanism to its own subpackage * Rename QueryResult to Result to avoid stutter * Add query.CompileAndExecute Fixes #116
89 lines
2.4 KiB
Bash
Executable File
89 lines
2.4 KiB
Bash
Executable File
#!/bin/bash
|
|
# fail out of the script if anything here fails
|
|
set -e
|
|
|
|
# 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
|
|
|
|
# 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
|