mirror of
https://github.com/catchorg/Catch2.git
synced 2024-11-22 21:36:11 +01:00
Committed to semantic versioning
as prompted by #365, #430, #447 and a thread on the google group. - split version bumping out of generateSingleHeader script - separate scripts for bumping each version component - "build" number only incremented for "develop" builds
This commit is contained in:
parent
f5fef1ebed
commit
21f7ef6fdc
@ -1,6 +1,6 @@
|
|||||||
![catch logo](catch-logo-small.png)
|
![catch logo](catch-logo-small.png)
|
||||||
|
|
||||||
*v1.1 build 3 (master branch)*
|
*v1.2.0*
|
||||||
|
|
||||||
Build status (on Travis CI) [![Build Status](https://travis-ci.org/philsquared/Catch.png)](https://travis-ci.org/philsquared/Catch)
|
Build status (on Travis CI) [![Build Status](https://travis-ci.org/philsquared/Catch.png)](https://travis-ci.org/philsquared/Catch)
|
||||||
|
|
||||||
|
@ -6,7 +6,7 @@ If you are contributing to the code base there are a few simple guidelines to ke
|
|||||||
|
|
||||||
## Branches
|
## Branches
|
||||||
|
|
||||||
Ongoing development is on the "develop" branch, or on feature branches that are branched off of develop. Please target any pull requests at develop, or, for larger chunks of work, a branch off of develop.
|
Ongoing development is on the "develop" branch (if there is one, currently), or on feature branches that are branched off of develop. Please target any pull requests at develop, or, for larger chunks of work, a branch off of develop.
|
||||||
|
|
||||||
## Directory structure
|
## Directory structure
|
||||||
|
|
||||||
|
@ -126,12 +126,7 @@ namespace Catch {
|
|||||||
}
|
}
|
||||||
|
|
||||||
void showHelp( std::string const& processName ) {
|
void showHelp( std::string const& processName ) {
|
||||||
Catch::cout() << "\nCatch v" << libraryVersion.majorVersion << "."
|
Catch::cout() << "\nCatch v" << libraryVersion << "\n";
|
||||||
<< libraryVersion.minorVersion << " build "
|
|
||||||
<< libraryVersion.buildNumber;
|
|
||||||
if( libraryVersion.branchName != std::string( "master" ) )
|
|
||||||
Catch::cout() << " (" << libraryVersion.branchName << " branch)";
|
|
||||||
Catch::cout() << "\n";
|
|
||||||
|
|
||||||
m_cli.usage( Catch::cout(), processName );
|
m_cli.usage( Catch::cout(), processName );
|
||||||
Catch::cout() << "For more detail usage please see the project docs\n" << std::endl;
|
Catch::cout() << "For more detail usage please see the project docs\n" << std::endl;
|
||||||
@ -148,9 +143,10 @@ namespace Catch {
|
|||||||
catch( std::exception& ex ) {
|
catch( std::exception& ex ) {
|
||||||
{
|
{
|
||||||
Colour colourGuard( Colour::Red );
|
Colour colourGuard( Colour::Red );
|
||||||
Catch::cerr() << "\nError(s) in input:\n"
|
Catch::cerr()
|
||||||
<< Text( ex.what(), TextAttributes().setIndent(2) )
|
<< "\nError(s) in input:\n"
|
||||||
<< "\n\n";
|
<< Text( ex.what(), TextAttributes().setIndent(2) )
|
||||||
|
<< "\n\n";
|
||||||
}
|
}
|
||||||
m_cli.usage( Catch::cout(), m_configData.processName );
|
m_cli.usage( Catch::cout(), m_configData.processName );
|
||||||
return (std::numeric_limits<int>::max)();
|
return (std::numeric_limits<int>::max)();
|
||||||
|
@ -14,18 +14,19 @@ namespace Catch {
|
|||||||
struct Version {
|
struct Version {
|
||||||
Version( unsigned int _majorVersion,
|
Version( unsigned int _majorVersion,
|
||||||
unsigned int _minorVersion,
|
unsigned int _minorVersion,
|
||||||
unsigned int _buildNumber,
|
unsigned int _patchNumber,
|
||||||
char const* const _branchName )
|
std::string const& _branchName,
|
||||||
: majorVersion( _majorVersion ),
|
unsigned int _buildNumber );
|
||||||
minorVersion( _minorVersion ),
|
|
||||||
buildNumber( _buildNumber ),
|
|
||||||
branchName( _branchName )
|
|
||||||
{}
|
|
||||||
|
|
||||||
unsigned int const majorVersion;
|
unsigned int const majorVersion;
|
||||||
unsigned int const minorVersion;
|
unsigned int const minorVersion;
|
||||||
|
unsigned int const patchNumber;
|
||||||
|
|
||||||
|
// buildNumber is only used if branchName is not null
|
||||||
|
std::string const branchName;
|
||||||
unsigned int const buildNumber;
|
unsigned int const buildNumber;
|
||||||
char const* const branchName;
|
|
||||||
|
friend std::ostream& operator << ( std::ostream& os, Version const& version );
|
||||||
|
|
||||||
private:
|
private:
|
||||||
void operator=( Version const& );
|
void operator=( Version const& );
|
||||||
|
@ -12,8 +12,33 @@
|
|||||||
|
|
||||||
namespace Catch {
|
namespace Catch {
|
||||||
|
|
||||||
// These numbers are maintained by a script
|
Version::Version
|
||||||
Version libraryVersion( 1, 1, 3, "master" );
|
( unsigned int _majorVersion,
|
||||||
|
unsigned int _minorVersion,
|
||||||
|
unsigned int _patchNumber,
|
||||||
|
std::string const& _branchName,
|
||||||
|
unsigned int _buildNumber )
|
||||||
|
: majorVersion( _majorVersion ),
|
||||||
|
minorVersion( _minorVersion ),
|
||||||
|
patchNumber( _patchNumber ),
|
||||||
|
branchName( _branchName ),
|
||||||
|
buildNumber( _buildNumber )
|
||||||
|
{}
|
||||||
|
|
||||||
|
std::ostream& operator << ( std::ostream& os, Version const& version ) {
|
||||||
|
os << version.majorVersion << "."
|
||||||
|
<< version.minorVersion << "."
|
||||||
|
<< version.patchNumber;
|
||||||
|
|
||||||
|
if( !version.branchName.empty() ) {
|
||||||
|
os << "-" << version.branchName
|
||||||
|
<< "." << version.buildNumber;
|
||||||
|
}
|
||||||
|
return os;
|
||||||
|
}
|
||||||
|
|
||||||
|
Version libraryVersion( 1, 2, 0, "", 0 );
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
#endif // TWOBLUECUBES_CATCH_VERSION_HPP_INCLUDED
|
#endif // TWOBLUECUBES_CATCH_VERSION_HPP_INCLUDED
|
||||||
|
@ -261,12 +261,7 @@ namespace Catch {
|
|||||||
stream << "\n" << getLineOfChars<'~'>() << "\n";
|
stream << "\n" << getLineOfChars<'~'>() << "\n";
|
||||||
Colour colour( Colour::SecondaryText );
|
Colour colour( Colour::SecondaryText );
|
||||||
stream << currentTestRunInfo->name
|
stream << currentTestRunInfo->name
|
||||||
<< " is a Catch v" << libraryVersion.majorVersion << "."
|
<< " is a Catch v" << libraryVersion << " host application.\n"
|
||||||
<< libraryVersion.minorVersion << " b"
|
|
||||||
<< libraryVersion.buildNumber;
|
|
||||||
if( libraryVersion.branchName != std::string( "master" ) )
|
|
||||||
stream << " (" << libraryVersion.branchName << ")";
|
|
||||||
stream << " host application.\n"
|
|
||||||
<< "Run with -? for options\n\n";
|
<< "Run with -? for options\n\n";
|
||||||
|
|
||||||
if( m_config->rngSeed() != 0 )
|
if( m_config->rngSeed() != 0 )
|
||||||
|
9
scripts/developBuild.py
Normal file
9
scripts/developBuild.py
Normal file
@ -0,0 +1,9 @@
|
|||||||
|
from __future__ import print_function
|
||||||
|
from releaseCommon import Version
|
||||||
|
|
||||||
|
v = Version()
|
||||||
|
v.incrementBuildNumber()
|
||||||
|
v.updateVersionFile()
|
||||||
|
v.updateReadmeFile()
|
||||||
|
|
||||||
|
print( "Updated Version.hpp and README to v{0}".format( v.getVersionString() ) )
|
@ -7,8 +7,9 @@ import datetime
|
|||||||
import string
|
import string
|
||||||
|
|
||||||
from scriptCommon import catchPath
|
from scriptCommon import catchPath
|
||||||
|
from releaseCommon import Version
|
||||||
|
|
||||||
|
|
||||||
versionParser = re.compile( r'(\s*Version\slibraryVersion)\s*\(\s*(.*)\s*,\s*(.*)\s*,\s*(.*)\s*,\s*\"(.*)\"\s*\).*' )
|
|
||||||
includesParser = re.compile( r'\s*#include\s*"(.*)"' )
|
includesParser = re.compile( r'\s*#include\s*"(.*)"' )
|
||||||
guardParser = re.compile( r'\s*#.*TWOBLUECUBES_CATCH_.*_INCLUDED')
|
guardParser = re.compile( r'\s*#.*TWOBLUECUBES_CATCH_.*_INCLUDED')
|
||||||
defineParser = re.compile( r'\s*#define')
|
defineParser = re.compile( r'\s*#define')
|
||||||
@ -20,22 +21,15 @@ commentParser2 = re.compile( r'^ \*')
|
|||||||
blankParser = re.compile( r'^\s*$')
|
blankParser = re.compile( r'^\s*$')
|
||||||
seenHeaders = set([])
|
seenHeaders = set([])
|
||||||
rootPath = os.path.join( catchPath, 'include/' )
|
rootPath = os.path.join( catchPath, 'include/' )
|
||||||
versionPath = os.path.join( rootPath, "internal/catch_version.hpp" )
|
|
||||||
readmePath = os.path.join( catchPath, "README.md" )
|
|
||||||
outputPath = os.path.join( catchPath, 'single_include/catch.hpp' )
|
outputPath = os.path.join( catchPath, 'single_include/catch.hpp' )
|
||||||
|
|
||||||
bumpVersion = True
|
|
||||||
includeImpl = True
|
includeImpl = True
|
||||||
|
|
||||||
for arg in sys.argv[1:]:
|
for arg in sys.argv[1:]:
|
||||||
arg = string.lower(arg)
|
arg = string.lower(arg)
|
||||||
if arg == "nobump":
|
if arg == "noimpl":
|
||||||
bumpVersion = False
|
|
||||||
print( "Not bumping version number" )
|
|
||||||
elif arg == "noimpl":
|
|
||||||
includeImpl = False
|
includeImpl = False
|
||||||
bumpVersion = False
|
print( "Not including impl code" )
|
||||||
print( "Not including impl code (and not bumping version)" )
|
|
||||||
else:
|
else:
|
||||||
print( "\n** Unrecognised argument: " + arg + " **\n" )
|
print( "\n** Unrecognised argument: " + arg + " **\n" )
|
||||||
exit(1)
|
exit(1)
|
||||||
@ -87,70 +81,23 @@ def parseFile( path, filename ):
|
|||||||
if blanks < 2:
|
if blanks < 2:
|
||||||
write( line.rstrip() + "\n" )
|
write( line.rstrip() + "\n" )
|
||||||
|
|
||||||
class Version:
|
|
||||||
def __init__(self):
|
|
||||||
f = open( versionPath, 'r' )
|
|
||||||
for line in f:
|
|
||||||
m = versionParser.match( line )
|
|
||||||
if m:
|
|
||||||
self.variableDecl = m.group(1)
|
|
||||||
self.majorVersion = int(m.group(2))
|
|
||||||
self.minorVersion = int(m.group(3))
|
|
||||||
self.buildNumber = int(m.group(4))
|
|
||||||
self.branchName = m.group(5)
|
|
||||||
f.close()
|
|
||||||
|
|
||||||
def incrementBuildNumber(self):
|
v = Version()
|
||||||
self.buildNumber = self.buildNumber+1
|
out.write( "/*\n" )
|
||||||
|
out.write( " * Catch v{0}\n".format( v.getVersionString() ) )
|
||||||
|
out.write( " * Generated: {0}\n".format( datetime.datetime.now() ) )
|
||||||
|
out.write( " * ----------------------------------------------------------\n" )
|
||||||
|
out.write( " * This file has been merged from multiple headers. Please don't edit it directly\n" )
|
||||||
|
out.write( " * Copyright (c) 2012 Two Blue Cubes Ltd. All rights reserved.\n" )
|
||||||
|
out.write( " *\n" )
|
||||||
|
out.write( " * Distributed under the Boost Software License, Version 1.0. (See accompanying\n" )
|
||||||
|
out.write( " * file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)\n" )
|
||||||
|
out.write( " */\n" )
|
||||||
|
out.write( "#ifndef TWOBLUECUBES_SINGLE_INCLUDE_CATCH_HPP_INCLUDED\n" )
|
||||||
|
out.write( "#define TWOBLUECUBES_SINGLE_INCLUDE_CATCH_HPP_INCLUDED\n" )
|
||||||
|
|
||||||
def updateVersionFile(self):
|
parseFile( rootPath, 'catch.hpp' )
|
||||||
f = open( versionPath, 'r' )
|
|
||||||
lines = []
|
|
||||||
for line in f:
|
|
||||||
m = versionParser.match( line )
|
|
||||||
if m:
|
|
||||||
lines.append( '{0}( {1}, {2}, {3}, "{4}" );'.format( self.variableDecl, self.majorVersion, self.minorVersion, self.buildNumber, self.branchName ) )
|
|
||||||
else:
|
|
||||||
lines.append( line.rstrip() )
|
|
||||||
f.close()
|
|
||||||
f = open( versionPath, 'w' )
|
|
||||||
for line in lines:
|
|
||||||
f.write( line + "\n" )
|
|
||||||
|
|
||||||
def updateReadmeFile(self):
|
out.write( "#endif // TWOBLUECUBES_SINGLE_INCLUDE_CATCH_HPP_INCLUDED\n\n" )
|
||||||
f = open( readmePath, 'r' )
|
|
||||||
lines = []
|
|
||||||
for line in f:
|
|
||||||
lines.append( line.rstrip() )
|
|
||||||
f.close()
|
|
||||||
f = open( readmePath, 'w' )
|
|
||||||
for line in lines:
|
|
||||||
if line.startswith( "*v" ):
|
|
||||||
f.write( '*v{0}.{1} build {2} ({3} branch)*\n'.format( self.majorVersion, self.minorVersion, self.buildNumber, self.branchName ) )
|
|
||||||
else:
|
|
||||||
f.write( line + "\n" )
|
|
||||||
|
|
||||||
def generateSingleInclude():
|
print ("Generated single include for Catch v{0}\n".format( v.getVersionString() ) )
|
||||||
v = Version()
|
|
||||||
if bumpVersion:
|
|
||||||
v.incrementBuildNumber()
|
|
||||||
v.updateVersionFile()
|
|
||||||
v.updateReadmeFile()
|
|
||||||
out.write( "/*\n" )
|
|
||||||
out.write( " * CATCH v{0}.{1} build {2} ({3} branch)\n".format( v.majorVersion, v.minorVersion, v.buildNumber, v.branchName ) )
|
|
||||||
out.write( " * Generated: {0}\n".format( datetime.datetime.now() ) )
|
|
||||||
out.write( " * ----------------------------------------------------------\n" )
|
|
||||||
out.write( " * This file has been merged from multiple headers. Please don't edit it directly\n" )
|
|
||||||
out.write( " * Copyright (c) 2012 Two Blue Cubes Ltd. All rights reserved.\n" )
|
|
||||||
out.write( " *\n" )
|
|
||||||
out.write( " * Distributed under the Boost Software License, Version 1.0. (See accompanying\n" )
|
|
||||||
out.write( " * file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)\n" )
|
|
||||||
out.write( " */\n" )
|
|
||||||
out.write( "#ifndef TWOBLUECUBES_SINGLE_INCLUDE_CATCH_HPP_INCLUDED\n" )
|
|
||||||
out.write( "#define TWOBLUECUBES_SINGLE_INCLUDE_CATCH_HPP_INCLUDED\n" )
|
|
||||||
|
|
||||||
parseFile( rootPath, 'catch.hpp' )
|
|
||||||
|
|
||||||
out.write( "#endif // TWOBLUECUBES_SINGLE_INCLUDE_CATCH_HPP_INCLUDED\n\n" )
|
|
||||||
|
|
||||||
generateSingleInclude()
|
|
||||||
|
9
scripts/majorRelease.py
Normal file
9
scripts/majorRelease.py
Normal file
@ -0,0 +1,9 @@
|
|||||||
|
from __future__ import print_function
|
||||||
|
from releaseCommon import Version
|
||||||
|
|
||||||
|
v = Version()
|
||||||
|
v.incrementMajorVersion()
|
||||||
|
v.updateVersionFile()
|
||||||
|
v.updateReadmeFile()
|
||||||
|
|
||||||
|
print( "Updated Version.hpp and README to v{0}".format( v.getVersionString() ) )
|
9
scripts/minorRelease.py
Normal file
9
scripts/minorRelease.py
Normal file
@ -0,0 +1,9 @@
|
|||||||
|
from __future__ import print_function
|
||||||
|
from releaseCommon import Version
|
||||||
|
|
||||||
|
v = Version()
|
||||||
|
v.incrementMinorVersion()
|
||||||
|
v.updateVersionFile()
|
||||||
|
v.updateReadmeFile()
|
||||||
|
|
||||||
|
print( "Updated Version.hpp and README to v{0}".format( v.getVersionString() ) )
|
9
scripts/patchRelease.py
Normal file
9
scripts/patchRelease.py
Normal file
@ -0,0 +1,9 @@
|
|||||||
|
from __future__ import print_function
|
||||||
|
from releaseCommon import Version
|
||||||
|
|
||||||
|
v = Version()
|
||||||
|
v.incrementPatchNumber()
|
||||||
|
v.updateVersionFile()
|
||||||
|
v.updateReadmeFile()
|
||||||
|
|
||||||
|
print( "Updated Version.hpp and README to v{0}".format( v.getVersionString() ) )
|
89
scripts/releaseCommon.py
Normal file
89
scripts/releaseCommon.py
Normal file
@ -0,0 +1,89 @@
|
|||||||
|
from __future__ import print_function
|
||||||
|
|
||||||
|
import os
|
||||||
|
import sys
|
||||||
|
import re
|
||||||
|
import string
|
||||||
|
|
||||||
|
from scriptCommon import catchPath
|
||||||
|
|
||||||
|
versionParser = re.compile( r'(\s*Version\slibraryVersion)\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" )
|
||||||
|
readmePath = os.path.join( catchPath, "README.md" )
|
||||||
|
|
||||||
|
class Version:
|
||||||
|
def __init__(self):
|
||||||
|
f = open( versionPath, 'r' )
|
||||||
|
for line in f:
|
||||||
|
m = versionParser.match( line )
|
||||||
|
if m:
|
||||||
|
self.variableDecl = m.group(1)
|
||||||
|
self.majorVersion = int(m.group(2))
|
||||||
|
self.minorVersion = int(m.group(3))
|
||||||
|
self.patchNumber = int(m.group(4))
|
||||||
|
self.branchName = m.group(5)
|
||||||
|
self.buildNumber = int(m.group(6))
|
||||||
|
f.close()
|
||||||
|
|
||||||
|
def nonDevelopRelease(self):
|
||||||
|
if self.branchName != "":
|
||||||
|
self.branchName = ""
|
||||||
|
self.buildNumber = 0
|
||||||
|
def developBuild(self):
|
||||||
|
if self.branchName == "":
|
||||||
|
self.branchName = "develop"
|
||||||
|
self.buildNumber = 0
|
||||||
|
|
||||||
|
def incrementBuildNumber(self):
|
||||||
|
self.developBuild()
|
||||||
|
self.buildNumber = self.buildNumber+1
|
||||||
|
|
||||||
|
def incrementPatchNumber(self):
|
||||||
|
self.nonDevelopRelease()
|
||||||
|
self.patchNumber = self.patchNumber+1
|
||||||
|
|
||||||
|
def incrementMinorVersion(self):
|
||||||
|
self.nonDevelopRelease()
|
||||||
|
self.patchNumber = 0
|
||||||
|
self.minorVersion = self.minorVersion+1
|
||||||
|
|
||||||
|
def incrementMajorVersion(self):
|
||||||
|
self.nonDevelopRelease()
|
||||||
|
self.patchNumber = 0
|
||||||
|
self.minorVersion = 0
|
||||||
|
self.majorVersion = self.majorVersion+1
|
||||||
|
|
||||||
|
def getVersionString(self):
|
||||||
|
versionString = '{0}.{1}.{2}'.format( self.majorVersion, self.minorVersion, self.patchNumber )
|
||||||
|
if self.branchName != "":
|
||||||
|
versionString = versionString + '-{0}.{1}'.format( self.branchName, self.buildNumber )
|
||||||
|
return versionString
|
||||||
|
|
||||||
|
def updateVersionFile(self):
|
||||||
|
f = open( versionPath, 'r' )
|
||||||
|
lines = []
|
||||||
|
for line in f:
|
||||||
|
m = versionParser.match( line )
|
||||||
|
if m:
|
||||||
|
lines.append( '{0}( {1}, {2}, {3}, "{4}", {5} );'.format( self.variableDecl, self.majorVersion, self.minorVersion, self.patchNumber, self.branchName, self.buildNumber ) )
|
||||||
|
else:
|
||||||
|
lines.append( line.rstrip() )
|
||||||
|
f.close()
|
||||||
|
f = open( versionPath, 'w' )
|
||||||
|
for line in lines:
|
||||||
|
f.write( line + "\n" )
|
||||||
|
|
||||||
|
def updateReadmeFile(self):
|
||||||
|
f = open( readmePath, 'r' )
|
||||||
|
lines = []
|
||||||
|
for line in f:
|
||||||
|
lines.append( line.rstrip() )
|
||||||
|
f.close()
|
||||||
|
f = open( readmePath, 'w' )
|
||||||
|
for line in lines:
|
||||||
|
if line.startswith( "*v" ):
|
||||||
|
f.write( '*v{0}*\n'.format( self.getVersionString() ) )
|
||||||
|
else:
|
||||||
|
f.write( line + "\n" )
|
||||||
|
|
@ -1,6 +1,6 @@
|
|||||||
/*
|
/*
|
||||||
* CATCH v1.1 build 3 (master branch)
|
* Catch v1.2.0
|
||||||
* Generated: 2015-05-21 06:16:00.388118
|
* Generated: 2015-06-29 08:12:52.943445
|
||||||
* ----------------------------------------------------------
|
* ----------------------------------------------------------
|
||||||
* This file has been merged from multiple headers. Please don't edit it directly
|
* This file has been merged from multiple headers. Please don't edit it directly
|
||||||
* Copyright (c) 2012 Two Blue Cubes Ltd. All rights reserved.
|
* Copyright (c) 2012 Two Blue Cubes Ltd. All rights reserved.
|
||||||
@ -798,8 +798,8 @@ namespace Catch {
|
|||||||
ResultDisposition::Flags resultDisposition );
|
ResultDisposition::Flags resultDisposition );
|
||||||
|
|
||||||
template<typename T>
|
template<typename T>
|
||||||
ExpressionLhs<T const&> operator->* ( T const& operand );
|
ExpressionLhs<T const&> operator <= ( T const& operand );
|
||||||
ExpressionLhs<bool> operator->* ( bool value );
|
ExpressionLhs<bool> operator <= ( bool value );
|
||||||
|
|
||||||
template<typename T>
|
template<typename T>
|
||||||
ResultBuilder& operator << ( T const& value ) {
|
ResultBuilder& operator << ( T const& value ) {
|
||||||
@ -1461,11 +1461,11 @@ private:
|
|||||||
namespace Catch {
|
namespace Catch {
|
||||||
|
|
||||||
template<typename T>
|
template<typename T>
|
||||||
inline ExpressionLhs<T const&> ResultBuilder::operator->* ( T const& operand ) {
|
inline ExpressionLhs<T const&> ResultBuilder::operator <= ( T const& operand ) {
|
||||||
return ExpressionLhs<T const&>( *this, operand );
|
return ExpressionLhs<T const&>( *this, operand );
|
||||||
}
|
}
|
||||||
|
|
||||||
inline ExpressionLhs<bool> ResultBuilder::operator->* ( bool value ) {
|
inline ExpressionLhs<bool> ResultBuilder::operator <= ( bool value ) {
|
||||||
return ExpressionLhs<bool>( *this, value );
|
return ExpressionLhs<bool>( *this, value );
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -1637,7 +1637,7 @@ namespace Catch {
|
|||||||
do { \
|
do { \
|
||||||
Catch::ResultBuilder __catchResult( macroName, CATCH_INTERNAL_LINEINFO, #expr, resultDisposition ); \
|
Catch::ResultBuilder __catchResult( macroName, CATCH_INTERNAL_LINEINFO, #expr, resultDisposition ); \
|
||||||
try { \
|
try { \
|
||||||
( __catchResult->*expr ).endExpression(); \
|
( __catchResult <= expr ).endExpression(); \
|
||||||
} \
|
} \
|
||||||
catch( ... ) { \
|
catch( ... ) { \
|
||||||
__catchResult.useActiveException( Catch::ResultDisposition::Normal ); \
|
__catchResult.useActiveException( Catch::ResultDisposition::Normal ); \
|
||||||
@ -5539,18 +5539,19 @@ namespace Catch {
|
|||||||
struct Version {
|
struct Version {
|
||||||
Version( unsigned int _majorVersion,
|
Version( unsigned int _majorVersion,
|
||||||
unsigned int _minorVersion,
|
unsigned int _minorVersion,
|
||||||
unsigned int _buildNumber,
|
unsigned int _patchNumber,
|
||||||
char const* const _branchName )
|
std::string const& _branchName,
|
||||||
: majorVersion( _majorVersion ),
|
unsigned int _buildNumber );
|
||||||
minorVersion( _minorVersion ),
|
|
||||||
buildNumber( _buildNumber ),
|
|
||||||
branchName( _branchName )
|
|
||||||
{}
|
|
||||||
|
|
||||||
unsigned int const majorVersion;
|
unsigned int const majorVersion;
|
||||||
unsigned int const minorVersion;
|
unsigned int const minorVersion;
|
||||||
|
unsigned int const patchNumber;
|
||||||
|
|
||||||
|
// buildNumber is only used if branchName is not null
|
||||||
|
std::string const branchName;
|
||||||
unsigned int const buildNumber;
|
unsigned int const buildNumber;
|
||||||
char const* const branchName;
|
|
||||||
|
friend std::ostream& operator << ( std::ostream& os, Version const& version );
|
||||||
|
|
||||||
private:
|
private:
|
||||||
void operator=( Version const& );
|
void operator=( Version const& );
|
||||||
@ -5670,12 +5671,7 @@ namespace Catch {
|
|||||||
}
|
}
|
||||||
|
|
||||||
void showHelp( std::string const& processName ) {
|
void showHelp( std::string const& processName ) {
|
||||||
Catch::cout() << "\nCatch v" << libraryVersion.majorVersion << "."
|
Catch::cout() << "\nCatch v" << libraryVersion << "\n";
|
||||||
<< libraryVersion.minorVersion << " build "
|
|
||||||
<< libraryVersion.buildNumber;
|
|
||||||
if( libraryVersion.branchName != std::string( "master" ) )
|
|
||||||
Catch::cout() << " (" << libraryVersion.branchName << " branch)";
|
|
||||||
Catch::cout() << "\n";
|
|
||||||
|
|
||||||
m_cli.usage( Catch::cout(), processName );
|
m_cli.usage( Catch::cout(), processName );
|
||||||
Catch::cout() << "For more detail usage please see the project docs\n" << std::endl;
|
Catch::cout() << "For more detail usage please see the project docs\n" << std::endl;
|
||||||
@ -5692,9 +5688,10 @@ namespace Catch {
|
|||||||
catch( std::exception& ex ) {
|
catch( std::exception& ex ) {
|
||||||
{
|
{
|
||||||
Colour colourGuard( Colour::Red );
|
Colour colourGuard( Colour::Red );
|
||||||
Catch::cerr() << "\nError(s) in input:\n"
|
Catch::cerr()
|
||||||
<< Text( ex.what(), TextAttributes().setIndent(2) )
|
<< "\nError(s) in input:\n"
|
||||||
<< "\n\n";
|
<< Text( ex.what(), TextAttributes().setIndent(2) )
|
||||||
|
<< "\n\n";
|
||||||
}
|
}
|
||||||
m_cli.usage( Catch::cout(), m_configData.processName );
|
m_cli.usage( Catch::cout(), m_configData.processName );
|
||||||
return (std::numeric_limits<int>::max)();
|
return (std::numeric_limits<int>::max)();
|
||||||
@ -6806,8 +6803,33 @@ namespace Catch {
|
|||||||
|
|
||||||
namespace Catch {
|
namespace Catch {
|
||||||
|
|
||||||
// These numbers are maintained by a script
|
Version::Version
|
||||||
Version libraryVersion( 1, 1, 3, "master" );
|
( unsigned int _majorVersion,
|
||||||
|
unsigned int _minorVersion,
|
||||||
|
unsigned int _patchNumber,
|
||||||
|
std::string const& _branchName,
|
||||||
|
unsigned int _buildNumber )
|
||||||
|
: majorVersion( _majorVersion ),
|
||||||
|
minorVersion( _minorVersion ),
|
||||||
|
patchNumber( _patchNumber ),
|
||||||
|
branchName( _branchName ),
|
||||||
|
buildNumber( _buildNumber )
|
||||||
|
{}
|
||||||
|
|
||||||
|
std::ostream& operator << ( std::ostream& os, Version const& version ) {
|
||||||
|
os << version.majorVersion << "."
|
||||||
|
<< version.minorVersion << "."
|
||||||
|
<< version.patchNumber;
|
||||||
|
|
||||||
|
if( !version.branchName.empty() ) {
|
||||||
|
os << "-" << version.branchName
|
||||||
|
<< "." << version.buildNumber;
|
||||||
|
}
|
||||||
|
return os;
|
||||||
|
}
|
||||||
|
|
||||||
|
Version libraryVersion( 1, 2, 0, "", 0 );
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
// #included from: catch_message.hpp
|
// #included from: catch_message.hpp
|
||||||
@ -8733,12 +8755,7 @@ namespace Catch {
|
|||||||
stream << "\n" << getLineOfChars<'~'>() << "\n";
|
stream << "\n" << getLineOfChars<'~'>() << "\n";
|
||||||
Colour colour( Colour::SecondaryText );
|
Colour colour( Colour::SecondaryText );
|
||||||
stream << currentTestRunInfo->name
|
stream << currentTestRunInfo->name
|
||||||
<< " is a Catch v" << libraryVersion.majorVersion << "."
|
<< " is a Catch v" << libraryVersion << " host application.\n"
|
||||||
<< libraryVersion.minorVersion << " b"
|
|
||||||
<< libraryVersion.buildNumber;
|
|
||||||
if( libraryVersion.branchName != std::string( "master" ) )
|
|
||||||
stream << " (" << libraryVersion.branchName << ")";
|
|
||||||
stream << " host application.\n"
|
|
||||||
<< "Run with -? for options\n\n";
|
<< "Run with -? for options\n\n";
|
||||||
|
|
||||||
if( m_config->rngSeed() != 0 )
|
if( m_config->rngSeed() != 0 )
|
||||||
|
Loading…
Reference in New Issue
Block a user