summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--nixos/release.nix1
-rw-r--r--nixos/tests/incron.nix52
2 files changed, 53 insertions, 0 deletions
diff --git a/nixos/release.nix b/nixos/release.nix
index b7f8c01bb000..c2372da23f57 100644
--- a/nixos/release.nix
+++ b/nixos/release.nix
@@ -336,6 +336,7 @@ in rec {
tests.plasma5 = callTest tests/plasma5.nix {};
tests.plotinus = callTest tests/plotinus.nix {};
tests.keymap = callSubTests tests/keymap.nix {};
+ tests.incron = callTest tests/incron.nix {};
tests.initrdNetwork = callTest tests/initrd-network.nix {};
tests.kafka = callSubTests tests/kafka.nix {};
tests.kernel-latest = callTest tests/kernel-latest.nix {};
diff --git a/nixos/tests/incron.nix b/nixos/tests/incron.nix
new file mode 100644
index 000000000000..e39bbb5f096b
--- /dev/null
+++ b/nixos/tests/incron.nix
@@ -0,0 +1,52 @@
+import ./make-test.nix ({ pkgs, lib, ... }:
+
+{
+ name = "incron";
+ meta.maintainers = [ lib.maintainers.aanderse ];
+
+ machine =
+ { ... }:
+ { services.incron.enable = true;
+ services.incron.extraPackages = [ pkgs.coreutils ];
+ services.incron.systab = ''
+ /test IN_CREATE,IN_MODIFY,IN_CLOSE_WRITE,IN_MOVED_FROM,IN_MOVED_TO echo "$@/$# $%" >> /root/incron.log
+ '';
+
+ # ensure the directory to be monitored exists before incron is started
+ system.activationScripts.incronTest = ''
+ mkdir /test
+ '';
+ };
+
+ testScript = ''
+ startAll;
+
+ $machine->waitForUnit("multi-user.target");
+ $machine->waitForUnit("incron.service");
+
+ $machine->succeed("test -d /test");
+ # create some activity for incron to monitor
+ $machine->succeed("touch /test/file");
+ $machine->succeed("echo foo >> /test/file");
+ $machine->succeed("mv /test/file /root");
+ $machine->succeed("mv /root/file /test");
+
+ $machine->sleep(1);
+
+ # touch /test/file
+ $machine->succeed("grep '/test/file IN_CREATE' /root/incron.log");
+
+ # echo foo >> /test/file
+ $machine->succeed("grep '/test/file IN_MODIFY' /root/incron.log");
+ $machine->succeed("grep '/test/file IN_CLOSE_WRITE' /root/incron.log");
+
+ # mv /test/file /root
+ $machine->succeed("grep '/test/file IN_MOVED_FROM' /root/incron.log");
+
+ # mv /root/file /test
+ $machine->succeed("grep '/test/file IN_MOVED_TO' /root/incron.log");
+
+ # ensure something unexpected is not present
+ $machine->fail("grep 'IN_OPEN' /root/incron.log");
+ '';
+})