datadog-ci 1.23.2 → 1.23.3

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.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 660ce0996ea0998e1074ca1f3671b00b74659b31520486c0fec7f850cf619c40
4
- data.tar.gz: b3fa584967668ee53d4f66b9c4963236b1fbe58367f4833bf1436064a5112773
3
+ metadata.gz: a911ce98b1577d684374a00e8efd9ecbcf34fac28f24bb543411dbb762163d8c
4
+ data.tar.gz: 93c277bf2fc40ccdede20e48102eb6b1c1721336d80b62e60c9a191b807f8754
5
5
  SHA512:
6
- metadata.gz: 8c99eab8f2b7f6367627746f94cb1338e77000791f89a96767f23572c43d13d96384b7f9b85c494d64bbef34dbbc0659123b31df14976a1de973075ce7bcb657
7
- data.tar.gz: 5eab6749fe723823f6bcade1f946e9669924b3299219b7a9e67c1db1b8ac12483ffb910aedbd4be145839dd7a17ac0527d95ec36358cd2f2cee82387b6d136b9
6
+ metadata.gz: eb8fef68d0b4e9e6dc02aa76c603b98e854b09ef47913c30c986d4e397e9b48c79ec14d5ebb9dd1e48db0737def7d73f7e33aefbb35039441e65b4005884051a
7
+ data.tar.gz: 072aa07eb4af30102c588a54c75398634e1b409cd1698a087b8e0cb030bc6bb6c5bd8b98ba2c57716e8d819b61ace6ed9ed4ea39a5eda0e1accedc0e232a1eaf
data/CHANGELOG.md CHANGED
@@ -1,5 +1,11 @@
1
1
  ## [Unreleased]
2
2
 
