catchorg / catchorg/Catch2

Catch2 version string could be better

Open
#2,434 3 comments 0 reactions 0 assignees View on GitHub
Tweak request
Dominant language
C++
Stars
21.5k
Forks
3.5k
Avg merge
3d 16h
Merged PRs (30d)
2

Description

**Description**
It would be better if there was a more informative version string output.

**Additional context**
The current implementation does not seem fitting for git.

I would like something like this: `3.0.1 at devel commit: 3a18a688a07e3f7217d7a1b0ae45a324edfdef52`

I am not creating pull request because I don't know the reason for the current implementation.
I am happy to give this as a pull request.

**Sample implementation**
`catch_version.cpp`
```c++
Version::Version
( unsigned int _majorVersion,
unsigned int _minorVersion,
unsigned int _patchNumber,
char const * const _branchName,
char const * const _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;
// branchName is never null -> 0th char is \0 if it is empty
if (version.branchName[0]) {
os << " at " << version.branchName
<< " commit: " << version.buildNumber;
}
return os;
}

Version const& libraryVersion() {
static Version version( 3, 0, 1, "devel", "3a18a688a07e3f7217d7a1b0ae45a324edfdef52" );
return version;
}
```
`catch_version.hpp`
```c++
// Versioning information
struct Version {
Version( Version const& ) = delete;
Version& operator=( Version const& ) = delete;
Version( unsigned int _majorVersion,
unsigned int _minorVersion,
unsigned int _patchNumber,
char const * const _branchName,
char const * const _buildNumber );

unsigned int const majorVersion;
unsigned int const minorVersion;
unsigned int const patchNumber;

// buildNumber is only used if branchName is not null
char const * const branchName;
char const* const buildNumber;

friend std::ostream& operator << ( std::ostream& os, Version const& version );
};

Version const& libraryVersion();
```

Contributor guide

Open the contributing guide

Assessment

This issue has not been assessed yet.

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.