summary refs log tree commit diff
path: root/pkgs/test
diff options
context:
space:
mode:
authorMatthieu Coudron <mattator@gmail.com>2018-10-03 18:54:42 +0900
committerMatthieu Coudron <mattator@gmail.com>2019-01-28 09:07:24 +0900
commit461cb3f9ed4e536a612cd98c5c12d50d561c29e8 (patch)
tree4ab274a9c257bbdb8c290229391d5980b0d1a265 /pkgs/test
parent7aacbdb8986f0d75c3770e70a39147c272e1eac8 (diff)
downloadnixpkgs-461cb3f9ed4e536a612cd98c5c12d50d561c29e8.tar
nixpkgs-461cb3f9ed4e536a612cd98c5c12d50d561c29e8.tar.gz
nixpkgs-461cb3f9ed4e536a612cd98c5c12d50d561c29e8.tar.bz2
nixpkgs-461cb3f9ed4e536a612cd98c5c12d50d561c29e8.tar.lz
nixpkgs-461cb3f9ed4e536a612cd98c5c12d50d561c29e8.tar.xz
nixpkgs-461cb3f9ed4e536a612cd98c5c12d50d561c29e8.tar.zst
nixpkgs-461cb3f9ed4e536a612cd98c5c12d50d561c29e8.zip
linux: added tests for the config
Diffstat (limited to 'pkgs/test')
-rw-r--r--pkgs/test/default.nix2
-rw-r--r--pkgs/test/kernel.nix53
2 files changed, 55 insertions, 0 deletions
diff --git a/pkgs/test/default.nix b/pkgs/test/default.nix
index 809b2d0b553..9b434da7a84 100644
--- a/pkgs/test/default.nix
+++ b/pkgs/test/default.nix
@@ -24,6 +24,8 @@ with pkgs;
   cc-multilib-gcc = callPackage ./cc-wrapper/multilib.nix { stdenv = gccMultiStdenv; };
   cc-multilib-clang = callPackage ./cc-wrapper/multilib.nix { stdenv = clangMultiStdenv; };
 
+  kernel-config = callPackage ./kernel.nix {};
+
   ld-library-path = callPackage ./ld-library-path {};
 
   macOSSierraShared = callPackage ./macos-sierra-shared {};
diff --git a/pkgs/test/kernel.nix b/pkgs/test/kernel.nix
new file mode 100644
index 00000000000..14a4d5ea104
--- /dev/null
+++ b/pkgs/test/kernel.nix
@@ -0,0 +1,53 @@
+{ stdenv, lib, pkgs }:
+
+with lib.kernel;
+with lib.asserts;
+with lib.modules;
+
+# To test nixos/modules/system/boot/kernel_config.nix;
+let
+  # copied from release-lib.nix
+  assertTrue = bool:
+    if bool
+    then pkgs.runCommand "evaluated-to-true" {} "touch $out"
+    else pkgs.runCommand "evaluated-to-false" {} "false";
+
+  lts_kernel = pkgs.linuxPackages.kernel;
+
+  kernelTestConfig = structuredConfig: (lts_kernel.override {
+    structuredExtraConfig = structuredConfig;
+  }).configfile.structuredConfig;
+
+  mandatoryVsOptionalConfig = mkMerge [
+    { USB_DEBUG = option yes;}
+    { USB_DEBUG = yes;}
+  ];
+
+  freeformConfig = mkMerge [
+    { MMC_BLOCK_MINORS = freeform "32"; } # same as default, won't trigger any error
+    { MMC_BLOCK_MINORS = freeform "64"; } # will trigger an error but the message is not great:
+  ];
+
+  yesWinsOverNoConfig = mkMerge [
+    # default for "8139TOO_PIO" is no
+    { "8139TOO_PIO"  = yes; } # yes wins over no by default
+    { "8139TOO_PIO"  = no; }
+  ];
+in
+{
+  # mandatory flag should win over optional
+  mandatoryCheck = (kernelTestConfig mandatoryVsOptionalConfig);
+
+  # check that freeform options are unique
+  # Should trigger
+  # > The option `settings.MMC_BLOCK_MINORS.freeform' has conflicting definitions, in `<unknown-file>' and `<unknown-file>'
+  freeformCheck = let
+    res = builtins.tryEval ( (kernelTestConfig freeformConfig).MMC_BLOCK_MINORS.freeform);
+  in
+    assertTrue (res.success == false);
+
+  yesVsNoCheck = let
+    res = kernelTestConfig yesWinsOverNoConfig;
+  in
+    assertTrue (res."8139TOO_PIO".tristate == "y");
+}