1 # 2 # Copyright (C) 2012 The Android Open Source Project 3 # 4 # Licensed under the Apache License, Version 2.0 (the "License"); 5 # you may not use this file except in compliance with the License. 6 # You may obtain a copy of the License at 7 # 8 # http://www.apache.org/licenses/LICENSE-2.0 9 # 10 # Unless required by applicable law or agreed to in writing, software 11 # distributed under the License is distributed on an "AS IS" BASIS, 12 # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13 # See the License for the specific language governing permissions and 14 # limitations under the License. 15 # 16 17 # several makefiles for CTS merged for PTS 18 19 LOCAL_PATH:= $(call my-dir) 20 21 # New packages should be added here 22 PTS_TEST_PACKAGES := \ 23 PtsDeviceFilePerf \ 24 PtsDeviceUi \ 25 PtsDeviceDram 26 27 28 PTS_SUPPORT_PACKAGES := \ 29 TestDeviceSetup \ 30 PtsDeviceTaskswitchingAppA \ 31 PtsDeviceTaskswitchingAppB \ 32 PtsDeviceTaskswitchingControl \ 33 com.replica.replicaisland \ 34 PtsDeviceBrowserLauncher 35 36 PTS_HOST_CASES := \ 37 PtsHostBootup \ 38 PtsHostUi \ 39 PtsHostBrowser 40 41 PTS_HOST_LIBS := \ 42 $(HOST_OUT_JAVA_LIBRARIES)/ptscommonutilhost.jar \ 43 $(HOST_OUT_JAVA_LIBRARIES)/ptshostutil.jar 44 45 BUILD_PTS_PACKAGE := cts/suite/pts/build/test_package.mk 46 BUILD_PTS_HOST_JAVA_LIBRARY := cts/suite/pts/build/test_host_java_library.mk 47 48 PTS_JAVA_TEST_SCANNER := $(HOST_OUT_EXECUTABLES)/cts-java-scanner 49 PTS_JAVA_TEST_SCANNER_DOCLET := $(HOST_OUT_JAVA_LIBRARIES)/cts-java-scanner-doclet.jar 50 51 # Generator of test XMLs from scanner output. 52 PTS_XML_GENERATOR := $(HOST_OUT_EXECUTABLES)/cts-xml-generator 53 54 # File indicating which tests should be blacklisted due to problems. 55 PTS_EXPECTATIONS := cts/suite/pts/expectations/knownfailures.txt 56 57 PTS_TESTCASES_OUT := $(HOST_OUT)/pts-testcases 58 59 define pts-get-package-paths 60 $(foreach pkg,$(1),$(PTS_TESTCASES_OUT)/$(pkg).apk) 61 endef 62 63 define pts-get-test-xmls 64 $(foreach name,$(1),$(PTS_TESTCASES_OUT)/$(name).xml) 65 endef 66 67 define pts-get-lib-paths 68 $(foreach lib,$(1),$(HOST_OUT_JAVA_LIBRARIES)/$(lib).jar) 69 endef 70 71 PTS_TEST_CASE_LIST := \ 72 $(PTS_SUPPORT_PACKAGES) 73 74 PTS_TEST_CASES := \ 75 $(call pts-get-package-paths,$(PTS_TEST_PACKAGES)) \ 76 $(call pts-get-lib-paths,$(PTS_HOST_CASES)) 77 78 PTS_TEST_XMLS := \ 79 $(call pts-get-test-xmls,$(PTS_TEST_PACKAGES)) \ 80 $(call pts-get-test-xmls,$(PTS_HOST_CASES)) 81 82 pts_dir := $(HOST_OUT)/pts 83 pts_tools_src_dir := cts/tools 84 85 pts_name := android-pts 86 87 DDMLIB_JAR := $(HOST_OUT_JAVA_LIBRARIES)/ddmlib-prebuilt.jar 88 junit_host_jar := $(HOST_OUT_JAVA_LIBRARIES)/junit.jar 89 HOSTTESTLIB_JAR := $(HOST_OUT_JAVA_LIBRARIES)/hosttestlib.jar 90 TF_JAR := $(HOST_OUT_JAVA_LIBRARIES)/tradefed-prebuilt.jar 91 PTS_TF_JAR := $(HOST_OUT_JAVA_LIBRARIES)/cts-tradefed.jar 92 PTS_TF_EXEC := $(HOST_OUT_EXECUTABLES)/pts-tradefed 93 PTS_TF_README := $(pts_tools_src_dir)/tradefed-host/README 94 95 96 DEFAULT_TEST_PLAN := $(pts_dir)/$(pts_name)/resource/plans/PTS.xml 97 98 $(pts_dir)/all_pts_files_stamp: PRIVATE_JUNIT_HOST_JAR := $(junit_host_jar) 99 100 $(pts_dir)/all_pts_files_stamp: $(PTS_TEST_CASES) $(PTS_TEST_CASE_LIST) $(junit_host_jar) $(HOSTTESTLIB_JAR) $(PTS_HOST_LIBRARY_JARS) $(TF_JAR) $(VMTESTSTF_JAR) $(PTS_TF_JAR) $(PTS_TF_EXEC) $(PTS_TF_README) $(ACP) $(PTS_HOST_LIBS) 101 # Make necessary directory for PTS 102 $(hide) rm -rf $(PRIVATE_PTS_DIR) 103 $(hide) mkdir -p $(TMP_DIR) 104 $(hide) mkdir -p $(PRIVATE_DIR)/docs 105 $(hide) mkdir -p $(PRIVATE_DIR)/tools 106 $(hide) mkdir -p $(PRIVATE_DIR)/repository/testcases 107 $(hide) mkdir -p $(PRIVATE_DIR)/repository/plans 108 # Copy executable and JARs to PTS directory 109 $(hide) $(ACP) -fp $(DDMLIB_JAR) $(PRIVATE_JUNIT_HOST_JAR) $(HOSTTESTLIB_JAR) $(PTS_HOST_LIBRARY_JARS) $(TF_JAR) $(PTS_TF_JAR) $(PTS_TF_EXEC) $(PTS_TF_README) $(PTS_HOST_LIBS) $(PRIVATE_DIR)/tools 110 # Change mode of the executables 111 $(foreach apk,$(PTS_TEST_CASE_LIST),$(call copy-testcase-apk,$(apk))) 112 $(foreach testcase,$(PTS_TEST_CASES),$(call copy-testcase,$(testcase))) 113 $(hide) touch $@ 114 115 # Generate the default test plan for User. 116 # Usage: buildCts.py <testRoot> <ctsOutputDir> <tempDir> <androidRootDir> <docletPath> 117 118 $(DEFAULT_TEST_PLAN): $(pts_dir)/all_pts_files_stamp $(pts_tools_src_dir)/utils/buildCts.py $(HOST_OUT_JAVA_LIBRARIES)/descGen.jar $(PTS_TEST_XMLS) | $(ACP) 119 $(hide) $(ACP) -fp $(PTS_TEST_XMLS) $(PRIVATE_DIR)/repository/testcases 120 $(hide) $(pts_tools_src_dir)/utils/buildCts.py cts/suite/pts $(PRIVATE_DIR) $(TMP_DIR) \ 121 $(TOP) $(HOST_OUT_JAVA_LIBRARIES)/descGen.jar -pts 122 123 # Package PTS and clean up. 124 INTERNAL_PTS_TARGET := $(pts_dir)/$(pts_name).zip 125 $(INTERNAL_PTS_TARGET): PRIVATE_NAME := $(pts_name) 126 $(INTERNAL_PTS_TARGET): PRIVATE_PTS_DIR := $(pts_dir) 127 $(INTERNAL_PTS_TARGET): PRIVATE_DIR := $(pts_dir)/$(pts_name) 128 $(INTERNAL_PTS_TARGET): TMP_DIR := $(pts_dir)/temp 129 $(INTERNAL_PTS_TARGET): $(pts_dir)/all_pts_files_stamp $(DEFAULT_TEST_PLAN) 130 $(hide) echo "Package PTS: $@" 131 $(hide) cd $(dir $@) && zip -rq $(notdir $@) $(PRIVATE_NAME) 132 133 .PHONY: pts 134 pts: $(INTERNAL_PTS_TARGET) 135 cts: pts 136 # generate PTS during CTS build 137 ifneq ($(filter cts, $(MAKECMDGOALS)),) 138 $(call dist-for-goals,cts,$(INTERNAL_PTS_TARGET)) 139 endif 140 141 define copy-testcase-apk 142 143 $(hide) $(ACP) -fp $(call intermediates-dir-for,APPS,$(1))/package.apk \ 144 $(PRIVATE_DIR)/repository/testcases/$(1).apk 145 146 endef 147 148 define copy-testcase 149 150 $(hide) $(ACP) -fp $(1) $(PRIVATE_DIR)/repository/testcases/$(notdir $1) 151 152 endef 153