Allow unit test infra to be reused across libs' tests

This allows using Arbitrary "instances" defined in libstore-tests in
libexpr-tests, something we will leverage in a moment.
This commit is contained in:
John Ericson 2023-01-29 12:37:32 -05:00
parent 6772e9ed0a
commit ec0c0efec6
13 changed files with 50 additions and 21 deletions

6
.gitignore vendored
View file

@ -37,14 +37,14 @@ perl/Makefile.config
/src/libexpr/parser-tab.hh
/src/libexpr/parser-tab.output
/src/libexpr/nix.tbl
/src/libexpr/tests/libexpr-tests
/src/libexpr/tests/libnixexpr-tests
# /src/libstore/
*.gen.*
/src/libstore/tests/libstore-tests
/src/libstore/tests/libnixstore-tests
# /src/libutil/
/src/libutil/tests/libutil-tests
/src/libutil/tests/libnixutil-tests
/src/nix/nix

View file

@ -1,7 +1,7 @@
#include <gmock/gmock.h>
#include <gtest/gtest.h>
#include "libexprtests.hh"
#include "tests/libexpr.hh"
namespace nix {

View file

@ -1,4 +1,4 @@
#include "libexprtests.hh"
#include "tests/libexpr.hh"
#include "value-to-json.hh"
namespace nix {

View file

@ -7,18 +7,19 @@
#include "eval-inline.hh"
#include "store-api.hh"
#include "tests/libstore.hh"
namespace nix {
class LibExprTest : public ::testing::Test {
class LibExprTest : public LibStoreTest {
public:
static void SetUpTestSuite() {
initLibStore();
LibStoreTest::SetUpTestSuite();
initGC();
}
protected:
LibExprTest()
: store(openStore("dummy://"))
: LibStoreTest()
, state({}, store)
{
}
@ -36,7 +37,6 @@ namespace nix {
return state.symbols.create(value);
}
ref<Store> store;
EvalState state;
};

View file

@ -2,6 +2,8 @@ check: libexpr-tests_RUN
programs += libexpr-tests
libexpr-tests_NAME := libnixexpr-tests
libexpr-tests_DIR := $(d)
libexpr-tests_INSTALL_DIR :=
@ -12,6 +14,6 @@ libexpr-tests_SOURCES := \
libexpr-tests_CXXFLAGS += -I src/libexpr -I src/libutil -I src/libstore -I src/libexpr/tests
libexpr-tests_LIBS = libexpr libutil libstore libfetchers
libexpr-tests_LIBS = libstore-tests libexpr libutil libstore libfetchers
libexpr-tests_LDFLAGS := $(GTEST_LIBS) -lgmock

View file

@ -1,7 +1,7 @@
#include <gmock/gmock.h>
#include <gtest/gtest.h>
#include "libexprtests.hh"
#include "tests/libexpr.hh"
namespace nix {
class CaptureLogger : public Logger

View file

@ -1,4 +1,4 @@
#include "libexprtests.hh"
#include "tests/libexpr.hh"
namespace nix {
// Testing of trivial expressions

View file

@ -1,6 +1,6 @@
#include "value/context.hh"
#include "libexprtests.hh"
#include "tests/libexpr.hh"
namespace nix {

View file

@ -1,6 +1,20 @@
check: libstore-tests_RUN
check: libstore-tests-exe_RUN
programs += libstore-tests
programs += libstore-tests-exe
libstore-tests-exe_NAME = libnixstore-tests
libstore-tests-exe_DIR := $(d)
libstore-tests-exe_INSTALL_DIR :=
libstore-tests-exe_LIBS = libstore-tests
libstore-tests-exe_LDFLAGS := $(GTEST_LIBS)
libraries += libstore-tests
libstore-tests_NAME = libnixstore-tests
libstore-tests_DIR := $(d)

View file

@ -7,7 +7,8 @@
#include "path-regex.hh"
#include "store-api.hh"
#include "libstoretests.hh"
#include "tests/libstore.hh"
#include "tests/path.hh"
namespace nix {
@ -73,11 +74,6 @@ void showValue(const StorePath & p, std::ostream & os) {
namespace rc {
using namespace nix;
template<>
struct Arbitrary<StorePath> {
static Gen<StorePath> arbitrary();
};
Gen<StorePath> Arbitrary<StorePath>::arbitrary()
{
auto len = *gen::inRange<size_t>(1, StorePath::MaxPathLen);

View file

@ -0,0 +1,15 @@
#pragma once
#include <rapidcheck.h>
#include "path.hh"
namespace rc {
using namespace nix;
template<>
struct Arbitrary<StorePath> {
static Gen<StorePath> arbitrary();
};
}

View file

@ -2,6 +2,8 @@ check: libutil-tests_RUN
programs += libutil-tests
libutil-tests_NAME := libnixutil-tests
libutil-tests_DIR := $(d)
libutil-tests_INSTALL_DIR :=