| #!/bin/bash | |
| # | |
| # Copyright 2016 The Bazel Authors. All rights reserved. | |
| # | |
| # Licensed under the Apache License, Version 2.0 (the "License"); | |
| # you may not use this file except in compliance with the License. | |
| # You may obtain a copy of the License at | |
| # | |
| # http://www.apache.org/licenses/LICENSE-2.0 | |
| # | |
| # Unless required by applicable law or agreed to in writing, software | |
| # distributed under the License is distributed on an "AS IS" BASIS, | |
| # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. | |
| # See the License for the specific language governing permissions and | |
| # limitations under the License. | |
| # | |
| # Integration tests for IDE build info generation. | |
| # Load test environment | |
| source $(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)/testenv.sh \ | |
| || { echo "testenv.sh not found!" >&2; exit 1; } | |
| create_and_cd_client | |
| put_bazel_on_path | |
| write_default_bazelrc | |
| add_to_bazelrc "build --embed_changelist=none --noshow_progress" | |
| ##### TESTS | |
| function test_ide_build_file_generation() { | |
| mkdir -p com/google/example/simple | |
| cat > com/google/example/simple/Simple.java <<EOF | |
| package com.google.example.simple; | |
| public class Simple { | |
| public static void main(String[] args) { | |
| System.out.println("Hello world!"); | |
| } | |
| } | |
| EOF | |
| mkdir -p com/google/example/complex | |
| cat > com/google/example/complex/Complex.java <<EOF | |
| package com.google.example.complex; | |
| import com.google.example.simple.Simple; | |
| public class Complex { | |
| public static void main(String[] args) { | |
| Simple.main(args); | |
| } | |
| } | |
| EOF | |
| cat > com/google/example/BUILD <<EOF | |
| java_library( | |
| name = "simple", | |
| srcs = ["simple/Simple.java"] | |
| ) | |
| java_library( | |
| name = "complex", | |
| srcs = ["complex/Complex.java"], | |
| deps = [":simple"] | |
| ) | |
| EOF | |
| bazel build //com/google/example:complex \ | |
| --aspects AndroidStudioInfoAspect --output_groups "ide-info" \ | |
| || fail "Expected success" | |
| [ -e bazel-bin/com/google/example/simple.aswb-build ] \ | |
| || fail "bazel-bin/com/google/example/simple.aswb-build not found" | |
| [ -e bazel-bin/com/google/example/complex.aswb-build ] \ | |
| || fail "bazel-bin/com/google/example/complex.aswb-build not found" | |
| } | |
| function test_detailed_result() { | |
| # ensure clean build. | |
| bazel clean && bazel shutdown | |
| # create files and build first time | |
| mkdir -p com/google/example/simple | |
| cat > com/google/example/simple/Simple.java <<EOF | |
| package com.google.example.simple; | |
| public class Simple { | |
| public static void main(String[] args) { | |
| System.out.println("Hello world!"); | |
| } | |
| } | |
| EOF | |
| mkdir -p com/google/example/complex | |
| cat > com/google/example/complex/Complex.java <<EOF | |
| package com.google.example.complex; | |
| import com.google.example.simple.Simple; | |
| public class Complex { | |
| public static void main(String[] args) { | |
| Simple.main(args); | |
| } | |
| } | |
| EOF | |
| cat > com/google/example/BUILD <<EOF | |
| java_library( | |
| name = "simple", | |
| srcs = ["simple/Simple.java"] | |
| ) | |
| java_library( | |
| name = "complex", | |
| srcs = ["complex/Complex.java"], | |
| deps = [":simple"] | |
| ) | |
| EOF | |
| bazel build //com/google/example:complex \ | |
| --aspects AndroidStudioInfoAspect --output_groups "ide-info" \ | |
| --experimental_show_artifacts 2> $TEST_log \ | |
| || fail "Expected success" | |
| [ -e bazel-bin/com/google/example/simple.aswb-build ] \ | |
| || fail "bazel-bin/com/google/example/simple.aswb-build not found" | |
| [ -e bazel-bin/com/google/example/complex.aswb-build ] \ | |
| || fail "bazel-bin/com/google/example/complex.aswb-build not found" | |
| expect_log '^Build artifacts:' | |
| expect_log "^>>>.*/com/google/example/complex.aswb-build" | |
| expect_log "^>>>.*/com/google/example/simple.aswb-build" | |
| # second build; test that up-to-date artifacts are output. | |
| bazel build //com/google/example:complex \ | |
| --aspects AndroidStudioInfoAspect --output_groups "ide-info" \ | |
| --experimental_show_artifacts 2> $TEST_log \ | |
| || fail "Expected success" | |
| expect_log '^Build artifacts:' | |
| expect_log "^>>>.*/com/google/example/complex.aswb-build" | |
| expect_log "^>>>.*/com/google/example/simple.aswb-build" | |
| } | |
| function test_ide_resolve_output_group() { | |
| mkdir -p com/google/example/simple | |
| cat > com/google/example/simple/Simple.java <<EOF | |
| package com.google.example.simple; | |
| public class Simple { | |
| public static void main(String[] args) { | |
| System.out.println("Hello world!"); | |
| } | |
| } | |
| EOF | |
| mkdir -p com/google/example/complex | |
| cat > com/google/example/complex/Complex.java <<EOF | |
| package com.google.example.complex; | |
| import com.google.example.simple.Simple; | |
| public class Complex { | |
| public static void main(String[] args) { | |
| Simple.main(args); | |
| } | |
| } | |
| EOF | |
| cat > com/google/example/BUILD <<EOF | |
| java_library( | |
| name = "simple", | |
| srcs = ["simple/Simple.java"] | |
| ) | |
| java_library( | |
| name = "complex", | |
| srcs = ["complex/Complex.java"], | |
| deps = [":simple"] | |
| ) | |
| EOF | |
| bazel build //com/google/example:complex \ | |
| --aspects AndroidStudioInfoAspect --output_groups "ide-resolve" \ | |
| || fail "Expected success" | |
| [ -e bazel-bin/com/google/example/libsimple.jar ] \ | |
| || fail "bazel-bin/com/google/example/libsimple.jar not found" | |
| [ -e bazel-bin/com/google/example/libcomplex.jar ] \ | |
| || fail "bazel-bin/com/google/example/libcomplex.jar not found" | |
| } | |
| function test_filtered_gen_jar_generation() { | |
| mkdir -p com/google/example | |
| cat > com/google/example/Test.java <<EOF | |
| package com.google.example; | |
| class Test {} | |
| EOF | |
| cat > com/google/example/BUILD <<EOF | |
| genrule( | |
| name = "gen", | |
| outs = ["Gen.java"], | |
| cmd = "echo 'package gen; class Gen {}' > \$@", | |
| ) | |
| java_library( | |
| name = "test", | |
| srcs = ["Test.java", ":gen"], | |
| ) | |
| EOF | |
| bazel build //com/google/example:test \ | |
| --aspects AndroidStudioInfoAspect --output_groups "ide-resolve" --experimental_show_artifacts \ | |
| || fail "Expected success" | |
| [ -e bazel-bin/com/google/example/libtest.jar ] \ | |
| || fail "bazel-bin/com/google/example/libtest.jar not found" | |
| [ -e bazel-bin/com/google/example/test-filtered-gen.jar ] \ | |
| || fail "bazel-bin/com/google/example/test-filtered-gen.jar not found" | |
| unzip bazel-bin/com/google/example/test-filtered-gen.jar | |
| [ -e gen/Gen.class ] \ | |
| || fail "Filtered gen jar does not contain Gen.class" | |
| [ ! -e com/google/example/Test.class ] \ | |
| || fail "Filtered gen jar incorrectly contains Test.class" | |
| } | |
| function test_ide_build_text_file_generation() { | |
| mkdir -p com/google/example/simple | |
| cat > com/google/example/simple/Simple.java <<EOF | |
| package com.google.example.simple; | |
| public class Simple { | |
| public static void main(String[] args) { | |
| System.out.println("Hello world!"); | |
| } | |
| } | |
| EOF | |
| mkdir -p com/google/example/complex | |
| cat > com/google/example/complex/Complex.java <<EOF | |
| package com.google.example.complex; | |
| import com.google.example.simple.Simple; | |
| public class Complex { | |
| public static void main(String[] args) { | |
| Simple.main(args); | |
| } | |
| } | |
| EOF | |
| cat > com/google/example/BUILD <<EOF | |
| java_library( | |
| name = "simple", | |
| srcs = ["simple/Simple.java"] | |
| ) | |
| java_library( | |
| name = "complex", | |
| srcs = ["complex/Complex.java"], | |
| deps = [":simple"] | |
| ) | |
| EOF | |
| bazel build //com/google/example:complex \ | |
| --aspects AndroidStudioInfoAspect --output_groups "ide-info-text" \ | |
| || fail "Expected success" | |
| [ -e bazel-bin/com/google/example/simple.aswb-build.txt ] \ | |
| || fail "bazel-bin/com/google/example/simple.aswb-build.txt not found" | |
| [ -e bazel-bin/com/google/example/complex.aswb-build.txt ] \ | |
| || fail "bazel-bin/com/google/example/complex.aswb-build.txt not found" | |
| } | |
| run_suite "Test IDE info files generation" |