diff options
author | aszlig <aszlig@redmoonstudios.org> | 2015-05-22 07:14:00 +0200 |
---|---|---|
committer | aszlig <aszlig@redmoonstudios.org> | 2015-05-22 07:21:58 +0200 |
commit | 8be00dc71dbe409447feddc42d26bdfaf38703a4 (patch) | |
tree | ed1958593655e40907c4bd17232bae98c3a50ecc /nixos | |
parent | efd4fcbebc09d2c40713913de40786d8cb31ed9c (diff) | |
download | nixlib-8be00dc71dbe409447feddc42d26bdfaf38703a4.tar nixlib-8be00dc71dbe409447feddc42d26bdfaf38703a4.tar.gz nixlib-8be00dc71dbe409447feddc42d26bdfaf38703a4.tar.bz2 nixlib-8be00dc71dbe409447feddc42d26bdfaf38703a4.tar.lz nixlib-8be00dc71dbe409447feddc42d26bdfaf38703a4.tar.xz nixlib-8be00dc71dbe409447feddc42d26bdfaf38703a4.tar.zst nixlib-8be00dc71dbe409447feddc42d26bdfaf38703a4.zip |
nixos/test-driver: Make tesseract OCR optional.
By default this is now enabled, and it has to be explicitely enabled using "enableOCR = true". If it is set to false, any usage of getScreenText or waitForText will fail with an error suggesting to pass enableOCR. This should get rid of the rather large dependency on tesseract which we don't need for most tests. Note, that I'm using system("type -P") here to check whether tesseract is in PATH. I know it's a bashism but we already have other bashisms within the test scripts and we also run it with bash, so IMHO it's not a problem here. Signed-off-by: aszlig <aszlig@redmoonstudios.org>
Diffstat (limited to 'nixos')
-rw-r--r-- | nixos/doc/manual/development/writing-nixos-tests.xml | 8 | ||||
-rw-r--r-- | nixos/lib/test-driver/Machine.pm | 3 | ||||
-rw-r--r-- | nixos/lib/testing.nix | 11 | ||||
-rw-r--r-- | nixos/tests/installer.nix | 4 |
4 files changed, 21 insertions, 5 deletions
diff --git a/nixos/doc/manual/development/writing-nixos-tests.xml b/nixos/doc/manual/development/writing-nixos-tests.xml index 322778d1c209..b9da712b86f0 100644 --- a/nixos/doc/manual/development/writing-nixos-tests.xml +++ b/nixos/doc/manual/development/writing-nixos-tests.xml @@ -158,7 +158,9 @@ startAll; <term><methodname>getScreenText</methodname></term> <listitem><para>Return a textual representation of what is currently visible on the machine's screen using optical character - recognition.</para></listitem> + recognition.</para> + <note><para>This requires passing <option>enableOCR</option> to the test + attribute set.</para></note></listitem> </varlistentry> <varlistentry> @@ -248,7 +250,9 @@ startAll; <term><methodname>waitForText</methodname></term> <listitem><para>Wait until the supplied regular expressions matches the textual contents of the screen by using optical character recognition - (see <methodname>getScreenText</methodname>).</para></listitem> + (see <methodname>getScreenText</methodname>).</para> + <note><para>This requires passing <option>enableOCR</option> to the test + attribute set.</para></note></listitem> </varlistentry> <varlistentry> diff --git a/nixos/lib/test-driver/Machine.pm b/nixos/lib/test-driver/Machine.pm index d149634e9e62..824f23bcc4bb 100644 --- a/nixos/lib/test-driver/Machine.pm +++ b/nixos/lib/test-driver/Machine.pm @@ -499,6 +499,9 @@ sub screenshot { sub getScreenText { my ($self) = @_; + system("type -P tesseract &> /dev/null") == 0 + or die "getScreenText used but enableOCR is false"; + my $text; $self->nest("performing optical character recognition", sub { my $tmpbase = Cwd::abs_path(".")."/ocr"; diff --git a/nixos/lib/testing.nix b/nixos/lib/testing.nix index 431e3de6a8ce..2039740a4578 100644 --- a/nixos/lib/testing.nix +++ b/nixos/lib/testing.nix @@ -27,7 +27,7 @@ rec { cp ${./test-driver/Logger.pm} $libDir/Logger.pm wrapProgram $out/bin/nixos-test-driver \ - --prefix PATH : "${qemu_kvm}/bin:${vde2}/bin:${netpbm}/bin:${coreutils}/bin:${tesseract}/bin" \ + --prefix PATH : "${qemu_kvm}/bin:${vde2}/bin:${netpbm}/bin:${coreutils}/bin" \ --prefix PERL5LIB : "${with perlPackages; lib.makePerlPath [ TermReadLineGnu XMLWriter IOTty FileSlurp ]}:$out/lib/perl5/site_perl" ''; }; @@ -68,7 +68,12 @@ rec { makeTest = - { testScript, makeCoverageReport ? false, name ? "unnamed", ... } @ t: + { testScript + , makeCoverageReport ? false + , enableOCR ? false + , name ? "unnamed" + , ... + } @ t: let testDriverName = "nixos-test-driver-${name}"; @@ -102,12 +107,14 @@ rec { vms="$(for i in ${toString vms}; do echo $i/bin/run-*-vm; done)" wrapProgram $out/bin/nixos-test-driver \ --add-flags "$vms" \ + ${lib.optionalString enableOCR "--prefix PATH : '${tesseract}/bin'"} \ --run "testScript=\"\$(cat $out/test-script)\"" \ --set testScript '"$testScript"' \ --set VLANS '"${toString vlans}"' ln -s ${testDriver}/bin/nixos-test-driver $out/bin/nixos-run-vms wrapProgram $out/bin/nixos-run-vms \ --add-flags "$vms" \ + ${lib.optionalString enableOCR "--prefix PATH : '${tesseract}/bin'"} \ --set tests '"startAll; joinAll;"' \ --set VLANS '"${toString vlans}"' \ ${lib.optionalString (builtins.length vms == 1) "--set USE_SERIAL 1"} diff --git a/nixos/tests/installer.nix b/nixos/tests/installer.nix index f491b0460330..64f98141cc0e 100644 --- a/nixos/tests/installer.nix +++ b/nixos/tests/installer.nix @@ -252,12 +252,13 @@ let makeInstallerTest = name: { createPartitions, preBootCommands ? "", extraConfig ? "" , testChannel ? false, grubVersion ? 2, grubDevice ? "/dev/vda" - , grubIdentifier ? "uuid" + , grubIdentifier ? "uuid", enableOCR ? false }: makeTest { inherit iso; name = "installer-" + name; nodes = if testChannel then { inherit webserver; } else { }; + inherit enableOCR; testScript = testScriptFun { inherit createPartitions preBootCommands testChannel grubVersion grubDevice grubIdentifier extraConfig; @@ -364,6 +365,7 @@ in { preLVM = true; }; ''; + enableOCR = true; preBootCommands = '' $machine->start; $machine->waitForText(qr/Enter passphrase/); |