about summary refs log tree commit diff
diff options
context:
space:
mode:
authorKane York <kanepyork@gmail.com>2020-08-15T02·04-0700
committerkanepyork <rikingcoding@gmail.com>2020-08-18T03·58+0000
commitb76cd7253a1d0e6ce2260071c375eae7a8141468 (patch)
tree51da97b5f2dd18dd3f2378487afd6734f8843e1a
parentfea4df560bdb9a14c3ea6d45aaad26a6a24d6ce5 (diff)
feat(tvix): Re-enable language tests that needed a store r/1673
Now that we have access to a store in tests, we can enable the tests that needed a store.

Additionally, move the expected output files for disabled tests into the disabled folder.

Change-Id: I2492d49d43b93c7c9b0463e4d3d2855a5a51365d
Reviewed-on: https://cl.tvl.fyi/c/depot/+/1758
Tested-by: BuildkiteCI
Reviewed-by: glittershark <grfn@gws.fyi>
-rw-r--r--third_party/nix/src/tests/lang/disabled/eval-okay-context.nix6
-rw-r--r--third_party/nix/src/tests/lang/disabled/eval-okay-search-path.exp (renamed from third_party/nix/src/tests/lang/eval-okay-search-path.exp)0
-rw-r--r--third_party/nix/src/tests/lang/disabled/eval-okay-search-path.flags (renamed from third_party/nix/src/tests/lang/eval-okay-search-path.flags)0
-rw-r--r--third_party/nix/src/tests/lang/disabled/eval-okay-xml.exp (renamed from third_party/nix/src/tests/lang/eval-okay-xml.exp)0
-rw-r--r--third_party/nix/src/tests/lang/eval-okay-context.exp1
-rw-r--r--third_party/nix/src/tests/lang/evalargs-okay-autoargs.nix (renamed from third_party/nix/src/tests/lang/disabled/eval-okay-autoargs.nix)0
-rw-r--r--third_party/nix/src/tests/lang/evalstore-okay-autoargs.exp (renamed from third_party/nix/src/tests/lang/disabled/eval-okay-autoargs.exp)0
-rw-r--r--third_party/nix/src/tests/lang/evalstore-okay-context-introspection.exp (renamed from third_party/nix/src/tests/lang/eval-okay-context-introspection.exp)0
-rw-r--r--third_party/nix/src/tests/lang/evalstore-okay-context-introspection.nix (renamed from third_party/nix/src/tests/lang/disabled/eval-okay-context-introspection.nix)2
-rw-r--r--third_party/nix/src/tests/lang/evalstore-okay-context.exp1
-rw-r--r--third_party/nix/src/tests/lang/evalstore-okay-context.nix6
-rw-r--r--third_party/nix/src/tests/lang/evalstore-okay-toxml.exp (renamed from third_party/nix/src/tests/lang/eval-okay-toxml.exp)0
-rw-r--r--third_party/nix/src/tests/lang/evalstore-okay-toxml.nix (renamed from third_party/nix/src/tests/lang/disabled/eval-okay-toxml.nix)0
-rw-r--r--third_party/nix/src/tests/language-tests.cc52
14 files changed, 59 insertions, 9 deletions
diff --git a/third_party/nix/src/tests/lang/disabled/eval-okay-context.nix b/third_party/nix/src/tests/lang/disabled/eval-okay-context.nix
deleted file mode 100644
index 7b9531cfe9..0000000000
--- a/third_party/nix/src/tests/lang/disabled/eval-okay-context.nix
+++ /dev/null
@@ -1,6 +0,0 @@
-let s = "foo ${builtins.substring 33 100 (baseNameOf "${./eval-okay-context.nix}")} bar";
-in
-  if s != "foo eval-okay-context.nix bar"
-  then abort "context not discarded"
-  else builtins.unsafeDiscardStringContext s
-
diff --git a/third_party/nix/src/tests/lang/eval-okay-search-path.exp b/third_party/nix/src/tests/lang/disabled/eval-okay-search-path.exp
index 4519bc406d..4519bc406d 100644
--- a/third_party/nix/src/tests/lang/eval-okay-search-path.exp
+++ b/third_party/nix/src/tests/lang/disabled/eval-okay-search-path.exp
diff --git a/third_party/nix/src/tests/lang/eval-okay-search-path.flags b/third_party/nix/src/tests/lang/disabled/eval-okay-search-path.flags
index a28e682100..a28e682100 100644
--- a/third_party/nix/src/tests/lang/eval-okay-search-path.flags
+++ b/third_party/nix/src/tests/lang/disabled/eval-okay-search-path.flags
diff --git a/third_party/nix/src/tests/lang/eval-okay-xml.exp b/third_party/nix/src/tests/lang/disabled/eval-okay-xml.exp
index 92b75e0b8b..92b75e0b8b 100644
--- a/third_party/nix/src/tests/lang/eval-okay-xml.exp
+++ b/third_party/nix/src/tests/lang/disabled/eval-okay-xml.exp
diff --git a/third_party/nix/src/tests/lang/eval-okay-context.exp b/third_party/nix/src/tests/lang/eval-okay-context.exp
deleted file mode 100644
index 2f535bdbc4..0000000000
--- a/third_party/nix/src/tests/lang/eval-okay-context.exp
+++ /dev/null
@@ -1 +0,0 @@
-"foo eval-okay-context.nix bar"
diff --git a/third_party/nix/src/tests/lang/disabled/eval-okay-autoargs.nix b/third_party/nix/src/tests/lang/evalargs-okay-autoargs.nix
index 815f51b1d6..815f51b1d6 100644
--- a/third_party/nix/src/tests/lang/disabled/eval-okay-autoargs.nix
+++ b/third_party/nix/src/tests/lang/evalargs-okay-autoargs.nix
diff --git a/third_party/nix/src/tests/lang/disabled/eval-okay-autoargs.exp b/third_party/nix/src/tests/lang/evalstore-okay-autoargs.exp
index 7a8391786a..7a8391786a 100644
--- a/third_party/nix/src/tests/lang/disabled/eval-okay-autoargs.exp
+++ b/third_party/nix/src/tests/lang/evalstore-okay-autoargs.exp
diff --git a/third_party/nix/src/tests/lang/eval-okay-context-introspection.exp b/third_party/nix/src/tests/lang/evalstore-okay-context-introspection.exp
index 27ba77ddaf..27ba77ddaf 100644
--- a/third_party/nix/src/tests/lang/eval-okay-context-introspection.exp
+++ b/third_party/nix/src/tests/lang/evalstore-okay-context-introspection.exp
diff --git a/third_party/nix/src/tests/lang/disabled/eval-okay-context-introspection.nix b/third_party/nix/src/tests/lang/evalstore-okay-context-introspection.nix
index 43178bd2ee..d11aad38c7 100644
--- a/third_party/nix/src/tests/lang/disabled/eval-okay-context-introspection.nix
+++ b/third_party/nix/src/tests/lang/evalstore-okay-context-introspection.nix
@@ -6,7 +6,7 @@ let
     outputs = [ "out" "foo" ];
   };
 
