tests: Move to Android.bp.

Also separate libupdater_defaults out to be shareable.

It turns out the `data` property in `cc_test` doesn't follow symlinks as
LOCAL_TEST_DATA does in Android.mk. This CL creates a filegroup in
top-level Android.bp in order to pick up the testdata for ResourcesTest.

Test: `mmma -j bootable/recovery` with aosp_marlin-userdebug
Test: Run recovery_{unit,component,manual}_test on marlin.
Test: Run recovery_host_test.
Change-Id: I4532ab25aeb83c0b0baa8051d5fe34ba7b910a35
diff --git a/Android.bp b/Android.bp
index e97f71d..53b74dc 100644
--- a/Android.bp
+++ b/Android.bp
@@ -291,3 +291,11 @@
         "recovery-refresh.rc",
     ],
 }
+
+filegroup {
+    name: "res-testdata",
+
+    srcs: [
+        "res-*/images/*_text.png",
+    ],
+}
diff --git a/Android.mk b/Android.mk
index 7d13f4c..80d107d 100644
--- a/Android.mk
+++ b/Android.mk
@@ -80,5 +80,4 @@
 include $(BUILD_PHONY_PACKAGE)
 
 include \
-    $(LOCAL_PATH)/tests/Android.mk \
     $(LOCAL_PATH)/updater/Android.mk \
