mirror of
https://github.com/nix-community/nixvim.git
synced 2025-06-21 00:25:42 +02:00
tests: Implement a way to test nixvim (#199)
The tests can be executed using `nix flake check`, they check that modules can be built, and they execute in neovim without any errors. This commit only implements tests for tokyonight-nvim upstream defaults
This commit is contained in:
parent
92867386c7
commit
abc2d19a06
4 changed files with 94 additions and 0 deletions
|
@ -62,6 +62,10 @@
|
||||||
};
|
};
|
||||||
extractRustAnalyzerPkg = pkgs.callPackage extractRustAnalyzer {};
|
extractRustAnalyzerPkg = pkgs.callPackage extractRustAnalyzer {};
|
||||||
in {
|
in {
|
||||||
|
checks = import ./tests/checks.nix {
|
||||||
|
inherit pkgs;
|
||||||
|
makeNixvim = self.legacyPackages."${system}".makeNixvim;
|
||||||
|
};
|
||||||
packages = {
|
packages = {
|
||||||
docs = pkgs.callPackage (import ./docs.nix) {
|
docs = pkgs.callPackage (import ./docs.nix) {
|
||||||
modules = nixvimModules;
|
modules = nixvimModules;
|
||||||
|
|
36
tests/checks.nix
Normal file
36
tests/checks.nix
Normal file
|
@ -0,0 +1,36 @@
|
||||||
|
{
|
||||||
|
makeNixvim,
|
||||||
|
pkgs,
|
||||||
|
}: let
|
||||||
|
tests = import ./plugins {inherit (pkgs) lib;};
|
||||||
|
in
|
||||||
|
# We attempt to build & execute all configurations
|
||||||
|
builtins.mapAttrs (
|
||||||
|
name: config: let
|
||||||
|
nvim = makeNixvim config;
|
||||||
|
in
|
||||||
|
pkgs.stdenv.mkDerivation {
|
||||||
|
name = name;
|
||||||
|
|
||||||
|
nativeBuildInputs = [nvim];
|
||||||
|
|
||||||
|
dontUnpack = true;
|
||||||
|
# We need to set HOME because neovim will try to create some files
|
||||||
|
#
|
||||||
|
# Because neovim does not return an exitcode when quitting we need to check if there are
|
||||||
|
# errors on stderr
|
||||||
|
buildPhase = ''
|
||||||
|
output=$(HOME=$(realpath .) nvim -mn --headless "+q" 2>&1 >/dev/null)
|
||||||
|
if [[ -n $output ]]; then
|
||||||
|
echo "ERROR: $output"
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
'';
|
||||||
|
|
||||||
|
# If we don't do this nix is not happy
|
||||||
|
installPhase = ''
|
||||||
|
mkdir $out
|
||||||
|
'';
|
||||||
|
}
|
||||||
|
)
|
||||||
|
tests
|
23
tests/plugins/default.nix
Normal file
23
tests/plugins/default.nix
Normal file
|
@ -0,0 +1,23 @@
|
||||||
|
{lib}: let
|
||||||
|
# List of files containing configurations
|
||||||
|
pluginFiles =
|
||||||
|
builtins.filter (p: p != "default.nix") (builtins.attrNames (builtins.readDir ./.));
|
||||||
|
|
||||||
|
/*
|
||||||
|
Create a list of tests. The list is of the form:
|
||||||
|
[ { name = "<plugin>-<test_name>"; value = { ... }; } ]
|
||||||
|
*/
|
||||||
|
makePluginTests = pluginFile: let
|
||||||
|
pluginName = builtins.head (lib.strings.splitString "." pluginFile);
|
||||||
|
pluginConfigs = import (./. + "/${pluginFile}");
|
||||||
|
in
|
||||||
|
lib.attrsets.mapAttrsToList (testName: testConfig: {
|
||||||
|
name = "${pluginName}-${testName}";
|
||||||
|
value = testConfig;
|
||||||
|
})
|
||||||
|
pluginConfigs;
|
||||||
|
|
||||||
|
# A list of lists of test cases for each plugin
|
||||||
|
pluginTests = builtins.map makePluginTests pluginFiles;
|
||||||
|
in
|
||||||
|
builtins.listToAttrs (lib.lists.flatten pluginTests)
|
31
tests/plugins/tokyonight.nix
Normal file
31
tests/plugins/tokyonight.nix
Normal file
|
@ -0,0 +1,31 @@
|
||||||
|
{
|
||||||
|
# All the upstream default options of tokyonight
|
||||||
|
defaults = {
|
||||||
|
colorschemes.tokyonight = {
|
||||||
|
enable = true;
|
||||||
|
|
||||||
|
style = "storm";
|
||||||
|
# Not implemented
|
||||||
|
# lightStyle = "day";
|
||||||
|
transparent = false;
|
||||||
|
terminalColors = true;
|
||||||
|
styles = {
|
||||||
|
comments = {italic = true;};
|
||||||
|
keywords = {italic = true;};
|
||||||
|
functions = {};
|
||||||
|
variables = {};
|
||||||
|
sidebars = "dark";
|
||||||
|
floats = "dark";
|
||||||
|
};
|
||||||
|
sidebars = ["qf" "help"];
|
||||||
|
dayBrightness = 0.3;
|
||||||
|
hideInactiveStatusline = false;
|
||||||
|
dimInactive = false;
|
||||||
|
lualineBold = false;
|
||||||
|
# Not implemented
|
||||||
|
# onColors = {__raw = "function(colors) end";};
|
||||||
|
# Not implemented
|
||||||
|
# onHighlights = {__raw = "function(colors) end";};
|
||||||
|
};
|
||||||
|
};
|
||||||
|
}
|
Loading…
Add table
Add a link
Reference in a new issue