Method: Webhookdb::SpecHelpers::Citest.run_tests

Defined in:
lib/webhookdb/spec_helpers/citest.rb

.run_tests(folders) ⇒ Object

Run RSpec against the given folders, create a DatabaseDocument for the html results, and POST to Slack about it.



11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
# File 'lib/webhookdb/spec_helpers/citest.rb', line 11

def self.run_tests(folders)
  out = StringIO.new
  err = StringIO.new
  folders = [folders] unless folders.respond_to?(:to_ary)
  args = folders.map { |f| "#{f}/" }
  args << "--format"
  args << "html"
  RSpec::Core::Runner.run(args, err, out)

  notifier = Webhookdb::Slack.new_notifier(
    force_channel: "#webhookdb-notifications",
    username: "CI Tests",
    icon_emoji: ":female-detective:",
  )
  outstring = out.string
  result = Webhookdb::SpecHelpers::Citest.parse_rspec_html(outstring)
  unless result.ok?
    msg = "Errored or unparseable output running #{folders.join(', ')} tests:" \
          "\nerror: #{err.string}\nout: #{outstring}"
    notifier.post text: msg
    return
  end

  url = self.put_results(result.html)
  payload = self.result_to_payload(result, url)
  notifier.post(payload)
end