datadog-ci 0.5.0 → 0.6.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 +33 -2
- data/lib/datadog/ci/configuration/components.rb +13 -9
- data/lib/datadog/ci/configuration/extensions.rb +21 -0
- data/lib/datadog/ci/contrib/cucumber/configuration/settings.rb +1 -1
- data/lib/datadog/ci/contrib/cucumber/ext.rb +7 -5
- data/lib/datadog/ci/contrib/cucumber/formatter.rb +99 -19
- data/lib/datadog/ci/contrib/minitest/configuration/settings.rb +1 -1
- data/lib/datadog/ci/contrib/minitest/ext.rb +6 -4
- data/lib/datadog/ci/contrib/minitest/helpers.rb +22 -0
- data/lib/datadog/ci/contrib/minitest/hooks.rb +45 -17
- data/lib/datadog/ci/contrib/minitest/patcher.rb +7 -0
- data/lib/datadog/ci/contrib/minitest/plugin.rb +73 -0
- data/lib/datadog/ci/contrib/minitest/runnable.rb +42 -0
- data/lib/datadog/ci/contrib/rspec/configuration/settings.rb +1 -1
- data/lib/datadog/ci/contrib/rspec/example.rb +2 -2
- data/lib/datadog/ci/contrib/rspec/example_group.rb +46 -0
- data/lib/datadog/ci/contrib/rspec/ext.rb +5 -4
- data/lib/datadog/ci/contrib/rspec/integration.rb +1 -1
- data/lib/datadog/ci/contrib/rspec/patcher.rb +5 -0
- data/lib/datadog/ci/contrib/rspec/runner.rb +57 -0
- data/lib/datadog/ci/contrib/settings.rb +1 -1
- data/lib/datadog/ci/ext/test.rb +2 -0
- data/lib/datadog/ci/span.rb +24 -0
- data/lib/datadog/ci/test.rb +30 -0
- data/lib/datadog/ci/test_session.rb +8 -0
- data/lib/datadog/ci/test_visibility/context/global.rb +82 -0
- data/lib/datadog/ci/test_visibility/context/local.rb +52 -0
- data/lib/datadog/ci/test_visibility/null_recorder.rb +73 -0
- data/lib/datadog/ci/test_visibility/recorder.rb +314 -0
- data/lib/datadog/ci/version.rb +1 -1
- data/lib/datadog/ci.rb +3 -3
- data/sig/datadog/ci/configuration/components.rbs +2 -2
- data/sig/datadog/ci/configuration/extensions.rbs +9 -0
- data/sig/datadog/ci/contrib/cucumber/ext.rbs +1 -5
- data/sig/datadog/ci/contrib/cucumber/formatter.rbs +17 -4
- data/sig/datadog/ci/contrib/minitest/ext.rbs +1 -5
- data/sig/datadog/ci/contrib/minitest/helpers.rbs +13 -0
- data/sig/datadog/ci/contrib/minitest/hooks.rbs +9 -1
- data/sig/datadog/ci/contrib/minitest/plugin.rbs +31 -0
- data/sig/datadog/ci/contrib/minitest/runnable.rbs +24 -0
- data/sig/datadog/ci/contrib/rspec/example_group.rbs +21 -0
- data/sig/datadog/ci/contrib/rspec/ext.rbs +2 -8
- data/sig/datadog/ci/contrib/rspec/runner.rbs +21 -0
- data/sig/datadog/ci/ext/test.rbs +2 -0
- data/sig/datadog/ci/span.rbs +8 -0
- data/sig/datadog/ci/test.rbs +5 -0
- data/sig/datadog/ci/test_visibility/context/global.rbs +39 -0
- data/sig/datadog/ci/test_visibility/context/local.rbs +23 -0
- data/sig/datadog/ci/test_visibility/null_recorder.rbs +45 -0
- data/sig/datadog/ci/test_visibility/recorder.rbs +85 -0
- data/sig/datadog/ci.rbs +3 -1
- metadata +23 -11
- data/lib/datadog/ci/context/global.rb +0 -80
- data/lib/datadog/ci/context/local.rb +0 -50
- data/lib/datadog/ci/extensions.rb +0 -19
- data/lib/datadog/ci/recorder.rb +0 -291
- data/sig/datadog/ci/context/global.rbs +0 -37
- data/sig/datadog/ci/context/local.rbs +0 -21
- data/sig/datadog/ci/extensions.rbs +0 -7
- data/sig/datadog/ci/recorder.rbs +0 -83
@@ -0,0 +1,314 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
require "datadog/tracing"
|
4
|
+
require "datadog/tracing/trace_digest"
|
5
|
+
|
6
|
+
require "rbconfig"
|
7
|
+
|
8
|
+
require_relative "context/global"
|
9
|
+
require_relative "context/local"
|
10
|
+
|
11
|
+
require_relative "../ext/app_types"
|
12
|
+
require_relative "../ext/test"
|
13
|
+
require_relative "../ext/environment"
|
14
|
+
|
15
|
+
require_relative "../span"
|
16
|
+
require_relative "../null_span"
|
17
|
+
require_relative "../test"
|
18
|
+
require_relative "../test_session"
|
19
|
+
require_relative "../test_module"
|
20
|
+
require_relative "../test_suite"
|
21
|
+
|
22
|
+
module Datadog
|
23
|
+
module CI
|
24
|
+
module TestVisibility
|
25
|
+
# Common behavior for CI tests
|
26
|
+
# Note: this class has too many responsibilities and should be split into multiple classes
|
27
|
+
class Recorder
|
28
|
+
attr_reader :environment_tags, :test_suite_level_visibility_enabled
|
29
|
+
|
30
|
+
def initialize(test_suite_level_visibility_enabled: false)
|
31
|
+
@test_suite_level_visibility_enabled = test_suite_level_visibility_enabled
|
32
|
+
|
33
|
+
@environment_tags = Ext::Environment.tags(ENV).freeze
|
34
|
+
@local_context = Context::Local.new
|
35
|
+
@global_context = Context::Global.new
|
36
|
+
end
|
37
|
+
|
38
|
+
def start_test_session(service: nil, tags: {})
|
39
|
+
return skip_tracing unless test_suite_level_visibility_enabled
|
40
|
+
|
41
|
+
@global_context.fetch_or_activate_test_session do
|
42
|
+
tracer_span = start_datadog_tracer_span(
|
43
|
+
"test.session", build_span_options(service, Ext::AppTypes::TYPE_TEST_SESSION)
|
44
|
+
)
|
45
|
+
set_session_context(tags, tracer_span)
|
46
|
+
|
47
|
+
build_test_session(tracer_span, tags)
|
48
|
+
end
|
49
|
+
end
|
50
|
+
|
51
|
+
def start_test_module(test_module_name, service: nil, tags: {})
|
52
|
+
return skip_tracing unless test_suite_level_visibility_enabled
|
53
|
+
|
54
|
+
@global_context.fetch_or_activate_test_module do
|
55
|
+
set_inherited_globals(tags)
|
56
|
+
set_session_context(tags)
|
57
|
+
|
58
|
+
tracer_span = start_datadog_tracer_span(
|
59
|
+
test_module_name, build_span_options(service, Ext::AppTypes::TYPE_TEST_MODULE)
|
60
|
+
)
|
61
|
+
set_module_context(tags, tracer_span)
|
62
|
+
|
63
|
+
build_test_module(tracer_span, tags)
|
64
|
+
end
|
65
|
+
end
|
66
|
+
|
67
|
+
def start_test_suite(test_suite_name, service: nil, tags: {})
|
68
|
+
return skip_tracing unless test_suite_level_visibility_enabled
|
69
|
+
|
70
|
+
@global_context.fetch_or_activate_test_suite(test_suite_name) do
|
71
|
+
set_inherited_globals(tags)
|
72
|
+
set_session_context(tags)
|
73
|
+
set_module_context(tags)
|
74
|
+
|
75
|
+
tracer_span = start_datadog_tracer_span(
|
76
|
+
test_suite_name, build_span_options(service, Ext::AppTypes::TYPE_TEST_SUITE)
|
77
|
+
)
|
78
|
+
set_suite_context(tags, span: tracer_span)
|
79
|
+
|
80
|
+
build_test_suite(tracer_span, tags)
|
81
|
+
end
|
82
|
+
end
|
83
|
+
|
84
|
+
def trace_test(test_name, test_suite_name, service: nil, tags: {}, &block)
|
85
|
+
set_inherited_globals(tags)
|
86
|
+
set_session_context(tags)
|
87
|
+
set_module_context(tags)
|
88
|
+
set_suite_context(tags, name: test_suite_name)
|
89
|
+
|
90
|
+
tags[Ext::Test::TAG_NAME] = test_name
|
91
|
+
|
92
|
+
span_options = build_span_options(
|
93
|
+
service,
|
94
|
+
Ext::AppTypes::TYPE_TEST,
|
95
|
+
# :resource is needed for the agent APM protocol to work correctly (for older agent versions)
|
96
|
+
# :continue_from is required to start a new trace for each test
|
97
|
+
{resource: test_name, continue_from: Datadog::Tracing::TraceDigest.new}
|
98
|
+
)
|
99
|
+
|
100
|
+
if block
|
101
|
+
start_datadog_tracer_span(test_name, span_options) do |tracer_span|
|
102
|
+
test = build_test(tracer_span, tags)
|
103
|
+
|
104
|
+
@local_context.activate_test!(test) do
|
105
|
+
block.call(test)
|
106
|
+
end
|
107
|
+
end
|
108
|
+
else
|
109
|
+
tracer_span = start_datadog_tracer_span(test_name, span_options)
|
110
|
+
|
111
|
+
test = build_test(tracer_span, tags)
|
112
|
+
@local_context.activate_test!(test)
|
113
|
+
test
|
114
|
+
end
|
115
|
+
end
|
116
|
+
|
117
|
+
def trace(span_type, span_name, tags: {}, &block)
|
118
|
+
span_options = build_span_options(
|
119
|
+
nil, # service name is completely optional for custom spans
|
120
|
+
span_type,
|
121
|
+
{resource: span_name}
|
122
|
+
)
|
123
|
+
|
124
|
+
if block
|
125
|
+
start_datadog_tracer_span(span_name, span_options) do |tracer_span|
|
126
|
+
block.call(build_span(tracer_span, tags))
|
127
|
+
end
|
128
|
+
else
|
129
|
+
tracer_span = start_datadog_tracer_span(span_name, span_options)
|
130
|
+
|
131
|
+
build_span(tracer_span, tags)
|
132
|
+
end
|
133
|
+
end
|
134
|
+
|
135
|
+
def active_span
|
136
|
+
tracer_span = Datadog::Tracing.active_span
|
137
|
+
Span.new(tracer_span) if tracer_span
|
138
|
+
end
|
139
|
+
|
140
|
+
def active_test
|
141
|
+
@local_context.active_test
|
142
|
+
end
|
143
|
+
|
144
|
+
def active_test_session
|
145
|
+
@global_context.active_test_session
|
146
|
+
end
|
147
|
+
|
148
|
+
def active_test_module
|
149
|
+
@global_context.active_test_module
|
150
|
+
end
|
151
|
+
|
152
|
+
def active_test_suite(test_suite_name)
|
153
|
+
@global_context.active_test_suite(test_suite_name)
|
154
|
+
end
|
155
|
+
|
156
|
+
def deactivate_test(test)
|
157
|
+
@local_context.deactivate_test!(test)
|
158
|
+
end
|
159
|
+
|
160
|
+
def deactivate_test_session
|
161
|
+
@global_context.deactivate_test_session!
|
162
|
+
end
|
163
|
+
|
164
|
+
def deactivate_test_module
|
165
|
+
@global_context.deactivate_test_module!
|
166
|
+
end
|
167
|
+
|
168
|
+
def deactivate_test_suite(test_suite_name)
|
169
|
+
@global_context.deactivate_test_suite!(test_suite_name)
|
170
|
+
end
|
171
|
+
|
172
|
+
private
|
173
|
+
|
174
|
+
def skip_tracing(block = nil)
|
175
|
+
if block
|
176
|
+
block.call(null_span)
|
177
|
+
else
|
178
|
+
null_span
|
179
|
+
end
|
180
|
+
end
|
181
|
+
|
182
|
+
# Sets trace's origin to ciapp-test
|
183
|
+
def set_trace_origin(trace)
|
184
|
+
trace.origin = Ext::Test::CONTEXT_ORIGIN if trace
|
185
|
+
end
|
186
|
+
|
187
|
+
def build_test_session(tracer_span, tags)
|
188
|
+
test_session = TestSession.new(tracer_span)
|
189
|
+
set_initial_tags(test_session, tags)
|
190
|
+
test_session
|
191
|
+
end
|
192
|
+
|
193
|
+
def build_test_module(tracer_span, tags)
|
194
|
+
test_module = TestModule.new(tracer_span)
|
195
|
+
set_initial_tags(test_module, tags)
|
196
|
+
test_module
|
197
|
+
end
|
198
|
+
|
199
|
+
def build_test_suite(tracer_span, tags)
|
200
|
+
test_suite = TestSuite.new(tracer_span)
|
201
|
+
set_initial_tags(test_suite, tags)
|
202
|
+
test_suite
|
203
|
+
end
|
204
|
+
|
205
|
+
def build_test(tracer_span, tags)
|
206
|
+
test = Test.new(tracer_span)
|
207
|
+
set_initial_tags(test, tags)
|
208
|
+
validate_test_suite_level_visibility_correctness(test)
|
209
|
+
test
|
210
|
+
end
|
211
|
+
|
212
|
+
def build_span(tracer_span, tags)
|
213
|
+
span = Span.new(tracer_span)
|
214
|
+
set_initial_tags(span, tags)
|
215
|
+
span
|
216
|
+
end
|
217
|
+
|
218
|
+
def build_span_options(service, span_type, other_options = {})
|
219
|
+
other_options[:service] = service || @global_context.service
|
220
|
+
other_options[:span_type] = span_type
|
221
|
+
|
222
|
+
other_options
|
223
|
+
end
|
224
|
+
|
225
|
+
def set_inherited_globals(tags)
|
226
|
+
# this code achieves the same as @global_context.inheritable_session_tags.merge(tags)
|
227
|
+
# but without allocating a new hash
|
228
|
+
@global_context.inheritable_session_tags.each do |key, value|
|
229
|
+
tags[key] = value unless tags.key?(key)
|
230
|
+
end
|
231
|
+
end
|
232
|
+
|
233
|
+
def set_initial_tags(ci_span, tags)
|
234
|
+
ci_span.set_default_tags
|
235
|
+
ci_span.set_environment_runtime_tags
|
236
|
+
|
237
|
+
ci_span.set_tags(tags)
|
238
|
+
ci_span.set_tags(environment_tags)
|
239
|
+
end
|
240
|
+
|
241
|
+
def set_session_context(tags, test_session = nil)
|
242
|
+
test_session ||= active_test_session
|
243
|
+
tags[Ext::Test::TAG_TEST_SESSION_ID] = test_session.id.to_s if test_session
|
244
|
+
end
|
245
|
+
|
246
|
+
def set_module_context(tags, test_module = nil)
|
247
|
+
test_module ||= active_test_module
|
248
|
+
if test_module
|
249
|
+
tags[Ext::Test::TAG_TEST_MODULE_ID] = test_module.id.to_s
|
250
|
+
tags[Ext::Test::TAG_MODULE] = test_module.name
|
251
|
+
end
|
252
|
+
end
|
253
|
+
|
254
|
+
def set_suite_context(tags, span: nil, name: nil)
|
255
|
+
return if span.nil? && name.nil?
|
256
|
+
|
257
|
+
test_suite = span || active_test_suite(name)
|
258
|
+
|
259
|
+
if test_suite
|
260
|
+
tags[Ext::Test::TAG_TEST_SUITE_ID] = test_suite.id.to_s
|
261
|
+
tags[Ext::Test::TAG_SUITE] = test_suite.name
|
262
|
+
else
|
263
|
+
tags[Ext::Test::TAG_SUITE] = name
|
264
|
+
end
|
265
|
+
end
|
266
|
+
|
267
|
+
def start_datadog_tracer_span(span_name, span_options, &block)
|
268
|
+
if block
|
269
|
+
Datadog::Tracing.trace(span_name, **span_options) do |tracer_span, trace|
|
270
|
+
set_trace_origin(trace)
|
271
|
+
|
272
|
+
yield tracer_span
|
273
|
+
end
|
274
|
+
else
|
275
|
+
tracer_span = Datadog::Tracing.trace(span_name, **span_options)
|
276
|
+
trace = Datadog::Tracing.active_trace
|
277
|
+
set_trace_origin(trace)
|
278
|
+
|
279
|
+
tracer_span
|
280
|
+
end
|
281
|
+
end
|
282
|
+
|
283
|
+
def null_span
|
284
|
+
@null_span ||= NullSpan.new
|
285
|
+
end
|
286
|
+
|
287
|
+
def validate_test_suite_level_visibility_correctness(test)
|
288
|
+
return unless test_suite_level_visibility_enabled
|
289
|
+
|
290
|
+
if test.test_suite_id.nil?
|
291
|
+
Datadog.logger.debug do
|
292
|
+
"Test [#{test.name}] does not have a test suite associated with it. " \
|
293
|
+
"Expected test suite [#{test.test_suite_name}] to be running."
|
294
|
+
end
|
295
|
+
end
|
296
|
+
|
297
|
+
if test.test_module_id.nil?
|
298
|
+
Datadog.logger.debug do
|
299
|
+
"Test [#{test.name}] does not have a test module associated with it. " \
|
300
|
+
"Make sure that there is a test module running within a session."
|
301
|
+
end
|
302
|
+
end
|
303
|
+
|
304
|
+
if test.test_session_id.nil?
|
305
|
+
Datadog.logger.debug do
|
306
|
+
"Test [#{test.name}] does not have a test session associated with it. " \
|
307
|
+
"Make sure that there is a test session running."
|
308
|
+
end
|
309
|
+
end
|
310
|
+
end
|
311
|
+
end
|
312
|
+
end
|
313
|
+
end
|
314
|
+
end
|
data/lib/datadog/ci/version.rb
CHANGED
data/lib/datadog/ci.rb
CHANGED
@@ -389,6 +389,6 @@ require_relative "ci/contrib/cucumber/integration"
|
|
389
389
|
require_relative "ci/contrib/rspec/integration"
|
390
390
|
require_relative "ci/contrib/minitest/integration"
|
391
391
|
|
392
|
-
#
|
393
|
-
require_relative "ci/extensions"
|
394
|
-
Datadog::CI::Extensions.activate!
|
392
|
+
# Configuration extensions
|
393
|
+
require_relative "ci/configuration/extensions"
|
394
|
+
Datadog::CI::Configuration::Extensions.activate!
|
@@ -2,9 +2,9 @@ module Datadog
|
|
2
2
|
module CI
|
3
3
|
module Configuration
|
4
4
|
module Components : Datadog::Core::Configuration::Components
|
5
|
-
@ci_recorder: Datadog::CI::Recorder
|
5
|
+
@ci_recorder: Datadog::CI::TestVisibility::Recorder
|
6
6
|
|
7
|
-
attr_reader ci_recorder: Datadog::CI::Recorder
|
7
|
+
attr_reader ci_recorder: Datadog::CI::TestVisibility::Recorder
|
8
8
|
|
9
9
|
def initialize: (untyped settings) -> void
|
10
10
|
|
@@ -3,8 +3,6 @@ module Datadog
|
|
3
3
|
module Contrib
|
4
4
|
module Cucumber
|
5
5
|
module Ext
|
6
|
-
APP: String
|
7
|
-
|
8
6
|
ENV_ENABLED: String
|
9
7
|
|
10
8
|
ENV_OPERATION_NAME: String
|
@@ -13,11 +11,9 @@ module Datadog
|
|
13
11
|
|
14
12
|
OPERATION_NAME: String
|
15
13
|
|
16
|
-
|
14
|
+
DEFAULT_SERVICE_NAME: String
|
17
15
|
|
18
16
|
STEP_SPAN_TYPE: String
|
19
|
-
|
20
|
-
TEST_TYPE: String
|
21
17
|
end
|
22
18
|
end
|
23
19
|
end
|
@@ -4,19 +4,22 @@ module Datadog
|
|
4
4
|
module Cucumber
|
5
5
|
class Formatter
|
6
6
|
private
|
7
|
+
@failed_tests_count: Integer
|
8
|
+
@current_test_suite: Datadog::CI::Span?
|
9
|
+
@failed_tests_in_current_test_suite: Integer
|
7
10
|
|
8
11
|
attr_reader config: untyped
|
9
12
|
|
10
|
-
attr_reader current_feature_span: untyped
|
11
|
-
|
12
|
-
attr_reader current_step_span: untyped
|
13
|
-
|
14
13
|
public
|
15
14
|
|
16
15
|
def initialize: (untyped config) -> void
|
17
16
|
|
18
17
|
def bind_events: (untyped config) -> untyped
|
19
18
|
|
19
|
+
def on_test_run_started: (untyped event) -> untyped
|
20
|
+
|
21
|
+
def on_test_run_finished: (untyped event) -> untyped
|
22
|
+
|
20
23
|
def on_test_case_started: (untyped event) -> untyped
|
21
24
|
|
22
25
|
def on_test_case_finished: (untyped event) -> (nil | untyped)
|
@@ -27,6 +30,16 @@ module Datadog
|
|
27
30
|
|
28
31
|
private
|
29
32
|
|
33
|
+
def start_test_suite: (String test_suite_name) -> void
|
34
|
+
|
35
|
+
def finish_current_test_suite: () -> void
|
36
|
+
|
37
|
+
def same_test_suite_as_current?: (String test_suite_name) -> bool
|
38
|
+
|
39
|
+
def finish_session: (bool result) -> void
|
40
|
+
|
41
|
+
def finish_test: (Datadog::CI::Span test, Cucumber::Core::Test::Result result) -> void
|
42
|
+
|
30
43
|
def configuration: () -> untyped
|
31
44
|
end
|
32
45
|
end
|
@@ -3,8 +3,6 @@ module Datadog
|
|
3
3
|
module Contrib
|
4
4
|
module Minitest
|
5
5
|
module Ext
|
6
|
-
APP: String
|
7
|
-
|
8
6
|
ENV_ENABLED: String
|
9
7
|
|
10
8
|
ENV_OPERATION_NAME: String
|
@@ -13,9 +11,7 @@ module Datadog
|
|
13
11
|
|
14
12
|
OPERATION_NAME: String
|
15
13
|
|
16
|
-
|
17
|
-
|
18
|
-
TEST_TYPE: String
|
14
|
+
DEFAULT_SERVICE_NAME: String
|
19
15
|
end
|
20
16
|
end
|
21
17
|
end
|
@@ -11,7 +11,15 @@ module Datadog
|
|
11
11
|
|
12
12
|
private
|
13
13
|
|
14
|
-
def
|
14
|
+
def datadog_configuration: () -> untyped
|
15
|
+
|
16
|
+
def finish_test: (Datadog::CI::Test test_span, String result_code) -> void
|
17
|
+
|
18
|
+
def finish_test_suite: (Datadog::CI::TestSuite? test_suite, String result_code) -> void
|
19
|
+
|
20
|
+
def finish_with_result: (Datadog::CI::Span span, String result_code) -> void
|
21
|
+
|
22
|
+
def self.test_order: () -> (nil | :parallel | :sorted | :random | :alpha)
|
15
23
|
end
|
16
24
|
end
|
17
25
|
end
|
@@ -0,0 +1,31 @@
|
|
1
|
+
module Datadog
|
2
|
+
module CI
|
3
|
+
module Contrib
|
4
|
+
module Minitest
|
5
|
+
module Plugin
|
6
|
+
def self.included: (untyped base) -> untyped
|
7
|
+
|
8
|
+
class DatadogReporter < ::Minitest::AbstractReporter
|
9
|
+
@reporter: WeakRef
|
10
|
+
|
11
|
+
def initialize: (Minitest::AbstractReporter reporter) -> void
|
12
|
+
end
|
13
|
+
|
14
|
+
module ClassMethods
|
15
|
+
def plugin_datadog_ci_init: (*untyped) -> (nil | untyped)
|
16
|
+
|
17
|
+
def initialize: (untyped reporter) -> void
|
18
|
+
|
19
|
+
def report: () -> (nil | untyped)
|
20
|
+
|
21
|
+
def reporter: () -> Minitest::CompositeReporter
|
22
|
+
|
23
|
+
private
|
24
|
+
|
25
|
+
def datadog_configuration: () -> untyped
|
26
|
+
end
|
27
|
+
end
|
28
|
+
end
|
29
|
+
end
|
30
|
+
end
|
31
|
+
end
|
@@ -0,0 +1,24 @@
|
|
1
|
+
module Datadog
|
2
|
+
module CI
|
3
|
+
module Contrib
|
4
|
+
module Minitest
|
5
|
+
module Runnable
|
6
|
+
def self.included: (untyped base) -> untyped
|
7
|
+
|
8
|
+
module ClassMethods : ::Minitest::Runnable
|
9
|
+
|
10
|
+
def run: (*untyped) -> untyped
|
11
|
+
|
12
|
+
private
|
13
|
+
|
14
|
+
def datadog_configuration: () -> untyped
|
15
|
+
|
16
|
+
def test_order: () -> (nil | :parallel | :random | :sorted | :alpha)
|
17
|
+
|
18
|
+
def runnable_methods: () -> Array[String]
|
19
|
+
end
|
20
|
+
end
|
21
|
+
end
|
22
|
+
end
|
23
|
+
end
|
24
|
+
end
|
@@ -0,0 +1,21 @@
|
|
1
|
+
module Datadog
|
2
|
+
module CI
|
3
|
+
module Contrib
|
4
|
+
module RSpec
|
5
|
+
module ExampleGroup
|
6
|
+
def self.included: (untyped base) -> untyped
|
7
|
+
|
8
|
+
module ClassMethods
|
9
|
+
include ::RSpec::Core::ExampleGroup::ClassMethods
|
10
|
+
|
11
|
+
def run: (?untyped reporter) -> untyped
|
12
|
+
|
13
|
+
private
|
14
|
+
|
15
|
+
def configuration: () -> untyped
|
16
|
+
end
|
17
|
+
end
|
18
|
+
end
|
19
|
+
end
|
20
|
+
end
|
21
|
+
end
|
@@ -3,19 +3,13 @@ module Datadog
|
|
3
3
|
module Contrib
|
4
4
|
module RSpec
|
5
5
|
module Ext
|
6
|
-
APP: String
|
7
|
-
|
8
6
|
ENV_ENABLED: String
|
9
7
|
|
10
|
-
ENV_OPERATION_NAME: String
|
11
|
-
|
12
8
|
FRAMEWORK: String
|
9
|
+
DEFAULT_SERVICE_NAME: String
|
13
10
|
|
14
11
|
OPERATION_NAME: String
|
15
|
-
|
16
|
-
SERVICE_NAME: String
|
17
|
-
|
18
|
-
TEST_TYPE: String
|
12
|
+
ENV_OPERATION_NAME: String
|
19
13
|
end
|
20
14
|
end
|
21
15
|
end
|
@@ -0,0 +1,21 @@
|
|
1
|
+
module Datadog
|
2
|
+
module CI
|
3
|
+
module Contrib
|
4
|
+
module RSpec
|
5
|
+
module Runner
|
6
|
+
def self.included: (untyped base) -> untyped
|
7
|
+
|
8
|
+
module InstanceMethods
|
9
|
+
include ::RSpec::Core::Runner
|
10
|
+
|
11
|
+
def run_specs: (untyped example_groups) -> untyped
|
12
|
+
|
13
|
+
private
|
14
|
+
|
15
|
+
def configuration: () -> untyped
|
16
|
+
end
|
17
|
+
end
|
18
|
+
end
|
19
|
+
end
|
20
|
+
end
|
21
|
+
end
|
data/sig/datadog/ci/ext/test.rbs
CHANGED
data/sig/datadog/ci/span.rbs
CHANGED
@@ -13,6 +13,14 @@ module Datadog
|
|
13
13
|
|
14
14
|
def service: () -> String
|
15
15
|
|
16
|
+
def undefined?: () -> bool
|
17
|
+
|
18
|
+
def passed?: () -> bool
|
19
|
+
|
20
|
+
def failed?: () -> bool
|
21
|
+
|
22
|
+
def skipped?: () -> bool
|
23
|
+
|
16
24
|
def passed!: () -> void
|
17
25
|
|
18
26
|
def failed!: (?exception: untyped?) -> void
|
data/sig/datadog/ci/test.rbs
CHANGED
@@ -2,6 +2,11 @@ module Datadog
|
|
2
2
|
module CI
|
3
3
|
class Test < Span
|
4
4
|
def finish: () -> void
|
5
|
+
def test_suite: () -> Datadog::CI::TestSuite?
|
6
|
+
def test_suite_id: () -> String?
|
7
|
+
def test_suite_name: () -> String?
|
8
|
+
def test_module_id: () -> String?
|
9
|
+
def test_session_id: () -> String?
|
5
10
|
end
|
6
11
|
end
|
7
12
|
end
|
@@ -0,0 +1,39 @@
|
|
1
|
+
module Datadog
|
2
|
+
module CI
|
3
|
+
module TestVisibility
|
4
|
+
module Context
|
5
|
+
class Global
|
6
|
+
@mutex: Thread::Mutex
|
7
|
+
|
8
|
+
@test_session: Datadog::CI::TestSession?
|
9
|
+
@test_module: Datadog::CI::TestModule?
|
10
|
+
@test_suites: Hash[String, Datadog::CI::TestSuite]
|
11
|
+
|
12
|
+
def initialize: () -> void
|
13
|
+
|
14
|
+
def fetch_or_activate_test_suite: (String test_suite_name) {() -> Datadog::CI::TestSuite} -> Datadog::CI::TestSuite
|
15
|
+
|
16
|
+
def fetch_or_activate_test_module: () {() -> Datadog::CI::TestModule} -> Datadog::CI::TestModule
|
17
|
+
|
18
|
+
def fetch_or_activate_test_session: () {() -> Datadog::CI::TestSession} -> Datadog::CI::TestSession
|
19
|
+
|
20
|
+
def active_test_session: () -> Datadog::CI::TestSession?
|
21
|
+
|
22
|
+
def active_test_suite: (String test_suite_name) -> Datadog::CI::TestSuite?
|
23
|
+
|
24
|
+
def service: () -> String?
|
25
|
+
|
26
|
+
def inheritable_session_tags: () -> Hash[untyped, untyped]
|
27
|
+
|
28
|
+
def active_test_module: () -> Datadog::CI::TestModule?
|
29
|
+
|
30
|
+
def deactivate_test_session!: () -> void
|
31
|
+
|
32
|
+
def deactivate_test_module!: () -> void
|
33
|
+
|
34
|
+
def deactivate_test_suite!: (String test_suite_name) -> void
|
35
|
+
end
|
36
|
+
end
|
37
|
+
end
|
38
|
+
end
|
39
|
+
end
|