Method: PDQTest::Instance.run

Defined in:
lib/pdqtest/instance.rb

.run(example = nil) ⇒ Object



43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
# File 'lib/pdqtest/instance.rb', line 43

def self.run(example=nil)
  # needed to prevent timeouts from container.exec()
  Excon.defaults[:write_timeout] = 10000
  Excon.defaults[:read_timeout] = 10000
  status = true

  # remove reference to any previous test container
  @@active_container = nil

  if PDQTest::Puppet::find_examples().empty?
    Escort::Logger.output.puts "No acceptance tests found, annotate examples with #{PDQTest::Puppet::MAGIC_MARKER} to make some"
  else
    # process each supported OS
    test_platforms = @@image_name || Docker::acceptance_test_images
    Escort::Logger.output.puts "Acceptance test on #{test_platforms}..."
    test_platforms.each { |image_name|
      Escort::Logger.output.puts "--- start test with #{image_name} ---"
      @@active_container = PDQTest::Docker::new_container(TEST_DIR, image_name, @@privileged)
      Escort::Logger.output.puts "alive, running tests"
      status &= PDQTest::Puppet.run(@@active_container, example)

      if @@keep_container
        Escort::Logger.output.puts "finished build, container #{@@active_container.id} left on system"
        Escort::Logger.output.puts "  docker exec -ti #{@@active_container.id} bash "
      else
        PDQTest::Docker.cleanup_container(@@active_container)
        @@active_container = nil
      end

      Escort::Logger.output.puts "--- end test with #{image_name} (status: #{status})---"
    }
  end
  Escort::Logger.output.puts "overall acceptance test status=#{status}"
  status
end