From 7e8c970b4fa1bb64c199f7d6490ec172aeb87993 Mon Sep 17 00:00:00 2001 From: Anderson Torres Date: Sun, 28 Jul 2024 22:13:12 -0300 Subject: [PATCH] micro: refactor tests - create a directory for holding tests `packagesFromDirectoryRecursive` is really useful! - add version test - rename and rework expect test --- pkgs/by-name/mi/micro/package.nix | 12 ++++---- pkgs/by-name/mi/micro/test-with-expect.nix | 30 ------------------- .../micro/tests/_001-hello-expect/hello.tcl | 13 ++++++++ .../micro/tests/_001-hello-expect/package.nix | 26 ++++++++++++++++ pkgs/by-name/mi/micro/tests/version.nix | 6 ++++ 5 files changed, 52 insertions(+), 35 deletions(-) delete mode 100644 pkgs/by-name/mi/micro/test-with-expect.nix create mode 100644 pkgs/by-name/mi/micro/tests/_001-hello-expect/hello.tcl create mode 100644 pkgs/by-name/mi/micro/tests/_001-hello-expect/package.nix create mode 100644 pkgs/by-name/mi/micro/tests/version.nix diff --git a/pkgs/by-name/mi/micro/package.nix b/pkgs/by-name/mi/micro/package.nix index 4dc704cfdc4e..601dc8b95be9 100644 --- a/pkgs/by-name/mi/micro/package.nix +++ b/pkgs/by-name/mi/micro/package.nix @@ -9,7 +9,6 @@ , makeWrapper # Boolean flags , withXclip ? stdenv.isLinux -, withWlclip ? null , withWlClipboard ? if withWlclip != null then lib.warn '' @@ -17,6 +16,10 @@ use withWlClipboard instead. '' withWlclip else stdenv.isLinux +# Deprecated options +# Remove them before or right after next version update from Nixpkgs or this +# package itself +, withWlclip ? null }: let @@ -68,10 +71,9 @@ let ''; passthru = { - tests = { - expect = callPackage ./test-with-expect.nix { - micro = self; - }; + tests = lib.packagesFromDirectoryRecursive { + inherit callPackage; + directory = ./tests; }; }; diff --git a/pkgs/by-name/mi/micro/test-with-expect.nix b/pkgs/by-name/mi/micro/test-with-expect.nix deleted file mode 100644 index 8192f88487eb..000000000000 --- a/pkgs/by-name/mi/micro/test-with-expect.nix +++ /dev/null @@ -1,30 +0,0 @@ -{ micro, expect, runCommand, writeScript }: - -let expect-script = writeScript "expect-script" '' - #!${expect}/bin/expect -f - - spawn micro file.txt - expect "file.txt" - - send "Hello world!" - expect "Hello world!" - - # Send ctrl-q (exit) - send "\021" - - expect "Save changes to file.txt before closing?" - send "y" - - expect eof -''; in -runCommand "micro-test-expect" -{ - nativeBuildInputs = [ micro expect ]; - passthru = { inherit expect-script; }; -} '' - # Micro really wants a writable $HOME for its config directory. - export HOME=$(pwd) - expect -f ${expect-script} - grep "Hello world!" file.txt - touch $out -'' diff --git a/pkgs/by-name/mi/micro/tests/_001-hello-expect/hello.tcl b/pkgs/by-name/mi/micro/tests/_001-hello-expect/hello.tcl new file mode 100644 index 000000000000..d4280e4909b8 --- /dev/null +++ b/pkgs/by-name/mi/micro/tests/_001-hello-expect/hello.tcl @@ -0,0 +1,13 @@ +spawn micro file.txt +expect "file.txt" + +send "Hello world!" +expect "Hello world!" + +# ctrl-q (exit) +send "\021" + +expect "Save changes to file.txt before closing?" +send "y" + +expect eof diff --git a/pkgs/by-name/mi/micro/tests/_001-hello-expect/package.nix b/pkgs/by-name/mi/micro/tests/_001-hello-expect/package.nix new file mode 100644 index 000000000000..26a23ab9b5df --- /dev/null +++ b/pkgs/by-name/mi/micro/tests/_001-hello-expect/package.nix @@ -0,0 +1,26 @@ +{ + expect, + micro, + runCommand, +}: + +let + expect-script = builtins.path { + name = "hello.tcl"; + path = ./hello.tcl; + }; +in +runCommand "micro-expect-hello-world" + { + nativeBuildInputs = [ + expect + micro + ]; + } + # Micro needs a writable $HOME for throwing its configuration + '' + export HOME=$(pwd) + expect -f ${expect-script} + grep "Hello world!" file.txt + cat file.txt > $out + '' diff --git a/pkgs/by-name/mi/micro/tests/version.nix b/pkgs/by-name/mi/micro/tests/version.nix new file mode 100644 index 000000000000..14d63a3a450b --- /dev/null +++ b/pkgs/by-name/mi/micro/tests/version.nix @@ -0,0 +1,6 @@ +{ micro, testers }: + +testers.testVersion { + package = micro; + command = "micro -version"; +}