datadog-ci 1.0.0.beta1 → 1.0.0.beta3

Sign up to get free protection for your applications and to get access to all the features.
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