blob: 082cd0671f12d8e2c2512a9dfb918f64c152c892 [file] [log] [blame]
Rupert Shuttleworth2a4fc3e2021-04-21 07:10:09 -04001#!/bin/bash -eu
2
3set -o pipefail
4
5# Test that bp2build and Bazel can play nicely together
6
7source "$(dirname "$0")/lib.sh"
8
9function test_bp2build_generates_all_buildfiles {
10 setup
11 create_mock_bazel
12
13 mkdir -p foo/convertible_soong_module
14 cat > foo/convertible_soong_module/Android.bp <<'EOF'
15genrule {
16 name: "the_answer",
17 cmd: "echo '42' > $(out)",
18 out: [
19 "the_answer.txt",
20 ],
21 bazel_module: {
22 bp2build_available: true,
23 },
24 }
25EOF
26
27 mkdir -p foo/unconvertible_soong_module
28 cat > foo/unconvertible_soong_module/Android.bp <<'EOF'
29genrule {
30 name: "not_the_answer",
31 cmd: "echo '43' > $(out)",
32 out: [
33 "not_the_answer.txt",
34 ],
35 bazel_module: {
36 bp2build_available: false,
37 },
38 }
39EOF
40
41 run_bp2build
42
43 if [[ ! -f "./out/soong/workspace/foo/convertible_soong_module/BUILD" ]]; then
44 fail "./out/soong/workspace/foo/convertible_soong_module/BUILD was not generated"
45 fi
46
47 if [[ ! -f "./out/soong/workspace/foo/unconvertible_soong_module/BUILD" ]]; then
48 fail "./out/soong/workspace/foo/unconvertible_soong_module/BUILD was not generated"
49 fi
50
51 if ! grep "the_answer" "./out/soong/workspace/foo/convertible_soong_module/BUILD"; then
52 fail "missing BUILD target the_answer in convertible_soong_module/BUILD"
53 fi
54
55 if grep "not_the_answer" "./out/soong/workspace/foo/unconvertible_soong_module/BUILD"; then
56 fail "found unexpected BUILD target not_the_answer in unconvertible_soong_module/BUILD"
57 fi
58
59 if ! grep "filegroup" "./out/soong/workspace/foo/unconvertible_soong_module/BUILD"; then
60 fail "missing filegroup in unconvertible_soong_module/BUILD"
61 fi
62
63 # NOTE: We don't actually use the extra BUILD file for anything here
64 run_bazel build --package_path=out/soong/workspace //foo/...
65
66 local the_answer_file="bazel-out/k8-fastbuild/bin/foo/convertible_soong_module/the_answer.txt"
67 if [[ ! -f "${the_answer_file}" ]]; then
68 fail "Expected '${the_answer_file}' to be generated, but was missing"
69 fi
70 if ! grep 42 "${the_answer_file}"; then
71 fail "Expected to find 42 in '${the_answer_file}'"
72 fi
73}
74
75test_bp2build_generates_all_buildfiles