When testing on Travis, verify that tools/build was run

This is done by routing the generation of HTML into a temporary directory,
and checking its diff agains the existing public/ when running tests.

Fixes #237
This commit is contained in:
Eli Bendersky 2019-07-01 06:44:09 -07:00
parent 3d55c3ae33
commit fb2c28e58a
4 changed files with 36 additions and 4 deletions

View File

@ -16,3 +16,4 @@ script:
env:
- VERBOSE=1
- TESTING=1

View File

@ -15,5 +15,27 @@ tools/format
verbose && echo "Measuring line lengths..."
tools/measure
verbose && echo "Generating HTML..."
tools/generate
# SITE_DIR is the final location where we want generated content to be
SITE_DIR="public"
# GENERATE_DIR is where the content will be generated initially
GENERATE_DIR="$(mktemp -d)"
function cleanup() {
rm -rf "$GENERATE_DIR"
}
trap cleanup EXIT
verbose && echo "Generating HTML to $GENERATE_DIR..."
tools/generate $GENERATE_DIR
# In TESTING mode, make sure that the generated content is identical to
# what's already in SITE_DIR. If a difference is found, this script exits
# with an error.
if [[ ! -z "$TESTING" ]]; then
echo "Comparing $GENERATE_DIR with $SITE_DIR..."
diff -r "$GENERATE_DIR" "$SITE_DIR"
fi
verbose && echo "Copying $GENERATE_DIR to $SITE_DIR"
cp -rf "${GENERATE_DIR}/." "$SITE_DIR"

View File

@ -1,3 +1,3 @@
#!/bin/bash
exec go run tools/generate.go
exec go run tools/generate.go $@

View File

@ -15,8 +15,12 @@ import (
"github.com/russross/blackfriday"
)
var cacheDir = "/tmp/gobyexample-cache"
// siteDir is the target directory into which the HTML gets generated. Its
// default is set here but can be changed by an argument passed into the
// program.
var siteDir = "./public"
var cacheDir = "/tmp/gobyexample-cache"
var pygmentizeBin = "./vendor/pygments/pygmentize"
func verbose() bool {
@ -301,6 +305,11 @@ func renderExamples(examples []*Example) {
}
func main() {
if len(os.Args) > 1 {
siteDir = os.Args[1]
}
ensureDir(siteDir)
copyFile("templates/site.css", siteDir+"/site.css")
copyFile("templates/favicon.ico", siteDir+"/favicon.ico")
copyFile("templates/404.html", siteDir+"/404.html")