1
1
mirror of https://github.com/walles/moar.git synced 2024-09-21 09:01:30 +03:00
moar/test.sh

113 lines
3.2 KiB
Bash
Raw Normal View History

2019-06-09 19:42:25 +03:00
#!/bin/bash
set -e -o pipefail
2019-06-09 19:42:25 +03:00
# If you want to bump this, check here for the most recent release version:
# https://github.com/dominikh/go-tools/releases/latest
2021-04-19 19:56:13 +03:00
STATICCHECK_VERSION=2020.2.3
STATICCHECK="$(go env GOPATH)/bin/staticcheck"
2021-04-19 19:56:13 +03:00
# If you want to bump this, check here for the most recent release version:
# https://github.com/kisielk/errcheck/releases/latest
2021-04-20 07:59:49 +03:00
ERRCHECK_VERSION=v1.6.0
ERRCHECK="$(go env GOPATH)/bin/errcheck"
2021-04-20 07:59:49 +03:00
# Install our linters
echo Installing linters...
if [ "$0" -nt "$STATICCHECK" ] ; then
go install "honnef.co/go/tools/cmd/staticcheck@${STATICCHECK_VERSION}"
fi
if [ "$0" -nt "$ERRCHECK" ] ; then
go install "github.com/kisielk/errcheck@${ERRCHECK_VERSION}"
fi
2021-04-20 07:59:49 +03:00
# Test that we only pass tcell.Color constants to these methods, not numbers
grep -En 'Foreground\([1-9]' ./*.go ./*/*.go && exit 1
grep -En 'Background\([1-9]' ./*.go ./*/*.go && exit 1
2021-04-19 08:16:58 +03:00
# Compile test first
./build.sh
# Linting
2021-04-20 07:59:49 +03:00
echo "Checking code formatting..."
MISFORMATTED="$(gofmt -l -s .)"
2021-04-19 08:16:58 +03:00
if [ -n "$MISFORMATTED" ]; then
echo >&2 "==="
2021-04-19 16:30:09 +03:00
echo >&2 "ERROR: The following files are not formatted, run './build.sh', './test.sh' or 'gofmt -s -w .' to fix:"
2021-04-19 08:16:58 +03:00
echo >&2 "$MISFORMATTED"
echo >&2 "==="
exit 1
fi
2021-04-19 16:29:28 +03:00
# "go vet" catches fmt-placeholders-vs-args problems (and others)
2021-04-20 07:59:49 +03:00
echo "Running go vet..."
2021-04-19 16:29:28 +03:00
if ! go vet . ./twin ./m ; then
if [ -n "${CI}" ]; then
echo >&2 "==="
2021-04-20 09:43:37 +03:00
echo >&2 "=== Please run './test.sh' before pushing to see the above issues locally rather than in CI"
2021-04-19 16:29:28 +03:00
echo >&2 "==="
fi
exit 1
fi
2021-04-19 19:56:13 +03:00
# Docs: https://staticcheck.io/docs/
2021-04-20 07:59:49 +03:00
echo "Running staticcheck..."
if ! "$STATICCHECK" -f stylish . ./... ; then
2021-04-19 19:56:13 +03:00
if [ -n "${CI}" ]; then
echo >&2 "==="
2021-04-20 09:43:37 +03:00
echo >&2 "=== Please run './test.sh' before pushing to see the above issues locally rather than in CI"
2021-04-19 19:56:13 +03:00
echo >&2 "==="
fi
exit 1
fi
2021-04-20 07:59:49 +03:00
# Checks for unused error return values: https://github.com/kisielk/errcheck
2021-04-20 09:43:37 +03:00
echo "Running errcheck to check for unused error return values..."
if ! "$ERRCHECK" . ./... ; then
2021-04-20 07:59:49 +03:00
if [ -n "${CI}" ]; then
echo >&2 "==="
2021-04-20 09:43:37 +03:00
echo >&2 "=== Please run './test.sh' before pushing to see the above issues locally rather than in CI"
2021-04-20 07:59:49 +03:00
echo >&2 "==="
fi
exit 1
fi
2021-04-21 09:32:31 +03:00
# Unit tests
echo "Running unit tests..."
go test -timeout 20s ./...
2019-06-09 19:42:25 +03:00
2019-07-07 19:34:05 +03:00
# Ensure we can cross compile
2019-08-04 20:07:14 +03:00
# NOTE: Make sure this list matches the one in release.sh
2019-07-07 19:34:05 +03:00
GOOS=linux GOARCH=386 ./build.sh
GOOS=darwin GOARCH=amd64 ./build.sh
# Verify sending the output to a file
RESULT="$(mktemp)"
function cleanup {
rm -rf "$RESULT"
}
trap cleanup EXIT
echo Test reading from redirected stdin, writing to redirected stdout...
./moar < moar.go > "$RESULT"
diff -u moar.go "$RESULT"
echo Test redirecting a file by name into file by redirecting stdout...
./moar moar.go > "$RESULT"
diff -u moar.go "$RESULT"
echo Test redirecting non-existing file by name into redirected stdout...
if ./moar does-not-exist >& /dev/null ; then
echo ERROR: Should have failed on non-existing input file name
exit 1
fi
2019-07-07 19:23:57 +03:00
echo Test --version...
./moar --version > /dev/null # Should exit with code 0
2021-04-15 16:16:06 +03:00
diff -u <(./moar --version) <(git describe --tags --dirty --always)
2019-07-07 19:23:57 +03:00
2019-07-15 23:14:36 +03:00
# FIXME: On unknown command line options, test that help text goes to stderr
echo
echo "All tests passed!"