Read-only mirrors. Development, issues and pull requests are on GitHub.

summaryrefslogtreecommitdiffhomepage
path: root/scripts
diff options
context:
space:
mode:
authorPhil Nash2013-09-27 19:01:14 +0100
committerPhil Nash2013-09-27 19:01:14 +0100
commit2f7a296897e7b3080c96d48e2ffd8eac59136df1 (patch)
treeb7c741bd1f50872c99851cf58c593247b6bf606e /scripts
parent345a4eab9b2386c9bbb517098ef40f16aecfb300 (diff)
downloadcatch3-2f7a296897e7b3080c96d48e2ffd8eac59136df1.tar.gz
Split approve file into multiple files
Diffstat (limited to 'scripts')
-rw-r--r--scripts/approvalTests.py81
-rw-r--r--scripts/approve.py29
2 files changed, 74 insertions, 36 deletions
diff --git a/scripts/approvalTests.py b/scripts/approvalTests.py
index 4dd4e97f..12ea5a73 100644
--- a/scripts/approvalTests.py
+++ b/scripts/approvalTests.py
@@ -10,28 +10,14 @@ lineNumberParser = re.compile( r'(.*)line="[0-9]*"(.*)' )
hexParser = re.compile( r'(.*)\b(0[xX][0-9a-fA-F]+)\b(.*)' )
durationsParser = re.compile( r'(.*)time="[0-9]*\.[0-9]*"(.*)' )
-#catchPath = os.path.dirname(os.path.realpath( os.path.dirname(sys.argv[0])))
-
-baselinesPath = os.path.join( catchPath, 'projects/SelfTest/Baselines/approvedResults.txt' )
-rawResultsPath = os.path.join( catchPath, 'projects/SelfTest/Baselines/_rawResults.tmp' )
-filteredResultsPath = os.path.join( catchPath, 'projects/SelfTest/Baselines/unapprovedResults.txt' )
-
if len(sys.argv) == 2:
cmdPath = sys.argv[1]
else:
cmdPath = os.path.join( catchPath, 'projects/XCode4/CatchSelfTest/DerivedData/CatchSelfTest/Build/Products/Debug/CatchSelfTest' )
-f = open( rawResultsPath, 'w' )
-subprocess.call([ cmdPath, "~dummy", "-r", "console" ], stdout=f, stderr=f )
-subprocess.call([ cmdPath, "~dummy", "-s", "-w", "NoAssertions", "-r", "console" ], stdout=f, stderr=f )
-subprocess.call([ cmdPath, "~dummy", "-s", "-w", "NoAssertions", "-r", "console", "-a", "4" ], stdout=f, stderr=f )
-subprocess.call([ cmdPath, "~dummy", "-s", "-w", "NoAssertions", "-r", "junit" ], stdout=f, stderr=f )
-subprocess.call([ cmdPath, "~dummy", "-s", "-w", "NoAssertions", "-r", "xml" ], stdout=f, stderr=f )
-f.close()
+overallResult = 0
-rawFile = open( rawResultsPath, 'r' )
-filteredFile = open( filteredResultsPath, 'w' )
-for line in rawFile:
+def filterLine( line ):
m = filenameParser.match( line )
if m:
line = m.group(1) + m.group(3)
@@ -49,18 +35,55 @@ for line in rawFile:
m = durationsParser.match( line )
if m:
line = m.group(1) + 'time="{duration}"' + m.group(2)
+ return line
- filteredFile.write( line.rstrip() + "\n" )
-filteredFile.close()
-rawFile.close()
+def approve( baseName, args ):
+ global overallResult
+ args[0:0] = [cmdPath]
+ baselinesPath = os.path.join( catchPath, 'projects/SelfTest/Baselines/{0}.approved.txt'.format( baseName ) )
+ rawResultsPath = os.path.join( catchPath, 'projects/SelfTest/Baselines/_{0}.tmp'.format( baseName ) )
+ filteredResultsPath = os.path.join( catchPath, 'projects/SelfTest/Baselines/{0}.unapproved.txt'.format( baseName ) )
-os.remove( rawResultsPath )
-print
-diffResult = subprocess.call([ "diff", baselinesPath, filteredResultsPath ] )
-if diffResult == 0:
- os.remove( filteredResultsPath )
- print "\033[92mResults matched"
-else:
- print "\n****************************\n\033[91mResults differed"
-print "\033[0m"
-exit( diffResult) \ No newline at end of file
+ f = open( rawResultsPath, 'w' )
+ subprocess.call( args, stdout=f, stderr=f )
+ f.close()
+
+ rawFile = open( rawResultsPath, 'r' )
+ filteredFile = open( filteredResultsPath, 'w' )
+ for line in rawFile:
+ filteredFile.write( filterLine( line ).rstrip() + "\n" )
+ filteredFile.close()
+ rawFile.close()
+
+ os.remove( rawResultsPath )
+ print
+ print baseName + ":"
+ if os.path.exists( baselinesPath ):
+ diffResult = subprocess.call([ "diff", baselinesPath, filteredResultsPath ] )
+ if diffResult == 0:
+ os.remove( filteredResultsPath )
+ print " \033[92mResults matched"
+ else:
+ print " \n****************************\n \033[91mResults differed"
+ if diffResult > overallResult:
+ overallResult = diffResult
+ print "\033[0m"
+ else:
+ print " first approval"
+ if overallResult == 0:
+ overallResult = 1
+
+# Standard console reporter
+approve( "console.std", ["~_"] )
+# console reporter, include passes, warn about No Assertions
+approve( "console.sw", ["~_", "-s", "-w", "NoAssertions"] )
+# console reporter, include passes, warn about No Assertions, limit failures to first 4
+approve( "console.swa4", ["~_", "-s", "-w", "NoAssertions", "-x", "4"] )
+# junit reporter, include passes, warn about No Assertions
+approve( "junit.sw", ["~_", "-s", "-w", "NoAssertions", "-r", "junit"] )
+# xml reporter, include passes, warn about No Assertions
+approve( "xml.sw", ["~_", "-s", "-w", "NoAssertions", "-r", "xml"] )
+
+if overallResult <> 0:
+ print "run approve.py to approve new baselines"
+exit( overallResult) \ No newline at end of file
diff --git a/scripts/approve.py b/scripts/approve.py
index 9302ae56..7801b546 100644
--- a/scripts/approve.py
+++ b/scripts/approve.py
@@ -1,14 +1,29 @@
import os
import sys
import shutil
-
+import glob
from scriptCommon import catchPath
-baselinesPath = os.path.join( catchPath, 'projects/SelfTest/Baselines/approvedResults.txt' )
-filteredResultsPath = os.path.join( catchPath, 'projects/SelfTest/Baselines/unapprovedResults.txt' )
+rootPath = os.path.join( catchPath, 'projects/SelfTest/Baselines' )
+
+if len(sys.argv) > 1:
+ files = [os.path.join( rootPath, f ) for f in sys.argv[1:]]
+else:
+ files = glob.glob( os.path.join( rootPath, "*.unapproved.txt" ) )
+
+
+def approveFile( approvedFile, unapprovedFile ):
+ justFilename = unapprovedFile[len(rootPath)+1:]
+ if os.path.exists( unapprovedFile ):
+ if os.path.exists( approvedFile ):
+ os.remove( approvedFile )
+ os.rename( unapprovedFile, approvedFile )
+ print "approved " + justFilename
+ else:
+ print "approval file " + justFilename + " does not exist"
-if os.path.isfile( filteredResultsPath ):
- os.remove( baselinesPath )
- os.rename( filteredResultsPath, baselinesPath )
+if len(files) > 0:
+ for unapprovedFile in files:
+ approveFile( unapprovedFile.replace( "unapproved.txt", "approved.txt" ), unapprovedFile )
else:
- print "approval file " + filteredResultsPath + " does not exist"
+ print "no files to approve" \ No newline at end of file