From 5d7859abb1d39c490d25b4b797f0477576ab606b Mon Sep 17 00:00:00 2001 From: Gabriel Arazas Date: Fri, 8 Mar 2024 16:39:13 +0800 Subject: [PATCH] tests/lib: init env-specific subset --- tests/lib/default.nix | 9 ++++-- tests/lib/home-manager.nix | 57 ++++++++++++++++++++++++++++++++++++++ tests/lib/nixos.nix | 28 +++++++++++++++++++ tests/lib/nixvim.nix | 28 +++++++++++++++++++ 4 files changed, 120 insertions(+), 2 deletions(-) create mode 100644 tests/lib/home-manager.nix create mode 100644 tests/lib/nixos.nix create mode 100644 tests/lib/nixvim.nix diff --git a/tests/lib/default.nix b/tests/lib/default.nix index eb4802ce..31b6b29d 100644 --- a/tests/lib/default.nix +++ b/tests/lib/default.nix @@ -1,4 +1,5 @@ -{ pkgs }: +# For the environment-specific subset, we'll be simulating the configurations +# as a simple attribute set since that's what they are anyways. let inherit (pkgs) lib; @@ -16,5 +17,9 @@ let in { trivial = callLib ./trivial.nix; - #home-manager = callLib ./home-manager.nix; + + # Environment-specific subset. + home-manager = callLib ./home-manager.nix; + nixos = callLib ./nixos.nix; + nixvim = callLib ./nixvim.nix; } diff --git a/tests/lib/home-manager.nix b/tests/lib/home-manager.nix new file mode 100644 index 00000000..b1fad94c --- /dev/null +++ b/tests/lib/home-manager.nix @@ -0,0 +1,57 @@ +{ pkgs, lib, self }: + +let + # We're just using stub configurations instead. + nixosConfig = { + programs = { + firefox = { + enable = true; + }; + }; + + services = { + pipewire = { + enable = true; + wireplumber.enable = true; + alsa.enable = true; + alsa.support32Bit = true; + pulse.enable = true; + jack.enable = true; + }; + }; + }; + + hmConfig = { + services = { + activitywatch.enable = true; + bleachbit = { + enable = true; + cleaners = [ + "firefox.cookies" + "discord.cache" + ]; + }; + }; + }; + + hmConfig' = { + inherit nixosConfig; + osConfig = nixosConfig; + } // hmConfig; +in +lib.runTests { + testHomeManagerStandaloneEmpty = { + expr = self.home-manager.hasNixOSConfigAttr { } [ "programs" "firefox" "enable" ] false; + expected = false; + }; + + testHomeManagerStandalone = { + expr = self.home-manager.hasNixOSConfigAttr hmConfig [ "programs" "firefox" "enable" ] false; + expected = false; + }; + + testHomeManagerWithinNixOS = { + expr = self.home-manager.hasNixOSConfigAttr hmConfig' [ "programs" "firefox" "enable" ] false; + expected = true; + }; +} diff --git a/tests/lib/nixos.nix b/tests/lib/nixos.nix new file mode 100644 index 00000000..25d0ffe9 --- /dev/null +++ b/tests/lib/nixos.nix @@ -0,0 +1,28 @@ +{ pkgs, lib, self }: + +let + testConfig = { + formatAttr = "isoImage"; + }; +in +lib.runTests { + testNixSystemHasFormat = { + expr = self.nixos.hasNixosFormat testConfig; + expected = true; + }; + + testNixSystemNoFormat = { + expr = self.nixos.hasNixosFormat { }; + expected = false; + }; + + testNixSystemFormatCompare = { + expr = self.nixos.isFormat testConfig "isoImage"; + expected = true; + }; + + testNixSystemFormatCompare2 = { + expr = self.nixos.isFormat { } "isoImage"; + expected = false; + }; +} diff --git a/tests/lib/nixvim.nix b/tests/lib/nixvim.nix new file mode 100644 index 00000000..7d6bcc33 --- /dev/null +++ b/tests/lib/nixvim.nix @@ -0,0 +1,28 @@ +{ pkgs, lib, self }: + +let + nixvimConfig = { + plugins.lightline.enable = true; + + plugins.neorg.enable = true; + }; + + nixosConfig = { + programs.firefox.enable = true; + }; + + nixvimConfig' = { + inherit nixosConfig; + } // nixvimConfig; +in +lib.runTests { + testNixvimIsStandalone = { + expr = self.nixvim.isStandalone nixvimConfig; + expected = true; + }; + + testNixvimIsStandalone2 = { + expr = self.nixvim.isStandalone nixvimConfig'; + expected = false; + }; +}