gitlab_quality-test_tooling 1.31.0 → 1.32.1

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: 5d848eed10080ffc5f609ba56a75e7baf6f60cef5792d66c9c1bf9fdb8dbd2b9
4
- data.tar.gz: 5d799f1628b689fda63e0ca68fb70c5f2e6e37d20d867d6ade61e4ff04ea7e57
3
+ metadata.gz: e3c5680095668ee71c082a8183693ec031714d59641fbd0ba7f2ef32555a73dc
4
+ data.tar.gz: 42c9bc53f92cb752fddb7cbf529e08f951245c751dcfac35835fd002a307ed30
5
5
  SHA512:
6
- metadata.gz: 2e881613627b3fb87abf0c00895a8b44919769b222aa1a42c60c81b8f77a79a99232145e60c798f0296d24f53f761cb6a5fd4c7d00d1cb982dcc3c58fd68a833
7
- data.tar.gz: 90b1345308d5f4abb94ab81f16520bf79870de753f570223c5bc45ade1fdb7d2ca099004d682bdbcfe106c3557ebdd093ce0461b493fd98e6e687bb9930b293e
6
+ metadata.gz: a1f2f1791fd8e59b4e4b8e2a3ef5ca1d0c501d34ccdb9525eb621b3776495d28ac810c1280a5a0b3007b7c73aa9b08775ce87c9da5ef01cda1d396c7c79f1840
7
+ data.tar.gz: e7d5b62b448ce3e48a50368feebc11bd5d2956f61c34628de7484ad658fdc6d1ab027eee716d754b8d16d2732245820ee220a809199b1ef9295c7457b54f7ea4
data/Gemfile.lock CHANGED
@@ -1,7 +1,7 @@
1
1
  PATH
2
2
  remote: .
3
3
  specs:
4
- gitlab_quality-test_tooling (1.31.0)
4
+ gitlab_quality-test_tooling (1.32.1)
5
5
  activesupport (>= 7.0, < 7.2)
6
6
  amatch (~> 0.4.1)
7
7
  gitlab (~> 4.19)
@@ -124,12 +124,12 @@ module GitlabQuality
124
124
  issue_attrs = {}
125
125
 
126
126
  new_description = new_issue_description(test)
127
- issue_attrs[:description] = new_description unless issue.description == new_description
127
+ issue_attrs[:description] = new_description if issue.description != new_description
128
128
 
129
129
  new_labels = up_to_date_labels(test: test, issue: issue).to_a
130
- issue_attrs[:labels] = new_labels unless issue.labels == new_labels
130
+ issue_attrs[:add_labels] = new_labels if (new_labels - issue.labels).any?
131
131
 
132
- gitlab.edit_issue(iid: issue.iid, options: issue_attrs) unless issue_attrs.empty?
132
+ gitlab.edit_issue(iid: issue.iid, options: issue_attrs) if issue_attrs.any?
133
133
  end
134
134
 
135
135
  def issue_labels(issue)
@@ -50,18 +50,21 @@ module GitlabQuality
50
50
 
51
51
  private
52
52
 
53
- attr_reader :context, :file_path, :file, :file_contents, :example_name, :mr_title, :changed_line_no
53
+ attr_reader :context, :file_path, :file, :file_contents, :example_name, :mr_title, :changed_line_no, :matched_lines
54
54
 
55
55
  # Checks if there is already an MR open
56
56
  #
57
57
  # @return [Boolean]
58
- def proceed_with_commit?
58
+ def proceed_with_commit? # rubocop:disable Metrics/AbcSize
59
59
  if changed_line_no.negative?
60
60
  Runtime::Logger.info(" No lines were changed in #{file_path}. Will not proceed with creating MR.")
61
61
  return false
62
62
  elsif context.commit_processed?(file_path, changed_line_no)
63
63
  Runtime::Logger.info(" Record already processed for #{file_path}:#{changed_line_no}. Will not proceed with creating MR.")
64
64
  return false
65
+ elsif context.quarantined?(matched_lines, file_contents)
66
+ Runtime::Logger.info(" This test is in quarantine: #{file_path}:#{changed_line_no}. Will not proceed with creating MR.")
67
+ return false
65
68
  end
