Sha256: e9f4774df304df22009ae4aa515ff56fe29a59772049d160a4d1bdbd8f703579

Contents?: true

Size: 1.35 KB

Versions: 3

Compression:

Stored size: 1.35 KB

Contents

# frozen_string_literal: true

require "rspec/core"
require "rspec/expectations"

require_relative "../rspec_plugin/reporter"
require_relative "../rspec_plugin/trace"

Buildkite::TestCollector.uploader = Buildkite::TestCollector::Uploader

RSpec.configure do |config|
  config.before(:suite) do
    config.add_formatter Buildkite::TestCollector::RSpecPlugin::Reporter
  end

  config.around(:each) do |example|
    tracer = Buildkite::TestCollector::Tracer.new

    # The _buildkite prefix here is added as a safeguard against name collisions
    # as we are in the main thread
    Thread.current[:_buildkite_tracer] = tracer
    example.run
    Thread.current[:_buildkite_tracer] = nil

    tracer.finalize

    trace = Buildkite::TestCollector::RSpecPlugin::Trace.new(example, history: tracer.history)
    Buildkite::TestCollector.uploader.traces[example.id] = trace
  end

  config.after(:suite) do
    if Buildkite::TestCollector.artifact_path
      filename = File.join(Buildkite::TestCollector.artifact_path, "buildkite-test-collector-rspec-#{Buildkite::TestCollector::UUID.call}.json.gz")
      data_set = { results: Buildkite::TestCollector.uploader.traces.values.map(&:as_hash) }
      File.open(filename, "wb") do |f|
        gz = Zlib::GzipWriter.new(f)
        gz.write(data_set.to_json)
        gz.close
      end
    end
  end
end

Buildkite::TestCollector.enable_tracing!

Version data entries

3 entries across 3 versions & 1 rubygems

Version Path
buildkite-test_collector-2.3.2 lib/buildkite/test_collector/library_hooks/rspec.rb
buildkite-test_collector-2.3.1 lib/buildkite/test_collector/library_hooks/rspec.rb
buildkite-test_collector-2.3.0 lib/buildkite/test_collector/library_hooks/rspec.rb