diff options
author | Tobias Werth <twerth@google.com> | 2016-09-13 12:47:37 +0000 |
---|---|---|
committer | Dmitry Lomov <dslomov@google.com> | 2016-09-14 09:33:40 +0000 |
commit | 47549f90412387ee69383d4ec7fa299e551f3040 (patch) | |
tree | c3c7ff2545feefeb5e498e44f7ed870cf6b113c3 /src | |
parent | ef0f36956a016c553c506676373637c9c3d00ee9 (diff) |
Open source ide_info_generation test.
--
MOS_MIGRATED_REVID=132990129
Diffstat (limited to 'src')
-rw-r--r-- | src/test/shell/integration/BUILD | 10 | ||||
-rwxr-xr-x | src/test/shell/integration/ide_info_generation.sh | 267 |
2 files changed, 277 insertions, 0 deletions
diff --git a/src/test/shell/integration/BUILD b/src/test/shell/integration/BUILD index 8e794ab575..02c23d2210 100644 --- a/src/test/shell/integration/BUILD +++ b/src/test/shell/integration/BUILD @@ -91,6 +91,16 @@ sh_test( ) sh_test( + name = "ide_info_generation", + size = "medium", + srcs = ["ide_info_generation.sh"], + data = [ + ":test-deps", + "//src/tools/android/java/com/google/devtools/build/android/ideinfo:PackageParser", + ], +) + +sh_test( name = "ui_test", size = "medium", srcs = ["ui_test.sh"], diff --git a/src/test/shell/integration/ide_info_generation.sh b/src/test/shell/integration/ide_info_generation.sh new file mode 100755 index 0000000000..516945aff4 --- /dev/null +++ b/src/test/shell/integration/ide_info_generation.sh @@ -0,0 +1,267 @@ +#!/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" |