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 +4 -4
- data/CHANGELOG.md +10 -2
- data/lib/datadog/ci/configuration/components.rb +8 -4
- data/lib/datadog/ci/contrib/rspec/runner.rb +8 -6
- data/lib/datadog/ci/impacted_tests_detection/null_component.rb +24 -0
- data/lib/datadog/ci/remote/null_component.rb +13 -0
- data/lib/datadog/ci/test_discovery/null_component.rb +32 -0
- data/lib/datadog/ci/test_optimisation/null_component.rb +66 -0
- data/lib/datadog/ci/version.rb +2 -2
- metadata +6 -2
checksums.yaml
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
---
|
|
2
2
|
SHA256:
|
|
3
|
-
metadata.gz:
|
|
4
|
-
data.tar.gz:
|
|
3
|
+
metadata.gz: a911ce98b1577d684374a00e8efd9ecbcf34fac28f24bb543411dbb762163d8c
|
|
4
|
+
data.tar.gz: 93c277bf2fc40ccdede20e48102eb6b1c1721336d80b62e60c9a191b807f8754
|
|
5
5
|
SHA512:
|
|
6
|
-
metadata.gz:
|
|
7
|
-
data.tar.gz:
|
|
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.
|
|
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 =
|
|
48
|
+
@test_optimisation = TestOptimisation::NullComponent.new
|
|
45
49
|
@test_visibility = TestVisibility::NullComponent.new
|
|
46
50
|
@git_tree_upload_worker = DummyWorker.new
|
|
47
|
-
@ci_remote =
|
|
51
|
+
@ci_remote = Remote::NullComponent.new
|
|
48
52
|
@test_retries = TestRetries::NullComponent.new
|
|
49
53
|
@test_management = TestManagement::NullComponent.new
|
|
50
|
-
@impacted_tests_detection =
|
|
51
|
-
@test_discovery =
|
|
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
|
-
|
|
22
|
-
|
|
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
|
-
|
|
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
|
-
|
|
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
|
-
|
|
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,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
|
data/lib/datadog/ci/version.rb
CHANGED
|
@@ -5,7 +5,7 @@ module Datadog
|
|
|
5
5
|
module VERSION
|
|
6
6
|
MAJOR = 1
|
|
7
7
|
MINOR = 23
|
|
8
|
-
PATCH =
|
|
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 = "
|
|
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.
|
|
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: '
|
|
318
|
+
version: '4.0'
|
|
315
319
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
|
316
320
|
requirements:
|
|
317
321
|
- - ">="
|