summary refs log tree commit diff
diff options
context:
space:
mode:
authorTim Steinbach <tim@nequissimus.com>2020-11-16 13:59:36 -0500
committerTim Steinbach <tim@nequissimus.com>2020-11-16 14:00:34 -0500
commit0338f728c01329427c407ccd0bf6e527eee2358c (patch)
tree3eef26cec0308fd09a1f929ba33e498aa53854a1
parent701df1a3dc5b2a60ab348a3c06600250d0382457 (diff)
downloadnixpkgs-0338f728c01329427c407ccd0bf6e527eee2358c.tar
nixpkgs-0338f728c01329427c407ccd0bf6e527eee2358c.tar.gz
nixpkgs-0338f728c01329427c407ccd0bf6e527eee2358c.tar.bz2
nixpkgs-0338f728c01329427c407ccd0bf6e527eee2358c.tar.lz
nixpkgs-0338f728c01329427c407ccd0bf6e527eee2358c.tar.xz
nixpkgs-0338f728c01329427c407ccd0bf6e527eee2358c.tar.zst
nixpkgs-0338f728c01329427c407ccd0bf6e527eee2358c.zip
nano: Add test
-rw-r--r--nixos/release-combined.nix1
-rw-r--r--nixos/tests/all-tests.nix1
-rw-r--r--nixos/tests/nano.nix44
-rw-r--r--pkgs/applications/editors/nano/default.nix8
4 files changed, 51 insertions, 3 deletions
diff --git a/nixos/release-combined.nix b/nixos/release-combined.nix
index 384ae5765b8..d8b9a5f9b4b 100644
--- a/nixos/release-combined.nix
+++ b/nixos/release-combined.nix
@@ -97,6 +97,7 @@ in rec {
         (onFullSupported "nixos.tests.login")
         (onFullSupported "nixos.tests.misc")
         (onFullSupported "nixos.tests.mutableUsers")
+        (onFullSupported "nixos.tests.nano")
         (onFullSupported "nixos.tests.nat.firewall-conntrack")
         (onFullSupported "nixos.tests.nat.firewall")
         (onFullSupported "nixos.tests.nat.standalone")
diff --git a/nixos/tests/all-tests.nix b/nixos/tests/all-tests.nix
index 868f15a1da3..485b298662b 100644
--- a/nixos/tests/all-tests.nix
+++ b/nixos/tests/all-tests.nix
@@ -225,6 +225,7 @@ in
   mysql-backup = handleTest ./mysql/mysql-backup.nix {};
   mysql-replication = handleTest ./mysql/mysql-replication.nix {};
   nagios = handleTest ./nagios.nix {};
+  nano = handleTest ./nano.nix {};
   nar-serve = handleTest ./nar-serve.nix {};
   nat.firewall = handleTest ./nat.nix { withFirewall = true; };
   nat.firewall-conntrack = handleTest ./nat.nix { withFirewall = true; withConntrackHelpers = true; };
diff --git a/nixos/tests/nano.nix b/nixos/tests/nano.nix
new file mode 100644
index 00000000000..9e0a9e147f2
--- /dev/null
+++ b/nixos/tests/nano.nix
@@ -0,0 +1,44 @@
+import ./make-test-python.nix ({ pkgs, ...} : {
+  name = "nano";
+  meta = with pkgs.stdenv.lib.maintainers; {
+    maintainers = [ nequissimus ];
+  };
+
+  machine = { lib, ... }: {
+    environment.systemPackages = [ pkgs.nano ];
+  };
+
+  testScript = { ... }: ''
+    start_all()
+
+    with subtest("Create user and log in"):
+        machine.wait_for_unit("multi-user.target")
+        machine.wait_until_succeeds("pgrep -f 'agetty.*tty1'")
+        machine.succeed("useradd -m alice")
+        machine.succeed("(echo foobar; echo foobar) | passwd alice")
+        machine.wait_until_tty_matches(1, "login: ")
+        machine.send_chars("alice\n")
+        machine.wait_until_tty_matches(1, "login: alice")
+        machine.wait_until_succeeds("pgrep login")
+        machine.wait_until_tty_matches(1, "Password: ")
+        machine.send_chars("foobar\n")
+        machine.wait_until_succeeds("pgrep -u alice bash")
+        machine.screenshot("prompt")
+
+    with subtest("Use nano"):
+        machine.send_chars("nano /tmp/foo")
+        machine.send_key("ret")
+        machine.sleep(2)
+        machine.send_chars("42")
+        machine.sleep(1)
+        machine.send_key("ctrl-x")
+        machine.sleep(1)
+        machine.send_key("y")
+        machine.sleep(1)
+        machine.screenshot("nano")
+        machine.sleep(1)
+        machine.send_key("ret")
+        machine.wait_for_file("/tmp/foo")
+        assert "42" in machine.succeed("cat /tmp/foo")
+  '';
+})
diff --git a/pkgs/applications/editors/nano/default.nix b/pkgs/applications/editors/nano/default.nix
index 63b849f06f9..04bd6c7b4b8 100644
--- a/pkgs/applications/editors/nano/default.nix
+++ b/pkgs/applications/editors/nano/default.nix
@@ -1,6 +1,6 @@
 { stdenv, fetchurl, fetchFromGitHub, ncurses, texinfo, writeScript
-, common-updater-scripts, git, nix, nixfmt, coreutils, gnused, gettext ? null
-, enableNls ? true, enableTiny ? false }:
+, common-updater-scripts, git, nix, nixfmt, coreutils, gnused, nixosTests
+, gettext ? null, enableNls ? true, enableTiny ? false }:
 
 assert enableNls -> (gettext != null);
 
@@ -41,6 +41,8 @@ in stdenv.mkDerivation rec {
   enableParallelBuilding = true;
 
   passthru = {
+    tests = { inherit (nixosTests) nano; };
+
     updateScript = writeScript "update.sh" ''
       #!${stdenv.shell}
       set -o errexit
@@ -73,7 +75,7 @@ in stdenv.mkDerivation rec {
     homepage = "https://www.nano-editor.org/";
     description = "A small, user-friendly console text editor";
     license = licenses.gpl3Plus;
-    maintainers = with maintainers; [ joachifm ];
+    maintainers = with maintainers; [ joachifm nequissimus ];
     platforms = platforms.all;
   };
 }