about summary refs log tree commit diff
path: root/pkgs/development
diff options
context:
space:
mode:
authorMarkus Scherer <markus.f.scherer@gmail.com>2023-12-19 16:06:42 +0100
committerAustin Seipp <aseipp@pobox.com>2024-07-16 07:31:14 -0500
commitc8c340b4683d6025abb73430ef7ae0e211892c54 (patch)
tree47276865df2153ccffa0a5ae9648635494cb220a /pkgs/development
parent9a0a4ca9ce875e42c590b977b7a5521bda0e7003 (diff)
souffle: add some package tests
Diffstat (limited to 'pkgs/development')
-rw-r--r--pkgs/development/compilers/souffle/default.nix4
-rw-r--r--pkgs/development/compilers/souffle/tests.nix36
2 files changed, 39 insertions, 1 deletions
diff --git a/pkgs/development/compilers/souffle/default.nix b/pkgs/development/compilers/souffle/default.nix
index cacd63450c4b7..b426e1e9f3fdb 100644
--- a/pkgs/development/compilers/souffle/default.nix
+++ b/pkgs/development/compilers/souffle/default.nix
@@ -1,7 +1,7 @@
 { lib, stdenv, fetchFromGitHub
 , bash-completion, perl, ncurses, zlib, sqlite, libffi
 , mcpp, cmake, bison, flex, doxygen, graphviz
-, makeWrapper, python3
+, makeWrapper, python3, callPackage
 }:
 
 
@@ -51,6 +51,8 @@ stdenv.mkDerivation rec {
 
   outputs = [ "out" ];
 
+  passthru.tests = callPackage ./tests.nix { };
+
   meta = with lib; {
     description = "Translator of declarative Datalog programs into the C++ language";
     homepage    = "https://souffle-lang.github.io/";
diff --git a/pkgs/development/compilers/souffle/tests.nix b/pkgs/development/compilers/souffle/tests.nix
new file mode 100644
index 0000000000000..82b4fa489dae4
--- /dev/null
+++ b/pkgs/development/compilers/souffle/tests.nix
@@ -0,0 +1,36 @@
+{ stdenv, lib, souffle, runCommand }:
+let
+  simpleTest = { name, commands }:
+    stdenv.mkDerivation {
+      inherit name;
+      meta.timeout = 60;
+      buildCommand = ''
+        echo -e '.decl A(X: number)\n.output A\nA(1).' > A.dl
+        ${commands}
+        [ "$(cat A.csv)" = "1" ]
+        touch $out
+      '';
+    };
+in {
+  interpret = simpleTest {
+    name = "souffle-test-interpret";
+    commands = "${souffle}/bin/souffle A.dl";
+  };
+
+  compile-in-one-step = simpleTest {
+    name = "souffle-test-compile-in-one-step";
+    commands = ''
+      ${souffle}/bin/souffle -o A A.dl
+      ./A
+    '';
+  };
+
+  compile-in-two-steps = simpleTest {
+    name = "souffle-test-compile-in-two-steps";
+    commands = ''
+      ${souffle}/bin/souffle -g A.cpp A.dl
+      ${souffle}/bin/souffle-compile.py A.cpp -o A
+      ./A
+    '';
+  };
+}