66
69
 
67
70
  true
@@ -120,7 +123,7 @@ module GitlabQuality
120
123
  #
121
124
  # @return [Array<String, Integer>] first value holds the new content, the second value holds the line number of the test
122
125
  def add_metadata # rubocop:disable Metrics/AbcSize
123
- matched_lines = context.find_example_match_lines(file_contents, example_name)
126
+ @matched_lines = context.find_example_match_lines(file_contents, example_name)
124
127
 
125
128
  if matched_lines.any? { |line| line[0].include?(':blocking') }
126
129
  Runtime::Logger.info("Example '#{example_name}' is already blocking")
@@ -60,12 +60,12 @@ module GitlabQuality
60
60
  private
61
61
 
62
62
  attr_reader :context, :file_path, :file_contents, :failure_issue_url, :example_name,
63
- :mr_title, :failure_issue, :changed_line_no
63
+ :mr_title, :failure_issue, :changed_line_no, :matched_lines
64
64
 
65
65
  # Checks if the failure issue is closed or if there is already an MR open
66
66
  #
67
67
  # @return [Boolean]
68
- def proceed_with_commit?
68
+ def proceed_with_commit? # rubocop:disable Metrics/AbcSize
69
69
  if context.issue_is_closed?(failure_issue)
70
70
  Runtime::Logger.info(" Failure issue '#{failure_issue_url}' is closed. Will not proceed with creating MR.")
71
71
  return false
@@ -75,6 +75,9 @@ module GitlabQuality
75
75
  elsif failure_is_related_to_test_environment?
76
76
  Runtime::Logger.info(" Failure issue '#{failure_issue_url}' is environment related. Will not proceed with creating MR.")
77
77
  return false
78
+ elsif context.quarantined?(matched_lines, file_contents)
79
+ Runtime::Logger.info(" This test is already in quarantine: #{file_path}:#{changed_line_no}. Will not proceed with creating MR.")
80
+ return false
78
81
  end
79
82
 
80
83
  true
@@ -199,7 +202,7 @@ module GitlabQuality
199
202
  #
200
203
  # @return [Array<String, Integer>] first value holds the new content, the second value holds the line number of the test
201
204
  def add_metadata # rubocop:disable Metrics/AbcSize
202
- matched_lines = context.find_example_match_lines(file_contents, example_name)
205
+ @matched_lines = context.find_example_match_lines(file_contents, example_name)
203
206
 
204
207
  context.update_matched_line(matched_lines.last, file_contents.dup) do |line|
205
208
  indentation = context.indentation(line)
@@ -129,6 +129,26 @@ module GitlabQuality
129
129
  matched_lines
130
130
  end
131
131
 
132
+ # Scans the content from the matched line until `do` is found to look for quarantine token
133
+ #
134
+ # @param [Array] matched_lines an array of arrays containing the matched line and their index
135
+ # @param [String] file_contents the content of the spec file
136
+ # @return [Bolean]
137
+ def quarantined?(matched_lines, file_contents)
138
+ lines = file_contents.split("\n")
139
+
140
+ matched_lines.each do |matched_line|
141
+ matched_line_starting_index = matched_line[1]
142
+
143
+ lines[matched_line_starting_index..].each do |line|
144
+ return true if line.include?('quarantine: {')
145
+ break if / do$/.match?(line)
146
+ end
147
+ end
148
+
149
+ false
150
+ end
151
+
132
152
  # Update the provided matched_line with content from the block if given
133
153
  #
134
154
  # @param [Array<String, Integer>] matched_line first value holds the line content, the second value holds the line number
@@ -2,6 +2,6 @@
2
2
 
3
3
  module GitlabQuality
4
4
  module TestTooling
5
- VERSION = "1.31.0"
5
+ VERSION = "1.32.1"
6
6
  end
7
7
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: gitlab_quality-test_tooling
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.31.0
4
+ version: 1.32.1
5
5
  platform: ruby
6
6
  authors:
7
7
  - GitLab Quality
8
8
  autorequire:
9
9
  bindir: exe
10
10
  cert_chain: []
11
- date: 2024-07-15 00:00:00.000000000 Z
11
+ date: 2024-07-25 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: climate_control