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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 18d2efca66b50be67262fdc2ea7adda5a8c0c90a05b6753c441a9dd229372dfe
4
- data.tar.gz: 80cb89011890b2617933cac62889e6b18979e8a97a34cfb5298aea43b1afa34b
3
+ metadata.gz: de15dc03a13226b87763dc2942794ffd12ec4f5b9b19f0430d93b03216f20da6
4
+ data.tar.gz: 2eaab3c59263e48c75dcdd237aba4db7bdac0e8578069b4e628866cdcd155a34
5
5
  SHA512:
6
- metadata.gz: d39ff56e9a2fb16615bf40c58621b6c3e9a7197c6c4e63f9568866afe162a4d9bd65778243b41b5e0a3d3127b58bc91dd5bcb26205c215e95c56f4c9c3e4f446
7
- data.tar.gz: c3220f31a0f5aabbca8eb905800ed902ae68726567800cf40de2cee33651e7f58c1e72763239a498cc3d44270a13d81698a7172d2e4b3f602d36c6119adf08bb
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.39.0...main
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 { (result == 0) ? span.passed! : span.failed! }
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!
@@ -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
@@ -47,6 +47,10 @@ module Datadog
47
47
  def active_test
48
48
  end
49
49
 
50
+ def any_tests_started?
51
+ false
52
+ end
53
+
50
54
  def active_test_session
51
55
  end
52
56
 
@@ -4,7 +4,7 @@ module Datadog
4
4
  module CI
5
5
  module VERSION
6
6
  MAJOR = 1
7
- MINOR = 39
7
+ MINOR = 41
8
8
  PATCH = 0
9
9
  PRE = nil
10
10
  BUILD = nil
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.39.0
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