diff options
Diffstat (limited to 'src/test/shell/bazel/android/android_integration_test.sh')
-rwxr-xr-x | src/test/shell/bazel/android/android_integration_test.sh | 227 |
1 files changed, 5 insertions, 222 deletions
diff --git a/src/test/shell/bazel/android/android_integration_test.sh b/src/test/shell/bazel/android/android_integration_test.sh index 23ea519af0..557816083b 100755 --- a/src/test/shell/bazel/android/android_integration_test.sh +++ b/src/test/shell/bazel/android/android_integration_test.sh @@ -25,60 +25,13 @@ # Load the test setup defined in the parent directory CURRENT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)" -source "${CURRENT_DIR}/../../integration_test_setup.sh" \ - || { echo "integration_test_setup.sh not found!" >&2; exit 1; } - - -function create_android_binary() { - mkdir -p java/bazel - cat > java/bazel/BUILD <<EOF -aar_import( - name = "aar", - aar = "sample.aar", -) -android_library( - name = "lib", - srcs = ["Lib.java"], - deps = [":aar"], -) -android_binary( - name = "bin", - srcs = ["MainActivity.java"], - manifest = "AndroidManifest.xml", - deps = [":lib"], -) -EOF - - cp "${TEST_SRCDIR}/io_bazel/src/test/shell/bazel/android/sample.aar" \ - java/bazel/sample.aar - cat > java/bazel/AndroidManifest.xml <<EOF - <manifest package="bazel.android" /> -EOF - - cat > java/bazel/Lib.java <<EOF -package bazel; -import com.sample.aar.Sample; -public class Lib { - public static String message() { - return "Hello Lib" + Sample.getZero(); - } -} -EOF - - cat > java/bazel/MainActivity.java <<EOF -package bazel; -import android.app.Activity; -import android.os.Bundle; +source "${CURRENT_DIR}/android_helper.sh" \ + || { echo "android_helper.sh not found!" >&2; exit 1; } +fail_if_no_android_sdk -public class MainActivity extends Activity { - @Override - public void onCreate(Bundle savedInstanceState) { - super.onCreate(savedInstanceState); - } -} -EOF -} +source "${CURRENT_DIR}/../../integration_test_setup.sh" \ + || { echo "integration_test_setup.sh not found!" >&2; exit 1; } function test_sdk_library_deps() { create_new_workspace @@ -95,119 +48,6 @@ EOF bazel build --nobuild //java/a:a || fail "build failed" } -# Regression test for https://github.com/bazelbuild/bazel/issues/1928. -function test_empty_tree_artifact_action_inputs_mount_empty_directories() { - create_new_workspace - setup_android_sdk_support - cat > AndroidManifest.xml <<EOF -<manifest package="com.test"/> -EOF - mkdir res - zip test.aar AndroidManifest.xml res/ - cat > BUILD <<EOF -aar_import( - name = "test", - aar = "test.aar", -) -EOF - # Building aar_import invokes the AndroidResourceProcessingAction with a - # TreeArtifact of the AAR resources as the input. Since there are no - # resources, the Bazel sandbox should create an empty directory. If the - # directory is not created, the action thinks that its inputs do not exist and - # crashes. - bazel build :test -} - -function test_nonempty_aar_resources_tree_artifact() { - create_new_workspace - setup_android_sdk_support - cat > AndroidManifest.xml <<EOF -<manifest package="com.test"/> -EOF - mkdir -p res/values - cat > res/values/values.xml <<EOF -<?xml version="1.0" encoding="utf-8"?> -<resources xmlns:android="http://schemas.android.com/apk/res/android"> -</resources> -EOF - zip test.aar AndroidManifest.xml res/values/values.xml - cat > BUILD <<EOF -aar_import( - name = "test", - aar = "test.aar", -) -EOF - bazel build :test -} - -function test_android_sdk_repository_path_from_environment() { - create_new_workspace - setup_android_sdk_support - # Overwrite WORKSPACE that was created by setup_android_sdk_support with one - # that does not set the path attribute of android_sdk_repository. - cat > WORKSPACE <<EOF -android_sdk_repository( - name = "androidsdk", -) -EOF - ANDROID_HOME=$ANDROID_SDK bazel build @androidsdk//:files || fail \ - "android_sdk_repository failed to build with \$ANDROID_HOME instead of " \ - "path" -} - -function test_android_sdk_repository_no_path_or_android_home() { - create_new_workspace - cat > WORKSPACE <<EOF -android_sdk_repository( - name = "androidsdk", - api_level = 25, -) -EOF - bazel build @androidsdk//:files >& $TEST_log && fail "Should have failed" - expect_log "Either the path attribute of android_sdk_repository" -} - -function test_android_sdk_repository_wrong_path() { - create_new_workspace - mkdir "$TEST_SRCDIR/some_dir" - cat > WORKSPACE <<EOF -android_sdk_repository( - name = "androidsdk", - api_level = 25, - path = "$TEST_SRCDIR/some_dir", -) -EOF - bazel build @androidsdk//:files >& $TEST_log && fail "Should have failed" - expect_log "Unable to read the Android SDK at $TEST_SRCDIR/some_dir, the path may be invalid." \ - " Is the path in android_sdk_repository() or \$ANDROID_SDK_HOME set correctly?" -} - -# Check that the build succeeds if an android_sdk is specified with --android_sdk -function test_specifying_android_sdk_flag() { - create_new_workspace - setup_android_sdk_support - create_android_binary - cat > WORKSPACE <<EOF -android_sdk_repository( - name = "a", -) -EOF - ANDROID_HOME=$ANDROID_SDK bazel build --android_sdk=@a//:sdk-24 \ - //java/bazel:bin || fail "build with --android_sdk failed" -} - -# Regression test for https://github.com/bazelbuild/bazel/issues/2621. -function test_android_sdk_repository_returns_null_if_env_vars_missing() { - create_new_workspace - setup_android_sdk_support - ANDROID_HOME=/does_not_exist_1 bazel build @androidsdk//:files || \ - fail "Build failed" - sed -i -e 's/path =/#path =/g' WORKSPACE - ANDROID_HOME=/does_not_exist_2 bazel build @androidsdk//:files && \ - fail "Build should have failed" - ANDROID_HOME=$ANDROID_SDK bazel build @androidsdk//:files || "Build failed" -} - function test_allow_custom_manifest_name() { create_new_workspace setup_android_sdk_support @@ -221,61 +61,4 @@ function test_allow_custom_manifest_name() { "Failed to build android_binary with custom Android manifest file name" } -function test_proguard() { - create_new_workspace - setup_android_sdk_support - mkdir -p java/com/bin - cat > java/com/bin/BUILD <<EOF -android_binary( - name = 'bin', - srcs = ['Bin.java', 'NotUsed.java'], - manifest = 'AndroidManifest.xml', - proguard_specs = ['proguard.config'], - deps = [':lib'], -) -android_library( - name = 'lib', - srcs = ['Lib.java'], -) -EOF - cat > java/com/bin/AndroidManifest.xml <<EOF -<manifest package='com.bin' /> -EOF - cat > java/com/bin/Bin.java <<EOF -package com.bin; -public class Bin { - public Lib getLib() { - return new Lib(); - } -} -EOF - cat > java/com/bin/NotUsed.java <<EOF -package com.bin; -public class NotUsed {} -EOF - cat > java/com/bin/Lib.java <<EOF -package com.bin; -public class Lib {} -EOF - cat > java/com/bin/proguard.config <<EOF --keep public class com.bin.Bin { - public *; -} -EOF - assert_build //java/com/bin - output_classes=$(zipinfo -1 bazel-bin/java/com/bin/bin_proguard.jar) - assert_equals 3 $(wc -w <<< $output_classes) - assert_one_of $output_classes "META-INF/MANIFEST.MF" - assert_one_of $output_classes "com/bin/Bin.class" - # Not kept by proguard - assert_not_one_of $output_classes "com/bin/Unused.class" - # This is renamed by proguard to something else - assert_not_one_of $output_classes "com/bin/Lib.class" -} - -if [[ ! -d "${TEST_SRCDIR}/androidsdk" ]]; then - echo "Not running Android tests due to lack of an Android SDK." - exit 0 -fi - run_suite "Android integration tests" |