Add pki test files for android, adapt PathService fillin.

Change-Id: Ie5cb298398c1944704c74b63f51323800f6dc5b0
Reviewed-on: https://boringssl-review.googlesource.com/c/boringssl/+/61065
Reviewed-by: David Benjamin <davidben@google.com>
Auto-Submit: Bob Beck <bbe@google.com>
Commit-Queue: David Benjamin <davidben@google.com>
diff --git a/pki/CMakeLists.txt b/pki/CMakeLists.txt
index ebcdd8a..72bbe43 100644
--- a/pki/CMakeLists.txt
+++ b/pki/CMakeLists.txt
@@ -97,8 +97,7 @@
 target_compile_definitions(
   pki_test
   PRIVATE
-  _BORINGSSL_LIBPKI_
-  "_BORINGSSL_PKI_SRCDIR_=${CMAKE_CURRENT_SOURCE_DIR}")
+  _BORINGSSL_LIBPKI_)
 target_link_libraries(pki_test test_support_lib boringssl_gtest_main pki ssl crypto)
 add_dependencies(all_tests pki_test)
 
diff --git a/pki/fillins/path_service.cc b/pki/fillins/path_service.cc
index 3eda232..a915cb1 100644
--- a/pki/fillins/path_service.cc
+++ b/pki/fillins/path_service.cc
@@ -28,15 +28,11 @@
 
 // static
 void PathService::Get(PathKey key, FilePath *out) {
-#if defined(_BORINGSSL_PKI_SRCDIR_)
-  // We stringify the compile parameter because cmake. sigh.
-#define _boringssl_xstr(s) _boringssl_str(s)
-#define _boringssl_str(s) #s
-  const char pki_srcdir[] = _boringssl_xstr(_BORINGSSL_PKI_SRCDIR_);
-#else
-#error "No _BORINGSSL_PKI_SRCDIR"
-#endif  // defined(BORINGSSL_PKI_SRCDIR
-  *out = FilePath(pki_srcdir);
+  // We expect our test data to live in "pki" underneath a
+  // test root directory, or in the current directry.
+  char *root_from_env = getenv("BORINGSSL_TEST_DATA_ROOT");
+  std::string root = root_from_env ? root_from_env : ".";
+  *out = FilePath(root + "/pki");
 }
 
 }  // namespace fillins
diff --git a/util/run_android_tests.go b/util/run_android_tests.go
index ce87819..84297a9 100644
--- a/util/run_android_tests.go
+++ b/util/run_android_tests.go
@@ -310,6 +310,20 @@
 			"BUILDING.md",
 		)
 
+		err := filepath.Walk("pki/testdata/", func(path string, info os.FileInfo, err error) error {
+			if err != nil {
+				return err
+                        }
+			if info.Mode().IsRegular() {
+	                        files = append(files, path)
+                        }
+                        return nil
+                })
+                if err != nil {
+			fmt.Printf("Can't walk pki/testdata: %s\n", err)
+                        os.Exit(1);
+                }
+
 		tests, err := testconfig.ParseTestConfig("util/all_tests.json")
 		if err != nil {
 			fmt.Printf("Failed to parse input: %s\n", err)
@@ -374,6 +388,7 @@
 			"crypto/libcrypto.so",
 			"decrepit/libdecrepit.so",
 			"ssl/libssl.so",
+			"pki/libpki.so",
 		}
 	} else if !os.IsNotExist(err) {
 		fmt.Printf("Failed to stat crypto/libcrypto.so: %s\n", err)