From 8486f9144ecebdac9672a34b41e532f5a41fcb19 Mon Sep 17 00:00:00 2001 From: Matt Sturgeon Date: Fri, 21 Nov 2025 12:30:08 +0000 Subject: [PATCH] lib/modules: init `testNixvim` and `testNixvimWith` Introduce thin wrappers around the `.config.build.test` option, intended to replace the legacy `mkTestDerivationFromNvim` and `mkTestDerivationFromNixvimModule` functions. --- lib/modules.nix | 41 +++++++++++++++++++++++++++++++++++++++++ tests/lib-tests.nix | 5 +++++ 2 files changed, 46 insertions(+) diff --git a/lib/modules.nix b/lib/modules.nix index 09d12f7e..95cf5f82 100644 --- a/lib/modules.nix +++ b/lib/modules.nix @@ -98,6 +98,47 @@ in buildNixvimWith = lib.mirrorFunctionArgs self.modules.evalNixvim ( args: (self.modules.evalNixvim args).config.build.package ); + + /** + Build a Nixvim test derivation. + + # Inputs + + `input` + : One of: + 1. A Nixvim module or a list of modules. + 2. A Nixvim configuration. + 3. A Nixvim package. + + # Output + + A buildable Nixvim test. + */ + testNixvim = + input: + if lib.isDerivation input then + lib.throwIfNot (input ? config.build.test) + "testNixvim: received a derivation without the expected `config` attribute." + input.config.build.test + else if lib.isType "configuration" input then + lib.throwIfNot (input ? config.build.test) + "testNixvim: received a configuration without the expected `build.test` option." + input.config.build.test + else + self.modules.testNixvimWith { + modules = lib.toList input; + }; + + /** + Build a Nixvim test derivation using the same interface as `evalNixvim`. + + # Output + + A buildable Nixvim test. + */ + testNixvimWith = lib.mirrorFunctionArgs self.modules.evalNixvim ( + args: (self.modules.evalNixvim args).config.build.test + ); } // lib.mapAttrs ( name: msg: diff --git a/tests/lib-tests.nix b/tests/lib-tests.nix index bbce4eaf..f2734634 100644 --- a/tests/lib-tests.nix +++ b/tests/lib-tests.nix @@ -551,6 +551,11 @@ let expr = lib.functionArgs lib.nixvim.modules.buildNixvimWith; expected = lib.functionArgs lib.nixvim.modules.evalNixvim; }; + + testNixvimWith_hasExpectedArgs = { + expr = lib.functionArgs lib.nixvim.modules.testNixvimWith; + expected = lib.functionArgs lib.nixvim.modules.evalNixvim; + }; }; in if results == [ ] then