From fd53d957d422d292842ba9b05de74d2c5f0fb5f4 Mon Sep 17 00:00:00 2001 From: David Malcolm Date: Thu, 25 May 2017 13:47:40 -0400 Subject: [PATCH 15/28] FIXME: consolidate selftests in firehose.c --- gcc/firehose.c | 52 +++++++++++++++++----------------------------------- 1 file changed, 17 insertions(+), 35 deletions(-) diff --git a/gcc/firehose.c b/gcc/firehose.c index 0b2ebfd..3de5859 100644 --- a/gcc/firehose.c +++ b/gcc/firehose.c @@ -504,12 +504,14 @@ namespace selftest { /* Selftests. */ -/* FIXME. */ +/* Given JSONFILE, a path relative to SRCDIR/gcc/testsuite/selftests, + load the json Firehose file there, populating OUT. + Fail if any errors occur. */ static void -test_parsing_clang_analyzer () +get_analysis (firehose::analysis &out, const char *jsonfile) { - char *filename = locate_file ("checker-output/test-clang-analyzer.json"); + char *filename = locate_file (jsonfile); char *buffer = selftest::read_file (SELFTEST_LOCATION, filename); ASSERT_TRUE (buffer != NULL); free (filename); @@ -521,10 +523,18 @@ test_parsing_clang_analyzer () ASSERT_TRUE (jv != NULL); //jv->dump(stderr); - firehose::analysis analysis; - analysis.from_json (jv, err); + out.from_json (jv, err); ASSERT_TRUE (err == NULL); delete jv; +} + +/* FIXME. */ + +static void +test_parsing_clang_analyzer () +{ + firehose::analysis analysis; + get_analysis (analysis, "checker-output/test-clang-analyzer.json"); ASSERT_STREQ ("clang-analyzer", analysis.m_metadata.m_generator.m_name); ASSERT_EQ (NULL, analysis.m_metadata.m_generator.m_version); @@ -563,22 +573,8 @@ test_parsing_clang_analyzer () static void test_parsing_cppcheck () { - char *filename = locate_file ("checker-output/test-cppcheck.json"); - char *buffer = selftest::read_file (SELFTEST_LOCATION, filename); - ASSERT_TRUE (buffer != NULL); - free (filename); - - char *err = NULL; - json::value *jv = json::parse_utf8_string (buffer, &err); - free (buffer); - ASSERT_TRUE (err == NULL); - ASSERT_TRUE (jv != NULL); - - //jv->dump(stderr); firehose::analysis analysis; - analysis.from_json (jv, err); - ASSERT_TRUE (err == NULL); - delete jv; + get_analysis (analysis, "checker-output/test-cppcheck.json"); ASSERT_STREQ ("cppcheck", analysis.m_metadata.m_generator.m_name); ASSERT_STREQ ("1.63", analysis.m_metadata.m_generator.m_version); @@ -602,22 +598,8 @@ test_parsing_cppcheck () static void test_parsing_failure () { - char *filename = locate_file ("checker-output/test-failure.json"); - char *buffer = selftest::read_file (SELFTEST_LOCATION, filename); - ASSERT_TRUE (buffer != NULL); - free (filename); - - char *err = NULL; - json::value *jv = json::parse_utf8_string (buffer, &err); - free (buffer); - ASSERT_TRUE (err == NULL); - ASSERT_TRUE (jv != NULL); - - //jv->dump(stderr); firehose::analysis analysis; - analysis.from_json (jv, err); - ASSERT_TRUE (err == NULL); - delete jv; + get_analysis (analysis, "checker-output/test-failure.json"); ASSERT_STREQ ("always-fails", analysis.m_metadata.m_generator.m_name); -- 1.8.5.3