datadog-ci 1.0.0.beta1 → 1.0.0.beta3

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.
Files changed (49) hide show
  1. checksums.yaml +4 -4
  2. data/CHANGELOG.md +105 -60
  3. data/README.md +37 -46
  4. data/lib/datadog/ci/configuration/components.rb +51 -9
  5. data/lib/datadog/ci/configuration/settings.rb +6 -0
  6. data/lib/datadog/ci/contrib/cucumber/formatter.rb +10 -5
  7. data/lib/datadog/ci/contrib/cucumber/patcher.rb +3 -0
  8. data/lib/datadog/ci/contrib/cucumber/step.rb +27 -0
  9. data/lib/datadog/ci/contrib/minitest/patcher.rb +2 -2
  10. data/lib/datadog/ci/contrib/minitest/test.rb +105 -0
  11. data/lib/datadog/ci/contrib/rspec/example.rb +11 -5
  12. data/lib/datadog/ci/ext/environment/providers/local_git.rb +8 -79
  13. data/lib/datadog/ci/ext/environment.rb +11 -16
  14. data/lib/datadog/ci/ext/settings.rb +1 -0
  15. data/lib/datadog/ci/ext/test.rb +8 -1
  16. data/lib/datadog/ci/ext/transport.rb +8 -0
  17. data/lib/datadog/ci/git/local_repository.rb +238 -0
  18. data/lib/datadog/ci/git/packfiles.rb +70 -0
  19. data/lib/datadog/ci/git/search_commits.rb +77 -0
  20. data/lib/datadog/ci/git/tree_uploader.rb +90 -0
  21. data/lib/datadog/ci/git/upload_packfile.rb +66 -0
  22. data/lib/datadog/ci/git/user.rb +29 -0
  23. data/lib/datadog/ci/itr/coverage/event.rb +18 -1
  24. data/lib/datadog/ci/itr/coverage/writer.rb +114 -0
  25. data/lib/datadog/ci/itr/runner.rb +134 -11
  26. data/lib/datadog/ci/itr/skippable.rb +108 -0
  27. data/lib/datadog/ci/span.rb +16 -0
  28. data/lib/datadog/ci/test.rb +37 -12
  29. data/lib/datadog/ci/test_module.rb +2 -2
  30. data/lib/datadog/ci/test_session.rb +2 -2
  31. data/lib/datadog/ci/test_suite.rb +2 -2
  32. data/lib/datadog/ci/test_visibility/null_recorder.rb +4 -1
  33. data/lib/datadog/ci/test_visibility/recorder.rb +47 -9
  34. data/lib/datadog/ci/test_visibility/serializers/base.rb +3 -2
  35. data/lib/datadog/ci/test_visibility/serializers/factories/test_level.rb +3 -3
  36. data/lib/datadog/ci/test_visibility/serializers/factories/test_suite_level.rb +6 -6
  37. data/lib/datadog/ci/test_visibility/serializers/test_v2.rb +14 -2
  38. data/lib/datadog/ci/test_visibility/transport.rb +6 -2
  39. data/lib/datadog/ci/transport/http.rb +24 -4
  40. data/lib/datadog/ci/transport/remote_settings_api.rb +14 -6
  41. data/lib/datadog/ci/utils/configuration.rb +2 -2
  42. data/lib/datadog/ci/utils/git.rb +6 -67
  43. data/lib/datadog/ci/utils/parsing.rb +16 -0
  44. data/lib/datadog/ci/utils/test_run.rb +25 -0
  45. data/lib/datadog/ci/version.rb +1 -1
  46. data/lib/datadog/ci/worker.rb +35 -0
  47. data/lib/datadog/ci.rb +4 -0
  48. metadata +17 -6
  49. data/lib/datadog/ci/contrib/minitest/hooks.rb +0 -75
@@ -1,75 +0,0 @@
1
- # frozen_string_literal: true
2
-
3
- require_relative "../../ext/test"
4
- require_relative "ext"
5
- require_relative "helpers"
6
-
7
- module Datadog
8
- module CI
9
- module Contrib
10
- module Minitest
11
- # Lifecycle hooks to instrument Minitest::Test
12
- module Hooks
13
- def before_setup
14
- super
15
- return unless datadog_configuration[:enabled]
16
-
17
- test_suite_name = Helpers.test_suite_name(self.class, name)
18
- if Helpers.parallel?(self.class)
19
- test_suite_name = "#{test_suite_name} (#{name} concurrently)"
20
-
21
- # for parallel execution we need to start a new test suite for each test
22
- CI.start_test_suite(test_suite_name)
23
- end
24
-
25
- source_file, line_number = method(name).source_location
26
-
27
- CI.start_test(
28
- name,
29
- test_suite_name,
30
- tags: {
31
- CI::Ext::Test::TAG_FRAMEWORK => Ext::FRAMEWORK,
32
- CI::Ext::Test::TAG_FRAMEWORK_VERSION => CI::Contrib::Minitest::Integration.version.to_s,
33
- CI::Ext::Test::TAG_SOURCE_FILE => Utils::Git.relative_to_root(source_file),
34
- CI::Ext::Test::TAG_SOURCE_START => line_number.to_s
35
- },
36
- service: datadog_configuration[:service_name]
37
- )
38
- end
39
-
40
- def after_teardown
41
- test_span = CI.active_test
42
- return super unless test_span
43
-
44
- finish_with_result(test_span, result_code)
45
- if Helpers.parallel?(self.class)
46
- finish_with_result(test_span.test_suite, result_code)
47
- end
48
-
49
- super
50
- end
51
-
52
- private
53
-
54
- def finish_with_result(span, result_code)
55
- return unless span
56
-
57
- case result_code
58
- when "."
59
- span.passed!
60
- when "E", "F"
61
- span.failed!(exception: failure)
62
- when "S"
63
- span.skipped!(reason: failure.message)
64
- end
65
- span.finish
66
- end
67
-
68
- def datadog_configuration
69
- Datadog.configuration.ci[:minitest]
70
- end
71
- end
72
- end
73
- end
74
- end
75
- end