MarkDacek | 5350636 | 2023-04-18 19:33:11 +0000 | [diff] [blame] | 1 | #!/bin/bash |
Lukacs T. Berki | 3b730c4 | 2021-04-08 13:21:13 +0200 | [diff] [blame] | 2 | |
Rupert Shuttleworth | 2a4fc3e | 2021-04-21 07:10:09 -0400 | [diff] [blame] | 3 | set -o pipefail |
| 4 | |
Lukacs T. Berki | 3b730c4 | 2021-04-08 13:21:13 +0200 | [diff] [blame] | 5 | # This test exercises mixed builds where Soong and Bazel cooperate in building |
| 6 | # Android. |
| 7 | # |
| 8 | # When the execroot is deleted, the Bazel server process will automatically |
| 9 | # terminate itself. |
| 10 | |
| 11 | source "$(dirname "$0")/lib.sh" |
| 12 | |
Lukacs T. Berki | 3b730c4 | 2021-04-08 13:21:13 +0200 | [diff] [blame] | 13 | function test_bazel_smoke { |
| 14 | setup |
Lukacs T. Berki | 3b730c4 | 2021-04-08 13:21:13 +0200 | [diff] [blame] | 15 | |
Sam Delmerico | 73d6bcc | 2022-09-20 15:31:37 -0400 | [diff] [blame] | 16 | run_soong bp2build |
| 17 | |
| 18 | run_bazel info --config=bp2build |
Lukacs T. Berki | 3b730c4 | 2021-04-08 13:21:13 +0200 | [diff] [blame] | 19 | } |
| 20 | |
Lukacs T. Berki | c541cd2 | 2022-10-26 07:26:50 +0000 | [diff] [blame] | 21 | function test_add_irrelevant_file { |
| 22 | setup |
Lukacs T. Berki | c541cd2 | 2022-10-26 07:26:50 +0000 | [diff] [blame] | 23 | |
| 24 | mkdir -p soong_tests/a/b |
| 25 | touch soong_tests/a/b/c.txt |
| 26 | cat > soong_tests/a/b/Android.bp <<'EOF' |
| 27 | filegroup { |
| 28 | name: "c", |
| 29 | srcs: ["c.txt"], |
| 30 | bazel_module: { bp2build_available: true }, |
| 31 | } |
| 32 | EOF |
| 33 | |
Chris Parsons | b6e9690 | 2022-10-31 20:08:45 -0400 | [diff] [blame] | 34 | run_soong --bazel-mode-staging nothing |
Lukacs T. Berki | c541cd2 | 2022-10-26 07:26:50 +0000 | [diff] [blame] | 35 | |
| 36 | if [[ ! -e out/soong/bp2build/soong_tests/a/b/BUILD.bazel ]]; then |
| 37 | fail "BUILD.bazel not created" |
| 38 | fi |
| 39 | |
| 40 | if [[ ! -e out/soong/build.ninja ]]; then |
| 41 | fail "build.ninja not created" |
| 42 | fi |
| 43 | |
| 44 | local mtime_build1=$(stat -c "%y" out/soong/bp2build/soong_tests/a/b/BUILD.bazel) |
| 45 | local mtime_ninja1=$(stat -c "%y" out/soong/build.ninja) |
| 46 | |
| 47 | touch soong_tests/a/irrelevant.txt |
| 48 | |
Chris Parsons | b6e9690 | 2022-10-31 20:08:45 -0400 | [diff] [blame] | 49 | run_soong --bazel-mode-staging nothing |
Lukacs T. Berki | c541cd2 | 2022-10-26 07:26:50 +0000 | [diff] [blame] | 50 | local mtime_build2=$(stat -c "%y" out/soong/bp2build/soong_tests/a/b/BUILD.bazel) |
| 51 | local mtime_ninja2=$(stat -c "%y" out/soong/build.ninja) |
| 52 | |
| 53 | if [[ "$mtime_build1" != "$mtime_build2" ]]; then |
| 54 | fail "BUILD.bazel was generated" |
| 55 | fi |
| 56 | |
| 57 | if [[ "$mtime_ninja1" != "$mtime_ninja2" ]]; then |
| 58 | fail "build.ninja was regenerated" |
| 59 | fi |
| 60 | |
| 61 | if [[ ! -e out/soong/workspace/soong_tests/a/irrelevant.txt ]]; then |
| 62 | fail "new file was not symlinked" |
| 63 | fi |
| 64 | } |
| 65 | |
MarkDacek | 9c094ca | 2023-03-16 19:15:19 +0000 | [diff] [blame] | 66 | function test_force_enabled_modules { |
| 67 | setup |
| 68 | # b/273910287 - test force enable modules |
| 69 | mkdir -p soong_tests/a/b |
| 70 | cat > soong_tests/a/b/Android.bp <<'EOF' |
| 71 | genrule { |
| 72 | name: "touch-file", |
| 73 | out: ["fake-out.txt"], |
| 74 | cmd: "touch $(out)", |
| 75 | bazel_module: { bp2build_available: true }, |
| 76 | } |
| 77 | |
| 78 | genrule { |
| 79 | name: "unenabled-touch-file", |
| 80 | out: ["fake-out2.txt"], |
| 81 | cmd: "touch $(out)", |
| 82 | bazel_module: { bp2build_available: false }, |
| 83 | } |
| 84 | EOF |
| 85 | run_soong --bazel-mode-staging --bazel-force-enabled-modules=touch-file nothing |
| 86 | local bazel_contained=`grep out/soong/.intermediates/soong_tests/a/b/touch-file/gen/fake-out.txt out/soong/build.ninja` |
| 87 | if [[ $bazel_contained == '' ]]; then |
| 88 | fail "Bazel actions not found for force-enabled module" |
| 89 | fi |
| 90 | |
MarkDacek | f47e142 | 2023-04-19 16:47:36 +0000 | [diff] [blame] | 91 | unused=`run_soong --bazel-force-enabled-modules=unenabled-touch-file --ensure-allowlist-integrity nothing >/dev/null` |
MarkDacek | 9c094ca | 2023-03-16 19:15:19 +0000 | [diff] [blame] | 92 | |
MarkDacek | 5350636 | 2023-04-18 19:33:11 +0000 | [diff] [blame] | 93 | if [[ $? -ne 1 ]]; then |
MarkDacek | 9c094ca | 2023-03-16 19:15:19 +0000 | [diff] [blame] | 94 | fail "Expected failure due to force-enabling an unenabled module " |
| 95 | fi |
| 96 | } |
| 97 | |
| 98 | |
MarkDacek | 5350636 | 2023-04-18 19:33:11 +0000 | [diff] [blame] | 99 | scan_and_run_tests |