danger-mcbrain 0.0.1
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 +7 -0
- data/.gitignore +5 -0
- data/.travis.yml +12 -0
- data/Gemfile +4 -0
- data/Gemfile.lock +129 -0
- data/Guardfile +19 -0
- data/LICENSE.txt +22 -0
- data/README.md +47 -0
- data/Rakefile +23 -0
- data/danger-mcbrain.gemspec +48 -0
- data/lib/danger_mcbrain.rb +1 -0
- data/lib/danger_plugin.rb +1 -0
- data/lib/mcbrain/gem_version.rb +3 -0
- data/lib/mcbrain/plugin.rb +69 -0
- data/spec/mcbrain_spec.rb +38 -0
- data/spec/spec_helper.rb +59 -0
- metadata +216 -0
checksums.yaml
ADDED
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
---
|
|
2
|
+
SHA1:
|
|
3
|
+
metadata.gz: 9fc65e256688e5324be20fbcb3c18e0ccac02a7d
|
|
4
|
+
data.tar.gz: 7eba9555ac6808713bf835190677cc4233cacce9
|
|
5
|
+
SHA512:
|
|
6
|
+
metadata.gz: 79f1328db481008823a07faaefd3a392eae5a8244b32a1975e1a2eef4c8583e1f74da7b5197df31da8ebbd35eb3eea6e2891e41ffb71b5f84fce71ef4f49d3b4
|
|
7
|
+
data.tar.gz: 68a80c1553a3d8c82a88ad1936ac6672d50375ae740ca7dec0922ef9124c797501cf430ec9806e1cb7dd52dbcf7a22d2b9227d700ff8fc116ff54723e7baf5e4
|
data/.travis.yml
ADDED
data/Gemfile
ADDED
data/Gemfile.lock
ADDED
|
@@ -0,0 +1,129 @@
|
|
|
1
|
+
PATH
|
|
2
|
+
remote: .
|
|
3
|
+
specs:
|
|
4
|
+
danger-mcbrain (0.0.1)
|
|
5
|
+
danger (~> 2.0)
|
|
6
|
+
redis (~> 3.0)
|
|
7
|
+
|
|
8
|
+
GEM
|
|
9
|
+
remote: https://rubygems.org/
|
|
10
|
+
specs:
|
|
11
|
+
addressable (2.4.0)
|
|
12
|
+
ast (2.3.0)
|
|
13
|
+
claide (1.0.0)
|
|
14
|
+
claide-plugins (0.9.1)
|
|
15
|
+
cork
|
|
16
|
+
nap
|
|
17
|
+
open4 (~> 1.3)
|
|
18
|
+
coderay (1.1.1)
|
|
19
|
+
colored (1.2)
|
|
20
|
+
cork (0.1.0)
|
|
21
|
+
colored (~> 1.2)
|
|
22
|
+
danger (2.0.1)
|
|
23
|
+
claide (~> 1.0)
|
|
24
|
+
claide-plugins (> 0.9.0)
|
|
25
|
+
colored (~> 1.2)
|
|
26
|
+
cork (~> 0.1)
|
|
27
|
+
faraday (~> 0)
|
|
28
|
+
faraday-http-cache (~> 1.0)
|
|
29
|
+
git (~> 1)
|
|
30
|
+
octokit (~> 4.2)
|
|
31
|
+
redcarpet (~> 3.3)
|
|
32
|
+
terminal-table (~> 1)
|
|
33
|
+
diff-lcs (1.2.5)
|
|
34
|
+
faraday (0.9.2)
|
|
35
|
+
multipart-post (>= 1.2, < 3)
|
|
36
|
+
faraday-http-cache (1.3.0)
|
|
37
|
+
faraday (~> 0.8)
|
|
38
|
+
ffi (1.9.14)
|
|
39
|
+
formatador (0.2.5)
|
|
40
|
+
git (1.3.0)
|
|
41
|
+
guard (2.14.0)
|
|
42
|
+
formatador (>= 0.2.4)
|
|
43
|
+
listen (>= 2.7, < 4.0)
|
|
44
|
+
lumberjack (~> 1.0)
|
|
45
|
+
nenv (~> 0.1)
|
|
46
|
+
notiffany (~> 0.0)
|
|
47
|
+
pry (>= 0.9.12)
|
|
48
|
+
shellany (~> 0.0)
|
|
49
|
+
thor (>= 0.18.1)
|
|
50
|
+
guard-compat (1.2.1)
|
|
51
|
+
guard-rspec (4.7.3)
|
|
52
|
+
guard (~> 2.1)
|
|
53
|
+
guard-compat (~> 1.1)
|
|
54
|
+
rspec (>= 2.99.0, < 4.0)
|
|
55
|
+
listen (3.0.7)
|
|
56
|
+
rb-fsevent (>= 0.9.3)
|
|
57
|
+
rb-inotify (>= 0.9.7)
|
|
58
|
+
lumberjack (1.0.10)
|
|
59
|
+
method_source (0.8.2)
|
|
60
|
+
multipart-post (2.0.0)
|
|
61
|
+
nap (1.1.0)
|
|
62
|
+
nenv (0.3.0)
|
|
63
|
+
notiffany (0.1.1)
|
|
64
|
+
nenv (~> 0.1)
|
|
65
|
+
shellany (~> 0.0)
|
|
66
|
+
octokit (4.3.0)
|
|
67
|
+
sawyer (~> 0.7.0, >= 0.5.3)
|
|
68
|
+
open4 (1.3.4)
|
|
69
|
+
parser (2.3.1.2)
|
|
70
|
+
ast (~> 2.2)
|
|
71
|
+
powerpack (0.1.1)
|
|
72
|
+
pry (0.10.4)
|
|
73
|
+
coderay (~> 1.1.0)
|
|
74
|
+
method_source (~> 0.8.1)
|
|
75
|
+
slop (~> 3.4)
|
|
76
|
+
rainbow (2.1.0)
|
|
77
|
+
rake (10.5.0)
|
|
78
|
+
rb-fsevent (0.9.7)
|
|
79
|
+
rb-inotify (0.9.7)
|
|
80
|
+
ffi (>= 0.5.0)
|
|
81
|
+
redcarpet (3.3.4)
|
|
82
|
+
redis (3.3.1)
|
|
83
|
+
rspec (3.5.0)
|
|
84
|
+
rspec-core (~> 3.5.0)
|
|
85
|
+
rspec-expectations (~> 3.5.0)
|
|
86
|
+
rspec-mocks (~> 3.5.0)
|
|
87
|
+
rspec-core (3.5.2)
|
|
88
|
+
rspec-support (~> 3.5.0)
|
|
89
|
+
rspec-expectations (3.5.0)
|
|
90
|
+
diff-lcs (>= 1.2.0, < 2.0)
|
|
91
|
+
rspec-support (~> 3.5.0)
|
|
92
|
+
rspec-mocks (3.5.0)
|
|
93
|
+
diff-lcs (>= 1.2.0, < 2.0)
|
|
94
|
+
rspec-support (~> 3.5.0)
|
|
95
|
+
rspec-support (3.5.0)
|
|
96
|
+
rubocop (0.42.0)
|
|
97
|
+
parser (>= 2.3.1.1, < 3.0)
|
|
98
|
+
powerpack (~> 0.1)
|
|
99
|
+
rainbow (>= 1.99.1, < 3.0)
|
|
100
|
+
ruby-progressbar (~> 1.7)
|
|
101
|
+
unicode-display_width (~> 1.0, >= 1.0.1)
|
|
102
|
+
ruby-progressbar (1.8.1)
|
|
103
|
+
sawyer (0.7.0)
|
|
104
|
+
addressable (>= 2.3.5, < 2.5)
|
|
105
|
+
faraday (~> 0.8, < 0.10)
|
|
106
|
+
shellany (0.0.1)
|
|
107
|
+
slop (3.6.0)
|
|
108
|
+
terminal-table (1.6.0)
|
|
109
|
+
thor (0.19.1)
|
|
110
|
+
unicode-display_width (1.1.0)
|
|
111
|
+
yard (0.9.5)
|
|
112
|
+
|
|
113
|
+
PLATFORMS
|
|
114
|
+
ruby
|
|
115
|
+
|
|
116
|
+
DEPENDENCIES
|
|
117
|
+
bundler (~> 1.3)
|
|
118
|
+
danger-mcbrain!
|
|
119
|
+
guard (~> 2.14)
|
|
120
|
+
guard-rspec (~> 4.7)
|
|
121
|
+
listen (= 3.0.7)
|
|
122
|
+
pry
|
|
123
|
+
rake (~> 10.0)
|
|
124
|
+
rspec (~> 3.4)
|
|
125
|
+
rubocop (~> 0.41)
|
|
126
|
+
yard (~> 0.8)
|
|
127
|
+
|
|
128
|
+
BUNDLED WITH
|
|
129
|
+
1.12.5
|
data/Guardfile
ADDED
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
# A guardfile for making Danger Plugins
|
|
2
|
+
# For more info see https://github.com/guard/guard#readme
|
|
3
|
+
|
|
4
|
+
# To run, use `bundle exec guard`.
|
|
5
|
+
|
|
6
|
+
guard :rspec, cmd: 'bundle exec rspec' do
|
|
7
|
+
require 'guard/rspec/dsl'
|
|
8
|
+
dsl = Guard::RSpec::Dsl.new(self)
|
|
9
|
+
|
|
10
|
+
# RSpec files
|
|
11
|
+
rspec = dsl.rspec
|
|
12
|
+
watch(rspec.spec_helper) { rspec.spec_dir }
|
|
13
|
+
watch(rspec.spec_support) { rspec.spec_dir }
|
|
14
|
+
watch(rspec.spec_files)
|
|
15
|
+
|
|
16
|
+
# Ruby files
|
|
17
|
+
ruby = dsl.ruby
|
|
18
|
+
dsl.watch_spec_files_for(ruby.lib_files)
|
|
19
|
+
end
|
data/LICENSE.txt
ADDED
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
Copyright (c) 2016 David Grandinetti <dbgrandi@yahoo-inc.com>
|
|
2
|
+
|
|
3
|
+
MIT License
|
|
4
|
+
|
|
5
|
+
Permission is hereby granted, free of charge, to any person obtaining
|
|
6
|
+
a copy of this software and associated documentation files (the
|
|
7
|
+
"Software"), to deal in the Software without restriction, including
|
|
8
|
+
without limitation the rights to use, copy, modify, merge, publish,
|
|
9
|
+
distribute, sublicense, and/or sell copies of the Software, and to
|
|
10
|
+
permit persons to whom the Software is furnished to do so, subject to
|
|
11
|
+
the following conditions:
|
|
12
|
+
|
|
13
|
+
The above copyright notice and this permission notice shall be
|
|
14
|
+
included in all copies or substantial portions of the Software.
|
|
15
|
+
|
|
16
|
+
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
|
|
17
|
+
EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
|
|
18
|
+
MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
|
|
19
|
+
NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
|
|
20
|
+
LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
|
|
21
|
+
OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
|
|
22
|
+
WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
|
data/README.md
ADDED
|
@@ -0,0 +1,47 @@
|
|
|
1
|
+
# danger-mcbrain
|
|
2
|
+
|
|
3
|
+
Give Danger a memory, so she can check your PR today, and then answer questions about it tomorrow. Uses Redis for the persistence.
|
|
4
|
+
|
|
5
|
+
## Installation
|
|
6
|
+
|
|
7
|
+
$ gem install danger-mcbrain
|
|
8
|
+
|
|
9
|
+
## Usage
|
|
10
|
+
|
|
11
|
+
Methods and attributes from this plugin are available in
|
|
12
|
+
your `Dangerfile` under the `brain` namespace.
|
|
13
|
+
|
|
14
|
+
You need to connect Danger's `brain` to a redis instance by
|
|
15
|
+
calling `brain.connect` somewhere in your `Dangerfile`. You
|
|
16
|
+
can pass any arguments into `connect` that you would normally
|
|
17
|
+
pass directly into `Redis.new`. You can read more about that
|
|
18
|
+
in their [Getting Started](https://github.com/redis/redis-rb#getting-started)
|
|
19
|
+
guide.
|
|
20
|
+
|
|
21
|
+
After you have connected, `brain` acts quite like a regular old
|
|
22
|
+
Ruby Hash, so you can use the `[]` operator and `[]=` operator to
|
|
23
|
+
get or set key/value pairs.
|
|
24
|
+
|
|
25
|
+
You can set a `namespace` on the `brain` if needed. This can be handy
|
|
26
|
+
in cases where you want to share a redis instance across multiple projecs
|
|
27
|
+
or repositories.
|
|
28
|
+
|
|
29
|
+
e.g.
|
|
30
|
+
|
|
31
|
+
```ruby
|
|
32
|
+
brain.namespace = "dbgrandi/danger-prose"
|
|
33
|
+
|
|
34
|
+
last_build_time = brain[last_pr + ":build_time"]
|
|
35
|
+
|
|
36
|
+
if last_build_time > build_time
|
|
37
|
+
warn "Your build time is getting longer. #{last_pr}: #{last_build_time} -> #{pr}: #{build_time}"
|
|
38
|
+
end
|
|
39
|
+
```
|
|
40
|
+
|
|
41
|
+
## Development
|
|
42
|
+
|
|
43
|
+
1. Clone this repo
|
|
44
|
+
2. Run `bundle install` to setup dependencies.
|
|
45
|
+
3. Run `bundle exec rake spec` to run the tests.
|
|
46
|
+
4. Use `bundle exec guard` to automatically have tests run as you make changes.
|
|
47
|
+
5. Make your changes.
|
data/Rakefile
ADDED
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
require 'bundler/gem_tasks'
|
|
2
|
+
require 'rspec/core/rake_task'
|
|
3
|
+
require 'rubocop/rake_task'
|
|
4
|
+
|
|
5
|
+
RSpec::Core::RakeTask.new(:specs)
|
|
6
|
+
|
|
7
|
+
task default: :specs
|
|
8
|
+
|
|
9
|
+
task :spec do
|
|
10
|
+
Rake::Task['specs'].invoke
|
|
11
|
+
Rake::Task['rubocop'].invoke
|
|
12
|
+
Rake::Task['spec_docs'].invoke
|
|
13
|
+
end
|
|
14
|
+
|
|
15
|
+
desc 'Run RuboCop on the lib/specs directory'
|
|
16
|
+
RuboCop::RakeTask.new(:rubocop) do |task|
|
|
17
|
+
task.patterns = ['lib/**/*.rb', 'spec/**/*.rb']
|
|
18
|
+
end
|
|
19
|
+
|
|
20
|
+
desc 'Ensure that the plugin passes `danger plugins lint`'
|
|
21
|
+
task :spec_docs do
|
|
22
|
+
sh 'bundle exec danger plugins lint'
|
|
23
|
+
end
|
|
@@ -0,0 +1,48 @@
|
|
|
1
|
+
# coding: utf-8
|
|
2
|
+
lib = File.expand_path('../lib', __FILE__)
|
|
3
|
+
$LOAD_PATH.unshift(lib) unless $LOAD_PATH.include?(lib)
|
|
4
|
+
require 'mcbrain/gem_version.rb'
|
|
5
|
+
|
|
6
|
+
Gem::Specification.new do |spec|
|
|
7
|
+
spec.name = 'danger-mcbrain'
|
|
8
|
+
spec.version = McBrain::VERSION
|
|
9
|
+
spec.authors = ['David Grandinetti']
|
|
10
|
+
spec.email = ['dbgrandi@yahoo-inc.com']
|
|
11
|
+
spec.description = %q{Give Danger some persistent memory.}
|
|
12
|
+
spec.summary = %q{Give Danger a redis backed key/value store, so you can extend Danger rules beyond just this PR.}
|
|
13
|
+
spec.homepage = 'https://github.com/dbgrandi/danger-mcbrain'
|
|
14
|
+
spec.license = 'MIT'
|
|
15
|
+
|
|
16
|
+
spec.files = `git ls-files`.split($/)
|
|
17
|
+
spec.executables = spec.files.grep(%r{^bin/}) { |f| File.basename(f) }
|
|
18
|
+
spec.test_files = spec.files.grep(%r{^(test|spec|features)/})
|
|
19
|
+
spec.require_paths = ['lib']
|
|
20
|
+
|
|
21
|
+
spec.add_runtime_dependency 'danger', '~>2.0'
|
|
22
|
+
spec.add_runtime_dependency 'redis', '~>3.0'
|
|
23
|
+
|
|
24
|
+
# General ruby development
|
|
25
|
+
spec.add_development_dependency 'bundler', '~> 1.3'
|
|
26
|
+
spec.add_development_dependency 'rake', '~> 10.0'
|
|
27
|
+
|
|
28
|
+
# Testing support
|
|
29
|
+
spec.add_development_dependency 'rspec', '~> 3.4'
|
|
30
|
+
|
|
31
|
+
# Linting code and docs
|
|
32
|
+
spec.add_development_dependency "rubocop", "~> 0.41"
|
|
33
|
+
spec.add_development_dependency "yard", "~> 0.8"
|
|
34
|
+
|
|
35
|
+
# Makes testing easy via `bundle exec guard`
|
|
36
|
+
spec.add_development_dependency 'guard', '~> 2.14'
|
|
37
|
+
spec.add_development_dependency 'guard-rspec', '~> 4.7'
|
|
38
|
+
|
|
39
|
+
# If you want to work on older builds of ruby
|
|
40
|
+
spec.add_development_dependency 'listen', '3.0.7'
|
|
41
|
+
|
|
42
|
+
# This gives you the chance to run a REPL inside your test
|
|
43
|
+
# via
|
|
44
|
+
# require 'pry'
|
|
45
|
+
# binding.pry
|
|
46
|
+
# This will stop test execution and let you inspect the results
|
|
47
|
+
spec.add_development_dependency 'pry'
|
|
48
|
+
end
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
require 'mcbrain/gem_version'
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
require 'mcbrain/plugin'
|
|
@@ -0,0 +1,69 @@
|
|
|
1
|
+
require 'redis'
|
|
2
|
+
|
|
3
|
+
module Danger
|
|
4
|
+
# Let's give Danger the ability to remember things in between runs. By
|
|
5
|
+
# connecting her up to Redis, we have a simple key/value store where
|
|
6
|
+
# we can keep stats and evaluate over time. This could be useful for
|
|
7
|
+
# tracking the number of tests, author stats, or whatever else you want
|
|
8
|
+
# to be able to ask Danger questions about the next time she checks your PR.
|
|
9
|
+
#
|
|
10
|
+
# @example Keep track of code coverage trends
|
|
11
|
+
#
|
|
12
|
+
# last_cov = brain[:pr-1923][:code_cov_percent]
|
|
13
|
+
# if last_cov > code_cov
|
|
14
|
+
# warn "Coverage went from #{last_cov} to #{code_cov}"
|
|
15
|
+
# end
|
|
16
|
+
# brain[:pr-1924] = { :code_cov_percent => code_cov }
|
|
17
|
+
#
|
|
18
|
+
# @see https://github.com/dbgrandi/danger-mcbrain
|
|
19
|
+
# @tags persistance
|
|
20
|
+
#
|
|
21
|
+
class DangerMcBrain < Plugin
|
|
22
|
+
def self.instance_name
|
|
23
|
+
'brain'
|
|
24
|
+
end
|
|
25
|
+
|
|
26
|
+
# An attribute that contains a string that will be used
|
|
27
|
+
# to prefix keys. If this is not set, a namespace prefix
|
|
28
|
+
# will be created based on some info from the Dangerfile.
|
|
29
|
+
# To set a globally available key, set this to "".
|
|
30
|
+
#
|
|
31
|
+
# @return [String]
|
|
32
|
+
attr_accessor :namespace
|
|
33
|
+
|
|
34
|
+
# Call from your Dangerfile *before* using DangerBrain to connect to
|
|
35
|
+
# a redis server. May throw a `Redis::CannotConnectError` if unable
|
|
36
|
+
# to connect. Any `options` you pass into this will be passed directly
|
|
37
|
+
# to the `Redis` client.
|
|
38
|
+
#
|
|
39
|
+
def connect(options = {})
|
|
40
|
+
@redis = Redis.new(options)
|
|
41
|
+
@redis.client.connect
|
|
42
|
+
end
|
|
43
|
+
|
|
44
|
+
# Use to get a value out of DangerBrain. If you have set a namespace
|
|
45
|
+
# it will be prefixed to your key with a `:`. Returns the value
|
|
46
|
+
# associated with that key, or nil if it does not exist.
|
|
47
|
+
#
|
|
48
|
+
# @return [Object]
|
|
49
|
+
def [](key)
|
|
50
|
+
@redis[real_key(key)]
|
|
51
|
+
end
|
|
52
|
+
|
|
53
|
+
# Use to se a value in DangerBrain. If you have set a namespace, it
|
|
54
|
+
# will be prefixed to your key with a ':'. Returns the value that
|
|
55
|
+
# was passed in.
|
|
56
|
+
#
|
|
57
|
+
# @return [Object]
|
|
58
|
+
def []=(key, value)
|
|
59
|
+
@redis[real_key(key)] = value
|
|
60
|
+
end
|
|
61
|
+
|
|
62
|
+
private
|
|
63
|
+
|
|
64
|
+
def real_key(key)
|
|
65
|
+
return key if @namespace.nil? || namespace.empty?
|
|
66
|
+
@namespace + ':' + key
|
|
67
|
+
end
|
|
68
|
+
end
|
|
69
|
+
end
|
|
@@ -0,0 +1,38 @@
|
|
|
1
|
+
require File.expand_path('../spec_helper', __FILE__)
|
|
2
|
+
|
|
3
|
+
module Danger
|
|
4
|
+
describe Danger::DangerMcBrain do
|
|
5
|
+
it 'should be a plugin' do
|
|
6
|
+
expect(Danger::DangerMcBrain.new(nil)).to be_a Danger::Plugin
|
|
7
|
+
end
|
|
8
|
+
|
|
9
|
+
#
|
|
10
|
+
# You should test your custom attributes and methods here
|
|
11
|
+
#
|
|
12
|
+
describe 'with Dangerfile' do
|
|
13
|
+
before do
|
|
14
|
+
@dangerfile = testing_dangerfile
|
|
15
|
+
@brain = @dangerfile.brain
|
|
16
|
+
end
|
|
17
|
+
|
|
18
|
+
it 'should default to a nil namespace' do
|
|
19
|
+
expect(@brain.namespace).to be_nil
|
|
20
|
+
end
|
|
21
|
+
|
|
22
|
+
it 'should not use a namespace when it is nil' do
|
|
23
|
+
@brain.namespace = ''
|
|
24
|
+
expect(@brain.send(:real_key, 'asdf')).to eql('asdf')
|
|
25
|
+
end
|
|
26
|
+
|
|
27
|
+
it 'should not use a namespace when it is an empty string' do
|
|
28
|
+
@brain.namespace = ''
|
|
29
|
+
expect(@brain.send(:real_key, 'asdf')).to eql('asdf')
|
|
30
|
+
end
|
|
31
|
+
|
|
32
|
+
it 'should use namespace as a prefix when available' do
|
|
33
|
+
@brain.namespace = 'pants'
|
|
34
|
+
expect(@brain.send(:real_key, 'asdf')).to eql('pants:asdf')
|
|
35
|
+
end
|
|
36
|
+
end
|
|
37
|
+
end
|
|
38
|
+
end
|
data/spec/spec_helper.rb
ADDED
|
@@ -0,0 +1,59 @@
|
|
|
1
|
+
require 'pathname'
|
|
2
|
+
ROOT = Pathname.new(File.expand_path('../../', __FILE__))
|
|
3
|
+
$LOAD_PATH.unshift((ROOT + 'lib').to_s)
|
|
4
|
+
$LOAD_PATH.unshift((ROOT + 'spec').to_s)
|
|
5
|
+
|
|
6
|
+
require 'bundler/setup'
|
|
7
|
+
require 'pry'
|
|
8
|
+
|
|
9
|
+
require 'rspec'
|
|
10
|
+
require 'danger'
|
|
11
|
+
|
|
12
|
+
# Use coloured output, it's the best.
|
|
13
|
+
RSpec.configure do |config|
|
|
14
|
+
config.filter_gems_from_backtrace 'bundler'
|
|
15
|
+
config.color = true
|
|
16
|
+
config.tty = true
|
|
17
|
+
end
|
|
18
|
+
|
|
19
|
+
require 'danger_plugin'
|
|
20
|
+
|
|
21
|
+
# These functions are a subset of https://github.com/danger/danger/blob/master/spec/spec_helper.rb
|
|
22
|
+
# If you are expanding these files, see if it's already been done ^.
|
|
23
|
+
|
|
24
|
+
# A silent version of the user interface,
|
|
25
|
+
# it comes with an extra function `.string` which will
|
|
26
|
+
# strip all ANSI colours from the string.
|
|
27
|
+
|
|
28
|
+
# rubocop:disable Lint/NestedMethodDefinition
|
|
29
|
+
def testing_ui
|
|
30
|
+
@output = StringIO.new
|
|
31
|
+
def @output.winsize
|
|
32
|
+
[20, 9999]
|
|
33
|
+
end
|
|
34
|
+
|
|
35
|
+
cork = Cork::Board.new(out: @output)
|
|
36
|
+
def cork.string
|
|
37
|
+
out.string.gsub(/\e\[([;\d]+)?m/, '')
|
|
38
|
+
end
|
|
39
|
+
cork
|
|
40
|
+
end
|
|
41
|
+
# rubocop:enable Lint/NestedMethodDefinition
|
|
42
|
+
|
|
43
|
+
# Example environment (ENV) that would come from
|
|
44
|
+
# running a PR on TravisCI
|
|
45
|
+
def testing_env
|
|
46
|
+
{
|
|
47
|
+
'HAS_JOSH_K_SEAL_OF_APPROVAL' => 'true',
|
|
48
|
+
'TRAVIS_PULL_REQUEST' => '800',
|
|
49
|
+
'TRAVIS_REPO_SLUG' => 'artsy/eigen',
|
|
50
|
+
'TRAVIS_COMMIT_RANGE' => '759adcbd0d8f...13c4dc8bb61d',
|
|
51
|
+
'DANGER_GITHUB_API_TOKEN' => '123sbdq54erfsd3422gdfio'
|
|
52
|
+
}
|
|
53
|
+
end
|
|
54
|
+
|
|
55
|
+
# A stubbed out Dangerfile for use in tests
|
|
56
|
+
def testing_dangerfile
|
|
57
|
+
env = Danger::EnvironmentManager.new(testing_env)
|
|
58
|
+
Danger::Dangerfile.new(env, testing_ui)
|
|
59
|
+
end
|
metadata
ADDED
|
@@ -0,0 +1,216 @@
|
|
|
1
|
+
--- !ruby/object:Gem::Specification
|
|
2
|
+
name: danger-mcbrain
|
|
3
|
+
version: !ruby/object:Gem::Version
|
|
4
|
+
version: 0.0.1
|
|
5
|
+
platform: ruby
|
|
6
|
+
authors:
|
|
7
|
+
- David Grandinetti
|
|
8
|
+
autorequire:
|
|
9
|
+
bindir: bin
|
|
10
|
+
cert_chain: []
|
|
11
|
+
date: 2016-07-30 00:00:00.000000000 Z
|
|
12
|
+
dependencies:
|
|
13
|
+
- !ruby/object:Gem::Dependency
|
|
14
|
+
name: danger
|
|
15
|
+
requirement: !ruby/object:Gem::Requirement
|
|
16
|
+
requirements:
|
|
17
|
+
- - "~>"
|
|
18
|
+
- !ruby/object:Gem::Version
|
|
19
|
+
version: '2.0'
|
|
20
|
+
type: :runtime
|
|
21
|
+
prerelease: false
|
|
22
|
+
version_requirements: !ruby/object:Gem::Requirement
|
|
23
|
+
requirements:
|
|
24
|
+
- - "~>"
|
|
25
|
+
- !ruby/object:Gem::Version
|
|
26
|
+
version: '2.0'
|
|
27
|
+
- !ruby/object:Gem::Dependency
|
|
28
|
+
name: redis
|
|
29
|
+
requirement: !ruby/object:Gem::Requirement
|
|
30
|
+
requirements:
|
|
31
|
+
- - "~>"
|
|
32
|
+
- !ruby/object:Gem::Version
|
|
33
|
+
version: '3.0'
|
|
34
|
+
type: :runtime
|
|
35
|
+
prerelease: false
|
|
36
|
+
version_requirements: !ruby/object:Gem::Requirement
|
|
37
|
+
requirements:
|
|
38
|
+
- - "~>"
|
|
39
|
+
- !ruby/object:Gem::Version
|
|
40
|
+
version: '3.0'
|
|
41
|
+
- !ruby/object:Gem::Dependency
|
|
42
|
+
name: bundler
|
|
43
|
+
requirement: !ruby/object:Gem::Requirement
|
|
44
|
+
requirements:
|
|
45
|
+
- - "~>"
|
|
46
|
+
- !ruby/object:Gem::Version
|
|
47
|
+
version: '1.3'
|
|
48
|
+
type: :development
|
|
49
|
+
prerelease: false
|
|
50
|
+
version_requirements: !ruby/object:Gem::Requirement
|
|
51
|
+
requirements:
|
|
52
|
+
- - "~>"
|
|
53
|
+
- !ruby/object:Gem::Version
|
|
54
|
+
version: '1.3'
|
|
55
|
+
- !ruby/object:Gem::Dependency
|
|
56
|
+
name: rake
|
|
57
|
+
requirement: !ruby/object:Gem::Requirement
|
|
58
|
+
requirements:
|
|
59
|
+
- - "~>"
|
|
60
|
+
- !ruby/object:Gem::Version
|
|
61
|
+
version: '10.0'
|
|
62
|
+
type: :development
|
|
63
|
+
prerelease: false
|
|
64
|
+
version_requirements: !ruby/object:Gem::Requirement
|
|
65
|
+
requirements:
|
|
66
|
+
- - "~>"
|
|
67
|
+
- !ruby/object:Gem::Version
|
|
68
|
+
version: '10.0'
|
|
69
|
+
- !ruby/object:Gem::Dependency
|
|
70
|
+
name: rspec
|
|
71
|
+
requirement: !ruby/object:Gem::Requirement
|
|
72
|
+
requirements:
|
|
73
|
+
- - "~>"
|
|
74
|
+
- !ruby/object:Gem::Version
|
|
75
|
+
version: '3.4'
|
|
76
|
+
type: :development
|
|
77
|
+
prerelease: false
|
|
78
|
+
version_requirements: !ruby/object:Gem::Requirement
|
|
79
|
+
requirements:
|
|
80
|
+
- - "~>"
|
|
81
|
+
- !ruby/object:Gem::Version
|
|
82
|
+
version: '3.4'
|
|
83
|
+
- !ruby/object:Gem::Dependency
|
|
84
|
+
name: rubocop
|
|
85
|
+
requirement: !ruby/object:Gem::Requirement
|
|
86
|
+
requirements:
|
|
87
|
+
- - "~>"
|
|
88
|
+
- !ruby/object:Gem::Version
|
|
89
|
+
version: '0.41'
|
|
90
|
+
type: :development
|
|
91
|
+
prerelease: false
|
|
92
|
+
version_requirements: !ruby/object:Gem::Requirement
|
|
93
|
+
requirements:
|
|
94
|
+
- - "~>"
|
|
95
|
+
- !ruby/object:Gem::Version
|
|
96
|
+
version: '0.41'
|
|
97
|
+
- !ruby/object:Gem::Dependency
|
|
98
|
+
name: yard
|
|
99
|
+
requirement: !ruby/object:Gem::Requirement
|
|
100
|
+
requirements:
|
|
101
|
+
- - "~>"
|
|
102
|
+
- !ruby/object:Gem::Version
|
|
103
|
+
version: '0.8'
|
|
104
|
+
type: :development
|
|
105
|
+
prerelease: false
|
|
106
|
+
version_requirements: !ruby/object:Gem::Requirement
|
|
107
|
+
requirements:
|
|
108
|
+
- - "~>"
|
|
109
|
+
- !ruby/object:Gem::Version
|
|
110
|
+
version: '0.8'
|
|
111
|
+
- !ruby/object:Gem::Dependency
|
|
112
|
+
name: guard
|
|
113
|
+
requirement: !ruby/object:Gem::Requirement
|
|
114
|
+
requirements:
|
|
115
|
+
- - "~>"
|
|
116
|
+
- !ruby/object:Gem::Version
|
|
117
|
+
version: '2.14'
|
|
118
|
+
type: :development
|
|
119
|
+
prerelease: false
|
|
120
|
+
version_requirements: !ruby/object:Gem::Requirement
|
|
121
|
+
requirements:
|
|
122
|
+
- - "~>"
|
|
123
|
+
- !ruby/object:Gem::Version
|
|
124
|
+
version: '2.14'
|
|
125
|
+
- !ruby/object:Gem::Dependency
|
|
126
|
+
name: guard-rspec
|
|
127
|
+
requirement: !ruby/object:Gem::Requirement
|
|
128
|
+
requirements:
|
|
129
|
+
- - "~>"
|
|
130
|
+
- !ruby/object:Gem::Version
|
|
131
|
+
version: '4.7'
|
|
132
|
+
type: :development
|
|
133
|
+
prerelease: false
|
|
134
|
+
version_requirements: !ruby/object:Gem::Requirement
|
|
135
|
+
requirements:
|
|
136
|
+
- - "~>"
|
|
137
|
+
- !ruby/object:Gem::Version
|
|
138
|
+
version: '4.7'
|
|
139
|
+
- !ruby/object:Gem::Dependency
|
|
140
|
+
name: listen
|
|
141
|
+
requirement: !ruby/object:Gem::Requirement
|
|
142
|
+
requirements:
|
|
143
|
+
- - '='
|
|
144
|
+
- !ruby/object:Gem::Version
|
|
145
|
+
version: 3.0.7
|
|
146
|
+
type: :development
|
|
147
|
+
prerelease: false
|
|
148
|
+
version_requirements: !ruby/object:Gem::Requirement
|
|
149
|
+
requirements:
|
|
150
|
+
- - '='
|
|
151
|
+
- !ruby/object:Gem::Version
|
|
152
|
+
version: 3.0.7
|
|
153
|
+
- !ruby/object:Gem::Dependency
|
|
154
|
+
name: pry
|
|
155
|
+
requirement: !ruby/object:Gem::Requirement
|
|
156
|
+
requirements:
|
|
157
|
+
- - ">="
|
|
158
|
+
- !ruby/object:Gem::Version
|
|
159
|
+
version: '0'
|
|
160
|
+
type: :development
|
|
161
|
+
prerelease: false
|
|
162
|
+
version_requirements: !ruby/object:Gem::Requirement
|
|
163
|
+
requirements:
|
|
164
|
+
- - ">="
|
|
165
|
+
- !ruby/object:Gem::Version
|
|
166
|
+
version: '0'
|
|
167
|
+
description: Give Danger some persistent memory.
|
|
168
|
+
email:
|
|
169
|
+
- dbgrandi@yahoo-inc.com
|
|
170
|
+
executables: []
|
|
171
|
+
extensions: []
|
|
172
|
+
extra_rdoc_files: []
|
|
173
|
+
files:
|
|
174
|
+
- ".gitignore"
|
|
175
|
+
- ".travis.yml"
|
|
176
|
+
- Gemfile
|
|
177
|
+
- Gemfile.lock
|
|
178
|
+
- Guardfile
|
|
179
|
+
- LICENSE.txt
|
|
180
|
+
- README.md
|
|
181
|
+
- Rakefile
|
|
182
|
+
- danger-mcbrain.gemspec
|
|
183
|
+
- lib/danger_mcbrain.rb
|
|
184
|
+
- lib/danger_plugin.rb
|
|
185
|
+
- lib/mcbrain/gem_version.rb
|
|
186
|
+
- lib/mcbrain/plugin.rb
|
|
187
|
+
- spec/mcbrain_spec.rb
|
|
188
|
+
- spec/spec_helper.rb
|
|
189
|
+
homepage: https://github.com/dbgrandi/danger-mcbrain
|
|
190
|
+
licenses:
|
|
191
|
+
- MIT
|
|
192
|
+
metadata: {}
|
|
193
|
+
post_install_message:
|
|
194
|
+
rdoc_options: []
|
|
195
|
+
require_paths:
|
|
196
|
+
- lib
|
|
197
|
+
required_ruby_version: !ruby/object:Gem::Requirement
|
|
198
|
+
requirements:
|
|
199
|
+
- - ">="
|
|
200
|
+
- !ruby/object:Gem::Version
|
|
201
|
+
version: '0'
|
|
202
|
+
required_rubygems_version: !ruby/object:Gem::Requirement
|
|
203
|
+
requirements:
|
|
204
|
+
- - ">="
|
|
205
|
+
- !ruby/object:Gem::Version
|
|
206
|
+
version: '0'
|
|
207
|
+
requirements: []
|
|
208
|
+
rubyforge_project:
|
|
209
|
+
rubygems_version: 2.4.8
|
|
210
|
+
signing_key:
|
|
211
|
+
specification_version: 4
|
|
212
|
+
summary: Give Danger a redis backed key/value store, so you can extend Danger rules
|
|
213
|
+
beyond just this PR.
|
|
214
|
+
test_files:
|
|
215
|
+
- spec/mcbrain_spec.rb
|
|
216
|
+
- spec/spec_helper.rb
|