Module: ParallelTests::Gherkin::Io

Included in:
Cucumber::FailuresLogger, RuntimeLogger
Defined in:
lib/parallel_tests/gherkin/io.rb

Instance Method Summary collapse

Instance Method Details

#lock_outputObject

do not let multiple processes get in each others way



26
27
28
29
30
31
32
33
34
35
36
37
# File 'lib/parallel_tests/gherkin/io.rb', line 26

def lock_output
  if File === @io
    begin
      @io.flock File::LOCK_EX
      yield
    ensure
      @io.flock File::LOCK_UN
    end
  else
    yield
  end
end

#prepare_io(path_or_io) ⇒ Object



7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
# File 'lib/parallel_tests/gherkin/io.rb', line 7

def prepare_io(path_or_io)
  if path_or_io.respond_to?(:write)
    path_or_io
  else # its a path
    File.open(path_or_io, 'w').close # clean out the file
    file = File.open(path_or_io, 'a')

    at_exit do
      unless file.closed?
        file.flush
        file.close
      end
    end

    file
  end
end