github.com/riscv/riscv-go@v0.0.0-20200123204226-124ebd6fcc8e/doc/articles/wiki/test.bash (about)

     1  #!/usr/bin/env bash
     2  # Copyright 2010 The Go Authors. All rights reserved.
     3  # Use of this source code is governed by a BSD-style
     4  # license that can be found in the LICENSE file.
     5  
     6  set -e
     7  
     8  if ! which patch > /dev/null; then
     9  	echo "Skipping test; patch command not found."
    10  	exit 0
    11  fi
    12  
    13  wiki_pid=
    14  cleanup() {
    15  	kill $wiki_pid
    16  	rm -f test_*.out Test.txt final-test.go final-test.bin final-test-port.txt a.out get.bin
    17  }
    18  trap cleanup 0 INT
    19  
    20  rm -f get.bin final-test.bin a.out
    21  
    22  # If called with -all, check that all code snippets compile.
    23  if [ "$1" == "-all" ]; then
    24  	for fn in *.go; do
    25  		go build -o a.out $fn
    26  	done
    27  fi
    28  
    29  go build -o get.bin get.go
    30  cp final.go final-test.go
    31  patch final-test.go final-test.patch > /dev/null
    32  go build -o final-test.bin final-test.go
    33  ./final-test.bin &
    34  wiki_pid=$!
    35  
    36  l=0
    37  while [ ! -f ./final-test-port.txt ]
    38  do
    39  	l=$(($l+1))
    40  	if [ "$l" -gt 5 ]
    41  	then
    42  		echo "port not available within 5 seconds"
    43  		exit 1
    44  		break
    45  	fi
    46  	sleep 1
    47  done
    48  
    49  addr=$(cat final-test-port.txt)
    50  ./get.bin http://$addr/edit/Test > test_edit.out
    51  diff -u test_edit.out test_edit.good
    52  ./get.bin -post=body=some%20content http://$addr/save/Test > test_save.out
    53  diff -u test_save.out test_view.good # should be the same as viewing
    54  diff -u Test.txt test_Test.txt.good
    55  ./get.bin http://$addr/view/Test > test_view.out
    56  diff -u test_view.out test_view.good
    57  
    58  echo PASS