datadog-ci 1.8.0 → 1.9.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (48) hide show
  1. checksums.yaml +4 -4
  2. data/CHANGELOG.md +18 -2
  3. data/README.md +6 -8
  4. data/exe/ddcirb +3 -1
  5. data/lib/datadog/ci/auto_instrument.rb +8 -0
  6. data/lib/datadog/ci/cli/cli.rb +5 -1
  7. data/lib/datadog/ci/cli/command/base.rb +1 -0
  8. data/lib/datadog/ci/cli/command/exec.rb +29 -0
  9. data/lib/datadog/ci/cli/command/skippable_tests_percentage.rb +0 -1
  10. data/lib/datadog/ci/configuration/settings.rb +3 -21
  11. data/lib/datadog/ci/contrib/ciqueue/integration.rb +34 -0
  12. data/lib/datadog/ci/contrib/ciqueue/patcher.rb +23 -0
  13. data/lib/datadog/ci/contrib/cucumber/formatter.rb +10 -5
  14. data/lib/datadog/ci/contrib/cucumber/integration.rb +5 -14
  15. data/lib/datadog/ci/contrib/cucumber/patcher.rb +2 -6
  16. data/lib/datadog/ci/contrib/instrumentation.rb +173 -0
  17. data/lib/datadog/ci/contrib/integration.rb +101 -117
  18. data/lib/datadog/ci/contrib/knapsack/extension.rb +27 -0
  19. data/lib/datadog/ci/contrib/knapsack/integration.rb +36 -0
  20. data/lib/datadog/ci/contrib/knapsack/patcher.rb +29 -0
  21. data/lib/datadog/ci/contrib/knapsack/runner.rb +66 -0
  22. data/lib/datadog/ci/contrib/minitest/integration.rb +6 -14
  23. data/lib/datadog/ci/contrib/minitest/patcher.rb +1 -5
  24. data/lib/datadog/ci/contrib/minitest/runner.rb +6 -1
  25. data/lib/datadog/ci/contrib/minitest/test.rb +6 -1
  26. data/lib/datadog/ci/contrib/patcher.rb +62 -0
  27. data/lib/datadog/ci/contrib/rspec/example.rb +6 -1
  28. data/lib/datadog/ci/contrib/rspec/integration.rb +10 -13
  29. data/lib/datadog/ci/contrib/rspec/patcher.rb +2 -33
  30. data/lib/datadog/ci/contrib/rspec/runner.rb +6 -1
  31. data/lib/datadog/ci/contrib/selenium/capybara_driver.rb +1 -1
  32. data/lib/datadog/ci/contrib/selenium/driver.rb +1 -1
  33. data/lib/datadog/ci/contrib/selenium/integration.rb +6 -10
  34. data/lib/datadog/ci/contrib/selenium/navigation.rb +6 -2
  35. data/lib/datadog/ci/contrib/selenium/patcher.rb +2 -6
  36. data/lib/datadog/ci/contrib/selenium/rum.rb +0 -2
  37. data/lib/datadog/ci/contrib/simplecov/integration.rb +6 -10
  38. data/lib/datadog/ci/contrib/simplecov/patcher.rb +2 -6
  39. data/lib/datadog/ci/test_retries/strategy/retry_new.rb +1 -1
  40. data/lib/datadog/ci/test_visibility/component.rb +2 -2
  41. data/lib/datadog/ci/test_visibility/telemetry.rb +2 -1
  42. data/lib/datadog/ci/version.rb +1 -1
  43. data/lib/datadog/ci.rb +9 -1
  44. metadata +13 -7
  45. data/lib/datadog/ci/contrib/contrib.rb +0 -31
  46. data/lib/datadog/ci/contrib/rspec/knapsack_pro/extension.rb +0 -29
  47. data/lib/datadog/ci/contrib/rspec/knapsack_pro/patcher.rb +0 -26
  48. data/lib/datadog/ci/contrib/rspec/knapsack_pro/runner.rb +0 -62
@@ -1,6 +1,6 @@
1
1
  # frozen_string_literal: true
2
2
 
3
- require "datadog/tracing/contrib/patcher"
3
+ require_relative "../patcher"
4
4
 
5
5
  require_relative "example"
6
6
  require_relative "example_group"
