lita-snap-ci 1.0.0 → 1.1.0
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/.codeclimate.yml +16 -0
- data/.rubocop.yml +1156 -0
- data/README.md +9 -1
- data/lib/snap_ci/parser.rb +19 -1
- data/lib/snap_ci/project.rb +13 -2
- data/lib/snap_ci/translations.rb +24 -0
- data/lita-snap-ci.gemspec +2 -1
- data/locales/en.yml +2 -0
- data/spec/fixtures/error.json +3 -0
- data/spec/fixtures/error.message +2 -0
- data/spec/lita/handlers/snap_ci_spec.rb +57 -18
- data/spec/spec_helper.rb +3 -0
- data/spec/support/config.rb +12 -0
- data/spec/support/fixture.rb +3 -0
- metadata +23 -2
data/README.md
CHANGED
@@ -1,6 +1,14 @@
|
|
1
1
|
# lita-snap-ci
|
2
2
|
|
3
|
-
|
3
|
+
Lita handler, to display the snap-ci pipelines of a project.
|
4
|
+
|
5
|
+
| Services |
|
6
|
+
|--- |
|
7
|
+
| [![Build Status](https://snap-ci.com/groteck/lita-snap-ci/branch/master/build_image)](https://snap-ci.com/groteck/lita-snap-ci/branch/master) |
|
8
|
+
|--- |
|
9
|
+
| [![Code Climate](https://codeclimate.com/github/groteck/lita-snap-ci/badges/gpa.svg)](https://codeclimate.com/github/groteck/lita-snap-ci) |
|
10
|
+
|--- |
|
11
|
+
| [![Test Coverage](https://codeclimate.com/github/groteck/lita-snap-ci/badges/coverage.svg)](https://codeclimate.com/github/groteck/lita-snap-ci/coverage) |
|
4
12
|
|
5
13
|
## Installation
|
6
14
|
|
data/lib/snap_ci/parser.rb
CHANGED
@@ -1,9 +1,17 @@
|
|
1
1
|
require 'multi_json'
|
2
|
+
require_relative 'translations'
|
2
3
|
|
3
4
|
module SnapCi
|
4
5
|
class Parser
|
6
|
+
include Translations
|
7
|
+
|
8
|
+
ERROR_PARAMETERS = {
|
9
|
+
'result' => t('parser.error', { locale: :en }),
|
10
|
+
'stages' => nil
|
11
|
+
}
|
12
|
+
|
5
13
|
def initialize(response)
|
6
|
-
|
14
|
+
set_pipeline(MultiJson.load(response.body))
|
7
15
|
end
|
8
16
|
|
9
17
|
def to_parameters
|
@@ -12,5 +20,15 @@ module SnapCi
|
|
12
20
|
steps: @pipeline['stages']
|
13
21
|
}
|
14
22
|
end
|
23
|
+
|
24
|
+
private
|
25
|
+
|
26
|
+
def set_pipeline(body)
|
27
|
+
@pipeline = if !body.has_value? 'Resource not found!'
|
28
|
+
body['_embedded']['pipelines'].last
|
29
|
+
else
|
30
|
+
ERROR_PARAMETERS
|
31
|
+
end
|
32
|
+
end
|
15
33
|
end
|
16
34
|
end
|
data/lib/snap_ci/project.rb
CHANGED
@@ -44,11 +44,22 @@ module SnapCi
|
|
44
44
|
end
|
45
45
|
|
46
46
|
def pipeline_to_s(branch, parameters)
|
47
|
-
|
47
|
+
status_to_s(branch, parameters[:status]) + steps_to_s(parameters[:steps])
|
48
|
+
end
|
49
|
+
|
50
|
+
def status_to_s(branch, status)
|
51
|
+
" #{branch}: #{status}"
|
48
52
|
end
|
49
53
|
|
50
54
|
def steps_to_s(steps)
|
51
|
-
steps.
|
55
|
+
if !steps.nil?
|
56
|
+
" (#{steps
|
57
|
+
.map { |step| "#{step["name"]}: #{step["result"]}" }
|
58
|
+
.join(", ")
|
59
|
+
})"
|
60
|
+
else
|
61
|
+
''
|
62
|
+
end
|
52
63
|
end
|
53
64
|
|
54
65
|
def uris
|
@@ -0,0 +1,24 @@
|
|
1
|
+
require 'i18n'
|
2
|
+
|
3
|
+
module SnapCi
|
4
|
+
module Translations
|
5
|
+
module ClassMethods
|
6
|
+
def t(key, hash = {})
|
7
|
+
I18n.t("lita.handlers.snap_ci.#{key}", hash)
|
8
|
+
end
|
9
|
+
end
|
10
|
+
|
11
|
+
module InstanceMethods
|
12
|
+
private
|
13
|
+
|
14
|
+
def t(key, hash = {})
|
15
|
+
self.class.t(key, hash)
|
16
|
+
end
|
17
|
+
end
|
18
|
+
|
19
|
+
def self.included(receiver)
|
20
|
+
receiver.extend ClassMethods
|
21
|
+
receiver.send :include, InstanceMethods
|
22
|
+
end
|
23
|
+
end
|
24
|
+
end
|
data/lita-snap-ci.gemspec
CHANGED
@@ -1,6 +1,6 @@
|
|
1
1
|
Gem::Specification.new do |spec|
|
2
2
|
spec.name = "lita-snap-ci"
|
3
|
-
spec.version = "1.
|
3
|
+
spec.version = "1.1.0"
|
4
4
|
spec.authors = ["Juan Fraire"]
|
5
5
|
spec.email = ["groteck@gmail.com"]
|
6
6
|
spec.description = "Snap-ci integration with lita"
|
@@ -18,6 +18,7 @@ Gem::Specification.new do |spec|
|
|
18
18
|
|
19
19
|
spec.add_development_dependency "bundler", "~> 1.3"
|
20
20
|
spec.add_development_dependency "pry-byebug"
|
21
|
+
spec.add_development_dependency "codeclimate-test-reporter"
|
21
22
|
spec.add_development_dependency "rake"
|
22
23
|
spec.add_development_dependency "rack-test"
|
23
24
|
spec.add_development_dependency "webmock"
|
data/locales/en.yml
CHANGED
@@ -1,37 +1,76 @@
|
|
1
1
|
require "spec_helper"
|
2
2
|
|
3
3
|
describe Lita::Handlers::SnapCi, lita_handler: true do
|
4
|
-
|
5
|
-
|
6
|
-
|
4
|
+
context 'with valid projects' do
|
5
|
+
before do
|
6
|
+
load_config
|
7
|
+
end
|
7
8
|
|
8
|
-
|
9
|
-
|
10
|
-
|
9
|
+
describe 'command `snap-ci report`:' do
|
10
|
+
it 'display a general report' do
|
11
|
+
send_message("snap-ci report")
|
11
12
|
|
12
|
-
|
13
|
-
|
13
|
+
load_message_fixture('snap-ci_report').each_line do |line|
|
14
|
+
expect(replies.last).to include(line.delete("\n"))
|
15
|
+
end
|
16
|
+
end
|
17
|
+
end
|
18
|
+
|
19
|
+
describe 'command `snap-ci project`:' do
|
20
|
+
context 'with only repo format' do
|
21
|
+
it 'displays the project status' do
|
22
|
+
send_message("snap-ci project api")
|
23
|
+
|
24
|
+
load_message_fixture('snap-ci_status').each_line do |line|
|
25
|
+
expect(replies.last).to include(line.delete("\n"))
|
26
|
+
end
|
27
|
+
end
|
28
|
+
end
|
29
|
+
|
30
|
+
context 'with owner/repo format' do
|
31
|
+
it 'displays the project status' do
|
32
|
+
send_message("snap-ci project oneorg/api")
|
33
|
+
|
34
|
+
load_message_fixture('snap-ci_status').each_line do |line|
|
35
|
+
expect(replies.last).to include(line.delete("\n"))
|
36
|
+
end
|
37
|
+
end
|
14
38
|
end
|
15
39
|
end
|
16
40
|
end
|
41
|
+
context 'with invalid projects' do
|
42
|
+
before do
|
43
|
+
load_wrong_config
|
44
|
+
end
|
17
45
|
|
18
|
-
|
19
|
-
|
20
|
-
|
21
|
-
send_message("snap-ci project api")
|
46
|
+
describe 'command `snap-ci report`:' do
|
47
|
+
it 'display a general report with the failure message' do
|
48
|
+
send_message("snap-ci report")
|
22
49
|
|
23
|
-
load_message_fixture('
|
50
|
+
load_message_fixture('error').each_line do |line|
|
24
51
|
expect(replies.last).to include(line.delete("\n"))
|
25
52
|
end
|
26
53
|
end
|
27
54
|
end
|
28
55
|
|
29
|
-
|
30
|
-
|
31
|
-
|
56
|
+
describe 'command `snap-ci project`:' do
|
57
|
+
context 'with only repo format' do
|
58
|
+
it 'displays the project status with the failure message' do
|
59
|
+
send_message("snap-ci project wrong_project")
|
32
60
|
|
33
|
-
|
34
|
-
|
61
|
+
load_message_fixture('error').each_line do |line|
|
62
|
+
expect(replies.last).to include(line.delete("\n"))
|
63
|
+
end
|
64
|
+
end
|
65
|
+
end
|
66
|
+
|
67
|
+
context 'with owner/repo format' do
|
68
|
+
it 'displays the project status with the failure message' do
|
69
|
+
send_message("snap-ci project wrong_org/wrong_project")
|
70
|
+
|
71
|
+
load_message_fixture('error').each_line do |line|
|
72
|
+
expect(replies.last).to include(line.delete("\n"))
|
73
|
+
end
|
35
74
|
end
|
36
75
|
end
|
37
76
|
end
|
data/spec/spec_helper.rb
CHANGED
@@ -1,6 +1,7 @@
|
|
1
1
|
require "lita-snap-ci"
|
2
2
|
require "lita/rspec"
|
3
3
|
require 'webmock/rspec'
|
4
|
+
require "codeclimate-test-reporter"
|
4
5
|
|
5
6
|
# Load helpers
|
6
7
|
require_relative 'support/fixture'
|
@@ -10,6 +11,8 @@ require_relative 'support/config'
|
|
10
11
|
# was generated with Lita 4, the compatibility mode should be left disabled.
|
11
12
|
Lita.version_3_compatibility_mode = false
|
12
13
|
|
14
|
+
CodeClimate::TestReporter.start
|
15
|
+
|
13
16
|
RSpec.configure do |c|
|
14
17
|
c.include Fixture
|
15
18
|
c.include Config
|
data/spec/support/config.rb
CHANGED
@@ -18,4 +18,16 @@ module Config
|
|
18
18
|
}
|
19
19
|
]
|
20
20
|
end
|
21
|
+
|
22
|
+
def load_wrong_config
|
23
|
+
registry.config.handlers.snap_ci.user = "snapUser"
|
24
|
+
registry.config.handlers.snap_ci.token = "Snap-ci-api-key"
|
25
|
+
registry.config.handlers.snap_ci.projects = [
|
26
|
+
{
|
27
|
+
owner: 'wrong_org',
|
28
|
+
repository: 'wrong_project',
|
29
|
+
branches: ['wrong_branch']
|
30
|
+
}
|
31
|
+
]
|
32
|
+
end
|
21
33
|
end
|
data/spec/support/fixture.rb
CHANGED
@@ -33,5 +33,8 @@ module Fixture
|
|
33
33
|
to_return(status: 200, body: load_json_fixture('websites_develop'))
|
34
34
|
stub_request(:get, "#{URL}otherorg/websites/branch/master/pipelines").
|
35
35
|
to_return(status: 200, body: load_json_fixture('websites_master'))
|
36
|
+
# wrong_project example
|
37
|
+
stub_request(:get, "#{URL}wrong_org/wrong_project/branch/wrong_branch/pipelines").
|
38
|
+
to_return(status: 404, body: load_json_fixture('error'))
|
36
39
|
end
|
37
40
|
end
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: lita-snap-ci
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 1.
|
4
|
+
version: 1.1.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Juan Fraire
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2016-06-
|
11
|
+
date: 2016-06-23 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: lita
|
@@ -52,6 +52,20 @@ dependencies:
|
|
52
52
|
- - ">="
|
53
53
|
- !ruby/object:Gem::Version
|
54
54
|
version: '0'
|
55
|
+
- !ruby/object:Gem::Dependency
|
56
|
+
name: codeclimate-test-reporter
|
57
|
+
requirement: !ruby/object:Gem::Requirement
|
58
|
+
requirements:
|
59
|
+
- - ">="
|
60
|
+
- !ruby/object:Gem::Version
|
61
|
+
version: '0'
|
62
|
+
type: :development
|
63
|
+
prerelease: false
|
64
|
+
version_requirements: !ruby/object:Gem::Requirement
|
65
|
+
requirements:
|
66
|
+
- - ">="
|
67
|
+
- !ruby/object:Gem::Version
|
68
|
+
version: '0'
|
55
69
|
- !ruby/object:Gem::Dependency
|
56
70
|
name: rake
|
57
71
|
requirement: !ruby/object:Gem::Requirement
|
@@ -115,7 +129,9 @@ executables: []
|
|
115
129
|
extensions: []
|
116
130
|
extra_rdoc_files: []
|
117
131
|
files:
|
132
|
+
- ".codeclimate.yml"
|
118
133
|
- ".gitignore"
|
134
|
+
- ".rubocop.yml"
|
119
135
|
- Gemfile
|
120
136
|
- README.md
|
121
137
|
- Rakefile
|
@@ -126,11 +142,14 @@ files:
|
|
126
142
|
- lib/snap_ci/parser.rb
|
127
143
|
- lib/snap_ci/project.rb
|
128
144
|
- lib/snap_ci/project_list.rb
|
145
|
+
- lib/snap_ci/translations.rb
|
129
146
|
- lita-snap-ci.gemspec
|
130
147
|
- locales/en.yml
|
131
148
|
- spec/fixtures/api_development.json
|
132
149
|
- spec/fixtures/api_master.json
|
133
150
|
- spec/fixtures/api_staging.json
|
151
|
+
- spec/fixtures/error.json
|
152
|
+
- spec/fixtures/error.message
|
134
153
|
- spec/fixtures/front_master.json
|
135
154
|
- spec/fixtures/front_staging.json
|
136
155
|
- spec/fixtures/pipelines.json
|
@@ -172,6 +191,8 @@ test_files:
|
|
172
191
|
- spec/fixtures/api_development.json
|
173
192
|
- spec/fixtures/api_master.json
|
174
193
|
- spec/fixtures/api_staging.json
|
194
|
+
- spec/fixtures/error.json
|
195
|
+
- spec/fixtures/error.message
|
175
196
|
- spec/fixtures/front_master.json
|
176
197
|
- spec/fixtures/front_staging.json
|
177
198
|
- spec/fixtures/pipelines.json
|