danger-todoist 0.0.2 → 0.0.3
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/.travis.yml +4 -1
- data/CHANGELOG.md +14 -0
- data/Dangerfile +16 -0
- data/README.md +1 -1
- data/lib/danger_plugin.rb +1 -0
- data/lib/todoist/diff_todo_finder.rb +22 -0
- data/lib/todoist/gem_version.rb +1 -1
- data/lib/todoist/plugin.rb +1 -15
- data/spec/diff_todo_finder_spec.rb +59 -0
- data/spec/todoist_spec.rb +1 -1
- metadata +7 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 45658ff29d4eb2568b06f4243fe8c986c1167cef
|
4
|
+
data.tar.gz: 7e772b86afd289fa5340d70fe6b5234b28e64dc9
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 7547e35d1ed8baf09bdca508d9bc61a589f4a94ab5537552aad116dec55cc79b0028a7bbe3b684639c318cae57cf29214e662e0c672df29b45980584685ed4dc
|
7
|
+
data.tar.gz: 279263f5a9fea83c92a67124661456e35e77c305b59bf34e7cfb2cc1d7c07fa7d0432f4b610d893ac3115353769fccff1bf12dfc2f044cc169259fe318124927
|
data/.travis.yml
CHANGED
data/CHANGELOG.md
ADDED
@@ -0,0 +1,14 @@
|
|
1
|
+
## master
|
2
|
+
|
3
|
+
## 0.0.3
|
4
|
+
|
5
|
+
* Only find newly introduced todos - hanneskaeufler
|
6
|
+
* Don't find todos obviously occuring in code - hanneskaeufler
|
7
|
+
|
8
|
+
## 0.0.2
|
9
|
+
|
10
|
+
* Add documentation - hanneskaeufler
|
11
|
+
|
12
|
+
## 0.0.1
|
13
|
+
|
14
|
+
* Initial release - hanneskaeufler
|
data/Dangerfile
ADDED
@@ -0,0 +1,16 @@
|
|
1
|
+
# Make it more obvious that a PR is a work in progress and shouldn't be merged yet
|
2
|
+
warn("PR is classed as Work in Progress") if github.pr_title.include? "[WIP]"
|
3
|
+
|
4
|
+
# Warn when there is a big PR
|
5
|
+
warn("Big PR") if git.lines_of_code > 500
|
6
|
+
|
7
|
+
# Identify leftover todos
|
8
|
+
todoist.message = "There are still some things to do in this PR."
|
9
|
+
todoist.warn_for_todos
|
10
|
+
todoist.print_todos_table
|
11
|
+
|
12
|
+
# Mainly to encourage writing up some reasoning about the PR, rather than
|
13
|
+
# just leaving a title
|
14
|
+
if github.pr_body.length < 5
|
15
|
+
fail "Please provide a summary in the Pull Request description"
|
16
|
+
end
|
data/README.md
CHANGED
@@ -1,4 +1,4 @@
|
|
1
|
-
[](https://travis-ci.org/hanneskaeufler/danger-todoist)
|
1
|
+
[](https://travis-ci.org/hanneskaeufler/danger-todoist) [](https://badge.fury.io/rb/danger-todoist)
|
2
2
|
|
3
3
|
# danger-todoist
|
4
4
|
|
data/lib/danger_plugin.rb
CHANGED
@@ -0,0 +1,22 @@
|
|
1
|
+
module Danger
|
2
|
+
# Identify todos in a set of diffs
|
3
|
+
class DiffTodoFinder
|
4
|
+
TODO_REGEXP = /\+.*(TODO|FIXME)[\s:]/i
|
5
|
+
|
6
|
+
def find_diffs_containing_todos(diffs)
|
7
|
+
diffs
|
8
|
+
.select { |diff| contains_new_todo(diff) }
|
9
|
+
.map { |diff| Todo.new(diff.path) }
|
10
|
+
end
|
11
|
+
|
12
|
+
private
|
13
|
+
|
14
|
+
def contains_new_todo(diff)
|
15
|
+
# TODO: This will match removed todos as well
|
16
|
+
!(diff.patch =~ TODO_REGEXP).nil?
|
17
|
+
end
|
18
|
+
|
19
|
+
class Todo < Struct.new(:file)
|
20
|
+
end
|
21
|
+
end
|
22
|
+
end
|
data/lib/todoist/gem_version.rb
CHANGED
data/lib/todoist/plugin.rb
CHANGED
@@ -21,7 +21,6 @@ module Danger
|
|
21
21
|
#
|
22
22
|
class DangerTodoist < Plugin
|
23
23
|
DEFAULT_MESSAGE = "There remain todo items in the modified code.".freeze
|
24
|
-
TODO_REGEXP = /TODO|FIXME/i
|
25
24
|
|
26
25
|
#
|
27
26
|
# Message to be shown
|
@@ -40,8 +39,7 @@ module Danger
|
|
40
39
|
@todos = []
|
41
40
|
return if files_of_interest.empty?
|
42
41
|
|
43
|
-
|
44
|
-
.each { |diff| @todos << Todo.new(diff.path) }
|
42
|
+
@todos = DiffTodoFinder.new.find_diffs_containing_todos(diffs_of_interest)
|
45
43
|
|
46
44
|
warn(message) unless @todos.empty?
|
47
45
|
end
|
@@ -75,17 +73,5 @@ module Danger
|
|
75
73
|
files_of_interest
|
76
74
|
.map { |file| git.diff_for_file(file) }
|
77
75
|
end
|
78
|
-
|
79
|
-
def diffs_containing_todo_markers
|
80
|
-
diffs_of_interest
|
81
|
-
.select { |diff| contains_new_todo(diff) }
|
82
|
-
end
|
83
|
-
|
84
|
-
def contains_new_todo(diff)
|
85
|
-
!(diff.patch =~ TODO_REGEXP).nil?
|
86
|
-
end
|
87
|
-
|
88
|
-
class Todo < Struct.new(:file)
|
89
|
-
end
|
90
76
|
end
|
91
77
|
end
|
@@ -0,0 +1,59 @@
|
|
1
|
+
require File.expand_path("../spec_helper", __FILE__)
|
2
|
+
|
3
|
+
module Danger
|
4
|
+
describe Danger::DiffTodoFinder do
|
5
|
+
let(:subject) { Danger::DiffTodoFinder.new }
|
6
|
+
|
7
|
+
describe "#find_diffs_containing_todos" do
|
8
|
+
%w(TODO TODO: todo todo: FIXME fixme FIXME: fixme).each do |marker|
|
9
|
+
it "identifies a new '#{marker}' as a todo" do
|
10
|
+
diffs = [
|
11
|
+
Git::Diff::DiffFile.new(
|
12
|
+
"base",
|
13
|
+
path: "some/file.rb",
|
14
|
+
patch: "+ #{marker} some todo"
|
15
|
+
)
|
16
|
+
]
|
17
|
+
|
18
|
+
todos = subject.find_diffs_containing_todos(diffs)
|
19
|
+
|
20
|
+
expect(todos).to_not be_empty
|
21
|
+
end
|
22
|
+
end
|
23
|
+
|
24
|
+
it "does not identify removed todos as a todo" do
|
25
|
+
diffs = [
|
26
|
+
Git::Diff::DiffFile.new(
|
27
|
+
"base",
|
28
|
+
path: "some/file.rb",
|
29
|
+
patch: "- TODO: some todo"
|
30
|
+
)
|
31
|
+
]
|
32
|
+
|
33
|
+
todos = subject.find_diffs_containing_todos(diffs)
|
34
|
+
|
35
|
+
expect(todos).to be_empty
|
36
|
+
end
|
37
|
+
|
38
|
+
[
|
39
|
+
"+ class TodosController",
|
40
|
+
"+ function foo(todo) {",
|
41
|
+
"+ def todo()"
|
42
|
+
].each do |patch|
|
43
|
+
it "does not identify occurences in e.g. a new class name" do
|
44
|
+
diffs = [
|
45
|
+
Git::Diff::DiffFile.new(
|
46
|
+
"base",
|
47
|
+
path: "some/file.rb",
|
48
|
+
patch: patch
|
49
|
+
)
|
50
|
+
]
|
51
|
+
|
52
|
+
todos = subject.find_diffs_containing_todos(diffs)
|
53
|
+
|
54
|
+
expect(todos).to be_empty
|
55
|
+
end
|
56
|
+
end
|
57
|
+
end
|
58
|
+
end
|
59
|
+
end
|
data/spec/todoist_spec.rb
CHANGED
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: danger-todoist
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.0.
|
4
|
+
version: 0.0.3
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Hannes Käufler
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2016-09-
|
11
|
+
date: 2016-09-05 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: danger-plugin-api
|
@@ -160,6 +160,8 @@ files:
|
|
160
160
|
- ".gitignore"
|
161
161
|
- ".rubocop.yml"
|
162
162
|
- ".travis.yml"
|
163
|
+
- CHANGELOG.md
|
164
|
+
- Dangerfile
|
163
165
|
- Gemfile
|
164
166
|
- Guardfile
|
165
167
|
- LICENSE.txt
|
@@ -168,8 +170,10 @@ files:
|
|
168
170
|
- danger-todoist.gemspec
|
169
171
|
- lib/danger_plugin.rb
|
170
172
|
- lib/danger_todoist.rb
|
173
|
+
- lib/todoist/diff_todo_finder.rb
|
171
174
|
- lib/todoist/gem_version.rb
|
172
175
|
- lib/todoist/plugin.rb
|
176
|
+
- spec/diff_todo_finder_spec.rb
|
173
177
|
- spec/spec_helper.rb
|
174
178
|
- spec/todoist_spec.rb
|
175
179
|
homepage: https://github.com/hanneskaeufler/danger-todoist
|
@@ -198,5 +202,6 @@ specification_version: 4
|
|
198
202
|
summary: Marking something with a todo is very common during implementing a new feature.
|
199
203
|
Often those todos will get missed in code review.
|
200
204
|
test_files:
|
205
|
+
- spec/diff_todo_finder_spec.rb
|
201
206
|
- spec/spec_helper.rb
|
202
207
|
- spec/todoist_spec.rb
|