diff --git a/nixos/doc/manual/development/writing-nixos-tests.xml b/nixos/doc/manual/development/writing-nixos-tests.xml
index 24efd2e3273ab..e5a887c18c770 100644
--- a/nixos/doc/manual/development/writing-nixos-tests.xml
+++ b/nixos/doc/manual/development/writing-nixos-tests.xml
@@ -419,4 +419,23 @@ machine.wait_for_unit("xautolock.service", "x-session-user")
wait_for_unit, start_job and
stop_job.
+
+
+ For faster dev cycles it's also possible to disable the code-linters (this shouldn't
+ be commited though):
+
+import ./make-test-python.nix {
+ skipLint = true;
+ machine =
+ { config, pkgs, ... }:
+ { configurationā¦
+ };
+
+ testScript =
+ ''
+ Python codeā¦
+ '';
+}
+
+
diff --git a/nixos/lib/testing-python.nix b/nixos/lib/testing-python.nix
index c4eb9328b1db1..3d09be3b6cd50 100644
--- a/nixos/lib/testing-python.nix
+++ b/nixos/lib/testing-python.nix
@@ -95,6 +95,8 @@ in rec {
, makeCoverageReport ? false
, enableOCR ? false
, name ? "unnamed"
+ # Skip linting (mainly intended for faster dev cycles)
+ , skipLint ? false
, ...
} @ t:
@@ -133,7 +135,7 @@ in rec {
# Generate onvenience wrappers for running the test driver
# interactively with the specified network, and for starting the
# VMs from the command line.
- driver = runCommand testDriverName
+ driver = let warn = if skipLint then lib.warn "Linting is disabled!" else lib.id; in warn (runCommand testDriverName
{ buildInputs = [ makeWrapper];
testScript = testScript';
preferLocalBuild = true;
@@ -143,7 +145,9 @@ in rec {
mkdir -p $out/bin
echo -n "$testScript" > $out/test-script
- ${python3Packages.black}/bin/black --check --diff $out/test-script
+ ${lib.optionalString (!skipLint) ''
+ ${python3Packages.black}/bin/black --check --diff $out/test-script
+ ''}
ln -s ${testDriver}/bin/nixos-test-driver $out/bin/
vms=($(for i in ${toString vms}; do echo $i/bin/run-*-vm; done))
@@ -160,7 +164,7 @@ in rec {
--set tests 'start_all(); join_all();' \
--set VLANS '${toString vlans}' \
${lib.optionalString (builtins.length vms == 1) "--set USE_SERIAL 1"}
- ''; # "
+ ''); # "
passMeta = drv: drv // lib.optionalAttrs (t ? meta) {
meta = (drv.meta or {}) // t.meta;