lazylead 0.6.2 → 0.7.0

Sign up to get free protection for your applications and to get access to all the features.
@@ -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