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.
@@ -49,6 +49,7 @@ module Lazylead
49
49
  assert Lazylead::CC.new.undefined? "type" => " "
50
50
  end
51
51
  end
52
+
52
53
  class PlainCcTest < Lazylead::Test
53
54
  test "cc has valid email" do
54
55
  assert_equal "a@fake.com", Lazylead::PlainCC.new("a@fake.com").cc.first
@@ -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
@@ -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
@@ -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):\/\/\w+\:\d+\/.{10,}}]).passed(
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):\/\/\w+\:\d+\/.{10,}}]).passed(
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
- Child = Struct.new(:id, :key, :fields, :comment) do
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
@@ -39,7 +39,7 @@ require "timeout"
39
39
  require "active_support"
40
40
  require "mail"
41
41
 
42
- STDOUT.sync = true
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
- assert_words words,
108
- Mail::TestMailer.deliveries
109
- .filter { |m| m.subject.eql? subject }
110
- .first
111
- .body.parts.first.body.raw_source
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.6.2
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: 2020-12-13 00:00:00.000000000 Z
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.0.3
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.0.3
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.5
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.2.5
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.3.0
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.3.0
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.2.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.2.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: '1.1'
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: '1.1'
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.2019.3
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.2019.3
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.0
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.0
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.3
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.3
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.11.3
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.11.3
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.1.1
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.1.1
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: '0.82'
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: '0.82'
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: '0.6'
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: '0.6'
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.6.2!
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