diff --git a/tests/Android.bp b/tests/Android.bp
new file mode 100644
index 0000000..d305e25
--- /dev/null
+++ b/tests/Android.bp
@@ -0,0 +1,218 @@
+// Copyright (C) 2018 The Android Open Source Project
+//
+// 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.
+
+cc_defaults {
+    name: "recovery_test_defaults",
+
+    defaults: [
+        "recovery_defaults",
+    ],
+
+    include_dirs: [
+        "bootable/recovery",
+    ],
+
+    shared_libs: [
+        "libbase",
+        "libcrypto",
+        "libcutils",
+        "liblog",
+        "libpng",
+        "libselinux",
+        "libz",
+        "libziparchive",
+    ],
+
+    target: {
+        android: {
+            shared_libs: [
+                "libutils",
+            ],
+        },
+
+        host: {
+            static_libs: [
+                "libutils",
+            ],
+        }
+    },
+}
+
+// libapplypatch, libapplypatch_modes, libimgdiff, libimgpatch
+libapplypatch_static_libs = [
+    "libapplypatch_modes",
+    "libapplypatch",
+    "libedify",
+    "libimgdiff",
+    "libimgpatch",
+    "libotafault",
+    "libotautil",
+    "libbsdiff",
+    "libbspatch",
+    "libdivsufsort",
+    "libdivsufsort64",
+    "libutils",
+    "libbase",
+    "libbrotli",
+    "libbz",
+    "libcrypto",
+    "libz",
+    "libziparchive",
+]
+
+// librecovery_defaults uses many shared libs that we want to avoid using in tests (e.g. we don't
+// have 32-bit android.hardware.health@2.0.so or libbootloader_message.so on marlin).
+librecovery_static_libs = [
+    "librecovery",
+    "librecovery_fastboot",
+    "libminui",
+    "libverifier",
+    "libotautil",
+
+    "libhealthhalutils",
+    "libvintf_recovery",
+    "libvintf",
+
+    "android.hardware.health@2.0",
+    "android.hardware.health@1.0",
+    "libbootloader_message",
+    "libext4_utils",
+    "libfs_mgr",
+    "libfusesideload",
+    "libhidl-gen-utils",
+    "libhidlbase",
+    "libhidltransport",
+    "libhwbinder",
+    "libvndksupport",
+    "libtinyxml2",
+]
+
+cc_test {
+    name: "recovery_unit_test",
+
+    defaults: [
+        "recovery_test_defaults",
+    ],
+
+    test_suites: ["device-tests"],
+
+    srcs: [
+        "unit/asn1_decoder_test.cpp",
+        "unit/applypatch_test.cpp",
+        "unit/commands_test.cpp",
+        "unit/dirutil_test.cpp",
+        "unit/locale_test.cpp",
+        "unit/rangeset_test.cpp",
+        "unit/screen_ui_test.cpp",
+        "unit/sysutil_test.cpp",
+        "unit/zip_test.cpp",
+    ],
+
+    static_libs: libapplypatch_static_libs + [
+        "librecovery_ui",
+        "libminui",
+        "libverifier",
+        "libotautil",
+        "libupdater",
+        "libgtest_prod",
+        "libBionicGtestMain",
+    ],
+
+    data: ["testdata/*"],
+}
+
+cc_test {
+    name: "recovery_manual_test",
+
+    defaults: [
+        "recovery_test_defaults",
+    ],
+
+    test_suites: ["device-tests"],
+
+    srcs: [
+        "manual/recovery_test.cpp",
+    ],
+
+    static_libs: [
+        "libBionicGtestMain",
+    ],
+}
+
+cc_test {
+    name: "recovery_component_test",
+
+    defaults: [
+        "recovery_test_defaults",
+        "libupdater_defaults",
+    ],
+
+    test_suites: ["device-tests"],
+
+    srcs: [
+        "component/bootloader_message_test.cpp",
+        "component/edify_test.cpp",
+        "component/imgdiff_test.cpp",
+        "component/install_test.cpp",
+        "component/resources_test.cpp",
+        "component/sideload_test.cpp",
+        "component/uncrypt_test.cpp",
+        "component/updater_test.cpp",
+        "component/update_verifier_test.cpp",
+        "component/verifier_test.cpp",
+    ],
+
+    static_libs: libapplypatch_static_libs + librecovery_static_libs + [
+        "libupdater",
+        "libupdate_verifier",
+        "libprotobuf-cpp-lite",
+        "libBionicGtestMain",
+    ],
+
+    data: [
+        "testdata/*",
+        ":res-testdata",
+    ],
+}
+
+cc_test_host {
+    name: "recovery_host_test",
+
+    defaults: [
+        "recovery_test_defaults",
+    ],
+
+    srcs: [
+        "component/imgdiff_test.cpp",
+    ],
+
+    static_libs: [
+        "libimgdiff",
+        "libimgpatch",
+        "libotautil",
+        "libbsdiff",
+        "libbspatch",
+        "libziparchive",
+        "libutils",
+        "libcrypto",
+        "libbrotli",
+        "libbz",
+        "libdivsufsort64",
+        "libdivsufsort",
+        "libz",
+        "libBionicGtestMain",
+    ],
+
+    data: ["testdata/*"],
+}
diff --git a/tests/Android.mk b/tests/Android.mk
deleted file mode 100644
index b59da80..0000000
--- a/tests/Android.mk
+++ /dev/null
@@ -1,227 +0,0 @@
-#
-# Copyright (C) 2014 The Android Open Source Project
-#
-# 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.
-#
-
-LOCAL_PATH := $(call my-dir)
-
-# libapplypatch, libapplypatch_modes, libimgdiff, libimgpatch.
-libapplypatch_static_libraries := \
-    libapplypatch_modes \
-    libapplypatch \
-    libedify \
-    libimgdiff \
-    libimgpatch \
-    libotafault \
-    libotautil \
-    libbsdiff \
-    libbspatch \
-    libdivsufsort \
-    libdivsufsort64 \
-    libutils \
-    libbase \
-    libbrotli \
-    libbz \
-    libcrypto \
-    libz \
-    libziparchive \
-
-# Unit tests
-include $(CLEAR_VARS)
-LOCAL_CFLAGS := -Wall -Werror
-LOCAL_MODULE := recovery_unit_test
-LOCAL_COMPATIBILITY_SUITE := device-tests
-LOCAL_STATIC_LIBRARIES := \
-    $(libapplypatch_static_libraries) \
-    libverifier \
-    librecovery_ui \
-    libminui \
-    libotautil \
-    libupdater \
-    libgtest_prod \
-    libpng \
-    libziparchive \
-    libutils \
-    libz \
-    libselinux \
-    libbase \
-    libBionicGtestMain
-
-LOCAL_SRC_FILES := \
-    unit/applypatch_test.cpp \
-    unit/asn1_decoder_test.cpp \
-    unit/commands_test.cpp \
-    unit/dirutil_test.cpp \
-    unit/locale_test.cpp \
-    unit/rangeset_test.cpp \
-    unit/screen_ui_test.cpp \
-    unit/sysutil_test.cpp \
-    unit/zip_test.cpp
-
-LOCAL_C_INCLUDES := bootable/recovery
-LOCAL_SHARED_LIBRARIES := liblog
-LOCAL_TEST_DATA := \
-    $(call find-test-data-in-subdirs, $(LOCAL_PATH), "*", testdata)
-include $(BUILD_NATIVE_TEST)
-
-# Manual tests
-include $(CLEAR_VARS)
-LOCAL_CFLAGS := -Wall -Werror
-LOCAL_MODULE := recovery_manual_test
-LOCAL_STATIC_LIBRARIES := \
-    libbase \
-    libBionicGtestMain
-
-LOCAL_SRC_FILES := manual/recovery_test.cpp
-LOCAL_SHARED_LIBRARIES := \
-    liblog
-
-include $(BUILD_NATIVE_TEST)
-
-# Component tests
-include $(CLEAR_VARS)
-LOCAL_CFLAGS := \
-    -Wall \
-    -Werror \
-    -D_FILE_OFFSET_BITS=64
-
-LOCAL_MODULE := recovery_component_test
-LOCAL_COMPATIBILITY_SUITE := device-tests
-LOCAL_C_INCLUDES := bootable/recovery
-LOCAL_SRC_FILES := \
-    component/applypatch_modes_test.cpp \
-    component/bootloader_message_test.cpp \
-    component/edify_test.cpp \
-    component/imgdiff_test.cpp \
-    component/install_test.cpp \
-    component/resources_test.cpp \
-    component/sideload_test.cpp \
-    component/uncrypt_test.cpp \
-    component/updater_test.cpp \
-    component/update_verifier_test.cpp \
-    component/verifier_test.cpp
-
-LOCAL_SHARED_LIBRARIES := \
-    libhidlbase \
-    libprotobuf-cpp-lite
-
-tune2fs_static_libraries := \
-    libext2_com_err \
-    libext2_blkid \
-    libext2_quota \
-    libext2_uuid \
-    libext2_e2p \
-    libext2fs
-
-libupdater_static_libraries := \
-    libupdater \
-    libapplypatch \
-    libbootloader_message \
-    libbspatch \
-    libedify \
-    libotafault \
-    libotautil \
-    libext4_utils \
-    libfec \
-    libfec_rs \
-    libverity_tree \
-    libfs_mgr \
-    libgtest_prod \
-    liblog \
-    libselinux \
-    libsparse \
-    libsquashfs_utils \
-    libbrotli \
-    libbz \
-    libziparchive \
-    libz \
-    libbase \
-    libcrypto \
-    libcrypto_utils \
-    libcutils \
-    libutils \
-    libtune2fs \
-    $(tune2fs_static_libraries)
-
-librecovery_static_libraries := \
-    librecovery \
-    libbootloader_message \
-    libfusesideload \
-    librecovery_ui_default \
-    librecovery_ui \
-    libminui \
-    libverifier \
-    libotautil \
-    libcrypto_utils \
-    libcrypto \
-    libext4_utils \
-    libfs_mgr \
-    libpng \
-    libsparse \
-    libvintf_recovery \
-    libvintf \
-    libhidl-gen-utils \
-    libtinyxml2 \
-    libziparchive \
-    libbase \
-    libutils \
-    libcutils \
-    liblog \
-    libselinux \
-    libz \
-
-libupdate_verifier_static_libraries := \
-    libupdate_verifier \
-
-LOCAL_STATIC_LIBRARIES := \
-    $(libapplypatch_static_libraries) \
-    $(librecovery_static_libraries) \
-    $(libupdate_verifier_static_libraries) \
-    $(libupdater_static_libraries) \
-    libBionicGtestMain
-
-LOCAL_TEST_DATA := \
-    $(call find-test-data-in-subdirs, $(LOCAL_PATH), "*", testdata) \
-    $(call find-test-data-in-subdirs, $(LOCAL_PATH), "*_text.png", res-testdata)
-include $(BUILD_NATIVE_TEST)
-
-# Host tests
-include $(CLEAR_VARS)
-LOCAL_CFLAGS := -Wall -Werror
-LOCAL_MODULE := recovery_host_test
-LOCAL_MODULE_HOST_OS := linux
-LOCAL_C_INCLUDES := bootable/recovery
-LOCAL_SRC_FILES := \
-    component/imgdiff_test.cpp
-LOCAL_STATIC_LIBRARIES := \
-    libimgdiff \
-    libimgpatch \
-    libotautil \
-    libbsdiff \
-    libbspatch \
-    libziparchive \
-    libutils \
-    libbase \
-    libcrypto \
-    libbrotli \
-    libbz \
-    libdivsufsort64 \
-    libdivsufsort \
-    libz \
-    libBionicGtestMain
-LOCAL_SHARED_LIBRARIES := \
-    liblog
-LOCAL_TEST_DATA := \
-    $(call find-test-data-in-subdirs, $(LOCAL_PATH), "*", testdata)
-include $(BUILD_HOST_NATIVE_TEST)
diff --git a/tests/component/resources_test.cpp b/tests/component/resources_test.cpp
index b00c3d5..54329db 100644
--- a/tests/component/resources_test.cpp
+++ b/tests/component/resources_test.cpp
@@ -33,9 +33,8 @@
 static const std::string kLocale = "zu";
 
 static const std::vector<std::string> kResourceImagesDirs{
-  "res-testdata/res-mdpi/images/",    "res-testdata/res-hdpi/images/",
-  "res-testdata/res-xhdpi/images/",   "res-testdata/res-xxhdpi/images/",
-  "res-testdata/res-xxxhdpi/images/",
+  "res-mdpi/images/",   "res-hdpi/images/",    "res-xhdpi/images/",
+  "res-xxhdpi/images/", "res-xxxhdpi/images/",
 };
 
 static int png_filter(const dirent* de) {
diff --git a/tests/res-testdata/res-hdpi b/tests/res-testdata/res-hdpi
deleted file mode 120000
index c339b1d..0000000
--- a/tests/res-testdata/res-hdpi
+++ /dev/null
@@ -1 +0,0 @@
-../../res-hdpi
\ No newline at end of file
diff --git a/tests/res-testdata/res-mdpi b/tests/res-testdata/res-mdpi
deleted file mode 120000
index 4be630d..0000000
--- a/tests/res-testdata/res-mdpi
+++ /dev/null
@@ -1 +0,0 @@
-../../res-mdpi
\ No newline at end of file
diff --git a/tests/res-testdata/res-xhdpi b/tests/res-testdata/res-xhdpi
deleted file mode 120000
index 429eead..0000000
--- a/tests/res-testdata/res-xhdpi
+++ /dev/null
@@ -1 +0,0 @@
-../../res-xhdpi
\ No newline at end of file
diff --git a/tests/res-testdata/res-xxhdpi b/tests/res-testdata/res-xxhdpi
deleted file mode 120000
index 304cc28..0000000
--- a/tests/res-testdata/res-xxhdpi
+++ /dev/null
@@ -1 +0,0 @@
-../../res-xxhdpi
\ No newline at end of file
diff --git a/tests/res-testdata/res-xxxhdpi b/tests/res-testdata/res-xxxhdpi
deleted file mode 120000
index 2236ad8..0000000
--- a/tests/res-testdata/res-xxxhdpi
+++ /dev/null
@@ -1 +0,0 @@
-../../res-xxxhdpi
\ No newline at end of file
diff --git a/updater/Android.bp b/updater/Android.bp
index 9a36ebb..c77bac8 100644
--- a/updater/Android.bp
+++ b/updater/Android.bp
@@ -12,27 +12,13 @@
 // See the License for the specific language governing permissions and
 // limitations under the License.
 
-cc_library_static {
-    name: "libupdater",
+cc_defaults {
+    name: "libupdater_defaults",
 
     defaults: [
         "recovery_defaults",
     ],
 
-    srcs: [
-        "blockimg.cpp",
-        "commands.cpp",
-        "install.cpp",
-    ],
-
-    include_dirs: [
-        "external/e2fsprogs/misc",
-    ],
-
-    export_include_dirs: [
-        "include",
-    ],
-
     static_libs: [
         "libapplypatch",
         "libbootloader_message",
@@ -69,3 +55,26 @@
         "libext2fs",
     ],
 }
+
+cc_library_static {
+    name: "libupdater",
+
+    defaults: [
+        "recovery_defaults",
+        "libupdater_defaults",
+    ],
+
+    srcs: [
+        "blockimg.cpp",
+        "commands.cpp",
+        "install.cpp",
+    ],
+
+    include_dirs: [
+        "external/e2fsprogs/misc",
+    ],
+
+    export_include_dirs: [
+        "include",
+    ],
+}