#!/bin/bash -ex function mtime() { stat -c %Y $1 } # Go to top of blueprint tree TOP=$(dirname ${BASH_SOURCE[0]})/.. cd ${TOP} rm -rf out.test mkdir out.test rm -rf src.test mkdir src.test cp -r tests/test_tree src.test/test_tree ln -s ../.. src.test/test_tree/blueprint cd out.test export SRCDIR=../src.test/test_tree ${SRCDIR}/blueprint/bootstrap.bash ./blueprint.bash if ! cmp -s ${SRCDIR}/build.ninja.in .minibootstrap/build.ninja.in; then echo "tests/test_tree/build.ninja.in and .minibootstrap/build.ninja.in should be the same" >&2 exit 1 fi OLDTIME=$(mtime build.ninja) sleep 2 ./blueprint.bash if [ ${OLDTIME} != $(mtime build.ninja) ]; then echo "unnecessary build.ninja regeneration for null build" >&2 exit 1 fi mkdir ${SRCDIR}/newglob sleep 2 ./blueprint.bash if [ ${OLDTIME} != $(mtime build.ninja) ]; then echo "unnecessary build.ninja regeneration for glob addition" >&2 exit 1 fi touch ${SRCDIR}/newglob/Blueprints sleep 2 ./blueprint.bash if [ ${OLDTIME} = $(mtime build.ninja) ]; then echo "Failed to rebuild for glob addition" >&2 exit 1 fi OLDTIME=$(mtime build.ninja) rm ${SRCDIR}/newglob/Blueprints sleep 2 ./blueprint.bash if [ ${OLDTIME} = $(mtime build.ninja) ]; then echo "Failed to rebuild for glob removal" >&2 exit 1 fi OLDTIME=$(mtime build.ninja) rmdir ${SRCDIR}/newglob sleep 2 ./blueprint.bash if [ ${OLDTIME} != $(mtime build.ninja) ]; then echo "unnecessary build.ninja regeneration for glob removal" >&2 exit 1 fi