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.hh
/src/libexpr/parser-tab.output /src/libexpr/parser-tab.output
/src/libexpr/nix.tbl /src/libexpr/nix.tbl
/src/libexpr/tests/libexpr-tests /src/libexpr/tests/libnixexpr-tests
# /src/libstore/ # /src/libstore/
*.gen.* *.gen.*
/src/libstore/tests/libstore-tests /src/libstore/tests/libnixstore-tests
# /src/libutil/ # /src/libutil/
/src/libutil/tests/libutil-tests /src/libutil/tests/libnixutil-tests
/src/nix/nix /src/nix/nix

View file

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

View file

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

View file

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

View file

@ -2,6 +2,8 @@ check: libexpr-tests_RUN
programs += libexpr-tests programs += libexpr-tests
libexpr-tests_NAME := libnixexpr-tests
libexpr-tests_DIR := $(d) libexpr-tests_DIR := $(d)
libexpr-tests_INSTALL_DIR := 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_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 libexpr-tests_LDFLAGS := $(GTEST_LIBS) -lgmock

View file

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

View file

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

View file

@ -1,6 +1,6 @@
#include "value/context.hh" #include "value/context.hh"
#include "libexprtests.hh" #include "tests/libexpr.hh"
namespace nix { 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) libstore-tests_DIR := $(d)

View file

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