summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorTim Steinbach <NeQuissimus@users.noreply.github.com>2020-11-17 12:14:51 -0500
committerGitHub <noreply@github.com>2020-11-17 12:14:51 -0500
commit098412567624d20f5e776aceb9fb3838159f950b (patch)
tree475bb4e507e2e9142627e7c0f35a52144c8e0374
parent805cedf8d3ac9df34cccd95069b37b13e1017e5b (diff)
parent0338f728c01329427c407ccd0bf6e527eee2358c (diff)
Merge pull request #103988 from NeQuissimus/nano_update
nano: Update script, 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.nix45
4 files changed, 81 insertions, 10 deletions
diff --git a/nixos/release-combined.nix b/nixos/release-combined.nix
index 384ae5765b8c..d8b9a5f9b4bc 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 868f15a1da37..485b298662be 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 000000000000..9e0a9e147f2c
--- /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 6909af712fa0..04bd6c7b4b8b 100644
--- a/pkgs/applications/editors/nano/default.nix
+++ b/pkgs/applications/editors/nano/default.nix
@@ -1,10 +1,6 @@
-{ stdenv, fetchurl, fetchFromGitHub
-, ncurses
-, texinfo
-, gettext ? null
-, enableNls ? true
-, enableTiny ? false
-}:
+{ stdenv, fetchurl, fetchFromGitHub, ncurses, texinfo, writeScript
+, common-updater-scripts, git, nix, nixfmt, coreutils, gnused, nixosTests
+, gettext ? null, enableNls ? true, enableTiny ? false }:
assert enableNls -> (gettext != null);
@@ -44,13 +40,42 @@ in stdenv.mkDerivation rec {
enableParallelBuilding = true;
+ passthru = {
+ tests = { inherit (nixosTests) nano; };
+
+ updateScript = writeScript "update.sh" ''
+ #!${stdenv.shell}
+ set -o errexit
+ PATH=${
+ stdenv.lib.makeBinPath [
+ common-updater-scripts
+ git
+ nixfmt
+ nix
+ coreutils
+ gnused
+ ]
+ }
+
+ oldVersion="$(nix-instantiate --eval -E "with import ./. {}; lib.getVersion ${pname}" | tr -d '"')"
+ latestTag="$(git -c 'versionsort.suffix=-' ls-remote --exit-code --refs --sort='version:refname' --tags git://git.savannah.gnu.org/nano.git '*' | tail --lines=1 | cut --delimiter='/' --fields=3 | sed 's|^v||g')"
+
+ if [ ! "$oldVersion" = "$latestTag" ]; then
+ update-source-version ${pname} "$latestTag" --version-key=version --print-changes
+ nixpkgs="$(git rev-parse --show-toplevel)"
+ default_nix="$nixpkgs/pkgs/applications/editors/nano/default.nix"
+ nixfmt "$default_nix"
+ else
+ echo "${pname} is already up-to-date"
+ fi
+ '';
+ };
+
meta = {
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;
};
}