gergich 1.2.1 → 1.2.3

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: 9f81bdfdf24629e16b6af3486388f244e73aa43721febfb8e959af52cba8efbe
4
- data.tar.gz: f13157b630762c91edfcdeb342aac476f62af114cad2edbb40b18a0814060b7e
3
+ metadata.gz: 209022ec9ca1bfed90a33f905f9d0e36f016b7f25485e66041e276ff393fec6e
4
+ data.tar.gz: f6477fb1a8f75192b6f516cfe1197db7800a3b221a703d71da7a1204db3a23bc
5
5
  SHA512:
6
- metadata.gz: 81e0ce4960ce3338693de120d489d7e045ddac8c57c5c20331ca6f6e30daf68dc162dcadd158e0c39838f0b3a6a6bc906f837ab9e55da0e68185b9ed999c3516
7
- data.tar.gz: '0687478859b3e572d5f0e888c93cd8d5e0965cc546f9dd6a688a1050d4eb4174b189214dd9f3f581f9c3df8392bcb903b81101de76f85b53c3c387a72b6523e8'
6
+ metadata.gz: f6ffba5044485692318eb057407f9d6032eccd9118942233e34b3d727201784ca2111c56adb1e5ce306814916d90585b6341ff19eeb1df6c1cc0bf98d4b6b5df
7
+ data.tar.gz: f7b5f8e726eabc13f722da011df51d7c0fb137480130573819c928d1bca02057f91330d995cbda0a7ad8ad7661ee28a026a3df12f5d87911f2848f9cfd369113
data/README.md CHANGED
@@ -106,6 +106,7 @@ do `gergich comment` calls so you don't have to wire it up yourself.
106
106
  * `i18nliner`
107
107
  * `flake8`
108
108
  * `stylelint`
109
+ * `yamllint`
109
110
  * `shellcheck` - shellcheck json output
110
111
  * `custom:<path>:<class_name>` - file path and ruby class_name of a custom
111
112
  formatter.
@@ -16,10 +16,29 @@ module Gergich
16
16
  # bin/gergich:47:8: C: Prefer double-quoted strings
17
17
  # if ENV['DEBUG']
18
18
  # ^^^^^^^
19
+ #
20
+ # 1 file inspected, 35 offenses detected, 27 offenses auto-correctable
21
+ #
22
+ # Example:
23
+ # 2 files inspected, 40 offenses detected, 31 offenses auto-correctable
24
+ #
25
+ # Example:
26
+ # 1 file inspected, no offenses detected
27
+
19
28
  first_line_pattern = /^([^:\n]+):(\d+):\d+:\s(\w):\s/
20
29
 
21
30
  parts = output.split(first_line_pattern)
31
+
32
+ unless parts.last.match?(/^\d+ files? inspect/)
33
+ raise "RuboCop failed to run properly:\n\n#{output}"
34
+ end
35
+
36
+ # strip off the summary line from the last error
37
+ parts[-1] = parts[-1].split("\n")[0..-2].join("\n")
38
+
39
+ # strip off the header
22
40
  parts.shift
41
+
23
42
  messages = []
24
43
 
25
44
  until parts.empty?
