1// Copyright (C) 2016 The Android Open Source Project
2//
3// Licensed under the Apache License, Version 2.0 (the "License");
4// you may not use this file except in compliance with the License.
5// You may obtain a copy of the License at
6//
7//      http://www.apache.org/licenses/LICENSE-2.0
8//
9// Unless required by applicable law or agreed to in writing, software
10// distributed under the License is distributed on an "AS IS" BASIS,
11// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
12// See the License for the specific language governing permissions and
13// limitations under the License.
14
15//###########################################################
16// SettingsLib Shell app just for Robolectric test target.  #
17//###########################################################
18
19package {
20    // See: http://go/android-license-faq
21    // A large-scale-change added 'default_applicable_licenses' to import
22    // all of the 'license_kinds' from "frameworks_base_license"
23    // to get the below license kinds:
24    //   SPDX-license-identifier-Apache-2.0
25    default_applicable_licenses: ["frameworks_base_license"],
26}
27
28android_app {
29    name: "SettingsLibShell",
30    use_resource_processor: true,
31    defaults: ["SettingsLibDefaults"],
32    platform_apis: true,
33
34    privileged: true,
35
36    resource_dirs: ["res"],
37}
38
39//###########################################################
40// SettingsLib Robolectric test target.                     #
41//###########################################################
42android_robolectric_test {
43    name: "SettingsLibRoboTests",
44    srcs: [
45        "src/**/*.java",
46        "src/**/*.kt",
47    ],
48    static_libs: [
49        "Settings_robolectric_meta_service_file",
50        "Robolectric_shadows_androidx_fragment_upstream",
51        "SettingsLib-robo-testutils",
52        "androidx.fragment_fragment",
53        "androidx.test.core",
54        "androidx.core_core",
55        "flag-junit",
56        "settingslib_media_flags_lib",
57        "settingslib_illustrationpreference_flags_lib",
58        "testng", // TODO: remove once JUnit on Android provides assertThrows
59    ],
60    java_resource_dirs: ["config"],
61    instrumentation_for: "SettingsLibShell",
62    coverage_libs: ["SettingsLib"],
63    test_options: {
64        timeout: 36000,
65    },
66    upstream: true,
67
68    strict_mode: false,
69}
70
71java_genrule {
72    name: "Settings_robolectric_meta_service_file",
73    out: ["robolectric_meta_service_file.jar"],
74    tools: ["soong_zip"],
75    cmd: "mkdir -p $(genDir)/META-INF/services/ && touch $(genDir)/META-INF/services/org.robolectric.internal.ShadowProvider &&" +
76        "echo -e 'org.robolectric.Shadows' >> $(genDir)/META-INF/services/org.robolectric.internal.ShadowProvider && " +
77        "echo -e 'org.robolectric.shadows.multidex.Shadows' >> $(genDir)/META-INF/services/org.robolectric.internal.ShadowProvider && " +
78        "echo -e 'org.robolectric.shadows.httpclient.Shadows' >> $(genDir)/META-INF/services/org.robolectric.internal.ShadowProvider && " +
79        //"echo -e 'com.android.settings.testutils.shadow.Shadows' >> $(genDir)/META-INF/services/org.robolectric.internal.ShadowProvider && " +
80        "echo -e 'com.android.settingslib.testutils.shadow.Shadows' >> $(genDir)/META-INF/services/org.robolectric.internal.ShadowProvider && " +
81        "$(location soong_zip) -o $(out) -C $(genDir) -D $(genDir)/META-INF/services/",
82}
83
84java_library {
85    name: "SettingsLib-robo-testutils",
86    srcs: [
87        "testutils/com/android/settingslib/testutils/**/*.java",
88    ],
89    javacflags: [
90        "-Aorg.robolectric.annotation.processing.shadowPackage=com.android.settingslib.testutils.shadow",
91        "-Aorg.robolectric.annotation.processing.sdkCheckMode=ERROR",
92        // Uncomment the below to debug annotation processors not firing.
93        //"-verbose",
94        //"-XprintRounds",
95        //"-XprintProcessorInfo",
96        //"-Xlint",
97        //"-J-verbose",
98    ],
99    plugins: [
100        "auto_value_plugin_1.9",
101        "auto_value_builder_plugin_1.9",
102        "Robolectric_processor_upstream",
103    ],
104    libs: [
105        "Robolectric_all-target_upstream",
106        "mockito-robolectric-prebuilt",
107        "truth",
108    ],
109}
110