lazylead 0.6.2 → 0.7.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/.rubocop.yml +49 -1
- data/.simplecov +1 -1
- data/Guardfile +1 -1
- data/bin/lazylead +3 -1
- data/lazylead.gemspec +18 -14
- data/lib/lazylead/cc.rb +21 -20
- data/lib/lazylead/cli/app.rb +2 -2
- data/lib/lazylead/confluence.rb +8 -1
- data/lib/lazylead/model.rb +24 -16
- data/lib/lazylead/opts.rb +16 -1
- data/lib/lazylead/salt.rb +1 -0
- data/lib/lazylead/system/jira.rb +9 -2
- data/lib/lazylead/task/accuracy/accuracy.rb +7 -9
- data/lib/lazylead/task/accuracy/attachment.rb +0 -4
- data/lib/lazylead/task/accuracy/logs.rb +5 -5
- data/lib/lazylead/task/accuracy/onlyll.rb +148 -0
- data/lib/lazylead/task/accuracy/servers.rb +16 -7
- data/lib/lazylead/task/accuracy/stacktrace.rb +1 -1
- data/lib/lazylead/task/propagate_down.rb +1 -1
- data/lib/lazylead/task/svn/grep.rb +25 -18
- data/lib/lazylead/task/svn/touch.rb +1 -3
- data/lib/lazylead/version.rb +1 -1
- data/lib/messages/only_ll.erb +107 -0
- data/test/lazylead/cc_test.rb +1 -0
- data/test/lazylead/model_test.rb +10 -0
- data/test/lazylead/opts_test.rb +12 -0
- data/test/lazylead/smoke_test.rb +13 -0
- data/test/lazylead/task/accuracy/onlyll_test.rb +138 -0
- data/test/lazylead/task/accuracy/servers_test.rb +2 -2
- data/test/lazylead/task/propagate_down_test.rb +4 -3
- data/test/test.rb +7 -6
- data/upgrades/sqlite/999.testdata.sql +2 -1
- metadata +87 -27
data/test/lazylead/cc_test.rb
CHANGED
data/test/lazylead/model_test.rb
CHANGED
@@ -82,5 +82,15 @@ module Lazylead
|
|
82
82
|
)
|
83
83
|
refute ORM::Task.find(260).to_h?
|
84
84
|
end
|
85
|
+
|
86
|
+
test "second ticketing system is found" do
|
87
|
+
CLI::App.new(Log.new, NoSchedule.new).run(
|
88
|
+
home: ".",
|
89
|
+
sqlite: "test/resources/#{no_ext(__FILE__)}.#{__method__}.db",
|
90
|
+
vcs4sql: "upgrades/sqlite",
|
91
|
+
testdata: true
|
92
|
+
)
|
93
|
+
assert_kind_of Jira, ORM::Task.find(270).second_sys
|
94
|
+
end
|
85
95
|
end
|
86
96
|
end
|
data/test/lazylead/opts_test.rb
CHANGED
@@ -101,5 +101,17 @@ module Lazylead
|
|
101
101
|
Opts.new(attachments: %w[readme.md license.txt])
|
102
102
|
.msg_attachments
|
103
103
|
end
|
104
|
+
|
105
|
+
test "value has numeric value" do
|
106
|
+
assert Opts.new("key" => "1").numeric? "key"
|
107
|
+
end
|
108
|
+
|
109
|
+
test "text value is not a numeric" do
|
110
|
+
refute Opts.new("key" => "val").numeric? "key"
|
111
|
+
end
|
112
|
+
|
113
|
+
test "nil is not a numeric" do
|
114
|
+
refute Opts.new("key" => nil).numeric? "key"
|
115
|
+
end
|
104
116
|
end
|
105
117
|
end
|
data/test/lazylead/smoke_test.rb
CHANGED
@@ -22,6 +22,8 @@
|
|
22
22
|
# ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE
|
23
23
|
# OR OTHER DEALINGS IN THE SOFTWARE.
|
24
24
|
|
25
|
+
require "inifile"
|
26
|
+
require "tempfile"
|
25
27
|
require_relative "../test"
|
26
28
|
|
27
29
|
module Lazylead
|
@@ -34,5 +36,16 @@ module Lazylead
|
|
34
36
|
test "ENV has no key" do
|
35
37
|
refute env? "c"
|
36
38
|
end
|
39
|
+
test "ini file found" do
|
40
|
+
Tempfile.create do |f|
|
41
|
+
f << "EnvTest=value"
|
42
|
+
f.flush
|
43
|
+
IniFile.new(filename: f).each { |_, k, v| ENV[k] = v }
|
44
|
+
assert_equal "value", ENV["EnvTest"]
|
45
|
+
end
|
46
|
+
end
|
47
|
+
test "ini file not found" do
|
48
|
+
assert_empty IniFile.new(filename: "absent.ini").to_h
|
49
|
+
end
|
37
50
|
end
|
38
51
|
end
|
@@ -0,0 +1,138 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
# The MIT License
|
4
|
+
#
|
5
|
+
# Copyright (c) 2019-2020 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/opts"
|
27
|
+
require_relative "../../../../lib/lazylead/smtp"
|
28
|
+
require_relative "../../../../lib/lazylead/postman"
|
29
|
+
require_relative "../../../../lib/lazylead/system/jira"
|
30
|
+
require_relative "../../../../lib/lazylead/task/accuracy/onlyll"
|
31
|
+
|
32
|
+
module Lazylead
|
33
|
+
class OnlyLLTest < Lazylead::Test
|
34
|
+
# In current tests the grid label is 'PullRequest'.
|
35
|
+
# The default grid labels are 0%, 10%, 20%, etc., the reason why
|
36
|
+
# 'PullRequest' label is used here as we don't have 0%, 10%, etc.
|
37
|
+
# on https://jira.spring.io.
|
38
|
+
test "grid label found" do
|
39
|
+
assert Labels.new(
|
40
|
+
NoAuthJira.new("https://jira.spring.io").issues("key=XD-3725").first,
|
41
|
+
Opts.new("grid" => "PullRequest, ,")
|
42
|
+
).exists?
|
43
|
+
end
|
44
|
+
|
45
|
+
test "grid label set by ll" do
|
46
|
+
assert Labels.new(
|
47
|
+
NoAuthJira.new("https://jira.spring.io")
|
48
|
+
.issues("key=XD-3725", expand: "changelog")
|
49
|
+
.first,
|
50
|
+
Opts.new("grid" => "PullRequest", "author" => "grussell")
|
51
|
+
).valid?
|
52
|
+
end
|
53
|
+
|
54
|
+
test "email notification" do
|
55
|
+
Lazylead::Smtp.new.enable
|
56
|
+
Lazylead::Task::OnlyLL.new.run(
|
57
|
+
NoAuthJira.new("https://jira.spring.io"),
|
58
|
+
Postman.new,
|
59
|
+
Opts.new(
|
60
|
+
"from" => "ll@fake.com",
|
61
|
+
"to" => "lead@fake.com",
|
62
|
+
"grid" => "PullRequest",
|
63
|
+
"author" => "LL",
|
64
|
+
"jql" => "key=XD-3725",
|
65
|
+
"max_results" => 200,
|
66
|
+
"subject" => "[LL] Only",
|
67
|
+
"fields" => "priority,summary,reporter,labels",
|
68
|
+
"template" => "lib/messages/only_ll.erb"
|
69
|
+
)
|
70
|
+
)
|
71
|
+
assert_email "[LL] Only",
|
72
|
+
%w[XD-3725 Blocker EmbeddedHeadersMessageConverter]
|
73
|
+
end
|
74
|
+
|
75
|
+
test "detect score" do
|
76
|
+
assert_equal "PullRequest",
|
77
|
+
Labels.new(
|
78
|
+
NoAuthJira.new("https://jira.spring.io")
|
79
|
+
.issues("key=XD-3725", expand: "changelog")
|
80
|
+
.first,
|
81
|
+
Opts.new(
|
82
|
+
"grid" => "PullRequest",
|
83
|
+
"author" => "grussell"
|
84
|
+
)
|
85
|
+
).score
|
86
|
+
end
|
87
|
+
|
88
|
+
test "multiple scores in the same ticket" do
|
89
|
+
assert_equal "10%",
|
90
|
+
Labels.new(
|
91
|
+
Struct.new(:key) do
|
92
|
+
def history
|
93
|
+
[{ "id" => "287906", "author" => { "self" => "https://jira.spring.io/rest/api/2/user?username=sy", "name" => "sy", "key" => "sy", "emailAddress" => "san at pivotal dot io", "avatarUrls" => { "48x48" => "https://www.gravatar.com/avatar/f0373ebca801ca4b2746732b451f497c?d=mm&s=48", "24x24" => "https://www.gravatar.com/avatar/f0373ebca801ca4b2746732b451f497c?d=mm&s=24", "16x16" => "https://www.gravatar.com/avatar/f0373ebca801ca4b2746732b451f497c?d=mm&s=16", "32x32" => "https://www.gravatar.com/avatar/f0373ebca801ca4b2746732b451f497c?d=mm&s=32" }, "displayName" => "sy an", "active" => true, "timeZone" => "America/Los_Angeles" }, "created" => "2015-12-17T18:12:35.853+0000", "items" => [{ "field" => "Fix Version", "fieldtype" => "jira", "from" => nil, "fromString" => nil, "to" => "15424", "toString" => "1.3.1" }] }, { "id" => "287913", "author" => { "self" => "https://jira.spring.io/rest/api/2/user?username=ll", "name" => "ll", "key" => "ll", "emailAddress" => "ll at pivotal dot io", "avatarUrls" => { "48x48" => "https://www.gravatar.com/avatar/0037f772e271b0d90bd62361768cb820?d=mm&s=48", "24x24" => "https://www.gravatar.com/avatar/0037f772e271b0d90bd62361768cb820?d=mm&s=24", "16x16" => "https://www.gravatar.com/avatar/0037f772e271b0d90bd62361768cb820?d=mm&s=16", "32x32" => "https://www.gravatar.com/avatar/0037f772e271b0d90bd62361768cb820?d=mm&s=32" }, "displayName" => "Y LL", "active" => true, "timeZone" => "America/New_York" }, "created" => "2015-12-17T18:14:34.085+0000", "items" => [{ "field" => "assignee", "fieldtype" => "jira", "from" => nil, "fromString" => nil, "to" => "ll", "toString" => "Y LL" }] }, { "id" => "287915", "author" => { "self" => "https://jira.spring.io/rest/api/2/user?username=sy", "name" => "sy", "key" => "sy", "emailAddress" => "san at pivotal dot io", "avatarUrls" => { "48x48" => "https://www.gravatar.com/avatar/f0373ebca801ca4b2746732b451f497c?d=mm&s=48", "24x24" => "https://www.gravatar.com/avatar/f0373ebca801ca4b2746732b451f497c?d=mm&s=24", "16x16" => "https://www.gravatar.com/avatar/f0373ebca801ca4b2746732b451f497c?d=mm&s=16", "32x32" => "https://www.gravatar.com/avatar/f0373ebca801ca4b2746732b451f497c?d=mm&s=32" }, "displayName" => "sy an", "active" => true, "timeZone" => "America/Los_Angeles" }, "created" => "2015-12-17T18:19:36.118+0000", "items" => [{ "field" => "Sprint", "fieldtype" => "custom", "from" => nil, "fromString" => nil, "to" => "106", "toString" => "Sprint 64" }] }, { "id" => "287916", "author" => { "self" => "https://jira.spring.io/rest/api/2/user?username=sy", "name" => "sy", "key" => "sy", "emailAddress" => "san at pivotal dot io", "avatarUrls" => { "48x48" => "https://www.gravatar.com/avatar/f0373ebca801ca4b2746732b451f497c?d=mm&s=48", "24x24" => "https://www.gravatar.com/avatar/f0373ebca801ca4b2746732b451f497c?d=mm&s=24", "16x16" => "https://www.gravatar.com/avatar/f0373ebca801ca4b2746732b451f497c?d=mm&s=16", "32x32" => "https://www.gravatar.com/avatar/f0373ebca801ca4b2746732b451f497c?d=mm&s=32" }, "displayName" => "sy an", "active" => true, "timeZone" => "America/Los_Angeles" }, "created" => "2015-12-17T18:19:36.162+0000", "items" => [{ "field" => "Rank", "fieldtype" => "custom", "from" => "", "fromString" => "", "to" => "", "toString" => "Ranked higher" }] }, { "id" => "287921", "author" => { "self" => "https://jira.spring.io/rest/api/2/user?username=ll", "name" => "ll", "key" => "ll", "emailAddress" => "ll at pivotal dot io", "avatarUrls" => { "48x48" => "https://www.gravatar.com/avatar/0037f772e271b0d90bd62361768cb820?d=mm&s=48", "24x24" => "https://www.gravatar.com/avatar/0037f772e271b0d90bd62361768cb820?d=mm&s=24", "16x16" => "https://www.gravatar.com/avatar/0037f772e271b0d90bd62361768cb820?d=mm&s=16", "32x32" => "https://www.gravatar.com/avatar/0037f772e271b0d90bd62361768cb820?d=mm&s=32" }, "displayName" => "Y LL", "active" => true, "timeZone" => "America/New_York" }, "created" => "2015-12-17T18:30:47.508+0000", "items" => [{ "field" => "status", "fieldtype" => "jira", "from" => "10000", "fromString" => "To Do", "to" => "3", "toString" => "In Progress" }] }, { "id" => "287922", "author" => { "self" => "https://jira.spring.io/rest/api/2/user?username=ll", "name" => "ll", "key" => "ll", "emailAddress" => "ll at pivotal dot io", "avatarUrls" => { "48x48" => "https://www.gravatar.com/avatar/0037f772e271b0d90bd62361768cb820?d=mm&s=48", "24x24" => "https://www.gravatar.com/avatar/0037f772e271b0d90bd62361768cb820?d=mm&s=24", "16x16" => "https://www.gravatar.com/avatar/0037f772e271b0d90bd62361768cb820?d=mm&s=16", "32x32" => "https://www.gravatar.com/avatar/0037f772e271b0d90bd62361768cb820?d=mm&s=32" }, "displayName" => "Y LL", "active" => true, "timeZone" => "America/New_York" }, "created" => "2015-12-17T18:31:54.137+0000", "items" => [{ "field" => "Pull Request URL", "fieldtype" => "custom", "from" => nil, "fromString" => nil, "to" => nil, "toString" => "https://github.com/spring-projects/spring-xd/pull/1872" }, { "field" => "labels", "fieldtype" => "jira", "from" => nil, "fromString" => "", "to" => nil, "toString" => "10% 20%" }] }, { "id" => "288214", "author" => { "self" => "https://jira.spring.io/rest/api/2/user?username=sy", "name" => "sy", "key" => "sy", "emailAddress" => "san at pivotal dot io", "avatarUrls" => { "48x48" => "https://www.gravatar.com/avatar/f0373ebca801ca4b2746732b451f497c?d=mm&s=48", "24x24" => "https://www.gravatar.com/avatar/f0373ebca801ca4b2746732b451f497c?d=mm&s=24", "16x16" => "https://www.gravatar.com/avatar/f0373ebca801ca4b2746732b451f497c?d=mm&s=16", "32x32" => "https://www.gravatar.com/avatar/f0373ebca801ca4b2746732b451f497c?d=mm&s=32" }, "displayName" => "sy an", "active" => true, "timeZone" => "America/Los_Angeles" }, "created" => "2015-12-25T00:16:09.649+0000", "items" => [{ "field" => "status", "fieldtype" => "jira", "from" => "3", "fromString" => "In Progress", "to" => "10006", "toString" => "In PR" }] }, { "id" => "288215", "author" => { "self" => "https://jira.spring.io/rest/api/2/user?username=sy", "name" => "sy", "key" => "sy", "emailAddress" => "san at pivotal dot io", "avatarUrls" => { "48x48" => "https://www.gravatar.com/avatar/f0373ebca801ca4b2746732b451f497c?d=mm&s=48", "24x24" => "https://www.gravatar.com/avatar/f0373ebca801ca4b2746732b451f497c?d=mm&s=24", "16x16" => "https://www.gravatar.com/avatar/f0373ebca801ca4b2746732b451f497c?d=mm&s=16", "32x32" => "https://www.gravatar.com/avatar/f0373ebca801ca4b2746732b451f497c?d=mm&s=32" }, "displayName" => "sy an", "active" => true, "timeZone" => "America/Los_Angeles" }, "created" => "2015-12-25T00:16:17.499+0000", "items" => [{ "field" => "Actual Story Points", "fieldtype" => "custom", "from" => nil, "fromString" => nil, "to" => nil, "toString" => "1" }, { "field" => "resolution", "fieldtype" => "jira", "from" => nil, "fromString" => nil, "to" => "8", "toString" => "Complete" }, { "field" => "status", "fieldtype" => "jira", "from" => "10006", "fromString" => "In PR", "to" => "10001", "toString" => "Done" }] }]
|
94
|
+
end
|
95
|
+
end.new("XD-3725"),
|
96
|
+
Opts.new("grid" => "10%,20%,30%", "author" => "ll")
|
97
|
+
).score
|
98
|
+
end
|
99
|
+
|
100
|
+
test "sort of percents" do
|
101
|
+
assert_equal %w[10% 20% 30%], %w[30% 10% 20%].sort
|
102
|
+
end
|
103
|
+
|
104
|
+
test "ensure that violators found" do
|
105
|
+
assert_equal "Aron set 40%",
|
106
|
+
Labels.new(
|
107
|
+
Struct.new(:key) do
|
108
|
+
def history
|
109
|
+
[
|
110
|
+
{ "author" => { "name" => "sy", "key" => "sy", "displayName" => "S N" }, "items" => [{ "field" => "Fix Version", "fieldtype" => "jira", "from" => nil, "fromString" => nil, "to" => "15424", "toString" => "1.3.1" }] },
|
111
|
+
{ "author" => { "name" => "ll", "key" => "ll", "displayName" => "L L" }, "items" => [{ "field" => "assignee", "fieldtype" => "jira", "from" => nil, "fromString" => nil, "to" => "ll", "toString" => "ll" }] },
|
112
|
+
{ "author" => { "name" => "sy", "key" => "sy", "displayName" => "S N" }, "items" => [{ "field" => "Sprint", "fieldtype" => "custom", "from" => nil, "fromString" => nil, "to" => "106", "toString" => "Sprint 64" }] },
|
113
|
+
{ "author" => { "name" => "sy", "key" => "sy", "displayName" => "S N" }, "items" => [{ "field" => "Rank", "fieldtype" => "custom", "from" => "", "fromString" => "", "to" => "", "toString" => "Ranked higher" }] },
|
114
|
+
{ "author" => { "name" => "ll", "key" => "ll", "displayName" => "L L" }, "items" => [{ "field" => "status", "fieldtype" => "jira", "from" => "10000", "fromString" => "To Do", "to" => "3", "toString" => "In Progress" }] },
|
115
|
+
{ "author" => { "name" => "ll", "key" => "ll", "displayName" => "L L" }, "items" => [{ "field" => "assignee", "fieldtype" => "jira", "from" => nil, "fromString" => nil, "to" => "ll", "toString" => "ll" }, { "field" => "labels", "fieldtype" => "jira", "from" => nil, "fromString" => "", "to" => nil, "toString" => "20%" }] },
|
116
|
+
{ "author" => { "name" => "sy", "key" => "sy", "displayName" => "S N" }, "items" => [{ "field" => "Actual Story Points", "fieldtype" => "custom", "from" => nil, "fromString" => nil, "to" => nil, "toString" => "1" }, { "field" => "resolution", "fieldtype" => "jira", "from" => nil, "fromString" => nil, "to" => "8", "toString" => "Complete" }, { "field" => "status", "fieldtype" => "jira", "from" => "10006", "fromString" => "In PR", "to" => "10001", "toString" => "Done" }] },
|
117
|
+
{ "author" => { "name" => "ap", "key" => "ap", "displayName" => "Aron" }, "items" => [{ "field" => "labels", "fieldtype" => "jira", "from" => nil, "fromString" => "", "to" => nil, "toString" => "abc 40%" }] },
|
118
|
+
{ "author" => { "name" => "sy", "key" => "sy", "displayName" => "S N" }, "items" => [{ "field" => "status", "fieldtype" => "jira", "from" => "3", "fromString" => "In Progress", "to" => "10006", "toString" => "In PR" }] }
|
119
|
+
]
|
120
|
+
end
|
121
|
+
end.new("XD-3725"),
|
122
|
+
Opts.new("grid" => "10%,20%,30%,40%", "author" => "ll")
|
123
|
+
).violators.first
|
124
|
+
end
|
125
|
+
|
126
|
+
test "violators should consider already existing LL grid labels" do
|
127
|
+
assert_equal "Aron set 40%",
|
128
|
+
Labels.new(
|
129
|
+
Struct.new(:key) do
|
130
|
+
def history
|
131
|
+
[{ "author" => { "name" => "ap", "key" => "ap", "displayName" => "Aron" }, "items" => [{ "field" => "labels", "fromString" => "0%", "toString" => "0% abc 40%" }] }]
|
132
|
+
end
|
133
|
+
end.new("XD-3725"),
|
134
|
+
Opts.new("grid" => "10%,20%,30%,40%", "author" => "ll")
|
135
|
+
).violators.first
|
136
|
+
end
|
137
|
+
end
|
138
|
+
end
|
@@ -42,7 +42,7 @@ module Lazylead
|
|
42
42
|
end
|
43
43
|
|
44
44
|
test "url to failed entity found in description" do
|
45
|
-
assert Servers.new(envs: [%r{(http|https)
|
45
|
+
assert Servers.new(envs: [%r{(http|https)://\w+:\d+/.{10,}}]).passed(
|
46
46
|
Task.new(
|
47
47
|
"1. Open the dedicated app
|
48
48
|
2. Click on https://server:6900/object?id=2000
|
@@ -53,7 +53,7 @@ module Lazylead
|
|
53
53
|
end
|
54
54
|
|
55
55
|
test "url to failed entity not present in description" do
|
56
|
-
refute Servers.new(envs: [%r{(http|https)
|
56
|
+
refute Servers.new(envs: [%r{(http|https)://\w+:\d+/.{10,}}]).passed(
|
57
57
|
Task.new(
|
58
58
|
"1. Open the dedicated app
|
59
59
|
2. Click on https://server:6900/
|
@@ -28,6 +28,7 @@ require_relative "../../../lib/lazylead/task/propagate_down"
|
|
28
28
|
|
29
29
|
module Lazylead
|
30
30
|
class PropagateDownTest < Lazylead::Test
|
31
|
+
# rubocop:disable Naming/VariableNumber
|
31
32
|
test "propagate fields from parent ticket to sub-tasks" do
|
32
33
|
parent = OpenStruct.new(
|
33
34
|
id: 1,
|
@@ -38,7 +39,7 @@ module Lazylead
|
|
38
39
|
customfield_102: "Yesterday"
|
39
40
|
}.stringify_keys
|
40
41
|
)
|
41
|
-
|
42
|
+
child = Struct.new(:id, :key, :fields, :comment) do
|
42
43
|
def save(diff)
|
43
44
|
fields.merge! diff[:fields]
|
44
45
|
end
|
@@ -54,8 +55,7 @@ module Lazylead
|
|
54
55
|
def save!(body)
|
55
56
|
self[:comment] = body[:body]
|
56
57
|
end
|
57
|
-
end
|
58
|
-
child = Child.new(
|
58
|
+
end.new(
|
59
59
|
2, "PRJ-2",
|
60
60
|
{
|
61
61
|
subtasks: [],
|
@@ -84,5 +84,6 @@ module Lazylead
|
|
84
84
|
|customfield_102|Yesterday|],
|
85
85
|
child.comment
|
86
86
|
end
|
87
|
+
# rubocop:enable Naming/VariableNumber
|
87
88
|
end
|
88
89
|
end
|
data/test/test.rb
CHANGED
@@ -39,7 +39,7 @@ require "timeout"
|
|
39
39
|
require "active_support"
|
40
40
|
require "mail"
|
41
41
|
|
42
|
-
|
42
|
+
$stdout.sync = true
|
43
43
|
Minitest::Reporters.use! [Minitest::Reporters::SpecReporter.new]
|
44
44
|
|
45
45
|
module Lazylead
|
@@ -104,11 +104,11 @@ module Lazylead
|
|
104
104
|
# Assert that email sent using 'mail' gem in test mode
|
105
105
|
# has expected subject and words
|
106
106
|
def assert_email(subject, words)
|
107
|
-
|
108
|
-
|
109
|
-
|
110
|
-
|
111
|
-
|
107
|
+
email = Mail::TestMailer.deliveries
|
108
|
+
.filter { |m| m.subject.eql? subject }
|
109
|
+
.first
|
110
|
+
refute_nil email, "No email found with subject: #{subject}"
|
111
|
+
assert_words words, email.body.parts.first.body.raw_source
|
112
112
|
end
|
113
113
|
|
114
114
|
# Assert that email sent using 'mail' gem in test mode
|
@@ -117,6 +117,7 @@ module Lazylead
|
|
117
117
|
# symbol '\n' to each line for email during unit testing.
|
118
118
|
def assert_email_line(subject, words)
|
119
119
|
words = [words] unless words.respond_to? :each
|
120
|
+
assert_email subject, words
|
120
121
|
mail = Mail::TestMailer.deliveries
|
121
122
|
.filter { |m| m.subject.eql? subject }
|
122
123
|
.first
|
@@ -38,4 +38,5 @@ values ('echo', 'cron:* * * * *', 'false', 1, 1, 1, 'Lazylead::Task::Echo', '{}'
|
|
38
38
|
('issue 171', '', 'false', 171, 1, 1, 'Lazylead::Task::Echo', '{"envkey":"${key171}"}'),
|
39
39
|
('issue 195', '', 'false', 195, 1, 1, 'Lazylead::Task::Accuracy', '{"key":"value"}'),
|
40
40
|
('issue 130', 'in:0.001s', 'true', 130, 1, 1, 'Lazylead::Task::EchoIO', '{}'),
|
41
|
-
('issue 260', 'cron:* * * * *', 'false', 260, 1, 1, 'Lazylead::Task::EchoIO', '{abc}')
|
41
|
+
('issue 260', 'cron:* * * * *', 'false', 260, 1, 1, 'Lazylead::Task::EchoIO', '{abc}'),
|
42
|
+
('270', 'cron:* * * * *', 'false', 270, 1, 1, 'Lazylead::Task::EchoIO', '{"system":"1"}');
|
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.7.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: 2021-01-11 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: activerecord
|
@@ -16,14 +16,14 @@ dependencies:
|
|
16
16
|
requirements:
|
17
17
|
- - '='
|
18
18
|
- !ruby/object:Gem::Version
|
19
|
-
version: 6.
|
19
|
+
version: 6.1.1
|
20
20
|
type: :runtime
|
21
21
|
prerelease: false
|
22
22
|
version_requirements: !ruby/object:Gem::Requirement
|
23
23
|
requirements:
|
24
24
|
- - '='
|
25
25
|
- !ruby/object:Gem::Version
|
26
|
-
version: 6.
|
26
|
+
version: 6.1.1
|
27
27
|
- !ruby/object:Gem::Dependency
|
28
28
|
name: backtrace
|
29
29
|
requirement: !ruby/object:Gem::Requirement
|
@@ -72,14 +72,28 @@ dependencies:
|
|
72
72
|
requirements:
|
73
73
|
- - '='
|
74
74
|
- !ruby/object:Gem::Version
|
75
|
-
version: 0.2.
|
75
|
+
version: 0.2.7
|
76
|
+
type: :runtime
|
77
|
+
prerelease: false
|
78
|
+
version_requirements: !ruby/object:Gem::Requirement
|
79
|
+
requirements:
|
80
|
+
- - '='
|
81
|
+
- !ruby/object:Gem::Version
|
82
|
+
version: 0.2.7
|
83
|
+
- !ruby/object:Gem::Dependency
|
84
|
+
name: inifile
|
85
|
+
requirement: !ruby/object:Gem::Requirement
|
86
|
+
requirements:
|
87
|
+
- - '='
|
88
|
+
- !ruby/object:Gem::Version
|
89
|
+
version: 3.0.0
|
76
90
|
type: :runtime
|
77
91
|
prerelease: false
|
78
92
|
version_requirements: !ruby/object:Gem::Requirement
|
79
93
|
requirements:
|
80
94
|
- - '='
|
81
95
|
- !ruby/object:Gem::Version
|
82
|
-
version: 0.
|
96
|
+
version: 3.0.0
|
83
97
|
- !ruby/object:Gem::Dependency
|
84
98
|
name: jira-ruby
|
85
99
|
requirement: !ruby/object:Gem::Requirement
|
@@ -100,28 +114,28 @@ dependencies:
|
|
100
114
|
requirements:
|
101
115
|
- - '='
|
102
116
|
- !ruby/object:Gem::Version
|
103
|
-
version: 2.
|
117
|
+
version: 2.5.1
|
104
118
|
type: :runtime
|
105
119
|
prerelease: false
|
106
120
|
version_requirements: !ruby/object:Gem::Requirement
|
107
121
|
requirements:
|
108
122
|
- - '='
|
109
123
|
- !ruby/object:Gem::Version
|
110
|
-
version: 2.
|
124
|
+
version: 2.5.1
|
111
125
|
- !ruby/object:Gem::Dependency
|
112
126
|
name: logging
|
113
127
|
requirement: !ruby/object:Gem::Requirement
|
114
128
|
requirements:
|
115
129
|
- - '='
|
116
130
|
- !ruby/object:Gem::Version
|
117
|
-
version: 2.
|
131
|
+
version: 2.3.0
|
118
132
|
type: :runtime
|
119
133
|
prerelease: false
|
120
134
|
version_requirements: !ruby/object:Gem::Requirement
|
121
135
|
requirements:
|
122
136
|
- - '='
|
123
137
|
- !ruby/object:Gem::Version
|
124
|
-
version: 2.
|
138
|
+
version: 2.3.0
|
125
139
|
- !ruby/object:Gem::Dependency
|
126
140
|
name: mail
|
127
141
|
requirement: !ruby/object:Gem::Requirement
|
@@ -164,6 +178,20 @@ dependencies:
|
|
164
178
|
- - '='
|
165
179
|
- !ruby/object:Gem::Version
|
166
180
|
version: 2.1.2
|
181
|
+
- !ruby/object:Gem::Dependency
|
182
|
+
name: railties
|
183
|
+
requirement: !ruby/object:Gem::Requirement
|
184
|
+
requirements:
|
185
|
+
- - '='
|
186
|
+
- !ruby/object:Gem::Version
|
187
|
+
version: 6.1.1
|
188
|
+
type: :runtime
|
189
|
+
prerelease: false
|
190
|
+
version_requirements: !ruby/object:Gem::Requirement
|
191
|
+
requirements:
|
192
|
+
- - '='
|
193
|
+
- !ruby/object:Gem::Version
|
194
|
+
version: 6.1.1
|
167
195
|
- !ruby/object:Gem::Dependency
|
168
196
|
name: require_all
|
169
197
|
requirement: !ruby/object:Gem::Requirement
|
@@ -254,42 +282,42 @@ dependencies:
|
|
254
282
|
requirements:
|
255
283
|
- - '='
|
256
284
|
- !ruby/object:Gem::Version
|
257
|
-
version:
|
285
|
+
version: 2.0.4
|
258
286
|
type: :runtime
|
259
287
|
prerelease: false
|
260
288
|
version_requirements: !ruby/object:Gem::Requirement
|
261
289
|
requirements:
|
262
290
|
- - '='
|
263
291
|
- !ruby/object:Gem::Version
|
264
|
-
version:
|
292
|
+
version: 2.0.4
|
265
293
|
- !ruby/object:Gem::Dependency
|
266
294
|
name: tzinfo-data
|
267
295
|
requirement: !ruby/object:Gem::Requirement
|
268
296
|
requirements:
|
269
297
|
- - '='
|
270
298
|
- !ruby/object:Gem::Version
|
271
|
-
version: 1.
|
299
|
+
version: 1.2020.6
|
272
300
|
type: :runtime
|
273
301
|
prerelease: false
|
274
302
|
version_requirements: !ruby/object:Gem::Requirement
|
275
303
|
requirements:
|
276
304
|
- - '='
|
277
305
|
- !ruby/object:Gem::Version
|
278
|
-
version: 1.
|
306
|
+
version: 1.2020.6
|
279
307
|
- !ruby/object:Gem::Dependency
|
280
308
|
name: vcs4sql
|
281
309
|
requirement: !ruby/object:Gem::Requirement
|
282
310
|
requirements:
|
283
311
|
- - '='
|
284
312
|
- !ruby/object:Gem::Version
|
285
|
-
version: 0.1.
|
313
|
+
version: 0.1.1
|
286
314
|
type: :runtime
|
287
315
|
prerelease: false
|
288
316
|
version_requirements: !ruby/object:Gem::Requirement
|
289
317
|
requirements:
|
290
318
|
- - '='
|
291
319
|
- !ruby/object:Gem::Version
|
292
|
-
version: 0.1.
|
320
|
+
version: 0.1.1
|
293
321
|
- !ruby/object:Gem::Dependency
|
294
322
|
name: viewpoint
|
295
323
|
requirement: !ruby/object:Gem::Requirement
|
@@ -310,14 +338,14 @@ dependencies:
|
|
310
338
|
requirements:
|
311
339
|
- - '='
|
312
340
|
- !ruby/object:Gem::Version
|
313
|
-
version: 0.2.
|
341
|
+
version: 0.2.15
|
314
342
|
type: :development
|
315
343
|
prerelease: false
|
316
344
|
version_requirements: !ruby/object:Gem::Requirement
|
317
345
|
requirements:
|
318
346
|
- - '='
|
319
347
|
- !ruby/object:Gem::Version
|
320
|
-
version: 0.2.
|
348
|
+
version: 0.2.15
|
321
349
|
- !ruby/object:Gem::Dependency
|
322
350
|
name: guard
|
323
351
|
requirement: !ruby/object:Gem::Requirement
|
@@ -352,14 +380,14 @@ dependencies:
|
|
352
380
|
requirements:
|
353
381
|
- - '='
|
354
382
|
- !ruby/object:Gem::Version
|
355
|
-
version: 5.
|
383
|
+
version: 5.14.3
|
356
384
|
type: :development
|
357
385
|
prerelease: false
|
358
386
|
version_requirements: !ruby/object:Gem::Requirement
|
359
387
|
requirements:
|
360
388
|
- - '='
|
361
389
|
- !ruby/object:Gem::Version
|
362
|
-
version: 5.
|
390
|
+
version: 5.14.3
|
363
391
|
- !ruby/object:Gem::Dependency
|
364
392
|
name: minitest-fail-fast
|
365
393
|
requirement: !ruby/object:Gem::Requirement
|
@@ -450,28 +478,28 @@ dependencies:
|
|
450
478
|
requirements:
|
451
479
|
- - '='
|
452
480
|
- !ruby/object:Gem::Version
|
453
|
-
version: 6.
|
481
|
+
version: 6.3.0
|
454
482
|
type: :development
|
455
483
|
prerelease: false
|
456
484
|
version_requirements: !ruby/object:Gem::Requirement
|
457
485
|
requirements:
|
458
486
|
- - '='
|
459
487
|
- !ruby/object:Gem::Version
|
460
|
-
version: 6.
|
488
|
+
version: 6.3.0
|
461
489
|
- !ruby/object:Gem::Dependency
|
462
490
|
name: rubocop
|
463
491
|
requirement: !ruby/object:Gem::Requirement
|
464
492
|
requirements:
|
465
493
|
- - '='
|
466
494
|
- !ruby/object:Gem::Version
|
467
|
-
version:
|
495
|
+
version: 1.8.1
|
468
496
|
type: :development
|
469
497
|
prerelease: false
|
470
498
|
version_requirements: !ruby/object:Gem::Requirement
|
471
499
|
requirements:
|
472
500
|
- - '='
|
473
501
|
- !ruby/object:Gem::Version
|
474
|
-
version:
|
502
|
+
version: 1.8.1
|
475
503
|
- !ruby/object:Gem::Dependency
|
476
504
|
name: rubocop-minitest
|
477
505
|
requirement: !ruby/object:Gem::Requirement
|
@@ -500,6 +528,20 @@ dependencies:
|
|
500
528
|
- - '='
|
501
529
|
- !ruby/object:Gem::Version
|
502
530
|
version: 1.5.2
|
531
|
+
- !ruby/object:Gem::Dependency
|
532
|
+
name: rubocop-rake
|
533
|
+
requirement: !ruby/object:Gem::Requirement
|
534
|
+
requirements:
|
535
|
+
- - '='
|
536
|
+
- !ruby/object:Gem::Version
|
537
|
+
version: 0.5.1
|
538
|
+
type: :development
|
539
|
+
prerelease: false
|
540
|
+
version_requirements: !ruby/object:Gem::Requirement
|
541
|
+
requirements:
|
542
|
+
- - '='
|
543
|
+
- !ruby/object:Gem::Version
|
544
|
+
version: 0.5.1
|
503
545
|
- !ruby/object:Gem::Dependency
|
504
546
|
name: rubocop-rspec
|
505
547
|
requirement: !ruby/object:Gem::Requirement
|
@@ -528,20 +570,34 @@ dependencies:
|
|
528
570
|
- - '='
|
529
571
|
- !ruby/object:Gem::Version
|
530
572
|
version: 0.1.10
|
573
|
+
- !ruby/object:Gem::Dependency
|
574
|
+
name: tempfile
|
575
|
+
requirement: !ruby/object:Gem::Requirement
|
576
|
+
requirements:
|
577
|
+
- - '='
|
578
|
+
- !ruby/object:Gem::Version
|
579
|
+
version: 0.1.0
|
580
|
+
type: :development
|
581
|
+
prerelease: false
|
582
|
+
version_requirements: !ruby/object:Gem::Requirement
|
583
|
+
requirements:
|
584
|
+
- - '='
|
585
|
+
- !ruby/object:Gem::Version
|
586
|
+
version: 0.1.0
|
531
587
|
- !ruby/object:Gem::Dependency
|
532
588
|
name: xcop
|
533
589
|
requirement: !ruby/object:Gem::Requirement
|
534
590
|
requirements:
|
535
591
|
- - '='
|
536
592
|
- !ruby/object:Gem::Version
|
537
|
-
version:
|
593
|
+
version: 0.6.2
|
538
594
|
type: :development
|
539
595
|
prerelease: false
|
540
596
|
version_requirements: !ruby/object:Gem::Requirement
|
541
597
|
requirements:
|
542
598
|
- - '='
|
543
599
|
- !ruby/object:Gem::Version
|
544
|
-
version:
|
600
|
+
version: 0.6.2
|
545
601
|
description: |-
|
546
602
|
Ticketing systems (Github, Jira, etc.) are strongly
|
547
603
|
integrated into our processes and everyone understands their necessity. As soon
|
@@ -623,6 +679,7 @@ files:
|
|
623
679
|
- lib/lazylead/task/accuracy/attachment.rb
|
624
680
|
- lib/lazylead/task/accuracy/environment.rb
|
625
681
|
- lib/lazylead/task/accuracy/logs.rb
|
682
|
+
- lib/lazylead/task/accuracy/onlyll.rb
|
626
683
|
- lib/lazylead/task/accuracy/records.rb
|
627
684
|
- lib/lazylead/task/accuracy/requirement.rb
|
628
685
|
- lib/lazylead/task/accuracy/servers.rb
|
@@ -646,6 +703,7 @@ files:
|
|
646
703
|
- lib/messages/illegal_assignee_change.erb
|
647
704
|
- lib/messages/illegal_fixversion_change.erb
|
648
705
|
- lib/messages/missing_comment.erb
|
706
|
+
- lib/messages/only_ll.erb
|
649
707
|
- lib/messages/savepoint.erb
|
650
708
|
- lib/messages/svn_diff.erb
|
651
709
|
- lib/messages/svn_diff_attachment.erb
|
@@ -670,6 +728,7 @@ files:
|
|
670
728
|
- test/lazylead/task/accuracy/attachment_test.rb
|
671
729
|
- test/lazylead/task/accuracy/environment_test.rb
|
672
730
|
- test/lazylead/task/accuracy/logs_test.rb
|
731
|
+
- test/lazylead/task/accuracy/onlyll_test.rb
|
673
732
|
- test/lazylead/task/accuracy/records_test.rb
|
674
733
|
- test/lazylead/task/accuracy/score_test.rb
|
675
734
|
- test/lazylead/task/accuracy/servers_test.rb
|
@@ -698,7 +757,7 @@ licenses:
|
|
698
757
|
- MIT
|
699
758
|
metadata: {}
|
700
759
|
post_install_message: |-
|
701
|
-
Thanks for installing Lazylead v0.
|
760
|
+
Thanks for installing Lazylead v0.7.0!
|
702
761
|
Read our blog posts: https://lazylead.org
|
703
762
|
Stay in touch with the community in Telegram: https://t.me/lazylead
|
704
763
|
Follow us on Twitter: https://twitter.com/lazylead
|
@@ -740,6 +799,7 @@ test_files:
|
|
740
799
|
- test/lazylead/task/accuracy/attachment_test.rb
|
741
800
|
- test/lazylead/task/accuracy/environment_test.rb
|
742
801
|
- test/lazylead/task/accuracy/logs_test.rb
|
802
|
+
- test/lazylead/task/accuracy/onlyll_test.rb
|
743
803
|
- test/lazylead/task/accuracy/records_test.rb
|
744
804
|
- test/lazylead/task/accuracy/score_test.rb
|
745
805
|
- test/lazylead/task/accuracy/servers_test.rb
|