From 93f84b5b0d2ef8edc9dee0c22a2e662b9f4de512 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Martin=20Ho=C5=99e=C5=88ovsk=C3=BD?= Date: Sun, 9 Jul 2017 20:58:51 +0200 Subject: [PATCH] Modified generateSingleHeader script to work with .cpp files better Also fixed the scripts to take into account renamed version file --- include/internal/catch_impl.hpp | 28 +++------------------------- scripts/generateSingleHeader.py | 16 +++++++++++++++- scripts/releaseCommon.py | 2 +- 3 files changed, 19 insertions(+), 27 deletions(-) diff --git a/include/internal/catch_impl.hpp b/include/internal/catch_impl.hpp index 934cd4d1..b084dd5b 100644 --- a/include/internal/catch_impl.hpp +++ b/include/internal/catch_impl.hpp @@ -21,31 +21,9 @@ #include "catch_test_spec.hpp" #include "catch_test_case_tracker.hpp" -// These files are not included in the full (not single include) project -// as they are compiled as proper cpp files -#ifndef CATCH_CONFIG_FULL_PROJECT -# include "catch_assertionresult.cpp" -# include "catch_common.cpp" -# include "catch_console_colour.cpp" -# include "catch_context.cpp" -# include "catch_debugger.cpp" -# include "catch_matchers_string.cpp" -# include "catch_message.cpp" -# include "catch_notimplemented_exception.cpp" -# include "catch_registry_hub.cpp" -# include "catch_result_builder.hpp" -# include "catch_section.cpp" -# include "catch_startup_exception_registry.cpp" -# include "catch_stringref.cpp" -# include "catch_string.cpp" -# include "catch_stringbuilder.cpp" -# include "catch_stringdata.cpp" -# include "catch_tag_alias_registry.cpp" -# include "catch_test_case_info.cpp" -# include "catch_timer.cpp" -# include "catch_tostring.cpp" -# include "catch_version.cpp" -#endif +// Cpp files will be included in the single-header file here +// ~*~* CATCH_CPP_STITCH_PLACE *~*~ + #include "../reporters/catch_reporter_multi.hpp" #include "../reporters/catch_reporter_xml.hpp" diff --git a/scripts/generateSingleHeader.py b/scripts/generateSingleHeader.py index bb267ff5..3b6f722d 100755 --- a/scripts/generateSingleHeader.py +++ b/scripts/generateSingleHeader.py @@ -7,6 +7,7 @@ import sys import re import datetime import string +from glob import glob from scriptCommon import catchPath from releaseCommon import Version @@ -21,6 +22,7 @@ ifImplParser = re.compile( r'\s*#ifdef CATCH_CONFIG_RUNNER' ) commentParser1 = re.compile( r'^\s*/\*') commentParser2 = re.compile( r'^ \*') blankParser = re.compile( r'^\s*$') + seenHeaders = set([]) rootPath = os.path.join( catchPath, 'include/' ) outputPath = os.path.join( catchPath, 'single_include/catch.hpp' ) @@ -49,13 +51,25 @@ def write( line ): if includeImpl or implIfDefs == -1: out.write( line ) +def insertCpps(): + dirs = [os.path.join( rootPath, s) for s in ['', 'internal', 'reporters']] + cppFiles = [] + for dir in dirs: + cppFiles += glob(os.path.join(dir, '*.cpp')) + for fname in cppFiles: + dir, name = fname.rsplit(os.path.sep, 1) + dir += os.path.sep + parseFile(dir, name) + def parseFile( path, filename ): global ifdefs global implIfDefs - f = open( path + filename, 'r' ) + f = open( os.path.join(path, filename), 'r' ) blanks = 0 for line in f: + if '// ~*~* CATCH_CPP_STITCH_PLACE *~*~' in line: + insertCpps() if ifParser.match( line ): ifdefs = ifdefs + 1 elif endIfParser.match( line ): diff --git a/scripts/releaseCommon.py b/scripts/releaseCommon.py index c49f7461..652985c9 100644 --- a/scripts/releaseCommon.py +++ b/scripts/releaseCommon.py @@ -9,7 +9,7 @@ from scriptCommon import catchPath versionParser = re.compile( r'(\s*static\sVersion\sversion)\s*\(\s*(.*)\s*,\s*(.*)\s*,\s*(.*)\s*,\s*\"(.*)\"\s*,\s*(.*)\s*\).*' ) rootPath = os.path.join( catchPath, 'include/' ) -versionPath = os.path.join( rootPath, "internal/catch_version.hpp" ) +versionPath = os.path.join( rootPath, "internal/catch_version.cpp" ) readmePath = os.path.join( catchPath, "README.md" ) class Version: