#!/bin/bash -eu set -o pipefail # Tests that symlink forest will replant if soong_build has changed # Any change to the build system should trigger a rerun source "$(dirname "$0")/lib.sh" function test_symlink_forest_reruns { setup mkdir -p a touch a/g.txt cat > a/Android.bp <<'EOF' filegroup { name: "g", srcs: ["g.txt"], } EOF run_soong g mtime=`cat out/soong/workspace/soong_build_mtime` # rerun with no changes - ensure that it hasn't changed run_soong g newmtime=`cat out/soong/workspace/soong_build_mtime` if [[ ! "$mtime" == "$mtime" ]]; then fail "symlink forest reran when it shouldn't have" fi # change exit codes to force a soong_build rebuild. sed -i 's/os.Exit(1)/os.Exit(2)/g' build/soong/bp2build/symlink_forest.go run_soong g newmtime=`cat out/soong/workspace/soong_build_mtime` if [[ "$mtime" == "$newmtime" ]]; then fail "symlink forest did not rerun when it should have" fi } scan_and_run_tests