@@ -16,6 +16,11 @@ def initialize
16
16
@existing = existing_display?
17
17
@enabled = false
18
18
@pid = nil
19
+
20
+ @xv_pipe_out_wr = nil
21
+ @xv_pipe_err_wr = nil
22
+ @xv_pipe_out = nil
23
+ @xv_pipe_err = nil
19
24
end
20
25
21
26
# attempt to determine if the machine is running a graphical display (i.e. not Travis)
@@ -71,6 +76,8 @@ def enable
71
76
end
72
77
73
78
return unless @pid . nil? # TODO: disable first?
79
+ @xv_pipe_out . close unless @xv_pipe_out . nil?
80
+ @xv_pipe_err . close unless @xv_pipe_err . nil?
74
81
75
82
# open Xvfb
76
83
xvfb_cmd = [
@@ -81,8 +88,11 @@ def enable
81
88
"-screen" , "0" ,
82
89
"1280x1024x16" ,
83
90
]
84
- puts "pipeline_start for Xvfb"
85
- pipe = IO . popen ( xvfb_cmd )
91
+ puts "Xvfb launching"
92
+ @xv_pipe_out , @xv_pipe_out_wr = IO . pipe
93
+ @xv_pipe_err , @xv_pipe_err_wr = IO . pipe
94
+
95
+ pipe = IO . popen ( xvfb_cmd , out : @xv_pipe_out_wr , err : @xv_pipe_err_wr )
86
96
@pid = pipe . pid
87
97
@enabled = xvfb_launched? ( DESIRED_DISPLAY , @pid , 30 )
88
98
end
@@ -109,6 +119,9 @@ def disable
109
119
Process . wait @pid
110
120
@enabled = false
111
121
@pid = nil
122
+
123
+ @xv_pipe_out_wr . close
124
+ @xv_pipe_err_wr . close
112
125
end
113
126
end
114
127
@@ -133,14 +146,11 @@ def run(*args, **kwargs)
133
146
env_vars . merge! ( args [ 0 ] ) if has_env
134
147
actual_args = has_env ? args [ 1 ..-1 ] : args # need to shift over if we extracted args
135
148
full_cmd = env_vars . empty? ? actual_args : [ env_vars ] + actual_args
136
-
137
- puts "Running #{ env_vars } $ #{ actual_args . join ( ' ' ) } "
138
- puts "Full_cmd is #{ full_cmd } "
139
- puts "kwargs is #{ kwargs } "
149
+ shell_vars = env_vars . map { |k , v | "#{ k } =#{ v } " } . join ( " " )
150
+ puts " $ #{ shell_vars } #{ actual_args . join ( ' ' ) } "
140
151
ret = system ( *full_cmd , **kwargs )
141
- puts "system call to #{ actual_args [ 0 ] } has completed"
152
+ puts "#{ actual_args [ 0 ] } has completed"
142
153
end
143
- puts "with_display has completed"
144
154
ret
145
155
end
146
156
0 commit comments