@@ -12,46 +12,15 @@ module Datadog
12
12
  module RSpec
13
13
  # Patcher enables patching of 'rspec' module.
14
14
  module Patcher
15
- include Datadog::Tracing::Contrib::Patcher
15
+ include Datadog::CI::Contrib::Patcher
16
16
 
17
17
  module_function
18
18
 
19
- def target_version
20
- Integration.version
21
- end
22
-
23
19
  def patch
24
- # ci-queue test runner instrumentation
25
- # https://github.com/Shopify/ci-queue
26
- if ci_queue?
27
- ::RSpec::Queue::Runner.include(Runner)
28
- end
29
-
30
- if knapsack_pro?
31
- # Knapsack Pro test runner instrumentation
32
- # https://github.com/KnapsackPro/knapsack_pro-ruby
33
- require_relative "knapsack_pro/patcher"
34
- Datadog::CI::Contrib::RSpec::KnapsackPro::Patcher.patch
35
- end
36
-
37
- # default rspec test runner instrumentation
38
20
  ::RSpec::Core::Runner.include(Runner)
39
-
40
21
  ::RSpec::Core::Example.include(Example)
41
22
  ::RSpec::Core::ExampleGroup.include(ExampleGroup)
42
23
  end
43
-
44
- def ci_queue?
45
- !!defined?(::RSpec::Queue::Runner)
46
- end
47
-
48
- def knapsack_pro?
49
- knapsack_version = Gem.loaded_specs["knapsack_pro"]&.version
50
-
51
- # additional instrumentation is needed for KnapsackPro version 7 and later
52
- !!defined?(::KnapsackPro) &&
53
- !knapsack_version.nil? && knapsack_version >= Gem::Version.new("7")
54
- end
55
24
  end
56
25
  end
57
26
  end
@@ -1,6 +1,7 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  require_relative "../../ext/test"
4
+ require_relative "../instrumentation"
4
5
  require_relative "ext"
5
6
 
6
7
  module Datadog
