| #!/usr/bin/env bash | |
| # Copyright 2010 The Go Authors. All rights reserved. | |
| # Use of this source code is governed by a BSD-style | |
| # license that can be found in the LICENSE file. | |
| set -e | |
| if ! which patch > /dev/null; then | |
| echo "Skipping test; patch command not found." | |
| exit 0 | |
| fi | |
| wiki_pid= | |
| cleanup() { | |
| kill $wiki_pid | |
| rm -f test_*.out Test.txt final-test.go final-test.bin final-test-port.txt a.out get.bin | |
| } | |
| trap cleanup 0 INT | |
| rm -f get.bin final-test.bin a.out | |
| # If called with -all, check that all code snippets compile. | |
| if [ "$1" = "-all" ]; then | |
| for fn in *.go; do | |
| go build -o a.out $fn | |
| done | |
| fi | |
| go build -o get.bin get.go | |
| cp final.go final-test.go | |
| patch final-test.go final-test.patch > /dev/null | |
| go build -o final-test.bin final-test.go | |
| ./final-test.bin & | |
| wiki_pid=$! | |
| l=0 | |
| while [ ! -f ./final-test-port.txt ] | |
| do | |
| l=$(($l+1)) | |
| if [ "$l" -gt 5 ] | |
| then | |
| echo "port not available within 5 seconds" | |
| exit 1 | |
| break | |
| fi | |
| sleep 1 | |
| done | |
| addr=$(cat final-test-port.txt) | |
| ./get.bin http://$addr/edit/Test > test_edit.out | |
| diff -u test_edit.out test_edit.good | |
| ./get.bin -post=body=some%20content http://$addr/save/Test > test_save.out | |
| diff -u test_save.out test_view.good # should be the same as viewing | |
| diff -u Test.txt test_Test.txt.good | |
| ./get.bin http://$addr/view/Test > test_view.out | |
| diff -u test_view.out test_view.good | |
| echo PASS |