From f7b6516b62a3a2ee3b6684edc3738f42a1fa64e4 Mon Sep 17 00:00:00 2001 From: Marten Seemann Date: Fri, 10 Jul 2020 16:30:43 +0700 Subject: [PATCH] add a script to check if go generated files are correct --- .travis.yml | 7 +++++++ .travis/script.sh | 18 ++++++++++++++++++ 2 files changed, 25 insertions(+) diff --git a/.travis.yml b/.travis.yml index 4e96a992e..8eda4c6a8 100644 --- a/.travis.yml +++ b/.travis.yml @@ -17,6 +17,7 @@ env: - secure: "eb4Z/iUit+B6KTcKOKxfBQUyTUK+X2HiEXmT8pdReDnC1Q4ciq7NaW/v0nYq6aGMhbOFCVb1XEpST99+LlCxSyJYfH5ZYe/QtwT6/SoRkHyREhkk5UHxu/6CCozgZum9LN1YIi9piUMSKuC6Vh1hiRk5/DQUtTGukbiSmynj+PZddeO71f75EuZpa45cT0kd62HCcr6GRAtkx4BIH00JaMRihWwtFs6WaZG5N9pjV/FPCp+q/J5mKaSUKvCNv2sgwkKC/VqG8XOxBjrhI2Z9s/wGgpf4/BiTrN3D9+qodql2OfhHmRC65CRzOmXxdwXGj0zqWB2mtjcY3tws4XxuDkiChxTanwqDQQ92WLIgCkyazEaLDaFvfCMSkHuLcpWHSIrs1yeKJ2ko5vrvKQ1fsWgyXXtDaG+sq6YymHrCFtL83YY1aFbDt0q22+HFvhEqYdkKIglTpYdcyM+UoT57UagGwU81crXKyYqyCfvsHQM5ieNTBg01ZKEZYiie731ytB4W7duhp5dz5ZkezeZLtjX4NTbOtRRq8qhh9fDMAcuuCbLC/hkhBL9oRRlcPJaRdQKQd8QryS/pxwTrqtlNZ6X+GFjNls49kahdMThaigyocCzAsVFVXQTCUluGIqjDLTFlYxfDkGfkFK3k3bT6KkM5rQbfWIjdpkMRJyO0jR4=" matrix: - TRAVIS_GOARCH=amd64 TESTMODE=lint + - TRAVIS_GOARCH=amd64 TESTMODE=gogenerate - TRAVIS_GOARCH=amd64 TESTMODE=fuzz - TRAVIS_GOARCH=amd64 TESTMODE=unit - TRAVIS_GOARCH=amd64 TESTMODE=integration @@ -29,6 +30,12 @@ before_install: - travis_retry go get golang.org/x/tools/cmd/cover - travis_retry go get github.com/onsi/ginkgo/ginkgo - travis_retry go get github.com/onsi/gomega + - | + if [ ${TESTMODE} == "gogenerate" ]; then + travis_retry go get github.com/cheekybits/genny + travis_retry go get github.com/golang/mock/mockgen + travis_retry go get golang.org/x/tools/cmd/goimports + fi - export GOARCH=$TRAVIS_GOARCH - go env # for debugging - travis_retry go get -t ./... diff --git a/.travis/script.sh b/.travis/script.sh index fbe54699b..d107d482f 100755 --- a/.travis/script.sh +++ b/.travis/script.sh @@ -7,6 +7,24 @@ if [ ${TESTMODE} == "lint" ]; then ./bin/golangci-lint run ./... fi +if [ ${TESTMODE} == "gogenerate" ]; then + find . -type f -name "*.go" -exec shasum {} \; > checksums_before.txt + # delete all go-generated files generated (that adhere to the comment convention) + grep --include \*.go --exclude-dir quictrace/ -lrIZ "^// Code generated .* DO NOT EDIT\.$" . | xargs --null rm + # delete all files generated by Genny + grep --include \*.go -lrIZ "This file was automatically generated by genny." . | xargs --null rm + # first generate Genny files to make the code compile + grep --include \*.go -lrI "//go:generate genny" | xargs -L 1 go generate + # now generate everything + go generate ./... + find . -type f -name "*.go" -exec shasum {} \; > checksums_after.txt + DIFF=`diff checksums_before.txt checksums_after.txt` + echo $DIFF + if [ ! -z "$var" ]; then + exit 1 + fi +fi + if [ ${TESTMODE} == "fuzz" ]; then .travis/fuzzit.sh fi