@@ -0,0 +1,25 @@
1
+ # frozen_string_literal: true
2
+
3
+ module Gergich
4
+ module Capture
5
+ class YamllintCapture < BaseCapture
6
+ SEVERITY_MAP = { "error" => "error", "warning" => "warn" }.freeze
7
+
8
+ def run(output)
9
+ # e.g. " 9:5 error string value redundantly (quoted-strings)"
10
+ error_pattern = %r{\s\s+(\d+):\d+\s+(\w+)\s+(.*?)\s+\([\w/-]+\)\n}
11
+ pattern = %r{ # Example:
12
+ ^.\/([^\n]+)\n # ./api/config/lti/development/config.yml
13
+ ((#{error_pattern})+) # 9:5 error string value redundantly (quoted-strings)
14
+ }mx
15
+
16
+ output.scan(pattern).map { |file, errors|
17
+ errors.scan(error_pattern).map { |line, severity, error|
18
+ severity = SEVERITY_MAP[severity]
19
+ { path: file, message: "[yamllint] #{error}", position: line.to_i, severity: severity }
20
+ }
21
+ }.compact.flatten
22
+ end
23
+ end
24
+ end
25
+ end
@@ -18,6 +18,7 @@ CI_TEST_ARGS = {
18
18
  bin/gergich:47:8: C: Prefer double-quoted strings
19
19
  if ENV['DEBUG']
20
20
  ^^^^^^^
21
+ 1 file inspected, 35 offenses detected, 27 offenses auto-correctable
21
22
  OUTPUT
22
23
  }.freeze
23
24
 
@@ -209,6 +210,7 @@ commands["capture"] = {
209
210
  * i18nliner
210
211
  * flake8
211
212
  * stylelint
213
+ * yamllint
212
214
  * custom:<path>:<class_name> - file path and ruby
213
215
  class_name of a custom formatter.
214
216
 
data/lib/gergich.rb CHANGED
@@ -1,10 +1,8 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  require "erb"
4
- require "sqlite3"
5
4
  require "json"
6
5
  require "fileutils"
7
- require "httparty"
8
6
  require "base64"
9
7
 
10
8
  GERGICH_REVIEW_LABEL = ENV.fetch("GERGICH_REVIEW_LABEL", "Code-Review")
@@ -292,6 +290,8 @@ module Gergich
292
290
  private
293
291
 
294
292
  def perform(method, url, options)
293
+ # delay requiring httparty until here, to make local command line runs as fast as possible
294
+ require "httparty"
295
295
  options = prepare_options(options)
296
296
  ret = HTTParty.send(method, url, options).body
297
297
  return ret if options[:raw]
@@ -370,6 +370,7 @@ module Gergich
370
370
 
371
371
  def db
372
372
  @db ||= begin
373
+ require "sqlite3"
373
374
  db_exists = File.exist?(db_file)
374
375
  db = SQLite3::Database.new(db_file)
375
376
  db.results_as_hash = true
@@ -19,6 +19,8 @@ RSpec.describe Gergich::Capture::RubocopCapture do
19
19
  lib/gergich.rb:22:55: W: Line is too long. [55/54]
20
20
  def initialize(ref = "HEAD", revision_number = nil)
21
21
  ^^
22
+
23
+ 1 file inspected, 35 offenses detected, 27 offenses auto-correctable
22
24
  OUTPUT
23
25
  end
24
26
  let(:comments) do
@@ -63,4 +65,11 @@ RSpec.describe Gergich::Capture::RubocopCapture do
63
65
  end
64
66
 
65
67
  it_behaves_like "a captor"
68
+
69
+ it "raises an error if it couldn't run" do
70
+ expect { subject.run(<<-OUTPUT) }.to raise_error(/RuboCop failed to run properly/)
71
+ Could not find i18n-1.8.9 in any of the sources
72
+ Run `bundle install` to install missing gems.
73
+ OUTPUT
74
+ end
66
75
  end
@@ -0,0 +1,31 @@
1
+ # frozen_string_literal: true
2
+
3
+ require_relative "../../support/capture_shared_examples"
4
+
5
+ RSpec.describe Gergich::Capture::YamllintCapture do
6
+ let(:output) do
7
+ <<~OUTPUT
8
+ ./api/config/lti/development/config.yml
9
+ 2:8 error string value is redundantly quoted with double quotes (quoted-strings)
10
+ 12:3 warning comment not indented like content (comments-indentation)
11
+ OUTPUT
12
+ end
13
+ let(:comments) do
14
+ [
15
+ {
16
+ path: "api/config/lti/development/config.yml",
17
+ position: 2,
18
+ message: "[yamllint] string value is redundantly quoted with double quotes",
19
+ severity: "error"
20
+ },
21
+ {
22
+ path: "api/config/lti/development/config.yml",
23
+ position: 12,
24
+ message: "[yamllint] comment not indented like content",
25
+ severity: "warn"
26
+ }
27
+ ]
28
+ end
29
+
30
+ it_behaves_like "a captor"
31
+ end
data/spec/gergich_spec.rb CHANGED
@@ -1,5 +1,7 @@
1
1
  # frozen_string_literal: true
2
2
 
3
+ require "httparty"
4
+
3
5
  RSpec.describe Gergich::API do
4
6
  context "bad change-id" do
5
7
  let(:result) { double(:result, body: "Not Found: 1234") }
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: gergich
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.2.1
4
+ version: 1.2.3
5
5
  platform: ruby
6
6
  authors:
7
7
  - Jon Jensen
8
- autorequire:
8
+ autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2020-11-18 00:00:00.000000000 Z
11
+ date: 2021-08-25 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: httparty
@@ -38,6 +38,20 @@ dependencies:
38
38
  - - "~>"
39
39
  - !ruby/object:Gem::Version
40
40
  version: '1.4'
41
+ - !ruby/object:Gem::Dependency
42
+ name: byebug
43
+ requirement: !ruby/object:Gem::Requirement
44
+ requirements:
45
+ - - "~>"
46
+ - !ruby/object:Gem::Version
47
+ version: '11.1'
48
+ type: :development
49
+ prerelease: false
50
+ version_requirements: !ruby/object:Gem::Requirement
51
+ requirements:
52
+ - - "~>"
53
+ - !ruby/object:Gem::Version
54
+ version: '11.1'
41
55
  - !ruby/object:Gem::Dependency
42
56
  name: rake
43
57
  requirement: !ruby/object:Gem::Requirement
@@ -120,6 +134,7 @@ files:
120
134
  - lib/gergich/capture/shellcheck_capture.rb
121
135
  - lib/gergich/capture/stylelint_capture.rb
122
136
  - lib/gergich/capture/swiftlint_capture.rb
137
+ - lib/gergich/capture/yamllint_capture.rb
123
138
  - lib/gergich/cli.rb
124
139
  - lib/gergich/cli/gergich.rb
125
140
  - lib/gergich/cli/master_bouncer.rb
@@ -133,6 +148,7 @@ files:
133
148
  - spec/gergich/capture/shellcheck_capture_spec.rb
134
149
  - spec/gergich/capture/stylelint_capture_spec.rb
135
150
  - spec/gergich/capture/swiftlint_capture_spec.rb
151
+ - spec/gergich/capture/yamllint_capture_spec.rb
136
152
  - spec/gergich/capture_spec.rb
137
153
  - spec/gergich_spec.rb
138
154
  - spec/spec_helper.rb
@@ -141,7 +157,7 @@ homepage: https://github.com/instructure/gergich
141
157
  licenses:
142
158
  - MIT
143
159
  metadata: {}
144
- post_install_message:
160
+ post_install_message:
145
161
  rdoc_options: []
146
162
  require_paths:
147
163
  - lib
@@ -156,8 +172,8 @@ required_rubygems_version: !ruby/object:Gem::Requirement
156
172
  - !ruby/object:Gem::Version
157
173
  version: '0'
158
174
  requirements: []
159
- rubygems_version: 3.0.3
160
- signing_key:
175
+ rubygems_version: 3.2.24
176
+ signing_key:
161
177
  specification_version: 4
162
178
  summary: Command-line tool for adding Gerrit comments
163
179
  test_files: []