Sha256: 40d7498b69ee290d37b449c3714cbee9d832b17de3fc3dd6c6af80e4d9097fe2

Contents?: true

Size: 1.24 KB

Versions: 8

Compression:

Stored size: 1.24 KB

Contents

# frozen_string_literal: true

require_relative "../../ext/test"
require_relative "ext"

module Datadog
  module CI
    module Contrib
      module RSpec
        # Instrument RSpec::Core::ExampleGroup
        module ExampleGroup
          def self.included(base)
            base.singleton_class.prepend(ClassMethods)
          end

          # Instance methods for configuration
          module ClassMethods
            def run(reporter = ::RSpec::Core::NullReporter)
              return super unless datadog_configuration[:enabled]
              return super unless top_level?

              suite_name = "#{description} at #{file_path}"
              test_suite = Datadog::CI.start_test_suite(suite_name)

              success = super
              return success unless test_suite

              if success && test_suite.passed_tests_count > 0
                test_suite.passed!
              elsif success
                test_suite.skipped!
              else
                test_suite.failed!
              end

              test_suite.finish

              success
            end

            private

            def datadog_configuration
              Datadog.configuration.ci[:rspec]
            end
          end
        end
      end
    end
  end
end

Version data entries

8 entries across 8 versions & 1 rubygems

Version Path
datadog-ci-1.0.0.beta3 lib/datadog/ci/contrib/rspec/example_group.rb
datadog-ci-1.0.0.beta2 lib/datadog/ci/contrib/rspec/example_group.rb
datadog-ci-1.0.0.beta1 lib/datadog/ci/contrib/rspec/example_group.rb
datadog-ci-0.8.3 lib/datadog/ci/contrib/rspec/example_group.rb
datadog-ci-0.8.2 lib/datadog/ci/contrib/rspec/example_group.rb
datadog-ci-0.8.1 lib/datadog/ci/contrib/rspec/example_group.rb
datadog-ci-0.8.0 lib/datadog/ci/contrib/rspec/example_group.rb
datadog-ci-0.7.0 lib/datadog/ci/contrib/rspec/example_group.rb