mv try-block
diff --git a/src/jsontestrunner/main.cpp b/src/jsontestrunner/main.cpp
index a44a081..deb0687 100644
--- a/src/jsontestrunner/main.cpp
+++ b/src/jsontestrunner/main.cpp
@@ -242,58 +242,60 @@
opts->path = argv[index];
return 0;
}
-static void tryTest(Options const& opts)
+static int runTest(Options const& opts)
{
+ int exitCode = 0;
+
+ std::string input = readInputTestFile(opts.path.c_str());
+ if (input.empty()) {
+ printf("Failed to read input or empty input: %s\n", opts.path.c_str());
+ return 3;
+ }
+
+ std::string basePath = removeSuffix(opts.path, ".json");
+ if (!opts.parseOnly && basePath.empty()) {
+ printf("Bad input path. Path does not end with '.expected':\n%s\n",
+ opts.path.c_str());
+ return 3;
+ }
+
+ std::string const actualPath = basePath + ".actual";
+ std::string const rewritePath = basePath + ".rewrite";
+ std::string const rewriteActualPath = basePath + ".actual-rewrite";
+
+ Json::Value root;
+ exitCode = parseAndSaveValueTree(
+ input, actualPath, "input",
+ opts.features, opts.parseOnly, &root);
+ if (exitCode || opts.parseOnly) {
+ return exitCode;
+ }
+ std::string rewrite;
+ exitCode = rewriteValueTree(rewritePath, root, &rewrite);
+ if (exitCode) {
+ return exitCode;
+ }
+ Json::Value rewriteRoot;
+ exitCode = parseAndSaveValueTree(
+ rewrite, rewriteActualPath, "rewrite",
+ opts.features, opts.parseOnly, &rewriteRoot);
+ if (exitCode) {
+ return exitCode;
+ }
+ return 0;
}
int main(int argc, const char* argv[]) {
Options opts;
int exitCode = parseCommandLine(argc, argv, &opts);
if (exitCode != 0) {
+ printf("Failed to parse command-line.");
return exitCode;
}
-
try {
- std::string input = readInputTestFile(opts.path.c_str());
- if (input.empty()) {
- printf("Failed to read input or empty input: %s\n", opts.path.c_str());
- return 3;
- }
-
- std::string basePath = removeSuffix(opts.path, ".json");
- if (!opts.parseOnly && basePath.empty()) {
- printf("Bad input path. Path does not end with '.expected':\n%s\n",
- opts.path.c_str());
- return 3;
- }
-
- std::string const actualPath = basePath + ".actual";
- std::string const rewritePath = basePath + ".rewrite";
- std::string const rewriteActualPath = basePath + ".actual-rewrite";
-
- Json::Value root;
- exitCode = parseAndSaveValueTree(
- input, actualPath, "input",
- opts.features, opts.parseOnly, &root);
- if (exitCode || opts.parseOnly) {
- return exitCode;
- }
- std::string rewrite;
- exitCode = rewriteValueTree(rewritePath, root, &rewrite);
- if (exitCode) {
- return exitCode;
- }
- Json::Value rewriteRoot;
- exitCode = parseAndSaveValueTree(
- rewrite, rewriteActualPath, "rewrite",
- opts.features, opts.parseOnly, &rewriteRoot);
- if (exitCode) {
- return exitCode;
- }
+ return runTest(opts);
}
catch (const std::exception& e) {
printf("Unhandled exception:\n%s\n", e.what());
- exitCode = 1;
+ return 1;
}
-
- return exitCode;
}