test(3p/nix): Partially enable evaluator success tests

Enables the `eval-okay-` test suite, with some caveats:

* The output is not yet checked against the expected value, so the
  tests only check that pure evaluation succeeds
* A handful of tests have been disabled as they are causing failures
  that may be related to the DummyStore implementation.

Both of these will be addressed in followup commits, but there is
already some value in having the pure evaluation tests pass.

Change-Id: I62236c95ebffb06dc64a45455a8ee04344c400b7
Reviewed-on: https://cl.tvl.fyi/c/depot/+/1284
Tested-by: BuildkiteCI
Reviewed-by: isomer <isomer@tvl.fyi>
Reviewed-by: glittershark <grfn@gws.fyi>
This commit is contained in:
Vincent Ambo 2020-07-19 14:37:01 +01:00 committed by tazjin
parent bc7652d783
commit 97e6499225
7 changed files with 28 additions and 0 deletions

View file

@ -0,0 +1,7 @@
These tests are disabeld primarily because the DummyStore used for
tests does not interact with real files on disk at the moment, but the
tests expect it to.
Once we have a solution for this (potentially just reading & hashing
the files, but not writing them anywhere) these tests will be enabled
again.

View file

@ -187,4 +187,25 @@ INSTANTIATE_TEST_SUITE_P(Eval, EvalFailureTest,
testing::ValuesIn(TestFilesFor("eval-fail-")),
TestNameFor);
class EvalSuccessTest : public testing::TestWithParam<std::filesystem::path> {};
// Test pattern for files that should fail to evaluate.
TEST_P(EvalSuccessTest, Fails) {
std::shared_ptr<Store> store = std::make_shared<DummyStore>();
EvalState state({}, ref<Store>(store));
auto path = GetParam();
Expr* expr;
EXPECT_NO_THROW(expr = state.parseExprFromFile(GetParam().string()))
<< path.stem().string() << ": should parse successfully";
Value result;
state.eval(expr, result);
state.forceValue(result);
}
INSTANTIATE_TEST_SUITE_P(Eval, EvalSuccessTest,
testing::ValuesIn(TestFilesFor("eval-okay-")),
TestNameFor);
} // namespace nix::tests