vendor/github.com/pelletier/go-toml/test.sh
changeset 251 1c52a0eeb952
parent 250 c040f992052f
child 252 8399cd48111b
equal deleted inserted replaced
250:c040f992052f 251:1c52a0eeb952
     1 #!/bin/bash
       
     2 # fail out of the script if anything here fails
       
     3 set -e
       
     4 set -o pipefail
       
     5 
       
     6 # set the path to the present working directory
       
     7 export GOPATH=`pwd`
       
     8 
       
     9 function git_clone() {
       
    10   path=$1
       
    11   branch=$2
       
    12   version=$3
       
    13   if [ ! -d "src/$path" ]; then
       
    14     mkdir -p src/$path
       
    15     git clone https://$path.git src/$path
       
    16   fi
       
    17   pushd src/$path
       
    18   git checkout "$branch"
       
    19   git reset --hard "$version"
       
    20   popd
       
    21 }
       
    22 
       
    23 # Remove potential previous runs
       
    24 rm -rf src test_program_bin toml-test
       
    25 
       
    26 go get github.com/pelletier/go-buffruneio
       
    27 go get github.com/davecgh/go-spew/spew
       
    28 go get gopkg.in/yaml.v2
       
    29 go get github.com/BurntSushi/toml
       
    30 
       
    31 # get code for BurntSushi TOML validation
       
    32 # pinning all to 'HEAD' for version 0.3.x work (TODO: pin to commit hash when tests stabilize)
       
    33 git_clone github.com/BurntSushi/toml master HEAD
       
    34 git_clone github.com/BurntSushi/toml-test master HEAD #was: 0.2.0 HEAD
       
    35 
       
    36 # build the BurntSushi test application
       
    37 go build -o toml-test github.com/BurntSushi/toml-test
       
    38 
       
    39 # vendorize the current lib for testing
       
    40 # NOTE: this basically mocks an install without having to go back out to github for code
       
    41 mkdir -p src/github.com/pelletier/go-toml/cmd
       
    42 mkdir -p src/github.com/pelletier/go-toml/query
       
    43 cp *.go *.toml src/github.com/pelletier/go-toml
       
    44 cp -R cmd/* src/github.com/pelletier/go-toml/cmd
       
    45 cp -R query/* src/github.com/pelletier/go-toml/query
       
    46 go build -o test_program_bin src/github.com/pelletier/go-toml/cmd/test_program.go
       
    47 
       
    48 # Run basic unit tests
       
    49 go test github.com/pelletier/go-toml -covermode=count -coverprofile=coverage.out
       
    50 go test github.com/pelletier/go-toml/cmd/tomljson
       
    51 go test github.com/pelletier/go-toml/query
       
    52 
       
    53 # run the entire BurntSushi test suite
       
    54 if [[ $# -eq 0 ]] ; then
       
    55   echo "Running all BurntSushi tests"
       
    56   ./toml-test ./test_program_bin | tee test_out
       
    57 else
       
    58   # run a specific test
       
    59   test=$1
       
    60   test_path='src/github.com/BurntSushi/toml-test/tests'
       
    61   valid_test="$test_path/valid/$test"
       
    62   invalid_test="$test_path/invalid/$test"
       
    63 
       
    64   if [ -e "$valid_test.toml" ]; then
       
    65     echo "Valid Test TOML for $test:"
       
    66     echo "===="
       
    67     cat "$valid_test.toml"
       
    68 
       
    69     echo "Valid Test JSON for $test:"
       
    70     echo "===="
       
    71     cat "$valid_test.json"
       
    72 
       
    73     echo "Go-TOML Output for $test:"
       
    74     echo "===="
       
    75     cat "$valid_test.toml" | ./test_program_bin
       
    76   fi
       
    77 
       
    78   if [ -e "$invalid_test.toml" ]; then
       
    79     echo "Invalid Test TOML for $test:"
       
    80     echo "===="
       
    81     cat "$invalid_test.toml"
       
    82 
       
    83     echo "Go-TOML Output for $test:"
       
    84     echo "===="
       
    85     echo "go-toml Output:"
       
    86     cat "$invalid_test.toml" | ./test_program_bin
       
    87   fi
       
    88 fi