@@ -21,7 +22,7 @@ module Datadog
21
22
  test_session = test_visibility_component.start_test_session(
22
23
  tags: {
23
24
  CI::Ext::Test::TAG_FRAMEWORK => Ext::FRAMEWORK,
24
- CI::Ext::Test::TAG_FRAMEWORK_VERSION => CI::Contrib::RSpec::Integration.version.to_s
25
+ CI::Ext::Test::TAG_FRAMEWORK_VERSION => datadog_integration.version.to_s
25
26
  },
26
27
  service: datadog_configuration[:service_name],
27
28
  total_tests_count: ::RSpec.world.example_count
@@ -47,6 +48,10 @@ module Datadog
47
48
 
48
49
  private
49
50
 
51
+ def datadog_integration
52
+ CI::Contrib::Instrumentation.fetch_integration(:rspec)
53
+ end
54
+
50
55
  def datadog_configuration
51
56
  Datadog.configuration.ci[:rspec]
52
57
  end
@@ -1,6 +1,6 @@
1
1
  # frozen_string_literal: true
2
2
 
3
- require "datadog/tracing/contrib/patcher"
3
+ require_relative "../patcher"
4
4
 
5
5
  require_relative "ext"
6
6
  require_relative "rum"
@@ -1,6 +1,6 @@
1
1
  # frozen_string_literal: true
2
2
 
3
- require "datadog/tracing/contrib/patcher"
3
+ require_relative "../patcher"
4
4
 
5
5
  require_relative "ext"
6
6
  require_relative "rum"
@@ -9,28 +9,24 @@ module Datadog
9
9
  module Contrib
10
10
  module Selenium
11
11
  # Description of Selenium integration
12
- class Integration
13
- include Datadog::CI::Contrib::Integration
14
-
12
+ class Integration < Contrib::Integration
15
13
  MINIMUM_VERSION = Gem::Version.new("4.0.0")
16
14
 
17
- register_as :selenium
18
-
19
- def self.version
15
+ def version
20
16
  Gem.loaded_specs["selenium-webdriver"]&.version
21
17
  end
22
18
 
23
- def self.loaded?
19
+ def loaded?
24
20
  !defined?(::Selenium).nil? && !defined?(::Selenium::WebDriver).nil? &&
25
21
  !defined?(::Selenium::WebDriver::Driver).nil?
26
22
  end
27
23
 
28
- def self.compatible?
24
+ def compatible?
29
25
  super && version >= MINIMUM_VERSION
30
26
  end
31
27
 
32
- # additional instrumentations for test helpers are auto instrumented on test session start
33
- def auto_instrument?
28
+ # additional instrumentations for test libraries are late instrumented on test session start
29
+ def late_instrument?
34
30
  true
35
31
  end
36
32
 
@@ -1,6 +1,6 @@
1
1
  # frozen_string_literal: true
2
2
 
3
- require "datadog/tracing/contrib/patcher"
3
+ require_relative "../patcher"
4
4
 
5
5
  require_relative "ext"
6
6
  require_relative "../../ext/test"
@@ -43,7 +43,7 @@ module Datadog
43
43
  active_test.set_tag(CI::Ext::Test::TAG_BROWSER_DRIVER, "selenium")
44
44
  active_test.set_tag(
45
45
  CI::Ext::Test::TAG_BROWSER_DRIVER_VERSION,
46
- Integration.version
46
+ datadog_integration.version
47
47
  )
48
48
  active_test.set_tag(
49
49
  CI::Ext::Test::TAG_BROWSER_NAME,
@@ -63,6 +63,10 @@ module Datadog
63
63
 
64
64
  private
65
65
 
66
+ def datadog_integration
67
+ CI::Contrib::Instrumentation.fetch_integration(:selenium)
68
+ end
69
+
66
70
  def datadog_configuration
67
71
  Datadog.configuration.ci[:selenium]
68
72
  end
@@ -1,6 +1,6 @@
1
1
  # frozen_string_literal: true
2
2
 
3
- require "datadog/tracing/contrib/patcher"
3
+ require_relative "../patcher"
4
4
 
5
5
  require_relative "capybara_driver"
6
6
  require_relative "driver"
@@ -12,14 +12,10 @@ module Datadog
12
12
  module Selenium
13
13
  # Patcher enables patching of 'Selenium::WebDriver' module.
14
14
  module Patcher
15
- include Datadog::Tracing::Contrib::Patcher
15
+ include Datadog::CI::Contrib::Patcher
16
16
 
17
17
  module_function
18
18
 
19
- def target_version
20
- Integration.version
21
- end
22
-
23
19
  def patch
24
20
  ::Selenium::WebDriver::Driver.include(Driver)
25
21
  ::Selenium::WebDriver::Navigation.include(Navigation)
@@ -1,7 +1,5 @@
1
1
  # frozen_string_literal: true
2
2
 
3
- require "datadog/tracing/contrib/patcher"
4
-
5
3
  require_relative "ext"
6
4
  require_relative "../../ext/test"
7
5
  require_relative "../../utils/parsing"
@@ -9,27 +9,23 @@ module Datadog
9
9
  module Contrib
10
10
  module Simplecov
11
11
  # Description of Simplecov integration
12
- class Integration
13
- include Datadog::CI::Contrib::Integration
14
-
12
+ class Integration < Contrib::Integration
15
13
  MINIMUM_VERSION = Gem::Version.new("0.18.0")
16
14
 
17
- register_as :simplecov
18
-
19
- def self.version
15
+ def version
20
16
  Gem.loaded_specs["simplecov"]&.version
21
17
  end
22
18
 
23
- def self.loaded?
19
+ def loaded?
24
20
  !defined?(::SimpleCov).nil?
25
21
  end
26
22
 
27
- def self.compatible?
23
+ def compatible?
28
24
  super && version >= MINIMUM_VERSION
29
25
  end
30
26
 
31
- # additional instrumentations for test helpers are auto instrumented on test session start
32
- def auto_instrument?
27
+ # additional instrumentations for test libraries are late instrumented on test session start
28
+ def late_instrument?
33
29
  true
34
30
  end
35
31
 
@@ -1,6 +1,6 @@
1
1
  # frozen_string_literal: true
2
2
 
3
- require "datadog/tracing/contrib/patcher"
3
+ require_relative "../patcher"
4
4
 
5
5
  require_relative "result_extractor"
6
6
 
@@ -10,14 +10,10 @@ module Datadog
10
10
  module Simplecov
11
11
  # Patcher enables patching of 'SimpleCov' module.
12
12
  module Patcher
13
- include Datadog::Tracing::Contrib::Patcher
13
+ include Datadog::CI::Contrib::Patcher
14
14
 
15
15
  module_function
16
16
 
17
- def target_version
18
- Integration.version
19
- end
20
-
21
17
  def patch
22
18
  ::SimpleCov.include(ResultExtractor)
23
19
  end
@@ -101,7 +101,7 @@ module Datadog
101
101
  end
102
102
  @total_limit = (tests_count * percentage_limit / 100.0).ceil
103
103
  Datadog.logger.debug do
104
- "Retry new tests total limit is [#{@total_limit}] (#{percentage_limit}%) of #{tests_count}"
104
+ "Retry new tests total limit is [#{@total_limit}] (#{percentage_limit}% of #{tests_count})"
105
105
  end
106
106
  end
107
107
 
@@ -7,7 +7,7 @@ require_relative "telemetry"
7
7
  require_relative "total_coverage"
8
8
 
9
9
  require_relative "../codeowners/parser"
10
- require_relative "../contrib/contrib"
10
+ require_relative "../contrib/instrumentation"
11
11
  require_relative "../ext/test"
12
12
  require_relative "../git/local_repository"
13
13
 
@@ -149,7 +149,7 @@ module Datadog
149
149
  git_tree_upload_worker.perform(test_session.git_repository_url)
150
150
 
151
151
  # finds and instruments additional test libraries that we support (ex: selenium-webdriver)
152
- Contrib.auto_instrument_on_session_start!
152
+ Contrib::Instrumentation.instrument_on_session_start
153
153
 
154
154
  # sends internal telemetry events
155
155
  Telemetry.test_session_started(test_session)
@@ -1,5 +1,6 @@
1
1
  # frozen_string_literal: true
2
2
 
3
+ require_relative "../contrib/instrumentation"
3
4
  require_relative "../ext/app_types"
4
5
  require_relative "../ext/environment"
5
6
  require_relative "../ext/telemetry"
@@ -33,7 +34,7 @@ module Datadog
33
34
  Ext::Telemetry::METRIC_TEST_SESSION,
34
35
  1,
35
36
  {
36
- Ext::Telemetry::TAG_AUTO_INJECTED => "false", # ruby doesn't support auto injection yet
37
+ Ext::Telemetry::TAG_AUTO_INJECTED => Contrib::Instrumentation.auto_instrumented?.to_s,
37
38
  Ext::Telemetry::TAG_PROVIDER => test_session.ci_provider || Ext::Telemetry::Provider::UNSUPPORTED
38
39
  }
39
40
  )
@@ -4,7 +4,7 @@ module Datadog
4
4
  module CI
5
5
  module VERSION
6
6
  MAJOR = 1
7
- MINOR = 8
7
+ MINOR = 9
8
8
  PATCH = 0
9
9
  PRE = nil
10
10
  BUILD = nil
data/lib/datadog/ci.rb CHANGED
@@ -406,9 +406,17 @@ module Datadog
406
406
  end
407
407
 
408
408
  # Integrations
409
+
410
+ # Test frameworks (manual instrumentation)
409
411
  require_relative "ci/contrib/cucumber/integration"
410
- require_relative "ci/contrib/rspec/integration"
411
412
  require_relative "ci/contrib/minitest/integration"
413
+ require_relative "ci/contrib/rspec/integration"
414
+
415
+ # Test runners (instrumented automatically when corresponding frameworks are instrumented)
416
+ require_relative "ci/contrib/knapsack/integration"
417
+ require_relative "ci/contrib/ciqueue/integration"
418
+
419
+ # Additional test libraries (auto instrumented later on test session start)
412
420
  require_relative "ci/contrib/selenium/integration"
413
421
  require_relative "ci/contrib/simplecov/integration"
414
422
 
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: datadog-ci
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.8.0
4
+ version: 1.9.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Datadog, Inc.
8
8
  autorequire:
9
9
  bindir: exe
10
10
  cert_chain: []
11
- date: 2024-10-17 00:00:00.000000000 Z
11
+ date: 2024-11-26 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: datadog
@@ -61,8 +61,10 @@ files:
61
61
  - ext/datadog_cov/datadog_cov.c
62
62
  - ext/datadog_cov/extconf.rb
63
63
  - lib/datadog/ci.rb
64
+ - lib/datadog/ci/auto_instrument.rb
64
65
  - lib/datadog/ci/cli/cli.rb
65
66
  - lib/datadog/ci/cli/command/base.rb
67
+ - lib/datadog/ci/cli/command/exec.rb
66
68
  - lib/datadog/ci/cli/command/skippable_tests_percentage.rb
67
69
  - lib/datadog/ci/cli/command/skippable_tests_percentage_estimate.rb
68
70
  - lib/datadog/ci/codeowners/matcher.rb
@@ -72,7 +74,8 @@ files:
72
74
  - lib/datadog/ci/configuration/components.rb
73
75
  - lib/datadog/ci/configuration/extensions.rb
74
76
  - lib/datadog/ci/configuration/settings.rb
75
- - lib/datadog/ci/contrib/contrib.rb
77
+ - lib/datadog/ci/contrib/ciqueue/integration.rb
78
+ - lib/datadog/ci/contrib/ciqueue/patcher.rb
76
79
  - lib/datadog/ci/contrib/cucumber/configuration/settings.rb
77
80
  - lib/datadog/ci/contrib/cucumber/ext.rb
78
81
  - lib/datadog/ci/contrib/cucumber/filter.rb
@@ -80,7 +83,12 @@ files:
80
83
  - lib/datadog/ci/contrib/cucumber/instrumentation.rb
81
84
  - lib/datadog/ci/contrib/cucumber/integration.rb
82
85
  - lib/datadog/ci/contrib/cucumber/patcher.rb
86
+ - lib/datadog/ci/contrib/instrumentation.rb
83
87
  - lib/datadog/ci/contrib/integration.rb
88
+ - lib/datadog/ci/contrib/knapsack/extension.rb
89
+ - lib/datadog/ci/contrib/knapsack/integration.rb
90
+ - lib/datadog/ci/contrib/knapsack/patcher.rb
91
+ - lib/datadog/ci/contrib/knapsack/runner.rb
84
92
  - lib/datadog/ci/contrib/minitest/configuration/settings.rb
85
93
  - lib/datadog/ci/contrib/minitest/ext.rb
86
94
  - lib/datadog/ci/contrib/minitest/helpers.rb
@@ -90,14 +98,12 @@ files:
90
98
  - lib/datadog/ci/contrib/minitest/runnable.rb
91
99
  - lib/datadog/ci/contrib/minitest/runner.rb
92
100
  - lib/datadog/ci/contrib/minitest/test.rb
101
+ - lib/datadog/ci/contrib/patcher.rb
93
102
  - lib/datadog/ci/contrib/rspec/configuration/settings.rb
94
103
  - lib/datadog/ci/contrib/rspec/example.rb
95
104
  - lib/datadog/ci/contrib/rspec/example_group.rb
96
105
  - lib/datadog/ci/contrib/rspec/ext.rb
97
106
  - lib/datadog/ci/contrib/rspec/integration.rb
98
- - lib/datadog/ci/contrib/rspec/knapsack_pro/extension.rb
99
- - lib/datadog/ci/contrib/rspec/knapsack_pro/patcher.rb
100
- - lib/datadog/ci/contrib/rspec/knapsack_pro/runner.rb
101
107
  - lib/datadog/ci/contrib/rspec/patcher.rb
102
108
  - lib/datadog/ci/contrib/rspec/runner.rb
103
109
  - lib/datadog/ci/contrib/selenium/capybara_driver.rb
@@ -241,7 +247,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
241
247
  - !ruby/object:Gem::Version
242
248
  version: 2.0.0
243
249
  requirements: []
244
- rubygems_version: 3.5.16
250
+ rubygems_version: 3.5.22
245
251
  signing_key:
246
252
  specification_version: 4
247
253
  summary: Datadog CI visibility for your ruby application
@@ -1,31 +0,0 @@
1
- # frozen_string_literal: true
2
-
3
- require_relative "integration"
4
-
5
- module Datadog
6
- module CI
7
- module Contrib
8
- # This method auto instruments all test libraries (ex: selenium-webdriver).
9
- # It is intended to be called when test session starts to add additional capabilities to test visibility.
10
- #
11
- # This method does not automatically instrument test frameworks (ex: RSpec, Cucumber, etc), it requires
12
- # test framework to be already instrumented.
13
- def self.auto_instrument_on_session_start!
14
- Datadog.logger.debug("Auto instrumenting all integrations...")
15
-
16
- Integration.registry.each do |name, integration|
17
- next unless integration.auto_instrument?
18
-
19
- Datadog.logger.debug "#{name} is allowed to be auto instrumented"
20
-
21
- patch_results = integration.patch
22
- if patch_results == true
23
- Datadog.logger.debug("#{name} is patched")
24
- else
25
- Datadog.logger.debug("#{name} is not patched (#{patch_results})")
26
- end
27
- end
28
- end
29
- end
30
- end
31
- end
@@ -1,29 +0,0 @@
1
- # frozen_string_literal: true
2
-
3
- require "knapsack_pro/extensions/rspec_extension"
4
-
5
- require_relative "runner"
6
-
7
- module Datadog
8
- module CI
9
- module Contrib
10
- module RSpec
11
- module KnapsackPro
12
- module Extension
13
- def self.included(base)
14
- base.singleton_class.prepend(ClassMethods)
15
- end
16
-
17
- module ClassMethods
18
- def setup!
19
- super
20
-
21
- ::RSpec::Core::Runner.include(Datadog::CI::Contrib::RSpec::KnapsackPro::Runner)
22
- end
23
- end
24
- end
25
- end
26
- end
27
- end
28
- end
29
- end
@@ -1,26 +0,0 @@
1
- # frozen_string_literal: true
2
-
3
- module Datadog
4
- module CI
5
- module Contrib
6
- module RSpec
7
- module KnapsackPro
8
- module Patcher
9
- def self.patch
10
- if defined?(::KnapsackPro::Extensions::RSpecExtension::Runner) &&
11
- ::RSpec::Core::Runner.ancestors.include?(::KnapsackPro::Extensions::RSpecExtension::Runner)
12
- # knapsack already patched rspec runner
13
- require_relative "runner"
14
- ::RSpec::Core::Runner.include(KnapsackPro::Runner)
15
- else
16
- # knapsack didn't patch rspec runner yet
17
- require_relative "extension"
18
- ::KnapsackPro::Extensions::RSpecExtension.include(KnapsackPro::Extension)
19
- end
20
- end
21
- end
22
- end
23
- end
24
- end
25
- end
26
- end
@@ -1,62 +0,0 @@
1
- # frozen_string_literal: true
2
-
3
- require_relative "../../../ext/test"
4
- require_relative "../ext"
5
-
6
- module Datadog
7
- module CI
8
- module Contrib
9
- module RSpec
10
- module KnapsackPro
11
- module Runner
12
- def self.included(base)
13
- base.prepend(InstanceMethods)
14
- end
15
-
16
- module InstanceMethods
17
- def knapsack__run_specs(*args)
18
- return super if ::RSpec.configuration.dry_run? && !datadog_configuration[:dry_run_enabled]
19
- return super unless datadog_configuration[:enabled]
20
-
21
- test_session = test_visibility_component.start_test_session(
22
- tags: {
23
- CI::Ext::Test::TAG_FRAMEWORK => Ext::FRAMEWORK,
24
- CI::Ext::Test::TAG_FRAMEWORK_VERSION => CI::Contrib::RSpec::Integration.version.to_s
25
- },
26
- service: datadog_configuration[:service_name]
27
- )
28
-
29
- test_module = test_visibility_component.start_test_module(Ext::FRAMEWORK)
30
-
31
- result = super
32
- return result unless test_module && test_session
33
-
34
- if result != 0
35
- test_module.failed!
36
- test_session.failed!
37
- else
38
- test_module.passed!
39
- test_session.passed!
40
- end
41
- test_module.finish
42
- test_session.finish
43
-
44
- result
45
- end
46
-
47
- private
48
-
49
- def datadog_configuration
50
- Datadog.configuration.ci[:rspec]
51
- end
52
-
53
- def test_visibility_component
54
- Datadog.send(:components).test_visibility
55
- end
56
- end
57
- end
58
- end
59
- end
60
- end
61
- end
62
- end