From 2e6fdf15c60b8b0b2802dd0c2e3e84b306cf356c Mon Sep 17 00:00:00 2001 From: Jessica Frazelle Date: Wed, 9 Mar 2016 18:52:58 -0800 Subject: [PATCH] add script to validate nothing was changed that needed to re-run go generate Signed-off-by: Jessica Frazelle --- .travis.yml | 1 + scripts/.validate | 33 ++++++++++++++++++++++++++++++++ scripts/validate-html-generation | 28 +++++++++++++++++++++++++++ 3 files changed, 62 insertions(+) create mode 100644 scripts/.validate create mode 100755 scripts/validate-html-generation diff --git a/.travis.yml b/.travis.yml index 075bdd3..a3d0800 100644 --- a/.travis.yml +++ b/.travis.yml @@ -7,6 +7,7 @@ script: - go get github.com/cloudflare/redoctober - go test github.com/cloudflare/redoctober... - go vet github.com/cloudflare/redoctober... + - ./scripts/validate-html-generation - go list -f '{{if len .TestGoFiles}}"go test -coverprofile={{.Dir}}/.coverprofile {{.ImportPath}}"{{end}}' ./... | xargs -i sh -c {} - gover . coverprofile.txt after_success: diff --git a/scripts/.validate b/scripts/.validate new file mode 100644 index 0000000..dd3f38e --- /dev/null +++ b/scripts/.validate @@ -0,0 +1,33 @@ +#!/bin/bash + +if [ -z "$VALIDATE_UPSTREAM" ]; then + # this is kind of an expensive check, so let's not do this twice if we + # are running more than one validate bundlescript + + VALIDATE_REPO='https://github.com/cloudflare/redoctober.git' + VALIDATE_BRANCH='master' + + if [ "$TRAVIS" = 'true' -a "$TRAVIS_PULL_REQUEST" != 'false' ]; then + VALIDATE_REPO="https://github.com/${TRAVIS_REPO_SLUG}.git" + VALIDATE_BRANCH="${TRAVIS_BRANCH}" + fi + + VALIDATE_HEAD="$(git rev-parse --verify HEAD)" + + git fetch -q "$VALIDATE_REPO" "refs/heads/$VALIDATE_BRANCH" + VALIDATE_UPSTREAM="$(git rev-parse --verify FETCH_HEAD)" + + VALIDATE_COMMIT_LOG="$VALIDATE_UPSTREAM..$VALIDATE_HEAD" + VALIDATE_COMMIT_DIFF="$VALIDATE_UPSTREAM...$VALIDATE_HEAD" + + validate_diff() { + if [ "$VALIDATE_UPSTREAM" != "$VALIDATE_HEAD" ]; then + git diff "$VALIDATE_COMMIT_DIFF" "$@" + fi + } + validate_log() { + if [ "$VALIDATE_UPSTREAM" != "$VALIDATE_HEAD" ]; then + git log "$VALIDATE_COMMIT_LOG" "$@" + fi + } +fi diff --git a/scripts/validate-html-generation b/scripts/validate-html-generation new file mode 100755 index 0000000..c58633e --- /dev/null +++ b/scripts/validate-html-generation @@ -0,0 +1,28 @@ +#!/bin/bash + +DIR="$( cd "$( dirname "${BASH_SOURCE[0]}" )" && pwd )" +source "${DIR}/.validate" + +IFS=$'\n' +files=( $(validate_diff --diff-filter=ACMR --name-only -- 'static/index.html' || true) ) +unset IFS + +if [ ${#files[@]} -gt 0 ]; then + # We run go generate to and see if we have a diff afterwards + go generate >/dev/null + # Let see if the working directory is clean + diffs="$(git status --porcelain -- static.go 2>/dev/null)" + if [ "$diffs" ]; then + { + echo 'The result of go generate differs' + echo + echo "$diffs" + echo + echo 'Please re-run go generate' + echo + } >&2 + false + else + echo 'Congratulations! File generation is done correctly.' + fi +fi