summary refs log tree commit diff
path: root/lib/test-driver/Machine.pm
diff options
context:
space:
mode:
authorEelco Dolstra <eelco.dolstra@logicblox.com>2012-07-20 12:03:15 -0400
committerEelco Dolstra <eelco.dolstra@logicblox.com>2012-07-20 12:03:15 -0400
commit1cde1bdbe68a989cf8776fb81b3f6ad311a93bd6 (patch)
tree17e8b91adb3542f4f21de9318e91e6e17600954b /lib/test-driver/Machine.pm
parent1375e7951d73280e08bda26bef0ad9c85d059fe2 (diff)
downloadnixpkgs-1cde1bdbe68a989cf8776fb81b3f6ad311a93bd6.tar
nixpkgs-1cde1bdbe68a989cf8776fb81b3f6ad311a93bd6.tar.gz
nixpkgs-1cde1bdbe68a989cf8776fb81b3f6ad311a93bd6.tar.bz2
nixpkgs-1cde1bdbe68a989cf8776fb81b3f6ad311a93bd6.tar.lz
nixpkgs-1cde1bdbe68a989cf8776fb81b3f6ad311a93bd6.tar.xz
nixpkgs-1cde1bdbe68a989cf8776fb81b3f6ad311a93bd6.tar.zst
nixpkgs-1cde1bdbe68a989cf8776fb81b3f6ad311a93bd6.zip
nixos-run-vms: If there is only one VM, attach stdio to its serial console
This is useful for interactive testing (quicker than logging in via
SSH and more convenient than logging in via a virtual console).
Diffstat (limited to 'lib/test-driver/Machine.pm')
-rw-r--r--lib/test-driver/Machine.pm11
1 files changed, 7 insertions, 4 deletions
diff --git a/lib/test-driver/Machine.pm b/lib/test-driver/Machine.pm
index dee1e4f33cb..f0d5fbc19ea 100644
--- a/lib/test-driver/Machine.pm
+++ b/lib/test-driver/Machine.pm
@@ -50,6 +50,7 @@ sub new {
         stateDir => "$tmpDir/vm-state-$name",
         monitor => undef,
         log => $args->{log},
+        redirectSerial => $args->{redirectSerial} // 1,
     };
 
     mkdir $self->{stateDir}, 0700;
@@ -117,10 +118,12 @@ sub start {
         close $serialP;
         close $monitorS;
         close $shellS;
-        open NUL, "</dev/null" or die;
-        dup2(fileno(NUL), fileno(STDIN));
-        dup2(fileno($serialC), fileno(STDOUT));
-        dup2(fileno($serialC), fileno(STDERR));
+        if ($self->{redirectSerial}) {
+            open NUL, "</dev/null" or die;
+            dup2(fileno(NUL), fileno(STDIN));
+            dup2(fileno($serialC), fileno(STDOUT));
+            dup2(fileno($serialC), fileno(STDERR));
+        }
         $ENV{TMPDIR} = $self->{stateDir};
         $ENV{USE_TMPDIR} = 1;
         $ENV{QEMU_OPTS} =