Files
build_soong/tests/symlink_forest_rerun_test.sh
MarkDacek 23a4120c57 Modify symlink_forest to rerun when soong_build has changed.
Also remove existing symlink_forest_version functionality.

This remedies issues pertaining to b/300122962 - symlinks not
clearing after a revert

Timing wise - this doesn't present a performance regression
on a clean build. When soong_build changes, it's considerably longer
but no different from the time when symlink_forest_version is changed.

Bug: 300288299
Test: build/soong/tests/symlink_forest_rerun_test.sh
Change-Id: I0e95aac315dfea7ea3b8bb9a3eb0c6408300bd3b
2023-09-29 22:53:07 +00:00

43 lines
923 B
Bash
Executable File

#!/bin/bash -eu
set -o pipefail
# Tests that symlink_Forest will rerun if soong_build has schanged
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