iOS gtest launcher: get list of tests from executable running in simulator
BUG=426870
[email protected], [email protected]
Review URL: https://codereview.chromium.org/838603004
Cr-Commit-Position: refs/heads/master@{#311652}
diff --git a/base/test/gtest_util.cc b/base/test/gtest_util.cc
index 47fd639..f98320c 100644
--- a/base/test/gtest_util.cc
+++ b/base/test/gtest_util.cc
@@ -40,4 +40,39 @@
return serializer.Serialize(root);
}
+bool ReadTestNamesFromFile(const FilePath& path,
+ std::vector<SplitTestName>* output) {
+ JSONFileValueSerializer deserializer(path);
+ int error_code = 0;
+ std::string error_message;
+ scoped_ptr<base::Value> value(
+ deserializer.Deserialize(&error_code, &error_message));
+ if (!value.get())
+ return false;
+
+ base::ListValue* tests = nullptr;
+ if (!value->GetAsList(&tests))
+ return false;
+
+ std::vector<base::SplitTestName> result;
+ for (base::ListValue::iterator i = tests->begin(); i != tests->end(); ++i) {
+ base::DictionaryValue* test = nullptr;
+ if (!(*i)->GetAsDictionary(&test))
+ return false;
+
+ std::string test_case_name;
+ if (!test->GetStringASCII("test_case_name", &test_case_name))
+ return false;
+
+ std::string test_name;
+ if (!test->GetStringASCII("test_name", &test_name))
+ return false;
+
+ result.push_back(std::make_pair(test_case_name, test_name));
+ }
+
+ output->swap(result);
+ return true;
+}
+
} // namespace