aboutsummaryrefslogtreecommitdiffhomepage
path: root/src/test/shell/integration
diff options
context:
space:
mode:
authorGravatar Tobias Werth <twerth@google.com>2016-09-13 12:47:37 +0000
committerGravatar Dmitry Lomov <dslomov@google.com>2016-09-14 09:33:40 +0000
commit47549f90412387ee69383d4ec7fa299e551f3040 (patch)
treec3c7ff2545feefeb5e498e44f7ed870cf6b113c3 /src/test/shell/integration
parentef0f36956a016c553c506676373637c9c3d00ee9 (diff)
Open source ide_info_generation test.
-- MOS_MIGRATED_REVID=132990129
Diffstat (limited to 'src/test/shell/integration')
-rw-r--r--src/test/shell/integration/BUILD10
-rwxr-xr-xsrc/test/shell/integration/ide_info_generation.sh267
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"