lazylead 0.11.4 → 0.12.0
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 +4 -4
- data/.circleci/config.yml +1 -0
- data/.docs/accuracy.sql +35 -0
- data/.rubocop.yml +6 -1
- data/lazylead.gemspec +17 -16
- data/lib/lazylead/confluence.rb +3 -2
- data/lib/lazylead/model.rb +2 -1
- data/lib/lazylead/postman.rb +5 -4
- data/lib/lazylead/schedule.rb +4 -8
- data/lib/lazylead/task/accuracy/records.rb +8 -1
- data/lib/lazylead/task/echo.rb +1 -1
- data/lib/lazylead/task/git/git.rb +82 -0
- data/lib/lazylead/task/loading.rb +1 -2
- data/lib/lazylead/task/propagate_down.rb +2 -2
- data/lib/lazylead/version.rb +1 -1
- data/readme.md +7 -4
- data/test/lazylead/file_postman_test.rb +47 -0
- data/test/lazylead/postman_test.rb +0 -32
- data/test/lazylead/retry_test.rb +11 -0
- data/test/lazylead/stdout_postman_test.rb +48 -0
- data/test/lazylead/task/accuracy/records_test.rb +34 -11
- metadata +39 -32
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 43563f79f164a2094eda0d74d373eaa3e90d564b1d653e49adb8c1c588d049d8
|
4
|
+
data.tar.gz: 3d7491056be166fed7667721827723dce02ddc7d529a4ac08c690d871e2df8d0
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: a2417a507a95b490d518c875635588c7eaedde588dd7c62c359f445d227afadae0625f52e05f998db69d45aa8c92f33910337f278b01ef42ea1904110ed01b7f
|
7
|
+
data.tar.gz: a8bb2a796784644fffdde7de78fe3726a4a718f0f769a19d030316f0dcaa6b57fbb6ff32e0e19a98d833a85dc246afadb1170a6c4c392761e0ada75918780c21
|
data/.circleci/config.yml
CHANGED
data/.docs/accuracy.sql
ADDED
@@ -0,0 +1,35 @@
|
|
1
|
+
insert into teams (id, name, properties)
|
2
|
+
values (1, 'Dream team with lazylead', '{}');
|
3
|
+
insert into systems(id, properties)
|
4
|
+
values (1, '{"type":"Lazylead::Jira", "site":"${jira_url}", "context_path":""}');
|
5
|
+
insert into tasks (name, schedule, enabled, id, system, team_id, action, properties)
|
6
|
+
values ('Expired due dates',
|
7
|
+
'cron:* * * * *',
|
8
|
+
'true',
|
9
|
+
1, 1, 1,
|
10
|
+
'Lazylead::Task::AssigneeAlert',
|
11
|
+
'{
|
12
|
+
"sql": "resolution = unresolved and due < startOfDay()",
|
13
|
+
"cc": "their@lead.com",
|
14
|
+
"subject": "[LL] Expired due dates",
|
15
|
+
"template": "lib/messages/due_date_expired.erb",
|
16
|
+
"postman": "Lazylead::FilePostman"
|
17
|
+
}');
|
18
|
+
insert into tasks (name, schedule, enabled, id, system, team_id, action, properties)
|
19
|
+
values ('Reporter''s ticket score in Spring Data MongoDB',
|
20
|
+
'cron:* * * * *',
|
21
|
+
'true',
|
22
|
+
2, 1, 1,
|
23
|
+
'Lazylead::Task::Accuracy',
|
24
|
+
'{
|
25
|
+
"from": "ll@fake.com",
|
26
|
+
"to": "lead@fake.com",
|
27
|
+
"rules": "Lazylead::Stacktrace,Lazylead::Testcase",
|
28
|
+
"fields": "attachment,description,environment,components,versions,reporter,labels,priority,duedate,summary",
|
29
|
+
"colors": "{\"0\":\"#FF4F33\",\"30\":\"#FEC15E\",\"50\":\"#19DD1E\"}",
|
30
|
+
"jql": "type=Bug and project =''Spring Data MongoDB'' and key >= DATAMONGO-1530 and key <= DATAMONGO-1600",
|
31
|
+
"silent": "true",
|
32
|
+
"subject": "[LL] Reporter''s ticket score in Spring Data MongoDB",
|
33
|
+
"template": "lib/messages/accuracy.erb",
|
34
|
+
"postman":"Lazylead::FilePostman"
|
35
|
+
}');
|
data/.rubocop.yml
CHANGED
@@ -89,6 +89,9 @@ Style/FormatStringToken:
|
|
89
89
|
- "lib/lazylead/task/accuracy/accuracy.rb"
|
90
90
|
Style/IfWithBooleanLiteralBranches: # (new in 1.9)
|
91
91
|
Enabled: true
|
92
|
+
# @todo #/DEV Enable Style/OpenStructUse rule, for now its disabled due to rubocop upgrade
|
93
|
+
Style/OpenStructUse:
|
94
|
+
Enabled: false
|
92
95
|
Lint/RaiseException:
|
93
96
|
Enabled: true
|
94
97
|
Lint/StructNewOverride:
|
@@ -208,4 +211,6 @@ Performance/RedundantEqualityComparisonBlock: # (new in 1.10)
|
|
208
211
|
Performance/RedundantSplitRegexpArgument: # (new in 1.10)
|
209
212
|
Enabled: true
|
210
213
|
Gemspec/DateAssignment: # (new in 1.10)
|
211
|
-
Enabled: true
|
214
|
+
Enabled: true
|
215
|
+
Gemspec/RequireMFA:
|
216
|
+
Enabled: false
|
data/lazylead.gemspec
CHANGED
@@ -32,7 +32,7 @@ Gem::Specification.new do |s|
|
|
32
32
|
s.rubygems_version = "2.2"
|
33
33
|
s.required_ruby_version = ">=2.6.5"
|
34
34
|
s.name = "lazylead"
|
35
|
-
s.version = "0.
|
35
|
+
s.version = "0.12.0"
|
36
36
|
s.license = "MIT"
|
37
37
|
s.summary = "Eliminate the annoying work within bug-trackers."
|
38
38
|
s.description = "Ticketing systems (Github, Jira, etc.) are strongly
|
@@ -45,7 +45,7 @@ tasks instead of solving technical problems."
|
|
45
45
|
s.authors = ["Yurii Dubinka"]
|
46
46
|
s.email = "yurii.dubinka@gmail.com"
|
47
47
|
s.homepage = "http://github.com/dgroup/lazylead"
|
48
|
-
s.post_install_message = "Thanks for installing Lazylead v0.
|
48
|
+
s.post_install_message = "Thanks for installing Lazylead v0.12.0!
|
49
49
|
Read our blog posts: https://lazylead.org
|
50
50
|
Stay in touch with the community in Telegram: https://t.me/lazylead
|
51
51
|
Follow us on Twitter: https://twitter.com/lazylead
|
@@ -58,11 +58,11 @@ tasks instead of solving technical problems."
|
|
58
58
|
s.add_runtime_dependency "activerecord", "6.1.3"
|
59
59
|
s.add_runtime_dependency "backtrace", "0.3"
|
60
60
|
s.add_runtime_dependency "colorize", "0.8.1"
|
61
|
-
s.add_runtime_dependency "faraday", "1.
|
61
|
+
s.add_runtime_dependency "faraday", "2.1.0"
|
62
62
|
s.add_runtime_dependency "get_process_mem", "0.2.7"
|
63
63
|
s.add_runtime_dependency "inifile", "3.0.0"
|
64
|
-
s.add_runtime_dependency "jira-ruby", "2.
|
65
|
-
s.add_runtime_dependency "json", "2.
|
64
|
+
s.add_runtime_dependency "jira-ruby", "2.2.0"
|
65
|
+
s.add_runtime_dependency "json", "2.6.1"
|
66
66
|
s.add_runtime_dependency "logging", "2.3.0"
|
67
67
|
s.add_runtime_dependency "mail", "2.7.1"
|
68
68
|
s.add_runtime_dependency "memory_profiler", "1.0.0"
|
@@ -71,34 +71,35 @@ tasks instead of solving technical problems."
|
|
71
71
|
s.add_runtime_dependency "railties", "6.1.3"
|
72
72
|
s.add_runtime_dependency "require_all", "3.0.0"
|
73
73
|
s.add_runtime_dependency "rubyzip", "2.3.2"
|
74
|
-
s.add_runtime_dependency "rufus-scheduler", "3.8.
|
74
|
+
s.add_runtime_dependency "rufus-scheduler", "3.8.1"
|
75
75
|
s.add_runtime_dependency "slop", "4.9.1"
|
76
76
|
s.add_runtime_dependency "sqlite3", "1.4.2"
|
77
|
-
s.add_runtime_dependency "tempfile", "0.1.
|
77
|
+
s.add_runtime_dependency "tempfile", "0.1.2"
|
78
78
|
s.add_runtime_dependency "tilt", "2.0.10"
|
79
79
|
s.add_runtime_dependency "tzinfo", "2.0.4"
|
80
|
-
s.add_runtime_dependency "tzinfo-data", "1.2021.
|
80
|
+
s.add_runtime_dependency "tzinfo-data", "1.2021.5"
|
81
81
|
s.add_runtime_dependency "vcs4sql", "0.1.1"
|
82
82
|
s.add_runtime_dependency "viewpoint", "1.1.1"
|
83
83
|
s.add_runtime_dependency "zaru", "0.3.0"
|
84
84
|
s.add_development_dependency "codecov", "0.6.0"
|
85
85
|
s.add_development_dependency "guard", "2.18.0"
|
86
86
|
s.add_development_dependency "guard-minitest", "2.4.6"
|
87
|
-
s.add_development_dependency "minitest", "5.
|
87
|
+
s.add_development_dependency "minitest", "5.15.0"
|
88
88
|
s.add_development_dependency "minitest-fail-fast", "0.1.0"
|
89
89
|
s.add_development_dependency "minitest-hooks", "1.5.0"
|
90
|
-
s.add_development_dependency "minitest-reporters", "1.
|
90
|
+
s.add_development_dependency "minitest-reporters", "1.5.0"
|
91
91
|
s.add_development_dependency "net-ping", "2.0.8"
|
92
92
|
s.add_development_dependency "rake", "13.0.6"
|
93
93
|
s.add_development_dependency "random-port", "0.5.1"
|
94
|
-
s.add_development_dependency "rdoc", "6.
|
95
|
-
s.add_development_dependency "rubocop", "1.
|
96
|
-
s.add_development_dependency "rubocop-minitest", "0.
|
97
|
-
s.add_development_dependency "rubocop-performance", "1.
|
94
|
+
s.add_development_dependency "rdoc", "6.4.0"
|
95
|
+
s.add_development_dependency "rubocop", "1.24.1"
|
96
|
+
s.add_development_dependency "rubocop-minitest", "0.17.0"
|
97
|
+
s.add_development_dependency "rubocop-performance", "1.13.1"
|
98
98
|
s.add_development_dependency "rubocop-rake", "0.6.0"
|
99
|
-
s.add_development_dependency "rubocop-rspec", "2.
|
99
|
+
s.add_development_dependency "rubocop-rspec", "2.7.0"
|
100
100
|
s.add_development_dependency "ruby-prof", "1.4.3"
|
101
101
|
s.add_development_dependency "sqlint", "0.2.0"
|
102
|
-
s.add_development_dependency "tempfile", "0.1.
|
102
|
+
s.add_development_dependency "tempfile", "0.1.2"
|
103
103
|
s.add_development_dependency "xcop", "0.6.3"
|
104
|
+
s.metadata = { "rubygems_mfa_required" => "false" }
|
104
105
|
end
|
data/lib/lazylead/confluence.rb
CHANGED
@@ -34,8 +34,9 @@ module Lazylead
|
|
34
34
|
class Confluence
|
35
35
|
def initialize(conf)
|
36
36
|
@conf = conf
|
37
|
-
@http = Faraday.new(url: @conf.url)
|
38
|
-
|
37
|
+
@http = Faraday.new(url: @conf.url) do |conn|
|
38
|
+
conn.request :authorization, :basic, @conf.user, @conf.pass
|
39
|
+
end
|
39
40
|
end
|
40
41
|
|
41
42
|
# Confluence instance url like
|
data/lib/lazylead/model.rb
CHANGED
@@ -217,9 +217,10 @@ module Lazylead
|
|
217
217
|
retries ||= 0
|
218
218
|
@orig.exec
|
219
219
|
@orig
|
220
|
-
rescue StandardError
|
220
|
+
rescue StandardError => e
|
221
221
|
sleep(props.fetch("attempt_wait", 0).to_f) if props.key? "attempt_wait"
|
222
222
|
retry if (retries += 1) < props.fetch("attempt", 0).to_i
|
223
|
+
raise e if props.key? "rethrow"
|
223
224
|
@orig
|
224
225
|
end
|
225
226
|
end
|
data/lib/lazylead/postman.rb
CHANGED
@@ -116,6 +116,7 @@ module Lazylead
|
|
116
116
|
def send(opts)
|
117
117
|
if opts.msg_to.empty?
|
118
118
|
@log.warn "ll-015: Email can't be sent as 'to' is empty, more: '#{opts}'"
|
119
|
+
""
|
119
120
|
else
|
120
121
|
file = filename(opts)
|
121
122
|
File.open(file, "w") do |f|
|
@@ -125,15 +126,15 @@ module Lazylead
|
|
125
126
|
end
|
126
127
|
@log.debug "Mail '#{opts['subject']}' for #{opts.msg_to} sent to " \
|
127
128
|
"'#{file.to_s.colorize(:light_blue)}'"
|
129
|
+
file
|
128
130
|
end
|
129
131
|
end
|
130
132
|
|
131
133
|
# Assemble file name where email to be print
|
132
134
|
def filename(opts)
|
133
|
-
|
134
|
-
|
135
|
-
|
136
|
-
)
|
135
|
+
dir = @env.fetch("file_postman_dir", ".")
|
136
|
+
FileUtils.mkdir_p(dir) unless File.exist?(dir)
|
137
|
+
File.join(dir, Zaru.sanitize!("#{Time.now.nsec}-#{opts['subject']}.html"))
|
137
138
|
end
|
138
139
|
end
|
139
140
|
end
|
data/lib/lazylead/schedule.rb
CHANGED
@@ -47,14 +47,10 @@ module Lazylead
|
|
47
47
|
raise "ll-002: task can't be a null" if task.nil?
|
48
48
|
@trigger.method(task.type).call(task.unit) do
|
49
49
|
ActiveRecord::Base.connection_pool.with_connection do
|
50
|
-
|
51
|
-
|
52
|
-
|
53
|
-
|
54
|
-
ORM::Verbose.new(task, @log),
|
55
|
-
@log
|
56
|
-
).exec
|
57
|
-
end
|
50
|
+
t = task
|
51
|
+
t = ORM::Verbose.new(t, @log) unless t.props.key? "no_logs"
|
52
|
+
t = ORM::Retry.new(t, @log)
|
53
|
+
t.exec
|
58
54
|
end
|
59
55
|
end
|
60
56
|
@log.debug "Task scheduled: #{task}"
|
@@ -27,9 +27,15 @@ require_relative "attachment"
|
|
27
27
|
module Lazylead
|
28
28
|
# Check that ticket has video record(s) with reproducing results.
|
29
29
|
class Records < Lazylead::Attachment
|
30
|
-
|
30
|
+
# @param ext
|
31
|
+
# The list of video records file extensions.
|
32
|
+
# @param size
|
33
|
+
# The minimum size of video records in bytes.
|
34
|
+
# Default value is 5KB.
|
35
|
+
def initialize(ext = [], size = 5 * 1024)
|
31
36
|
super("Internal reproducing results (video)", 5, "Attachments")
|
32
37
|
@ext = ext
|
38
|
+
@size = size
|
33
39
|
return unless @ext.empty?
|
34
40
|
@ext = %w[.webm .mkv .flv .flv .vob .ogv .ogg .drc .gif .gifv .mng .avi
|
35
41
|
.mts .m2ts .ts .mov .qt .wmv .yuv .rm .rmvb .viv .asf .amv .mp4
|
@@ -39,6 +45,7 @@ module Lazylead
|
|
39
45
|
|
40
46
|
# Ensure that ticket has an attachment with video-file extension
|
41
47
|
def matches?(attach)
|
48
|
+
return false if attach.attrs["size"].to_i < @size
|
42
49
|
return true if @ext.any? { |e| e.eql? File.extname(attach.attrs["filename"]).downcase }
|
43
50
|
return false if attach.attrs["mimeType"].nil?
|
44
51
|
@ext.any? { |e| attach.attrs["mimeType"].end_with? "/#{e[1..]}" }
|
data/lib/lazylead/task/echo.rb
CHANGED
@@ -0,0 +1,82 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
# The MIT License
|
4
|
+
#
|
5
|
+
# Copyright (c) 2019-2021 Yurii Dubinka
|
6
|
+
#
|
7
|
+
# Permission is hereby granted, free of charge, to any person obtaining a copy
|
8
|
+
# of this software and associated documentation files (the "Software"),
|
9
|
+
# to deal in the Software without restriction, including without limitation
|
10
|
+
# the rights to use, copy, modify, merge, publish, distribute, sublicense,
|
11
|
+
# and/or sell copies of the Software, and to permit persons to whom
|
12
|
+
# the Software is furnished to do so, subject to the following conditions:
|
13
|
+
#
|
14
|
+
# The above copyright notice and this permission notice shall be included
|
15
|
+
# in all copies or substantial portions of the Software.
|
16
|
+
#
|
17
|
+
# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
18
|
+
# IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
19
|
+
# FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT. IN NO EVENT SHALL THE
|
20
|
+
# AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
21
|
+
# LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE,
|
22
|
+
# ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE
|
23
|
+
# OR OTHER DEALINGS IN THE SOFTWARE.
|
24
|
+
|
25
|
+
require "forwardable"
|
26
|
+
|
27
|
+
module Lazylead
|
28
|
+
# @todo #533/DEV Git `grep` command is required like Lazylead::SVN::Grep
|
29
|
+
#
|
30
|
+
# @todo #533/DEV Git `touch` command is required like Lazylead::SVN::Touch
|
31
|
+
#
|
32
|
+
# @todo #533/DEV Git `diff` command is required like Lazylead::SVN::Diff
|
33
|
+
module Git
|
34
|
+
#
|
35
|
+
# SVN commit built from command-line stdout (OS#run).
|
36
|
+
#
|
37
|
+
class Commit
|
38
|
+
def initialize(raw)
|
39
|
+
@raw = raw
|
40
|
+
end
|
41
|
+
|
42
|
+
def to_s
|
43
|
+
"#{id} #{msg}"
|
44
|
+
end
|
45
|
+
|
46
|
+
# @todo #/DEV Git Commit#id implementation is required based on `git` ruby gem
|
47
|
+
def id; end
|
48
|
+
|
49
|
+
# @todo #/DEV Git Commit#author implementation is required based on `git` ruby gem
|
50
|
+
def author; end
|
51
|
+
|
52
|
+
# @todo #/DEV Git Commit#time implementation is required based on `git` ruby gem
|
53
|
+
def time; end
|
54
|
+
|
55
|
+
# @todo #/DEV Git Commit#msg implementation is required based on `git` ruby gem
|
56
|
+
def msg; end
|
57
|
+
|
58
|
+
# @todo #/DEV Git Commit#lines implementation is required based on `git` ruby gem
|
59
|
+
def lines; end
|
60
|
+
|
61
|
+
# @todo #/DEV Git Commit#header implementation is required based on `git` ruby gem
|
62
|
+
def header; end
|
63
|
+
|
64
|
+
# The modified lines contains expected text
|
65
|
+
# @todo #/DEV Git Commit#includes? implementation is required based on `git` ruby gem
|
66
|
+
def includes?(text); end
|
67
|
+
end
|
68
|
+
|
69
|
+
#
|
70
|
+
# Git commits built from command-line stdout (OS#run).
|
71
|
+
#
|
72
|
+
# @todo #/DEV Git Commits implementation is required based on `git` ruby gem
|
73
|
+
class Commits
|
74
|
+
extend Forwardable
|
75
|
+
def_delegators :@all, :each, :map, :select, :empty?
|
76
|
+
|
77
|
+
def initialize(stdout)
|
78
|
+
@stdout = stdout
|
79
|
+
end
|
80
|
+
end
|
81
|
+
end
|
82
|
+
end
|
@@ -38,8 +38,7 @@ module Lazylead
|
|
38
38
|
def run(sys, postman, opts)
|
39
39
|
assignments = sys.issues(opts["jql"], opts.jira_defaults)
|
40
40
|
.group_by(&:assignee)
|
41
|
-
.
|
42
|
-
.to_h
|
41
|
+
.to_h { |user, tasks| [user.id, Teammate.new(user, tasks)] }
|
43
42
|
opts.slice("team", ",")
|
44
43
|
.map { |m| m.split(":") }
|
45
44
|
.each { |id, name| assignments[id] = Free.new(id, name) unless assignments.key? id }
|
@@ -87,9 +87,9 @@ module Lazylead
|
|
87
87
|
# Fill pre-defined fields for sub-tasks from parent ticket
|
88
88
|
# and post comment to ticket with clarification.
|
89
89
|
def propagate
|
90
|
-
expected = @fields.
|
90
|
+
expected = @fields.to_h { |f| [f, @issue.fields[f]] }
|
91
91
|
@subtasks.each do |subtask|
|
92
|
-
actual = @fields.
|
92
|
+
actual = @fields.to_h { |f| [f, subtask.fields[f]] }
|
93
93
|
diff = diff(expected, actual)
|
94
94
|
next if diff.empty?
|
95
95
|
subtask.save(fields: diff)
|
data/lib/lazylead/version.rb
CHANGED
data/readme.md
CHANGED
@@ -50,9 +50,9 @@ Join our telegram chat [lazylead](https://t.me/lazyleads) for discussions.
|
|
50
50
|
| Notify about tickets matches predefined multiple conditions | ✅ | ⌛ | ⌛ | ❌ | ❌ |
|
51
51
|
| Link automatically the ticket and Confluence page if link found in ticket's comments/description | ✅ | ⌛ | ⌛ | ❌ | ❌ |
|
52
52
|
| Notify about tickets assigned to your team members not by effective managers| ✅ | ⌛ | ⌛ | ❌ | ❌ |
|
53
|
-
| Notify about modifications of important files in VCS | ❌ | ⌛ | ❌ | ✅ |
|
54
|
-
| Notify about diff changes for past X period in VCS | ❌ | ⌛ | ❌ | ✅ |
|
55
|
-
| Notify about changes with some text for past X period in VCS | ❌ | ⌛ | ❌ | ✅ |
|
53
|
+
| Notify about modifications of important files in VCS | ❌ | ⌛ | ❌ | ✅ | 🚴 |
|
54
|
+
| Notify about diff changes for past X period in VCS | ❌ | ⌛ | ❌ | ✅ | 🚴 |
|
55
|
+
| Notify about changes with some text for past X period in VCS | ❌ | ⌛ | ❌ | ✅ | 🚴 |
|
56
56
|
| [Notify when someone outside of your team changed the due date on tickets for your team](lib/lazylead/task/micromanager.rb)| ✅ | ⌛ | ❌ | ❌ | ❌ |
|
57
57
|
| [Notify when someone outside of your team assigned a ticket directly to the developer](lib/lazylead/task/assignment.rb)| ✅ | ⌛ | ❌ | ❌ | ❌ |
|
58
58
|
|
@@ -64,8 +64,11 @@ Join our telegram chat [lazylead](https://t.me/lazyleads) for discussions.
|
|
64
64
|
| [mail.google.com](lib/lazylead/postman.rb) | Emails | 🌵 |
|
65
65
|
| calendar.google.com | Calendar | ⌛ |
|
66
66
|
| slack.com | Notifications | ⌛ |
|
67
|
+
| GitHub | VCS + CI/CD | ⌛ |
|
68
|
+
| GitLab | VCS + CI/CD | ⌛ |
|
69
|
+
| BitBucket | VCS + CI/CD | ⌛ |
|
67
70
|
|
68
|
-
|
71
|
+
🚴🏽 - in-progress, ⌛ - planned, ✅ - implemented, 🌵 - implemented, but not tested, ❌ - not supported/planned.
|
69
72
|
|
70
73
|
New ideas, bugs, suggestions or questions are welcome [via GitHub issues](https://github.com/dgroup/lazylead/issues/new)!
|
71
74
|
|
@@ -0,0 +1,47 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
# The MIT License
|
4
|
+
#
|
5
|
+
# Copyright (c) 2019-2021 Yurii Dubinka
|
6
|
+
#
|
7
|
+
# Permission is hereby granted, free of charge, to any person obtaining a copy
|
8
|
+
# of this software and associated documentation files (the "Software"),
|
9
|
+
# to deal in the Software without restriction, including without limitation
|
10
|
+
# the rights to use, copy, modify, merge, publish, distribute, sublicense,
|
11
|
+
# and/or sell copies of the Software, and to permit persons to whom
|
12
|
+
# the Software is furnished to do so, subject to the following conditions:
|
13
|
+
#
|
14
|
+
# The above copyright notice and this permission notice shall be included
|
15
|
+
# in all copies or substantial portions of the Software.
|
16
|
+
#
|
17
|
+
# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
18
|
+
# IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
19
|
+
# FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT. IN NO EVENT SHALL THE
|
20
|
+
# AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
21
|
+
# LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE,
|
22
|
+
# ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE
|
23
|
+
# OR OTHER DEALINGS IN THE SOFTWARE.
|
24
|
+
|
25
|
+
require_relative "../test"
|
26
|
+
require_relative "../../lib/lazylead/log"
|
27
|
+
require_relative "../../lib/lazylead/opts"
|
28
|
+
require_relative "../../lib/lazylead/salt"
|
29
|
+
require_relative "../../lib/lazylead/smtp"
|
30
|
+
require_relative "../../lib/lazylead/postman"
|
31
|
+
|
32
|
+
module Lazylead
|
33
|
+
class FilePostmanTest < Lazylead::Test
|
34
|
+
test "send email to html file" do
|
35
|
+
assert_path_exists FilePostman.new(Log.new, "file_postman_dir" => "test/resources")
|
36
|
+
.send(
|
37
|
+
Opts.new(
|
38
|
+
"to" => "to@email.com",
|
39
|
+
"from" => "from@email.com",
|
40
|
+
"attachments" => ["readme.md"],
|
41
|
+
"subject" => "[LL] FilePostmanTest attachment",
|
42
|
+
"template" => "lib/messages/savepoint.erb"
|
43
|
+
)
|
44
|
+
)
|
45
|
+
end
|
46
|
+
end
|
47
|
+
end
|
@@ -57,36 +57,4 @@ module Lazylead
|
|
57
57
|
)
|
58
58
|
end
|
59
59
|
end
|
60
|
-
|
61
|
-
class StdoutPostmanTest < Lazylead::Test
|
62
|
-
# @todo #495/DEV Find way to capture the STDOUT in order to test the email sending.
|
63
|
-
# Right now its just visual verification.
|
64
|
-
test "send email to stdout" do
|
65
|
-
StdoutPostman.new.send(
|
66
|
-
Opts.new(
|
67
|
-
"to" => "to@email.com",
|
68
|
-
"from" => "from@email.com",
|
69
|
-
"attachments" => ["readme.md"],
|
70
|
-
"subject" => "[LL] Attachments",
|
71
|
-
"template" => "lib/messages/savepoint.erb"
|
72
|
-
)
|
73
|
-
)
|
74
|
-
end
|
75
|
-
end
|
76
|
-
|
77
|
-
class FilePostmanTest < Lazylead::Test
|
78
|
-
# @todo #/DEV add new assert method which consume the file name and check existence on the disk
|
79
|
-
test "send email to html file" do
|
80
|
-
FilePostman.new(Log.new, "file_postman_dir" => "test/resources")
|
81
|
-
.send(
|
82
|
-
Opts.new(
|
83
|
-
"to" => "to@email.com",
|
84
|
-
"from" => "from@email.com",
|
85
|
-
"attachments" => ["readme.md"],
|
86
|
-
"subject" => "[LL] Attachments",
|
87
|
-
"template" => "lib/messages/savepoint.erb"
|
88
|
-
)
|
89
|
-
)
|
90
|
-
end
|
91
|
-
end
|
92
60
|
end
|
data/test/lazylead/retry_test.rb
CHANGED
@@ -81,5 +81,16 @@ module Lazylead
|
|
81
81
|
)
|
82
82
|
).exec.attempts
|
83
83
|
end
|
84
|
+
|
85
|
+
test "throw error" do
|
86
|
+
assert_raises(RuntimeError, "network issue") do
|
87
|
+
ORM::Retry.new(
|
88
|
+
FakeTask.new(
|
89
|
+
proc { raise "network issue" },
|
90
|
+
{ "rethrow" => "true" }
|
91
|
+
)
|
92
|
+
).exec
|
93
|
+
end
|
94
|
+
end
|
84
95
|
end
|
85
96
|
end
|
@@ -0,0 +1,48 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
# The MIT License
|
4
|
+
#
|
5
|
+
# Copyright (c) 2019-2021 Yurii Dubinka
|
6
|
+
#
|
7
|
+
# Permission is hereby granted, free of charge, to any person obtaining a copy
|
8
|
+
# of this software and associated documentation files (the "Software"),
|
9
|
+
# to deal in the Software without restriction, including without limitation
|
10
|
+
# the rights to use, copy, modify, merge, publish, distribute, sublicense,
|
11
|
+
# and/or sell copies of the Software, and to permit persons to whom
|
12
|
+
# the Software is furnished to do so, subject to the following conditions:
|
13
|
+
#
|
14
|
+
# The above copyright notice and this permission notice shall be included
|
15
|
+
# in all copies or substantial portions of the Software.
|
16
|
+
#
|
17
|
+
# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
18
|
+
# IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
19
|
+
# FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT. IN NO EVENT SHALL THE
|
20
|
+
# AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
21
|
+
# LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE,
|
22
|
+
# ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE
|
23
|
+
# OR OTHER DEALINGS IN THE SOFTWARE.
|
24
|
+
|
25
|
+
require_relative "../test"
|
26
|
+
require_relative "../../lib/lazylead/log"
|
27
|
+
require_relative "../../lib/lazylead/opts"
|
28
|
+
require_relative "../../lib/lazylead/salt"
|
29
|
+
require_relative "../../lib/lazylead/smtp"
|
30
|
+
require_relative "../../lib/lazylead/postman"
|
31
|
+
|
32
|
+
module Lazylead
|
33
|
+
class StdoutPostmanTest < Lazylead::Test
|
34
|
+
# @todo #495/DEV Find way to capture the STDOUT in order to test the email sending.
|
35
|
+
# Right now its just visual verification.
|
36
|
+
test "send email to stdout" do
|
37
|
+
StdoutPostman.new.send(
|
38
|
+
Opts.new(
|
39
|
+
"to" => "to@email.com",
|
40
|
+
"from" => "from@email.com",
|
41
|
+
"attachments" => ["readme.md"],
|
42
|
+
"subject" => "[LL] Attachments",
|
43
|
+
"template" => "lib/messages/savepoint.erb"
|
44
|
+
)
|
45
|
+
)
|
46
|
+
end
|
47
|
+
end
|
48
|
+
end
|
@@ -32,7 +32,10 @@ module Lazylead
|
|
32
32
|
assert Records.new.passed(
|
33
33
|
OpenStruct.new(
|
34
34
|
attachments: [
|
35
|
-
OpenStruct.new(attrs: {
|
35
|
+
OpenStruct.new(attrs: {
|
36
|
+
"filename" => "failed case 1.mp4",
|
37
|
+
"size" => 6 * 1024
|
38
|
+
})
|
36
39
|
]
|
37
40
|
)
|
38
41
|
)
|
@@ -42,7 +45,10 @@ module Lazylead
|
|
42
45
|
assert Records.new.passed(
|
43
46
|
OpenStruct.new(
|
44
47
|
attachments: [
|
45
|
-
OpenStruct.new(attrs: {
|
48
|
+
OpenStruct.new(attrs: {
|
49
|
+
"filename" => "failed case 2.avi",
|
50
|
+
"size" => 6 * 1024
|
51
|
+
})
|
46
52
|
]
|
47
53
|
)
|
48
54
|
)
|
@@ -52,7 +58,10 @@ module Lazylead
|
|
52
58
|
refute Records.new.passed(
|
53
59
|
OpenStruct.new(
|
54
60
|
attachments: [
|
55
|
-
OpenStruct.new(attrs: {
|
61
|
+
OpenStruct.new(attrs: {
|
62
|
+
"filename" => "failed case 2.txt",
|
63
|
+
"size" => 6 * 1024
|
64
|
+
})
|
56
65
|
]
|
57
66
|
)
|
58
67
|
)
|
@@ -62,25 +71,39 @@ module Lazylead
|
|
62
71
|
assert Records.new.passed(
|
63
72
|
OpenStruct.new(
|
64
73
|
attachments: [
|
65
|
-
OpenStruct.new(
|
66
|
-
|
67
|
-
|
68
|
-
|
69
|
-
|
70
|
-
)
|
74
|
+
OpenStruct.new(attrs: {
|
75
|
+
"filename" => "snapshot.png",
|
76
|
+
"mimeType" => "image/gif",
|
77
|
+
"size" => 6 * 1024
|
78
|
+
})
|
71
79
|
]
|
72
80
|
)
|
73
81
|
)
|
74
82
|
end
|
75
83
|
|
76
84
|
test "mime type is xlsx" do
|
85
|
+
refute Records.new.passed(
|
86
|
+
OpenStruct.new(
|
87
|
+
attachments: [
|
88
|
+
OpenStruct.new(attrs: {
|
89
|
+
"filename" => "snapshot.xlsx",
|
90
|
+
"mimeType" => "application/vnd.openxmlformats-officedocument.spreadsheetml.sheet",
|
91
|
+
"size" => 6 * 1024
|
92
|
+
})
|
93
|
+
]
|
94
|
+
)
|
95
|
+
)
|
96
|
+
end
|
97
|
+
|
98
|
+
test "empty gif" do
|
77
99
|
refute Records.new.passed(
|
78
100
|
OpenStruct.new(
|
79
101
|
attachments: [
|
80
102
|
OpenStruct.new(
|
81
103
|
attrs: {
|
82
|
-
"filename" => "
|
83
|
-
"mimeType" => "
|
104
|
+
"filename" => "steps.gif",
|
105
|
+
"mimeType" => "image/gif",
|
106
|
+
"size" => "0"
|
84
107
|
}
|
85
108
|
)
|
86
109
|
]
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: lazylead
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.
|
4
|
+
version: 0.12.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Yurii Dubinka
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date:
|
11
|
+
date: 2022-01-17 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: activerecord
|
@@ -58,14 +58,14 @@ dependencies:
|
|
58
58
|
requirements:
|
59
59
|
- - '='
|
60
60
|
- !ruby/object:Gem::Version
|
61
|
-
version: 1.
|
61
|
+
version: 2.1.0
|
62
62
|
type: :runtime
|
63
63
|
prerelease: false
|
64
64
|
version_requirements: !ruby/object:Gem::Requirement
|
65
65
|
requirements:
|
66
66
|
- - '='
|
67
67
|
- !ruby/object:Gem::Version
|
68
|
-
version: 1.
|
68
|
+
version: 2.1.0
|
69
69
|
- !ruby/object:Gem::Dependency
|
70
70
|
name: get_process_mem
|
71
71
|
requirement: !ruby/object:Gem::Requirement
|
@@ -100,28 +100,28 @@ dependencies:
|
|
100
100
|
requirements:
|
101
101
|
- - '='
|
102
102
|
- !ruby/object:Gem::Version
|
103
|
-
version: 2.
|
103
|
+
version: 2.2.0
|
104
104
|
type: :runtime
|
105
105
|
prerelease: false
|
106
106
|
version_requirements: !ruby/object:Gem::Requirement
|
107
107
|
requirements:
|
108
108
|
- - '='
|
109
109
|
- !ruby/object:Gem::Version
|
110
|
-
version: 2.
|
110
|
+
version: 2.2.0
|
111
111
|
- !ruby/object:Gem::Dependency
|
112
112
|
name: json
|
113
113
|
requirement: !ruby/object:Gem::Requirement
|
114
114
|
requirements:
|
115
115
|
- - '='
|
116
116
|
- !ruby/object:Gem::Version
|
117
|
-
version: 2.
|
117
|
+
version: 2.6.1
|
118
118
|
type: :runtime
|
119
119
|
prerelease: false
|
120
120
|
version_requirements: !ruby/object:Gem::Requirement
|
121
121
|
requirements:
|
122
122
|
- - '='
|
123
123
|
- !ruby/object:Gem::Version
|
124
|
-
version: 2.
|
124
|
+
version: 2.6.1
|
125
125
|
- !ruby/object:Gem::Dependency
|
126
126
|
name: logging
|
127
127
|
requirement: !ruby/object:Gem::Requirement
|
@@ -240,14 +240,14 @@ dependencies:
|
|
240
240
|
requirements:
|
241
241
|
- - '='
|
242
242
|
- !ruby/object:Gem::Version
|
243
|
-
version: 3.8.
|
243
|
+
version: 3.8.1
|
244
244
|
type: :runtime
|
245
245
|
prerelease: false
|
246
246
|
version_requirements: !ruby/object:Gem::Requirement
|
247
247
|
requirements:
|
248
248
|
- - '='
|
249
249
|
- !ruby/object:Gem::Version
|
250
|
-
version: 3.8.
|
250
|
+
version: 3.8.1
|
251
251
|
- !ruby/object:Gem::Dependency
|
252
252
|
name: slop
|
253
253
|
requirement: !ruby/object:Gem::Requirement
|
@@ -282,14 +282,14 @@ dependencies:
|
|
282
282
|
requirements:
|
283
283
|
- - '='
|
284
284
|
- !ruby/object:Gem::Version
|
285
|
-
version: 0.1.
|
285
|
+
version: 0.1.2
|
286
286
|
type: :runtime
|
287
287
|
prerelease: false
|
288
288
|
version_requirements: !ruby/object:Gem::Requirement
|
289
289
|
requirements:
|
290
290
|
- - '='
|
291
291
|
- !ruby/object:Gem::Version
|
292
|
-
version: 0.1.
|
292
|
+
version: 0.1.2
|
293
293
|
- !ruby/object:Gem::Dependency
|
294
294
|
name: tilt
|
295
295
|
requirement: !ruby/object:Gem::Requirement
|
@@ -324,14 +324,14 @@ dependencies:
|
|
324
324
|
requirements:
|
325
325
|
- - '='
|
326
326
|
- !ruby/object:Gem::Version
|
327
|
-
version: 1.2021.
|
327
|
+
version: 1.2021.5
|
328
328
|
type: :runtime
|
329
329
|
prerelease: false
|
330
330
|
version_requirements: !ruby/object:Gem::Requirement
|
331
331
|
requirements:
|
332
332
|
- - '='
|
333
333
|
- !ruby/object:Gem::Version
|
334
|
-
version: 1.2021.
|
334
|
+
version: 1.2021.5
|
335
335
|
- !ruby/object:Gem::Dependency
|
336
336
|
name: vcs4sql
|
337
337
|
requirement: !ruby/object:Gem::Requirement
|
@@ -422,14 +422,14 @@ dependencies:
|
|
422
422
|
requirements:
|
423
423
|
- - '='
|
424
424
|
- !ruby/object:Gem::Version
|
425
|
-
version: 5.
|
425
|
+
version: 5.15.0
|
426
426
|
type: :development
|
427
427
|
prerelease: false
|
428
428
|
version_requirements: !ruby/object:Gem::Requirement
|
429
429
|
requirements:
|
430
430
|
- - '='
|
431
431
|
- !ruby/object:Gem::Version
|
432
|
-
version: 5.
|
432
|
+
version: 5.15.0
|
433
433
|
- !ruby/object:Gem::Dependency
|
434
434
|
name: minitest-fail-fast
|
435
435
|
requirement: !ruby/object:Gem::Requirement
|
@@ -464,14 +464,14 @@ dependencies:
|
|
464
464
|
requirements:
|
465
465
|
- - '='
|
466
466
|
- !ruby/object:Gem::Version
|
467
|
-
version: 1.
|
467
|
+
version: 1.5.0
|
468
468
|
type: :development
|
469
469
|
prerelease: false
|
470
470
|
version_requirements: !ruby/object:Gem::Requirement
|
471
471
|
requirements:
|
472
472
|
- - '='
|
473
473
|
- !ruby/object:Gem::Version
|
474
|
-
version: 1.
|
474
|
+
version: 1.5.0
|
475
475
|
- !ruby/object:Gem::Dependency
|
476
476
|
name: net-ping
|
477
477
|
requirement: !ruby/object:Gem::Requirement
|
@@ -520,56 +520,56 @@ dependencies:
|
|
520
520
|
requirements:
|
521
521
|
- - '='
|
522
522
|
- !ruby/object:Gem::Version
|
523
|
-
version: 6.
|
523
|
+
version: 6.4.0
|
524
524
|
type: :development
|
525
525
|
prerelease: false
|
526
526
|
version_requirements: !ruby/object:Gem::Requirement
|
527
527
|
requirements:
|
528
528
|
- - '='
|
529
529
|
- !ruby/object:Gem::Version
|
530
|
-
version: 6.
|
530
|
+
version: 6.4.0
|
531
531
|
- !ruby/object:Gem::Dependency
|
532
532
|
name: rubocop
|
533
533
|
requirement: !ruby/object:Gem::Requirement
|
534
534
|
requirements:
|
535
535
|
- - '='
|
536
536
|
- !ruby/object:Gem::Version
|
537
|
-
version: 1.
|
537
|
+
version: 1.24.1
|
538
538
|
type: :development
|
539
539
|
prerelease: false
|
540
540
|
version_requirements: !ruby/object:Gem::Requirement
|
541
541
|
requirements:
|
542
542
|
- - '='
|
543
543
|
- !ruby/object:Gem::Version
|
544
|
-
version: 1.
|
544
|
+
version: 1.24.1
|
545
545
|
- !ruby/object:Gem::Dependency
|
546
546
|
name: rubocop-minitest
|
547
547
|
requirement: !ruby/object:Gem::Requirement
|
548
548
|
requirements:
|
549
549
|
- - '='
|
550
550
|
- !ruby/object:Gem::Version
|
551
|
-
version: 0.
|
551
|
+
version: 0.17.0
|
552
552
|
type: :development
|
553
553
|
prerelease: false
|
554
554
|
version_requirements: !ruby/object:Gem::Requirement
|
555
555
|
requirements:
|
556
556
|
- - '='
|
557
557
|
- !ruby/object:Gem::Version
|
558
|
-
version: 0.
|
558
|
+
version: 0.17.0
|
559
559
|
- !ruby/object:Gem::Dependency
|
560
560
|
name: rubocop-performance
|
561
561
|
requirement: !ruby/object:Gem::Requirement
|
562
562
|
requirements:
|
563
563
|
- - '='
|
564
564
|
- !ruby/object:Gem::Version
|
565
|
-
version: 1.
|
565
|
+
version: 1.13.1
|
566
566
|
type: :development
|
567
567
|
prerelease: false
|
568
568
|
version_requirements: !ruby/object:Gem::Requirement
|
569
569
|
requirements:
|
570
570
|
- - '='
|
571
571
|
- !ruby/object:Gem::Version
|
572
|
-
version: 1.
|
572
|
+
version: 1.13.1
|
573
573
|
- !ruby/object:Gem::Dependency
|
574
574
|
name: rubocop-rake
|
575
575
|
requirement: !ruby/object:Gem::Requirement
|
@@ -590,14 +590,14 @@ dependencies:
|
|
590
590
|
requirements:
|
591
591
|
- - '='
|
592
592
|
- !ruby/object:Gem::Version
|
593
|
-
version: 2.
|
593
|
+
version: 2.7.0
|
594
594
|
type: :development
|
595
595
|
prerelease: false
|
596
596
|
version_requirements: !ruby/object:Gem::Requirement
|
597
597
|
requirements:
|
598
598
|
- - '='
|
599
599
|
- !ruby/object:Gem::Version
|
600
|
-
version: 2.
|
600
|
+
version: 2.7.0
|
601
601
|
- !ruby/object:Gem::Dependency
|
602
602
|
name: ruby-prof
|
603
603
|
requirement: !ruby/object:Gem::Requirement
|
@@ -632,14 +632,14 @@ dependencies:
|
|
632
632
|
requirements:
|
633
633
|
- - '='
|
634
634
|
- !ruby/object:Gem::Version
|
635
|
-
version: 0.1.
|
635
|
+
version: 0.1.2
|
636
636
|
type: :development
|
637
637
|
prerelease: false
|
638
638
|
version_requirements: !ruby/object:Gem::Requirement
|
639
639
|
requirements:
|
640
640
|
- - '='
|
641
641
|
- !ruby/object:Gem::Version
|
642
|
-
version: 0.1.
|
642
|
+
version: 0.1.2
|
643
643
|
- !ruby/object:Gem::Dependency
|
644
644
|
name: xcop
|
645
645
|
requirement: !ruby/object:Gem::Requirement
|
@@ -682,6 +682,7 @@ files:
|
|
682
682
|
- ".docker/readme.md"
|
683
683
|
- ".docker/vcs.dockerfile"
|
684
684
|
- ".docs/accuracy.md"
|
685
|
+
- ".docs/accuracy.sql"
|
685
686
|
- ".docs/accuracy_email.jpg"
|
686
687
|
- ".docs/accuracy_jira_comment.jpg"
|
687
688
|
- ".docs/duedate_expired.md"
|
@@ -759,6 +760,7 @@ files:
|
|
759
760
|
- lib/lazylead/task/confluence_ref.rb
|
760
761
|
- lib/lazylead/task/echo.rb
|
761
762
|
- lib/lazylead/task/fix_version.rb
|
763
|
+
- lib/lazylead/task/git/git.rb
|
762
764
|
- lib/lazylead/task/loading.rb
|
763
765
|
- lib/lazylead/task/micromanager.rb
|
764
766
|
- lib/lazylead/task/missing_comment.rb
|
@@ -791,6 +793,7 @@ files:
|
|
791
793
|
- test/lazylead/cli/app_test.rb
|
792
794
|
- test/lazylead/confluence_test.rb
|
793
795
|
- test/lazylead/exchange_test.rb
|
796
|
+
- test/lazylead/file_postman_test.rb
|
794
797
|
- test/lazylead/model_test.rb
|
795
798
|
- test/lazylead/opts_test.rb
|
796
799
|
- test/lazylead/postman_test.rb
|
@@ -798,6 +801,7 @@ files:
|
|
798
801
|
- test/lazylead/salt_test.rb
|
799
802
|
- test/lazylead/smoke_test.rb
|
800
803
|
- test/lazylead/smtp_test.rb
|
804
|
+
- test/lazylead/stdout_postman_test.rb
|
801
805
|
- test/lazylead/system/jira_test.rb
|
802
806
|
- test/lazylead/task/accuracy/accuracy_test.rb
|
803
807
|
- test/lazylead/task/accuracy/affected_build_test.rb
|
@@ -842,9 +846,10 @@ files:
|
|
842
846
|
homepage: http://github.com/dgroup/lazylead
|
843
847
|
licenses:
|
844
848
|
- MIT
|
845
|
-
metadata:
|
849
|
+
metadata:
|
850
|
+
rubygems_mfa_required: 'false'
|
846
851
|
post_install_message: |-
|
847
|
-
Thanks for installing Lazylead v0.
|
852
|
+
Thanks for installing Lazylead v0.12.0!
|
848
853
|
Read our blog posts: https://lazylead.org
|
849
854
|
Stay in touch with the community in Telegram: https://t.me/lazylead
|
850
855
|
Follow us on Twitter: https://twitter.com/lazylead
|
@@ -874,6 +879,7 @@ test_files:
|
|
874
879
|
- test/lazylead/cli/app_test.rb
|
875
880
|
- test/lazylead/confluence_test.rb
|
876
881
|
- test/lazylead/exchange_test.rb
|
882
|
+
- test/lazylead/file_postman_test.rb
|
877
883
|
- test/lazylead/model_test.rb
|
878
884
|
- test/lazylead/opts_test.rb
|
879
885
|
- test/lazylead/postman_test.rb
|
@@ -881,6 +887,7 @@ test_files:
|
|
881
887
|
- test/lazylead/salt_test.rb
|
882
888
|
- test/lazylead/smoke_test.rb
|
883
889
|
- test/lazylead/smtp_test.rb
|
890
|
+
- test/lazylead/stdout_postman_test.rb
|
884
891
|
- test/lazylead/system/jira_test.rb
|
885
892
|
- test/lazylead/task/accuracy/accuracy_test.rb
|
886
893
|
- test/lazylead/task/accuracy/affected_build_test.rb
|