From 16cd8abad6274a4f44bcabab13d6cbe135f3decc Mon Sep 17 00:00:00 2001 From: Austin Horstman Date: Thu, 16 Oct 2025 21:11:49 -0500 Subject: [PATCH] tests/diff-so-fancy: add Signed-off-by: Austin Horstman --- .../programs/diff-so-fancy/default.nix | 5 +++ .../diff-so-fancy/diff-so-fancy-basic.nix | 14 ++++++++ .../diff-so-fancy/diff-so-fancy-migration.nix | 35 +++++++++++++++++++ .../diff-so-fancy-with-git-integration.nix | 23 ++++++++++++ 4 files changed, 77 insertions(+) create mode 100644 tests/modules/programs/diff-so-fancy/default.nix create mode 100644 tests/modules/programs/diff-so-fancy/diff-so-fancy-basic.nix create mode 100644 tests/modules/programs/diff-so-fancy/diff-so-fancy-migration.nix create mode 100644 tests/modules/programs/diff-so-fancy/diff-so-fancy-with-git-integration.nix diff --git a/tests/modules/programs/diff-so-fancy/default.nix b/tests/modules/programs/diff-so-fancy/default.nix new file mode 100644 index 000000000..258d883cb --- /dev/null +++ b/tests/modules/programs/diff-so-fancy/default.nix @@ -0,0 +1,5 @@ +{ + diff-so-fancy-basic = ./diff-so-fancy-basic.nix; + diff-so-fancy-with-git-integration = ./diff-so-fancy-with-git-integration.nix; + diff-so-fancy-migration = ./diff-so-fancy-migration.nix; +} diff --git a/tests/modules/programs/diff-so-fancy/diff-so-fancy-basic.nix b/tests/modules/programs/diff-so-fancy/diff-so-fancy-basic.nix new file mode 100644 index 000000000..fac80a4ab --- /dev/null +++ b/tests/modules/programs/diff-so-fancy/diff-so-fancy-basic.nix @@ -0,0 +1,14 @@ +{ + programs.diff-so-fancy = { + enable = true; + markEmptyLines = false; + changeHunkIndicators = true; + }; + programs.git.enable = true; + + nmt.script = '' + # Git config should NOT contain diff-so-fancy configuration since enableGitIntegration is false by default + assertFileNotRegex home-files/.config/git/config 'pager = .*/diff-so-fancy' + assertFileNotRegex home-files/.config/git/config 'diffFilter = .*/diff-so-fancy' + ''; +} diff --git a/tests/modules/programs/diff-so-fancy/diff-so-fancy-migration.nix b/tests/modules/programs/diff-so-fancy/diff-so-fancy-migration.nix new file mode 100644 index 000000000..f65f08eb0 --- /dev/null +++ b/tests/modules/programs/diff-so-fancy/diff-so-fancy-migration.nix @@ -0,0 +1,35 @@ +{ + lib, + options, + ... +}: + +{ + programs.git = { + enable = true; + diff-so-fancy = { + enable = true; + markEmptyLines = false; + changeHunkIndicators = true; + }; + }; + + test.asserts.warnings.expected = [ + "The option `programs.git.diff-so-fancy.changeHunkIndicators' defined in ${lib.showFiles options.programs.git.diff-so-fancy.changeHunkIndicators.files} has been renamed to `programs.diff-so-fancy.changeHunkIndicators'." + "The option `programs.git.diff-so-fancy.markEmptyLines' defined in ${lib.showFiles options.programs.git.diff-so-fancy.markEmptyLines.files} has been renamed to `programs.diff-so-fancy.markEmptyLines'." + "The option `programs.git.diff-so-fancy.enable' defined in ${lib.showFiles options.programs.git.diff-so-fancy.enable.files} has been renamed to `programs.diff-so-fancy.enable'." + "`programs.diff-so-fancy.enableGitIntegration` automatic enablement is deprecated. Please explicitly set `programs.diff-so-fancy.enableGitIntegration = true`." + ]; + + nmt.script = '' + # Git config should contain diff-so-fancy configuration (backward compatibility) + assertFileExists home-files/.config/git/config + assertFileContains home-files/.config/git/config '[core]' + assertFileRegex home-files/.config/git/config 'pager = .*/diff-so-fancy.*less' + assertFileContains home-files/.config/git/config '[interactive]' + assertFileRegex home-files/.config/git/config 'diffFilter = .*/diff-so-fancy --patch' + assertFileContains home-files/.config/git/config '[diff-so-fancy]' + assertFileContains home-files/.config/git/config 'markEmptyLines = false' + assertFileContains home-files/.config/git/config 'changeHunkIndicators = true' + ''; +} diff --git a/tests/modules/programs/diff-so-fancy/diff-so-fancy-with-git-integration.nix b/tests/modules/programs/diff-so-fancy/diff-so-fancy-with-git-integration.nix new file mode 100644 index 000000000..48127f195 --- /dev/null +++ b/tests/modules/programs/diff-so-fancy/diff-so-fancy-with-git-integration.nix @@ -0,0 +1,23 @@ +{ + programs.diff-so-fancy = { + enable = true; + enableGitIntegration = true; + markEmptyLines = false; + changeHunkIndicators = true; + stripLeadingSymbols = false; + }; + + programs.git.enable = true; + + nmt.script = '' + assertFileExists home-files/.config/git/config + assertFileContains home-files/.config/git/config '[core]' + assertFileRegex home-files/.config/git/config 'pager = .*/diff-so-fancy.*less' + assertFileContains home-files/.config/git/config '[interactive]' + assertFileRegex home-files/.config/git/config 'diffFilter = .*/diff-so-fancy --patch' + assertFileContains home-files/.config/git/config '[diff-so-fancy]' + assertFileContains home-files/.config/git/config 'markEmptyLines = false' + assertFileContains home-files/.config/git/config 'changeHunkIndicators = true' + assertFileContains home-files/.config/git/config 'stripLeadingSymbols = false' + ''; +}