-  path = "${./eval-okay-context-introspection.nix}";
+  path = "${./evalstore-okay-context-introspection.nix}";
 
   desired-context = {
     "${builtins.unsafeDiscardStringContext path}" = {
diff --git a/third_party/nix/src/tests/lang/evalstore-okay-context.exp b/third_party/nix/src/tests/lang/evalstore-okay-context.exp
new file mode 100644
index 0000000000..f8088f9e17
--- /dev/null
+++ b/third_party/nix/src/tests/lang/evalstore-okay-context.exp
@@ -0,0 +1 @@
+"foo evalstore-okay-context.nix bar"
diff --git a/third_party/nix/src/tests/lang/evalstore-okay-context.nix b/third_party/nix/src/tests/lang/evalstore-okay-context.nix
new file mode 100644
index 0000000000..90f82abe1c
--- /dev/null
+++ b/third_party/nix/src/tests/lang/evalstore-okay-context.nix
@@ -0,0 +1,6 @@
+let s = "foo ${builtins.substring 33 100 (baseNameOf "${./evalstore-okay-context.nix}")} bar";
+in
+  if s != "foo evalstore-okay-context.nix bar"
+  then abort "context not discarded"
+  else builtins.unsafeDiscardStringContext s
+
diff --git a/third_party/nix/src/tests/lang/eval-okay-toxml.exp b/third_party/nix/src/tests/lang/evalstore-okay-toxml.exp
index 828220890e..828220890e 100644
--- a/third_party/nix/src/tests/lang/eval-okay-toxml.exp
+++ b/third_party/nix/src/tests/lang/evalstore-okay-toxml.exp
diff --git a/third_party/nix/src/tests/lang/disabled/eval-okay-toxml.nix b/third_party/nix/src/tests/lang/evalstore-okay-toxml.nix
index 068c97a6c1..068c97a6c1 100644
--- a/third_party/nix/src/tests/lang/disabled/eval-okay-toxml.nix
+++ b/third_party/nix/src/tests/lang/evalstore-okay-toxml.nix
diff --git a/third_party/nix/src/tests/language-tests.cc b/third_party/nix/src/tests/language-tests.cc
index 5b0e808d19..189e1ede5c 100644
--- a/third_party/nix/src/tests/language-tests.cc
+++ b/third_party/nix/src/tests/language-tests.cc
@@ -46,6 +46,7 @@
 #include "libexpr/nixexpr.hh"
 #include "nix_config.h"
 #include "tests/dummy-store.hh"
+#include "tests/store-util.hh"
 
 namespace nix::tests {
 namespace {
@@ -208,7 +209,7 @@ INSTANTIATE_TEST_SUITE_P(Eval, EvalFailureTest,
 class EvalSuccessTest : public testing::TestWithParam<std::filesystem::path> {};
 
 // Test pattern for files that should evaluate successfully.
-TEST_P(EvalSuccessTest, Fails) {
+TEST_P(EvalSuccessTest, Succeeds) {
   std::shared_ptr<Store> store = std::make_shared<DummyStore>();
   EvalState state({}, ref<Store>(store));
   auto path = GetParam();
@@ -236,4 +237,53 @@ INSTANTIATE_TEST_SUITE_P(Eval, EvalSuccessTest,
                          testing::ValuesIn(TestFilesFor("eval-okay-")),
                          TestNameFor);
 
+class BlankStoreTest : public nix::StoreTest {
+  virtual void TestBody() override{};
+};
+
+class EvalStoreSuccessTest
+    : public testing::TestWithParam<std::filesystem::path> {
+ public:
+  virtual void TearDown() { store_test_.TearDown(); }
+
+  absl::StatusOr<std::unique_ptr<nix::LocalStore>> OpenTemporaryStore() {
+    return store_test_.OpenTemporaryStore();
+  }
+
+ private:
+  BlankStoreTest store_test_;
+};
+
+// Test pattern for files that should evaluate successfully but require a real
+// store.
+TEST_P(EvalStoreSuccessTest, Succeeds) {
+  std::unique_ptr<nix::LocalStore> store_ =
+      OpenTemporaryStore().ConsumeValueOrDie();
+  ref<Store> store = ref<Store>(store_.release());
+  EvalState state({}, store);
+  auto path = GetParam();
+
+  Expr* expr = nullptr;
+  ASSERT_NO_THROW(expr = state.parseExprFromFile(GetParam().string()))
+      << path.stem().string() << ": should parse successfully";
+
+  Value result;
+
+  ASSERT_NO_THROW({
+    state.eval(expr, result);
+    state.forceValueDeep(result);
+  }) << path.stem().string()
+     << ": should evaluate successfully";
+
+  auto expected = ExpectedOutputFor(path.stem().string());
+  std::ostringstream value_str;
+  value_str << result;
+
+  EXPECT_EQ(expected, value_str.str()) << "evaluator output should match";
+}
+
+INSTANTIATE_TEST_SUITE_P(Eval, EvalStoreSuccessTest,
+                         testing::ValuesIn(TestFilesFor("evalstore-okay-")),
+                         TestNameFor);
+
 }  // namespace nix::tests