datadog-ci 1.39.0 → 1.41.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.
- checksums.yaml +4 -4
- data/CHANGELOG.md +22 -2
- data/lib/datadog/ci/contrib/knapsack/runner.rb +10 -1
- data/lib/datadog/ci/contrib/minitest/reporter.rb +13 -4
- data/lib/datadog/ci/contrib/rspec/runner.rb +5 -0
- data/lib/datadog/ci/ext/test.rb +1 -0
- data/lib/datadog/ci/test_retries/component.rb +6 -0
- data/lib/datadog/ci/test_tracing/component.rb +10 -0
- data/lib/datadog/ci/test_tracing/context.rb +10 -0
- data/lib/datadog/ci/test_tracing/null_component.rb +4 -0
- data/lib/datadog/ci/version.rb +1 -1
- metadata +2 -1
checksums.yaml
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
---
|
|
2
2
|
SHA256:
|
|
3
|
-
metadata.gz:
|
|
4
|
-
data.tar.gz:
|
|
3
|
+
metadata.gz: de15dc03a13226b87763dc2942794ffd12ec4f5b9b19f0430d93b03216f20da6
|
|
4
|
+
data.tar.gz: 2eaab3c59263e48c75dcdd237aba4db7bdac0e8578069b4e628866cdcd155a34
|
|
5
5
|
SHA512:
|
|
6
|
-
metadata.gz:
|
|
7
|
-
data.tar.gz:
|
|
6
|
+
metadata.gz: 25e04a8a9fc1f6f904aa3922a21154aa6f1212a39605fae8f21a18ec43f4541c9399fa6405d29f65896e9ffd9a3dd50cc4dc3cccf5662f1ab7ecd075b67e86cc
|
|
7
|
+
data.tar.gz: 961c8f33c689df07500a4bb47a5a76aebf5885c4d7fb5752536977af4def6f1a82be2329a6f0570ef96f89670d54f218a6ffa184bca83e0fefc47230dfd68ab2
|
data/CHANGELOG.md
CHANGED
|
@@ -1,5 +1,19 @@
|
|
|
1
1
|
## [Unreleased]
|
|
2
2
|
|
|
3
|
+
## [1.41.0] - 2026-10-05
|
|
4
|
+
|
|
5
|
+
### Fixed
|
|
6
|
+
|
|
7
|
+
* Stop retries when no test session is active ([#645][])
|
|
8
|
+
* Fix Minitest sessions with no executed tests ([#636][])
|
|
9
|
+
|
|
10
|
+
## [1.40.0] - 2026-09-28
|
|
11
|
+
|
|
12
|
+
### Changed
|
|
13
|
+
|
|
14
|
+
* Knapsack Pro: mark successful empty sessions as skipped ([#634][])
|
|
15
|
+
* RSpec: mark successful zero-example sessions as skipped ([#633][])
|
|
16
|
+
|
|
3
17
|
## [1.39.0] - 2026-09-21
|
|
4
18
|
|
|
5
19
|
### Added
|
|
@@ -723,7 +737,9 @@ Currently test suite level visibility is not used by our instrumentation: it wil
|
|
|
723
737
|
|
|
724
738
|
- Ruby versions < 2.7 no longer supported ([#8][])
|
|
725
739
|
|
|
726
|
-
[Unreleased]: https://github.com/DataDog/datadog-ci-rb/compare/v1.
|
|
740
|
+
[Unreleased]: https://github.com/DataDog/datadog-ci-rb/compare/v1.41.0...main
|
|
741
|
+
[1.41.0]: https://github.com/DataDog/datadog-ci-rb/compare/v1.40.0...v1.41.0
|
|
742
|
+
[1.40.0]: https://github.com/DataDog/datadog-ci-rb/compare/v1.39.0...v1.40.0
|
|
727
743
|
[1.39.0]: https://github.com/DataDog/datadog-ci-rb/compare/v1.38.1...v1.39.0
|
|
728
744
|
[1.38.1]: https://github.com/DataDog/datadog-ci-rb/compare/v1.38.0...v1.38.1
|
|
729
745
|
[1.38.0]: https://github.com/DataDog/datadog-ci-rb/compare/v1.37.0...v1.38.0
|
|
@@ -1022,4 +1038,8 @@ Currently test suite level visibility is not used by our instrumentation: it wil
|
|
|
1022
1038
|
[#612]: https://github.com/DataDog/datadog-ci-rb/issues/612
|
|
1023
1039
|
[#615]: https://github.com/DataDog/datadog-ci-rb/issues/615
|
|
1024
1040
|
[#617]: https://github.com/DataDog/datadog-ci-rb/issues/617
|
|
1025
|
-
[#619]: https://github.com/DataDog/datadog-ci-rb/issues/619
|
|
1041
|
+
[#619]: https://github.com/DataDog/datadog-ci-rb/issues/619
|
|
1042
|
+
[#633]: https://github.com/DataDog/datadog-ci-rb/issues/633
|
|
1043
|
+
[#634]: https://github.com/DataDog/datadog-ci-rb/issues/634
|
|
1044
|
+
[#636]: https://github.com/DataDog/datadog-ci-rb/issues/636
|
|
1045
|
+
[#645]: https://github.com/DataDog/datadog-ci-rb/issues/645
|
|
@@ -38,7 +38,16 @@ module Datadog
|
|
|
38
38
|
result = super
|
|
39
39
|
ensure
|
|
40
40
|
[test_module, test_session].each do |span|
|
|
41
|
-
_dd_cleanup
|
|
41
|
+
_dd_cleanup do
|
|
42
|
+
if result != 0
|
|
43
|
+
span.failed!
|
|
44
|
+
elsif !test_tracing_component.any_tests_started?
|
|
45
|
+
span.skipped!(reason: "No tests were executed")
|
|
46
|
+
span.set_tag(CI::Ext::Test::TAG_SESSION_EMPTY_REASON, "zero_tests")
|
|
47
|
+
else
|
|
48
|
+
span.passed!
|
|
49
|
+
end
|
|
50
|
+
end
|
|
42
51
|
end
|
|
43
52
|
_dd_cleanup { test_module.finish }
|
|
44
53
|
_dd_cleanup { test_session.finish }
|
|
@@ -23,12 +23,17 @@ module Datadog
|
|
|
23
23
|
|
|
24
24
|
return res if active_test_session.nil? || active_test_module.nil?
|
|
25
25
|
|
|
26
|
-
if passed?
|
|
27
|
-
active_test_module.passed!
|
|
28
|
-
active_test_session.passed!
|
|
29
|
-
else
|
|
26
|
+
if !passed?
|
|
30
27
|
active_test_module.failed!
|
|
31
28
|
active_test_session.failed!
|
|
29
|
+
elsif !test_tracing_component.any_tests_started?
|
|
30
|
+
active_test_module.skipped!(reason: "No tests were executed")
|
|
31
|
+
active_test_session.skipped!(reason: "No tests were executed")
|
|
32
|
+
active_test_module.set_tag(CI::Ext::Test::TAG_SESSION_EMPTY_REASON, "zero_tests")
|
|
33
|
+
active_test_session.set_tag(CI::Ext::Test::TAG_SESSION_EMPTY_REASON, "zero_tests")
|
|
34
|
+
else
|
|
35
|
+
active_test_module.passed!
|
|
36
|
+
active_test_session.passed!
|
|
32
37
|
end
|
|
33
38
|
|
|
34
39
|
active_test_module.finish
|
|
@@ -39,6 +44,10 @@ module Datadog
|
|
|
39
44
|
|
|
40
45
|
private
|
|
41
46
|
|
|
47
|
+
def test_tracing_component
|
|
48
|
+
Datadog.send(:components).test_tracing
|
|
49
|
+
end
|
|
50
|
+
|
|
42
51
|
def datadog_configuration
|
|
43
52
|
Datadog.configuration.ci[:minitest]
|
|
44
53
|
end
|
|
@@ -48,6 +48,11 @@ module Datadog
|
|
|
48
48
|
if result != 0
|
|
49
49
|
test_module.failed!
|
|
50
50
|
test_session.failed!
|
|
51
|
+
elsif !test_tracing_component.any_tests_started?
|
|
52
|
+
test_module.skipped!(reason: "No tests were executed")
|
|
53
|
+
test_session.skipped!(reason: "No tests were executed")
|
|
54
|
+
test_module.set_tag(CI::Ext::Test::TAG_SESSION_EMPTY_REASON, "zero_tests")
|
|
55
|
+
test_session.set_tag(CI::Ext::Test::TAG_SESSION_EMPTY_REASON, "zero_tests")
|
|
51
56
|
else
|
|
52
57
|
test_module.passed!
|
|
53
58
|
test_session.passed!
|
data/lib/datadog/ci/ext/test.rb
CHANGED
|
@@ -13,6 +13,7 @@ module Datadog
|
|
|
13
13
|
TAG_FRAMEWORK_VERSION = "test.framework_version"
|
|
14
14
|
TAG_NAME = "test.name"
|
|
15
15
|
TAG_SKIP_REASON = "test.skip_reason"
|
|
16
|
+
TAG_SESSION_EMPTY_REASON = "test.session.empty_reason"
|
|
16
17
|
|
|
17
18
|
# Status is the result of a single test run
|
|
18
19
|
# See the [Datadog::CI::Ext::Test::Status] module for the list of possible values of this tag
|
|
@@ -147,11 +147,17 @@ module Datadog
|
|
|
147
147
|
end
|
|
148
148
|
|
|
149
149
|
def should_retry?
|
|
150
|
+
return false unless test_tracing.active_test_session
|
|
151
|
+
|
|
150
152
|
!!current_retry_driver&.should_retry?
|
|
151
153
|
end
|
|
152
154
|
|
|
153
155
|
private
|
|
154
156
|
|
|
157
|
+
def test_tracing
|
|
158
|
+
Datadog.send(:components).test_tracing
|
|
159
|
+
end
|
|
160
|
+
|
|
155
161
|
def current_retry_driver
|
|
156
162
|
Thread.current[FIBER_LOCAL_CURRENT_RETRY_DRIVER_KEY]
|
|
157
163
|
end
|
|
@@ -162,8 +162,16 @@ module Datadog
|
|
|
162
162
|
@context.active_test
|
|
163
163
|
end
|
|
164
164
|
|
|
165
|
+
# Includes skipped tests: a session is empty only if no tests were observed.
|
|
166
|
+
def any_tests_started?
|
|
167
|
+
maybe_remote_context.any_tests_started?
|
|
168
|
+
end
|
|
169
|
+
|
|
165
170
|
def active_test_session
|
|
166
171
|
maybe_remote_context.active_test_session
|
|
172
|
+
rescue => e
|
|
173
|
+
Datadog.logger.error("Failed to get active test session: #{e.class}: #{e.message}")
|
|
174
|
+
nil
|
|
167
175
|
end
|
|
168
176
|
|
|
169
177
|
def active_test_module
|
|
@@ -286,6 +294,8 @@ module Datadog
|
|
|
286
294
|
end
|
|
287
295
|
|
|
288
296
|
def on_test_started(test)
|
|
297
|
+
maybe_remote_context.record_test_started
|
|
298
|
+
|
|
289
299
|
# Sometimes test suite is not being assigned correctly.
|
|
290
300
|
# Fix it by fetching the one single running test suite from the process context.
|
|
291
301
|
#
|
|
@@ -40,10 +40,12 @@ module Datadog
|
|
|
40
40
|
@mutex = Mutex.new
|
|
41
41
|
|
|
42
42
|
@tests_skipped_by_tia_count = 0
|
|
43
|
+
@any_tests_started = false
|
|
43
44
|
end
|
|
44
45
|
|
|
45
46
|
def start_test_session(service: nil, tags: {})
|
|
46
47
|
@process_context.fetch_or_activate_test_session do
|
|
48
|
+
@mutex.synchronize { @any_tests_started = false }
|
|
47
49
|
tracer_span = start_datadog_tracer_span(
|
|
48
50
|
"test.session", build_tracing_span_options(service, Ext::AppTypes::TYPE_TEST_SESSION)
|
|
49
51
|
)
|
|
@@ -191,6 +193,14 @@ module Datadog
|
|
|
191
193
|
@process_context.deactivate_test_suite!(test_suite_name)
|
|
192
194
|
end
|
|
193
195
|
|
|
196
|
+
def any_tests_started?
|
|
197
|
+
@mutex.synchronize { @any_tests_started }
|
|
198
|
+
end
|
|
199
|
+
|
|
200
|
+
def record_test_started
|
|
201
|
+
@mutex.synchronize { @any_tests_started = true }
|
|
202
|
+
end
|
|
203
|
+
|
|
194
204
|
def incr_tests_skipped_by_tia_count
|
|
195
205
|
@mutex.synchronize { @tests_skipped_by_tia_count += 1 }
|
|
196
206
|
end
|
data/lib/datadog/ci/version.rb
CHANGED
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.
|
|
4
|
+
version: 1.41.0
|
|
5
5
|
platform: ruby
|
|
6
6
|
authors:
|
|
7
7
|
- Datadog, Inc.
|
|
@@ -327,6 +327,7 @@ files:
|
|
|
327
327
|
homepage: https://github.com/DataDog/datadog-ci-rb
|
|
328
328
|
licenses:
|
|
329
329
|
- BSD-3-Clause
|
|
330
|
+
- Apache-2.0
|
|
330
331
|
metadata:
|
|
331
332
|
allowed_push_host: https://rubygems.org
|
|
332
333
|
changelog_uri: https://github.com/DataDog/datadog-ci-rb/blob/main/CHANGELOG.md
|