aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorRobin Krahl <me@robin-krahl.de>2018-06-21 10:40:21 +0200
committerRobin Krahl <me@robin-krahl.de>2018-06-21 10:40:21 +0200
commitafb7a48046142fe666eda64338f89677e79db705 (patch)
treea5f2ddb20e16815ffb3637a16d47235807f0211b
parente1ef8d79809190c5ac5d540bd4aa376dcfda7e93 (diff)
downloadlibnitrokey-afb7a48046142fe666eda64338f89677e79db705.tar.gz
libnitrokey-afb7a48046142fe666eda64338f89677e79db705.tar.bz2
Fix unit test for get_library_version for release commits
`git describe` may return a tag name or <tag>-<n>-g<hash>, where <n> is the number of commits since the last tag <tag> and <hash> is the hash of the current commit. The current test case only considers the latter case. This patch adds a regular expression to handle both cases.
-rw-r--r--unittest/test_offline.cc13
1 files changed, 11 insertions, 2 deletions
diff --git a/unittest/test_offline.cc b/unittest/test_offline.cc
index aad875f..6f52a61 100644
--- a/unittest/test_offline.cc
+++ b/unittest/test_offline.cc
@@ -22,6 +22,8 @@
#include "catch.hpp"
#include <NitrokeyManager.h>
#include <memory>
+#include <string>
+#include <regex>
#include "../NK_C_API.h"
using namespace nitrokey::proto;
@@ -167,7 +169,14 @@ TEST_CASE("Test version getter", "[fast]") {
REQUIRE(nitrokey::get_minor_library_version() >= 3u);
const char *library_version = nitrokey::get_library_version();
REQUIRE(library_version != nullptr);
+
+ // The library version has to match the pattern returned by git describe:
+ // v<major>.<minor> or v<major>.<minor>-<n>-g<hash>, where <n> is the number
+ // of commits since the last tag, and <hash> is the hash of the current
+ // commit. (This assumes that all tags have the name v<major>.<minor>.)
std::string s = library_version;
- REQUIRE(s.length() >= 8);
- REQUIRE(s.find("g") != std::string::npos);
+ std::string version("v[0-9]+\\.[0-9]+");
+ std::string git_suffix("-[0-9]+-g[0-9a-z]+");
+ std::regex pattern(version + "(" + git_suffix + "|)");
+ REQUIRE(std::regex_match(s, pattern));
}