3
+ ## [1.23.3] - 2025-11-19
4
+
5
+ ### Fixed
6
+
7
+ * Fix nil error for test discovery component by introducing NullObject pattern for all components of Datadog Test Optimization ([#430][])
8
+
3
9
  ## [1.23.2] - 2025-11-18
4
10
 
5
11
  ### Added
@@ -548,7 +554,8 @@ Currently test suite level visibility is not used by our instrumentation: it wil
548
554
 
549
555
  - Ruby versions < 2.7 no longer supported ([#8][])
550
556
 
551
- [Unreleased]: https://github.com/DataDog/datadog-ci-rb/compare/v1.23.2...main
557
+ [Unreleased]: https://github.com/DataDog/datadog-ci-rb/compare/v1.23.3...main
558
+ [1.23.3]: https://github.com/DataDog/datadog-ci-rb/compare/v1.23.2...v1.23.3
552
559
  [1.23.2]: https://github.com/DataDog/datadog-ci-rb/compare/v1.23.1...v1.23.2
553
560
  [1.23.1]: https://github.com/DataDog/datadog-ci-rb/compare/v1.23.0...v1.23.1
554
561
  [1.23.0]: https://github.com/DataDog/datadog-ci-rb/compare/v1.22.1...v1.23.0
@@ -778,4 +785,5 @@ Currently test suite level visibility is not used by our instrumentation: it wil
778
785
  [#414]: https://github.com/DataDog/datadog-ci-rb/issues/414
779
786
  [#416]: https://github.com/DataDog/datadog-ci-rb/issues/416
780
787
  [#418]: https://github.com/DataDog/datadog-ci-rb/issues/418
781
- [#425]: https://github.com/DataDog/datadog-ci-rb/issues/425
788
+ [#425]: https://github.com/DataDog/datadog-ci-rb/issues/425
789
+ [#430]: https://github.com/DataDog/datadog-ci-rb/issues/430
@@ -5,18 +5,22 @@ require "datadog/core/telemetry/ext"
5
5
  require_relative "../ext/settings"
6
6
  require_relative "../git/tree_uploader"
7
7
  require_relative "../impacted_tests_detection/component"
8
+ require_relative "../impacted_tests_detection/null_component"
8
9
  require_relative "../logs/component"
9
10
  require_relative "../logs/transport"
11
+ require_relative "../remote/null_component"
10
12
  require_relative "../remote/component"
11
13
  require_relative "../remote/library_settings_client"
12
14
  require_relative "../test_management/component"
13
15
  require_relative "../test_management/null_component"
14
16
  require_relative "../test_management/tests_properties"
17
+ require_relative "../test_optimisation/null_component"
15
18
  require_relative "../test_optimisation/component"
16
19
  require_relative "../test_optimisation/coverage/transport"
17
20
  require_relative "../test_retries/component"
18
21
  require_relative "../test_retries/null_component"
19
22
  require_relative "../test_discovery/component"
23
+ require_relative "../test_discovery/null_component"
20
24
  require_relative "../test_visibility/component"
21
25
  require_relative "../test_visibility/flush"
22
26
  require_relative "../test_visibility/known_tests"
@@ -41,14 +45,14 @@ module Datadog
41
45
  :test_management, :agentless_logs_submission, :impacted_tests_detection, :test_discovery
42
46
 
43
47
  def initialize(settings)
44
- @test_optimisation = nil
48
+ @test_optimisation = TestOptimisation::NullComponent.new
45
49
  @test_visibility = TestVisibility::NullComponent.new
46
50
  @git_tree_upload_worker = DummyWorker.new
47
- @ci_remote = nil
51
+ @ci_remote = Remote::NullComponent.new
48
52
  @test_retries = TestRetries::NullComponent.new
49
53
  @test_management = TestManagement::NullComponent.new
50
- @impacted_tests_detection = nil
51
- @test_discovery = nil
54
+ @impacted_tests_detection = ImpactedTestsDetection::NullComponent.new
55
+ @test_discovery = TestDiscovery::NullComponent.new
52
56
 
53
57
  # Activate CI mode if enabled
54
58
  if settings.ci.enabled
@@ -18,8 +18,10 @@ module Datadog
18
18
  def run_specs(*args)
19
19
  return super unless datadog_configuration[:enabled]
20
20
 
21
- if test_discovery_component.enabled?
22
- discover_tests
21
+ discovery_component = test_discovery_component
22
+
23
+ if discovery_component&.enabled?
24
+ discover_tests(discovery_component)
23
25
 
24
26
  # don't run the tests, we just needed to discover them and now we can return
25
27
  return
@@ -74,15 +76,15 @@ module Datadog
74
76
  Datadog.send(:components).test_discovery
75
77
  end
76
78
 
77
- def discover_tests
78
- test_discovery_component.start
79
+ def discover_tests(component)
80
+ component.start
79
81
 
80
82
  examples = ::RSpec.world.all_examples
81
83
 
82
84
  examples.each do |example|
83
85
  next if example.metadata[:skip]
84
86
 
85
- test_discovery_component.record_test(
87
+ component.record_test(
86
88
  name: example.datadog_test_name,
87
89
  suite: example.datadog_test_suite_name,
88
90
  parameters: example.datadog_test_parameters,
@@ -91,7 +93,7 @@ module Datadog
91
93
  )
92
94
  end
93
95
 
94
- test_discovery_component.finish
96
+ component.finish
95
97
  end
96
98
  end
97
99
  end
@@ -0,0 +1,24 @@
1
+ # frozen_string_literal: true
2
+
3
+ module Datadog
4
+ module CI
5
+ module ImpactedTestsDetection
6
+ # Null object used when impacted tests detection is unavailable
7
+ class NullComponent
8
+ def configure(_library_settings = nil, _test_session = nil)
9
+ end
10
+
11
+ def enabled?
12
+ false
13
+ end
14
+
15
+ def modified?(_test_span)
16
+ false
17
+ end
18
+
19
+ def tag_modified_test(_test_span)
20
+ end
21
+ end
22
+ end
23
+ end
24
+ end
@@ -0,0 +1,13 @@
1
+ # frozen_string_literal: true
2
+
3
+ module Datadog
4
+ module CI
5
+ module Remote
6
+ # No-op implementation used when remote configuration is disabled.
7
+ class NullComponent
8
+ def configure(_test_session)
9
+ end
10
+ end
11
+ end
12
+ end
13
+ end
@@ -0,0 +1,32 @@
1
+ # frozen_string_literal: true
2
+
3
+ module Datadog
4
+ module CI
5
+ module TestDiscovery
6
+ # Null object used when test discovery component is unavailable
7
+ class NullComponent
8
+ def configure(_library_settings = nil, _test_session = nil)
9
+ end
10
+
11
+ def disable_features_for_test_discovery!(_settings = nil)
12
+ end
13
+
14
+ def start
15
+ end
16
+
17
+ def finish
18
+ end
19
+
20
+ def record_test(name:, suite:, module_name:, parameters:, source_file:)
21
+ end
22
+
23
+ def shutdown!
24
+ end
25
+
26
+ def enabled?
27
+ false
28
+ end
29
+ end
30
+ end
31
+ end
32
+ end
@@ -0,0 +1,66 @@
1
+ # frozen_string_literal: true
2
+
3
+ require "set"
4
+
5
+ module Datadog
6
+ module CI
7
+ module TestOptimisation
8
+ # No-op implementation used when test optimisation is disabled.
9
+ class NullComponent
10
+ attr_reader :enabled, :skippable_tests_fetch_error, :test_skipping_enabled,
11
+ :code_coverage_enabled, :skippable_tests, :correlation_id
12
+
13
+ def initialize
14
+ @enabled = false
15
+ @test_skipping_enabled = false
16
+ @code_coverage_enabled = false
17
+ @skippable_tests_fetch_error = nil
18
+ @skippable_tests = Set.new
19
+ @correlation_id = nil
20
+ end
21
+
22
+ def configure(_remote_configuration = nil, _test_session = nil)
23
+ end
24
+
25
+ def enabled?
26
+ false
27
+ end
28
+
29
+ def skipping_tests?
30
+ false
31
+ end
32
+
33
+ def code_coverage?
34
+ false
35
+ end
36
+
37
+ def start_coverage(_test)
38
+ end
39
+
40
+ def stop_coverage(_test)
41
+ nil
42
+ end
43
+
44
+ def mark_if_skippable(_test)
45
+ end
46
+
47
+ def skippable?(_datadog_test_id)
48
+ false
49
+ end
50
+
51
+ def on_test_finished(_test, _context)
52
+ end
53
+
54
+ def write_test_session_tags(_test_session, _skipped_tests_count)
55
+ end
56
+
57
+ def skippable_tests_count
58
+ 0
59
+ end
60
+
61
+ def shutdown!
62
+ end
63
+ end
64
+ end
65
+ end
66
+ end
@@ -5,7 +5,7 @@ module Datadog
5
5
  module VERSION
6
6
  MAJOR = 1
7
7
  MINOR = 23
8
- PATCH = 2
8
+ PATCH = 3
9
9
  PRE = nil
10
10
  BUILD = nil
11
11
  # PRE and BUILD above are modified for dev gems during gem build GHA workflow
@@ -22,7 +22,7 @@ module Datadog
22
22
  # To allow testing with the next unreleased version of Ruby, the version check is performed
23
23
  # as `< #{MAXIMUM_RUBY_VERSION}`, meaning prereleases of MAXIMUM_RUBY_VERSION are allowed
24
24
  # but not stable MAXIMUM_RUBY_VERSION releases.
25
- MAXIMUM_RUBY_VERSION = "3.5"
25
+ MAXIMUM_RUBY_VERSION = "4.0"
26
26
  end
27
27
  end
28
28
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: datadog-ci
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.23.2
4
+ version: 1.23.3
5
5
  platform: ruby
6
6
  authors:
7
7
  - Datadog, Inc.
@@ -211,6 +211,7 @@ files:
211
211
  - lib/datadog/ci/git/upload_packfile.rb
212
212
  - lib/datadog/ci/git/user.rb
213
213
  - lib/datadog/ci/impacted_tests_detection/component.rb
214
+ - lib/datadog/ci/impacted_tests_detection/null_component.rb
214
215
  - lib/datadog/ci/logs/component.rb
215
216
  - lib/datadog/ci/logs/transport.rb
216
217
  - lib/datadog/ci/readonly_test_module.rb
@@ -218,10 +219,12 @@ files:
218
219
  - lib/datadog/ci/remote/component.rb
219
220
  - lib/datadog/ci/remote/library_settings.rb
220
221
  - lib/datadog/ci/remote/library_settings_client.rb
222
+ - lib/datadog/ci/remote/null_component.rb
221
223
  - lib/datadog/ci/remote/slow_test_retries.rb
222
224
  - lib/datadog/ci/span.rb
223
225
  - lib/datadog/ci/test.rb
224
226
  - lib/datadog/ci/test_discovery/component.rb
227
+ - lib/datadog/ci/test_discovery/null_component.rb
225
228
  - lib/datadog/ci/test_management/component.rb
226
229
  - lib/datadog/ci/test_management/null_component.rb
227
230
  - lib/datadog/ci/test_management/tests_properties.rb
@@ -230,6 +233,7 @@ files:
230
233
  - lib/datadog/ci/test_optimisation/coverage/ddcov.rb
231
234
  - lib/datadog/ci/test_optimisation/coverage/event.rb
232
235
  - lib/datadog/ci/test_optimisation/coverage/transport.rb
236
+ - lib/datadog/ci/test_optimisation/null_component.rb
233
237
  - lib/datadog/ci/test_optimisation/skippable.rb
234
238
  - lib/datadog/ci/test_optimisation/skippable_percentage/base.rb
235
239
  - lib/datadog/ci/test_optimisation/skippable_percentage/calculator.rb
@@ -311,7 +315,7 @@ required_ruby_version: !ruby/object:Gem::Requirement
311
315
  version: 2.7.0
312
316
  - - "<"
313
317
  - !ruby/object:Gem::Version
314
- version: '3.5'
318
+ version: '4.0'
315
319
  required_rubygems_version: !ruby/object:Gem::Requirement
316
320
  requirements:
317
321
  - - ">="