From 58c31ac55056b3ef3394b6d0b8f37ae18b3e8455 Mon Sep 17 00:00:00 2001 From: Christopher Dunn Date: Fri, 23 Jan 2015 11:36:55 -0600 Subject: [PATCH] mv try-block --- src/jsontestrunner/main.cpp | 84 +++++++++++++++++++------------------ 1 file changed, 43 insertions(+), 41 deletions(-) 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 @@ static int parseCommandLine( 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; }