fudge 0.3.8 → 0.4.0
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +7 -0
- data/lib/fudge.rb +3 -3
- data/lib/fudge/build.rb +7 -6
- data/lib/fudge/exceptions.rb +1 -1
- data/lib/fudge/formatters.rb +6 -0
- data/lib/fudge/formatters/simple.rb +106 -0
- data/lib/fudge/output_checker.rb +5 -5
- data/lib/fudge/rspec/matchers.rb +3 -3
- data/lib/fudge/runner.rb +8 -8
- data/lib/fudge/tasks/clean_bundler_env.rb +1 -0
- data/lib/fudge/tasks/composite_task.rb +10 -17
- data/lib/fudge/tasks/each_directory.rb +3 -2
- data/lib/fudge/tasks/flog.rb +5 -1
- data/lib/fudge/tasks/in_directory.rb +3 -2
- data/lib/fudge/tasks/shell.rb +7 -7
- data/lib/fudge/version.rb +1 -1
- data/lib/fudge/with_directory.rb +4 -5
- data/spec/lib/fudge/build_spec.rb +9 -8
- data/spec/lib/fudge/formatters/simple_spec.rb +68 -0
- data/spec/lib/fudge/output_checker_spec.rb +4 -3
- data/spec/lib/fudge/runner_spec.rb +11 -10
- data/spec/lib/fudge/tasks/composite_task_spec.rb +2 -1
- data/spec/lib/fudge/tasks/shell_spec.rb +7 -6
- data/spec/lib/fudge/tasks/sub_process_spec.rb +8 -7
- data/spec/lib/fudge/with_directory_spec.rb +2 -1
- metadata +108 -164
checksums.yaml
ADDED
@@ -0,0 +1,7 @@
|
|
1
|
+
---
|
2
|
+
SHA1:
|
3
|
+
metadata.gz: 47962ba246a2c124052d46a96a4f84b23cf4c4c7
|
4
|
+
data.tar.gz: 0f26cd2e11eabe39d93d447da4b3edcce29f56b3
|
5
|
+
SHA512:
|
6
|
+
metadata.gz: dfdac055c9af71a47c427d6f136c0aff6bc107e5dc9aadfcc9f1dbc8a0516a4a6bb6336e6565ed7bc98acfb006c964a7ecc59a1bed522839974fd22384debdc4
|
7
|
+
data.tar.gz: 3d46ce43acd4ce7d1e74bfc8439b63551e7f73c9128179a92aa387605728e4a23542ab0426ec30639c2f8198b4db33787096faff585ecabb82f8dd22156ba465
|
data/lib/fudge.rb
CHANGED
@@ -1,4 +1,3 @@
|
|
1
|
-
require 'rainbow'
|
2
1
|
require 'active_support/all'
|
3
2
|
|
4
3
|
#This will fix errors: invalid byte sequence in US-ASCII (ArgumentError) when UTF-8 chars get
|
@@ -18,7 +17,8 @@ module Fudge
|
|
18
17
|
autoload :Tasks, 'fudge/tasks'
|
19
18
|
autoload :TaskDSL, 'fudge/task_dsl'
|
20
19
|
autoload :WithDirectory, 'fudge/with_directory'
|
21
|
-
autoload :OutputChecker, 'fudge/output_checker
|
22
|
-
autoload :FileFinder, 'fudge/file_finder
|
20
|
+
autoload :OutputChecker, 'fudge/output_checker'
|
21
|
+
autoload :FileFinder, 'fudge/file_finder'
|
22
|
+
autoload :Formatters, 'fudge/formatters'
|
23
23
|
end
|
24
24
|
|
data/lib/fudge/build.rb
CHANGED
@@ -12,18 +12,19 @@ module Fudge
|
|
12
12
|
super
|
13
13
|
end
|
14
14
|
|
15
|
+
# Run task
|
15
16
|
def run(options={})
|
16
|
-
|
17
|
+
formatter = options[:formatter] || Fudge::Formatters::Simple.new
|
17
18
|
success = super
|
18
19
|
if callbacks
|
19
|
-
message "Running #{success ? 'success' : 'failure'} callbacks...",
|
20
|
+
message "Running #{success ? 'success' : 'failure'} callbacks...", formatter
|
20
21
|
hooks = success ? @success_hooks : @failure_hooks
|
21
22
|
|
22
23
|
hooks.each do |hook|
|
23
|
-
return false unless hook.run :
|
24
|
+
return false unless hook.run :formatter => formatter
|
24
25
|
end
|
25
26
|
else
|
26
|
-
message "Skipping callbacks...",
|
27
|
+
message "Skipping callbacks...", formatter
|
27
28
|
end
|
28
29
|
|
29
30
|
success
|
@@ -31,8 +32,8 @@ module Fudge
|
|
31
32
|
|
32
33
|
private
|
33
34
|
|
34
|
-
def message(message,
|
35
|
-
|
35
|
+
def message(message, formatter)
|
36
|
+
formatter.write { |w| w.info(message) }
|
36
37
|
end
|
37
38
|
end
|
38
39
|
end
|
data/lib/fudge/exceptions.rb
CHANGED
@@ -0,0 +1,106 @@
|
|
1
|
+
module Fudge
|
2
|
+
module Formatters
|
3
|
+
# Simple coloured STDOUT/STDERR formatting
|
4
|
+
class Simple
|
5
|
+
|
6
|
+
# ASCII Color Codes
|
7
|
+
CODE = {
|
8
|
+
:off => 0,
|
9
|
+
:bright => 1,
|
10
|
+
:red => 31,
|
11
|
+
:green => 32,
|
12
|
+
:yellow => 33,
|
13
|
+
:cyan => 36
|
14
|
+
}
|
15
|
+
|
16
|
+
# Internal wrapper for output
|
17
|
+
class Writer
|
18
|
+
def initialize(formatter)
|
19
|
+
@parts = []
|
20
|
+
@formatter = formatter
|
21
|
+
end
|
22
|
+
|
23
|
+
# Writes the final message
|
24
|
+
def write(out)
|
25
|
+
out.puts @parts.join(' ')
|
26
|
+
end
|
27
|
+
|
28
|
+
# Determines which formatter methods to make available
|
29
|
+
def self.wrap(*methods)
|
30
|
+
methods.each do |m|
|
31
|
+
class_eval <<-RUBY
|
32
|
+
def #{m}(message)
|
33
|
+
@parts << @formatter.#{m}(message)
|
34
|
+
self
|
35
|
+
end
|
36
|
+
RUBY
|
37
|
+
end
|
38
|
+
end
|
39
|
+
|
40
|
+
wrap :normal, :notice, :info, :success, :error
|
41
|
+
|
42
|
+
end
|
43
|
+
|
44
|
+
attr_reader :stdout
|
45
|
+
|
46
|
+
def initialize(stdout=$stdout)
|
47
|
+
@stdout = stdout
|
48
|
+
end
|
49
|
+
|
50
|
+
# Report Error Message
|
51
|
+
def error(message)
|
52
|
+
ascii :red, message
|
53
|
+
end
|
54
|
+
|
55
|
+
# Report Success Message
|
56
|
+
def success(message)
|
57
|
+
ascii :bright, :green, message
|
58
|
+
end
|
59
|
+
|
60
|
+
# Report Information Message
|
61
|
+
def info(message)
|
62
|
+
ascii :cyan, message
|
63
|
+
end
|
64
|
+
|
65
|
+
# Report Notice Message
|
66
|
+
def notice(message)
|
67
|
+
ascii :yellow, message
|
68
|
+
end
|
69
|
+
|
70
|
+
# Normal information
|
71
|
+
def normal(message)
|
72
|
+
message
|
73
|
+
end
|
74
|
+
|
75
|
+
# Directly output
|
76
|
+
def puts(message)
|
77
|
+
stdout.puts message
|
78
|
+
end
|
79
|
+
|
80
|
+
# Yields a writer which can chain message types to output
|
81
|
+
def write
|
82
|
+
w = Writer.new(self)
|
83
|
+
yield w
|
84
|
+
w.write(stdout)
|
85
|
+
end
|
86
|
+
|
87
|
+
# Output a character
|
88
|
+
def putc(c)
|
89
|
+
stdout.putc(c)
|
90
|
+
end
|
91
|
+
|
92
|
+
private
|
93
|
+
|
94
|
+
def ascii(*args)
|
95
|
+
txt = args.pop
|
96
|
+
codes = args.map { |a| coded(a) }
|
97
|
+
codes << txt << coded(:off)
|
98
|
+
codes.join ''
|
99
|
+
end
|
100
|
+
|
101
|
+
def coded(code)
|
102
|
+
"\e[#{CODE[code]}m"
|
103
|
+
end
|
104
|
+
end
|
105
|
+
end
|
106
|
+
end
|
data/lib/fudge/output_checker.rb
CHANGED
@@ -1,10 +1,10 @@
|
|
1
1
|
#Task Output Checker
|
2
2
|
class Fudge::OutputChecker
|
3
|
-
attr_reader :checker, :regex, :pass_block, :match, :
|
3
|
+
attr_reader :checker, :regex, :pass_block, :match, :formatter
|
4
4
|
|
5
|
-
def initialize(checker,
|
5
|
+
def initialize(checker, formatter)
|
6
6
|
@checker = checker
|
7
|
-
@
|
7
|
+
@formatter = formatter
|
8
8
|
end
|
9
9
|
|
10
10
|
#Validates output against initialized checker
|
@@ -24,7 +24,7 @@ class Fudge::OutputChecker
|
|
24
24
|
if success?(result)
|
25
25
|
true
|
26
26
|
else
|
27
|
-
|
27
|
+
formatter.write {|w| w.error(error_message(result)) }
|
28
28
|
end
|
29
29
|
end
|
30
30
|
|
@@ -48,7 +48,7 @@ class Fudge::OutputChecker
|
|
48
48
|
def matches?(output)
|
49
49
|
# Do regex match and fail if no match
|
50
50
|
return true if (@match = output.match(regex))
|
51
|
-
|
51
|
+
formatter.write { |w| w.error( "Output didn't match #{regex}.") }
|
52
52
|
end
|
53
53
|
|
54
54
|
end
|
data/lib/fudge/rspec/matchers.rb
CHANGED
@@ -13,7 +13,7 @@ module FudgeMatchers
|
|
13
13
|
def initialize(expected, args={})
|
14
14
|
@expected = expected
|
15
15
|
@args = args
|
16
|
-
@args[:
|
16
|
+
@args[:formatter] ||= Fudge::Formatters::Simple.new
|
17
17
|
end
|
18
18
|
|
19
19
|
def matches?(task)
|
@@ -27,8 +27,8 @@ module FudgeMatchers
|
|
27
27
|
Fudge::Tasks::Shell.any_instance
|
28
28
|
end
|
29
29
|
|
30
|
-
to_stub.stub(:run_command) do |cmd,
|
31
|
-
raise "Run Command requires
|
30
|
+
to_stub.stub(:run_command) do |cmd, formatter|
|
31
|
+
raise "Run Command requires a formatter" unless formatter
|
32
32
|
ran.push(cmd)
|
33
33
|
['dummy output', true]
|
34
34
|
end
|
data/lib/fudge/runner.rb
CHANGED
@@ -9,30 +9,30 @@ module Fudge
|
|
9
9
|
#
|
10
10
|
# @param [String] which_build Defaults to 'default'
|
11
11
|
def run_build(which_build='default', options={})
|
12
|
-
|
13
|
-
output_start(which_build,
|
12
|
+
formatter = options[:formatter] || Fudge::Formatters::Simple.new
|
13
|
+
output_start(which_build, formatter)
|
14
14
|
status = run(which_build, options)
|
15
|
-
output_status(status,
|
15
|
+
output_status(status, formatter)
|
16
16
|
end
|
17
17
|
|
18
18
|
private
|
19
19
|
|
20
|
-
def output_start(which,
|
20
|
+
def output_start(which, formatter)
|
21
21
|
which_build = String.new(which)
|
22
|
-
|
22
|
+
formatter.write { |w| w.info('Running build').notice(which_build) }
|
23
23
|
end
|
24
24
|
|
25
25
|
def run(which, options)
|
26
26
|
# Run the build
|
27
27
|
build = @description.builds[which.to_sym]
|
28
28
|
build.callbacks = options[:callbacks]
|
29
|
-
build.run :
|
29
|
+
build.run :formatter => options[:formatter]
|
30
30
|
end
|
31
31
|
|
32
|
-
def output_status(success,
|
32
|
+
def output_status(success, formatter)
|
33
33
|
# Output status
|
34
34
|
if success
|
35
|
-
|
35
|
+
formatter.write { |w| w.success('Build SUCCEEDED!') }
|
36
36
|
else
|
37
37
|
raise Exceptions::BuildFailed
|
38
38
|
end
|
@@ -11,10 +11,10 @@ module Fudge
|
|
11
11
|
|
12
12
|
# Runs the task (by default running all other tasks in order)
|
13
13
|
def run(options={})
|
14
|
-
|
14
|
+
formatter = options[:formatter] || Fudge::Formatters::Simple.new
|
15
15
|
tasks.each do |t|
|
16
16
|
apply_directory_settings(t)
|
17
|
-
output_message(t,
|
17
|
+
output_message(t, formatter)
|
18
18
|
return unless t.run(options)
|
19
19
|
end
|
20
20
|
end
|
@@ -42,27 +42,20 @@ module Fudge
|
|
42
42
|
{}
|
43
43
|
end
|
44
44
|
|
45
|
-
def
|
46
|
-
t.
|
47
|
-
end
|
48
|
-
|
49
|
-
def output_message(t, output)
|
50
|
-
message = "#{running_coloured} #{task_name_coloured(t)} #{args_coloured(t)}"
|
51
|
-
output.puts message
|
45
|
+
def task_name(t)
|
46
|
+
t.class.name.to_s
|
52
47
|
end
|
53
48
|
|
54
|
-
def
|
55
|
-
|
49
|
+
def args_s(t)
|
50
|
+
t.respond_to?(:args) && t.args ? t.args.join(', ') : ''
|
56
51
|
end
|
57
52
|
|
58
|
-
def
|
59
|
-
|
53
|
+
def output_message(t, formatter)
|
54
|
+
formatter.write do |w|
|
55
|
+
w.info("Running task").notice(task_name(t)).notice(args_s(t))
|
56
|
+
end
|
60
57
|
end
|
61
58
|
|
62
|
-
def args_coloured(t)
|
63
|
-
args_text = join_arguments(t)
|
64
|
-
args_text.foreground(:yellow).bright
|
65
|
-
end
|
66
59
|
end
|
67
60
|
end
|
68
61
|
end
|
@@ -11,11 +11,12 @@ module Fudge
|
|
11
11
|
@pattern = pattern
|
12
12
|
end
|
13
13
|
|
14
|
+
# Run task
|
14
15
|
def run(options={})
|
15
|
-
|
16
|
+
formatter = options[:formatter] || Fudge::Formatters::Simple.new
|
16
17
|
directories.all? do |dir|
|
17
18
|
skip_directory?(dir) ||
|
18
|
-
WithDirectory.new(dir,
|
19
|
+
WithDirectory.new(dir, formatter).inside do
|
19
20
|
super
|
20
21
|
end
|
21
22
|
end
|
data/lib/fudge/tasks/flog.rb
CHANGED
@@ -66,11 +66,15 @@ module Fudge
|
|
66
66
|
end
|
67
67
|
|
68
68
|
def extract_scores(matches)
|
69
|
-
values =
|
69
|
+
values = top_3_lines(matches)
|
70
70
|
total, average, max = values.map(&:to_f)
|
71
71
|
[average, (max || 0.0), total]
|
72
72
|
end
|
73
73
|
|
74
|
+
def top_3_lines(matches)
|
75
|
+
extract_lines(matches).take(3).map(&:first)
|
76
|
+
end
|
77
|
+
|
74
78
|
def extract_lines(matches)
|
75
79
|
output = matches.string
|
76
80
|
output.scan(check_regex)
|
@@ -9,9 +9,10 @@ module Fudge
|
|
9
9
|
@directory = directory
|
10
10
|
end
|
11
11
|
|
12
|
+
# Run task
|
12
13
|
def run(options={})
|
13
|
-
|
14
|
-
WithDirectory.new(@directory,
|
14
|
+
formatter = options[:formatter] || Fudge::Formatters::Simple.new
|
15
|
+
WithDirectory.new(@directory, formatter).inside do
|
15
16
|
super
|
16
17
|
end
|
17
18
|
end
|
data/lib/fudge/tasks/shell.rb
CHANGED
@@ -12,30 +12,30 @@ module Fudge
|
|
12
12
|
#
|
13
13
|
# @param [Hash] options Any options to pass to the shell
|
14
14
|
def run(options={})
|
15
|
-
|
16
|
-
@output, success = run_command(cmd(options),
|
15
|
+
formatter = options[:formatter] || Fudge::Formatters::Simple.new
|
16
|
+
@output, success = run_command(cmd(options), formatter)
|
17
17
|
|
18
18
|
return false unless success
|
19
|
-
return check_for_output(
|
19
|
+
return check_for_output(formatter)
|
20
20
|
end
|
21
21
|
|
22
22
|
private
|
23
23
|
|
24
|
-
def run_command(cmd,
|
24
|
+
def run_command(cmd, formatter)
|
25
25
|
output = ''
|
26
26
|
IO.popen(cmd) do |f|
|
27
27
|
until f.eof?
|
28
28
|
bit = f.getc
|
29
29
|
output << bit
|
30
|
-
|
30
|
+
formatter.putc bit
|
31
31
|
end
|
32
32
|
end
|
33
33
|
|
34
34
|
[output, $?.success?]
|
35
35
|
end
|
36
36
|
|
37
|
-
def check_for_output(
|
38
|
-
checker = OutputChecker.new(check_for,
|
37
|
+
def check_for_output(formatter)
|
38
|
+
checker = OutputChecker.new(check_for, formatter)
|
39
39
|
checker.check(@output)
|
40
40
|
end
|
41
41
|
|
data/lib/fudge/version.rb
CHANGED
data/lib/fudge/with_directory.rb
CHANGED
@@ -1,10 +1,10 @@
|
|
1
1
|
#Directory helpers methods
|
2
2
|
class Fudge::WithDirectory
|
3
|
-
attr_reader :dir, :
|
3
|
+
attr_reader :dir, :formatter
|
4
4
|
|
5
|
-
def initialize(dir,
|
5
|
+
def initialize(dir, formatter)
|
6
6
|
@dir = dir
|
7
|
-
@
|
7
|
+
@formatter = formatter
|
8
8
|
end
|
9
9
|
|
10
10
|
# Executes a block inside the directory
|
@@ -18,7 +18,6 @@ class Fudge::WithDirectory
|
|
18
18
|
private
|
19
19
|
|
20
20
|
def output_message
|
21
|
-
|
22
|
-
output.puts message
|
21
|
+
formatter.write { |w| w.info('--> In directory').notice(dir) }
|
23
22
|
end
|
24
23
|
end
|
@@ -6,13 +6,14 @@ describe Fudge::Build do
|
|
6
6
|
describe "#run" do
|
7
7
|
|
8
8
|
context "when provided an output" do
|
9
|
-
let(:
|
9
|
+
let(:stdout) { StringIO.new }
|
10
|
+
let(:formatter) { Fudge::Formatters::Simple.new(stdout) }
|
10
11
|
|
11
|
-
it "prints messages to the
|
12
|
-
subject.run :
|
12
|
+
it "prints messages to the formatter instead of default" do
|
13
|
+
subject.run :formatter => formatter
|
13
14
|
|
14
|
-
|
15
|
-
|
15
|
+
stdout.string.should_not be_empty
|
16
|
+
stdout.string.should include "Skipping callbacks..."
|
16
17
|
end
|
17
18
|
|
18
19
|
context "when there are callback hooks" do
|
@@ -23,9 +24,9 @@ describe Fudge::Build do
|
|
23
24
|
subject.success_hooks << hook
|
24
25
|
end
|
25
26
|
|
26
|
-
it "
|
27
|
-
hook.should_receive(:run).with(:
|
28
|
-
subject.run :
|
27
|
+
it "passesformatter down to the hook run" do
|
28
|
+
hook.should_receive(:run).with(:formatter =>formatter).and_return(true)
|
29
|
+
subject.run :formatter => formatter
|
29
30
|
end
|
30
31
|
end
|
31
32
|
end
|
@@ -0,0 +1,68 @@
|
|
1
|
+
require 'spec_helper'
|
2
|
+
|
3
|
+
describe Fudge::Formatters::Simple do
|
4
|
+
let(:stdout) { StringIO.new }
|
5
|
+
|
6
|
+
subject { described_class.new(stdout) }
|
7
|
+
|
8
|
+
describe :error do
|
9
|
+
it "returns message in RED" do
|
10
|
+
string = subject.error "a message"
|
11
|
+
string.should == "\e[31ma message\e[0m"
|
12
|
+
end
|
13
|
+
end
|
14
|
+
|
15
|
+
describe :success do
|
16
|
+
it "returns message in BRIGHT GREEN" do
|
17
|
+
string = subject.success "a message"
|
18
|
+
string.should == "\e[1m\e[32ma message\e[0m"
|
19
|
+
end
|
20
|
+
end
|
21
|
+
|
22
|
+
describe :info do
|
23
|
+
it "returns message in CYAN" do
|
24
|
+
string = subject.info "a message"
|
25
|
+
string.should == "\e[36ma message\e[0m"
|
26
|
+
end
|
27
|
+
end
|
28
|
+
|
29
|
+
describe :notice do
|
30
|
+
it "returns message in YELLOW" do
|
31
|
+
string = subject.notice "a message"
|
32
|
+
string.should == "\e[33ma message\e[0m"
|
33
|
+
end
|
34
|
+
end
|
35
|
+
|
36
|
+
describe :normal do
|
37
|
+
it "returns unchanged message" do
|
38
|
+
string = subject.normal "a message"
|
39
|
+
string.should == "a message"
|
40
|
+
end
|
41
|
+
end
|
42
|
+
|
43
|
+
describe :puts do
|
44
|
+
it "outputs message on stdout" do
|
45
|
+
subject.puts "a message"
|
46
|
+
stdout.string.should == "a message" + "\n"
|
47
|
+
end
|
48
|
+
end
|
49
|
+
|
50
|
+
describe :write do
|
51
|
+
it "supports chaining types to stdout" do
|
52
|
+
subject.write do |w|
|
53
|
+
w.normal('normal').
|
54
|
+
notice('notice').
|
55
|
+
info('info').
|
56
|
+
success('success').
|
57
|
+
error('error')
|
58
|
+
end
|
59
|
+
|
60
|
+
stdout.string.should == 'normal' + ' ' +
|
61
|
+
"\e[33mnotice\e[0m" + ' ' +
|
62
|
+
"\e[36minfo\e[0m" + ' ' +
|
63
|
+
"\e[1m\e[32msuccess\e[0m" + ' ' +
|
64
|
+
"\e[31merror\e[0m" + "\n"
|
65
|
+
|
66
|
+
end
|
67
|
+
end
|
68
|
+
end
|
@@ -1,10 +1,11 @@
|
|
1
1
|
require 'spec_helper'
|
2
2
|
|
3
3
|
describe Fudge::OutputChecker do
|
4
|
-
let
|
4
|
+
let(:output_io) { StringIO.new }
|
5
|
+
let(:formatter) { Fudge::Formatters::Simple.new(output_io) }
|
5
6
|
|
6
7
|
describe "#check" do
|
7
|
-
subject { described_class.new
|
8
|
+
subject { described_class.new(/foo/, formatter) }
|
8
9
|
|
9
10
|
context "when the output does not match the check" do
|
10
11
|
it 'send a mismatch message to the output io' do
|
@@ -19,7 +20,7 @@ describe Fudge::OutputChecker do
|
|
19
20
|
false
|
20
21
|
end
|
21
22
|
end
|
22
|
-
subject { described_class.new [/foo/, callable],
|
23
|
+
subject { described_class.new [/foo/, callable], formatter }
|
23
24
|
|
24
25
|
it 'sends error mesage to the output io' do
|
25
26
|
subject.check('foo')
|
@@ -22,22 +22,23 @@ describe Fudge::Runner do
|
|
22
22
|
expect { subject.run_build }.to raise_error Fudge::Exceptions::BuildFailed
|
23
23
|
end
|
24
24
|
|
25
|
-
context "when an
|
26
|
-
let(:
|
25
|
+
context "when an formatter is provided" do
|
26
|
+
let(:stdout) { StringIO.new }
|
27
|
+
let(:formatter) { Fudge::Formatters::Simple.new(stdout) }
|
27
28
|
|
28
29
|
before :each do
|
29
|
-
subject.run_build 'default', :
|
30
|
+
subject.run_build 'default', :formatter => formatter
|
30
31
|
end
|
31
32
|
|
32
|
-
it "puts all output to given
|
33
|
-
|
34
|
-
|
35
|
-
|
36
|
-
|
33
|
+
it "puts all output to given formatter instead stdout" do
|
34
|
+
stdout.string.should_not be_empty
|
35
|
+
stdout.string.should include "Running build"
|
36
|
+
stdout.string.should include "default"
|
37
|
+
stdout.string.should include "Build SUCCEEDED!"
|
37
38
|
end
|
38
39
|
|
39
|
-
it "runs the task passing the
|
40
|
-
DummyTask.run_options.should == {:
|
40
|
+
it "runs the task passing the formatter down" do
|
41
|
+
DummyTask.run_options.should == {:formatter => formatter}
|
41
42
|
end
|
42
43
|
end
|
43
44
|
end
|
@@ -58,13 +58,14 @@ describe Fudge::Tasks::CompositeTask do
|
|
58
58
|
|
59
59
|
context "when provided an output" do
|
60
60
|
let(:output) { StringIO.new }
|
61
|
+
let(:formatter) { Fudge::Formatters::Simple.new(output) }
|
61
62
|
|
62
63
|
before :each do
|
63
64
|
Fudge::Tasks::Shell.any_instance.stub(:run)
|
64
65
|
end
|
65
66
|
|
66
67
|
it "prints messages to the output instead of stdout" do
|
67
|
-
subject.run :
|
68
|
+
subject.run :formatter => formatter
|
68
69
|
|
69
70
|
output.string.should_not be_empty
|
70
71
|
output.string.should match /Running task.*shell.*foo, bar/
|
@@ -18,23 +18,24 @@ describe Fudge::Tasks::Shell do
|
|
18
18
|
described_class.new(:ls).run.should be_true
|
19
19
|
end
|
20
20
|
|
21
|
-
context "when there is an
|
21
|
+
context "when there is an formatter passed to run" do
|
22
22
|
|
23
23
|
let(:output) { StringIO.new }
|
24
|
+
let(:formatter) { Fudge::Formatters::Simple.new(output) }
|
24
25
|
subject { described_class.new('echo foo') }
|
25
26
|
|
26
|
-
it "prints messages to the
|
27
|
+
it "prints messages to the formatter instead of default" do
|
27
28
|
|
28
|
-
subject.run :
|
29
|
+
subject.run :formatter => formatter
|
29
30
|
|
30
31
|
output.string.should_not be_empty
|
31
32
|
output.string.should include "foo"
|
32
33
|
end
|
33
34
|
|
34
|
-
it 'uses the
|
35
|
+
it 'uses the formatter when reporting checks on build result' do
|
35
36
|
checker = double.as_null_object
|
36
|
-
Fudge::OutputChecker.should_receive(:new).with(anything,
|
37
|
-
subject.run :
|
37
|
+
Fudge::OutputChecker.should_receive(:new).with(anything, formatter) { checker }
|
38
|
+
subject.run :formatter => formatter
|
38
39
|
end
|
39
40
|
|
40
41
|
end
|
@@ -3,6 +3,7 @@ require 'spec_helper'
|
|
3
3
|
|
4
4
|
describe Fudge::Tasks::SubProcess do
|
5
5
|
let(:output) { StringIO.new }
|
6
|
+
let(:formatter) { Fudge::Formatters::Simple.new(output) }
|
6
7
|
|
7
8
|
describe :run do
|
8
9
|
it "takes a command and runs it" do
|
@@ -26,7 +27,7 @@ describe Fudge::Tasks::SubProcess do
|
|
26
27
|
it "passes the variables to the sub-process" do
|
27
28
|
process = described_class.new(%(ruby -e "puts ENV['PATH'];puts ENV['FOO']"), environment: { 'FOO' => 'bar' })
|
28
29
|
|
29
|
-
process.run(
|
30
|
+
process.run(formatter: formatter)
|
30
31
|
|
31
32
|
expect(output.string).to eq "#{ENV['PATH']}\nbar\n"
|
32
33
|
end
|
@@ -36,7 +37,7 @@ describe Fudge::Tasks::SubProcess do
|
|
36
37
|
it "passes the variables to the sub-process" do
|
37
38
|
process = described_class.new(%(ruby -e "puts ENV['PATH'];puts ENV['FOO']"))
|
38
39
|
|
39
|
-
process.run(
|
40
|
+
process.run(formatter: formatter, environment: { 'FOO' => 'bar' })
|
40
41
|
|
41
42
|
expect(output.string).to eq "#{ENV['PATH']}\nbar\n"
|
42
43
|
end
|
@@ -47,7 +48,7 @@ describe Fudge::Tasks::SubProcess do
|
|
47
48
|
process = described_class.new(%(ruby -e "puts ENV['FOO'];puts ENV['BAZ']"),
|
48
49
|
environment: { 'FOO' => 'bar', 'BAZ' => 'quux' })
|
49
50
|
|
50
|
-
process.run(
|
51
|
+
process.run(formatter: formatter, environment: { 'FOO' => 'codfanglers' })
|
51
52
|
|
52
53
|
expect(output.string).to eq "codfanglers\nquux\n"
|
53
54
|
end
|
@@ -58,7 +59,7 @@ describe Fudge::Tasks::SubProcess do
|
|
58
59
|
it "does not make that variable available to the sub-process" do
|
59
60
|
process = described_class.new(%(ruby -e "puts ENV['FOO']"))
|
60
61
|
|
61
|
-
process.run(
|
62
|
+
process.run(formatter: formatter)
|
62
63
|
|
63
64
|
expect(output.string).to eq "\n"
|
64
65
|
end
|
@@ -71,7 +72,7 @@ describe Fudge::Tasks::SubProcess do
|
|
71
72
|
environment: { 'FOO' => 'bar' },
|
72
73
|
spawn_options: { unsetenv_others: true }) # Should clear environment variables
|
73
74
|
|
74
|
-
process.run(
|
75
|
+
process.run(formatter: formatter)
|
75
76
|
|
76
77
|
expect(output.string).to match /\A(nil)?\nbar\n\z/
|
77
78
|
end
|
@@ -82,7 +83,7 @@ describe Fudge::Tasks::SubProcess do
|
|
82
83
|
process = described_class.new(%(ruby -e "puts ENV['PATH'];puts ENV['FOO']"),
|
83
84
|
environment: { 'FOO' => 'bar' })
|
84
85
|
|
85
|
-
process.run(
|
86
|
+
process.run(formatter: formatter, spawn_options: { unsetenv_others: true })
|
86
87
|
|
87
88
|
expect(output.string).to match /\A(nil)?\nbar\n\z/
|
88
89
|
end
|
@@ -94,7 +95,7 @@ describe Fudge::Tasks::SubProcess do
|
|
94
95
|
environment: { 'FOO' => 'bar' },
|
95
96
|
spawn_options: { unsetenv_others: true }) # Clear environment variables
|
96
97
|
|
97
|
-
process.run(
|
98
|
+
process.run(formatter: formatter, spawn_options: { unsetenv_others: false }) # Actually, don't!
|
98
99
|
|
99
100
|
expect(output.string).to eq "#{ENV['PATH']}\nbar\n"
|
100
101
|
end
|
@@ -2,8 +2,9 @@ require 'spec_helper'
|
|
2
2
|
|
3
3
|
describe Fudge::WithDirectory do
|
4
4
|
let(:output) { StringIO.new }
|
5
|
+
let(:formatter) { Fudge::Formatters::Simple.new(output) }
|
5
6
|
|
6
|
-
subject { described_class.new '/some/dir',
|
7
|
+
subject { described_class.new '/some/dir', formatter }
|
7
8
|
|
8
9
|
describe "#inside" do
|
9
10
|
it "outputs the directory change, yielding the block" do
|
metadata
CHANGED
@@ -1,318 +1,265 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: fudge
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.
|
5
|
-
prerelease:
|
4
|
+
version: 0.4.0
|
6
5
|
platform: ruby
|
7
6
|
authors:
|
8
7
|
- Sage One team
|
9
8
|
autorequire:
|
10
9
|
bindir: bin
|
11
10
|
cert_chain: []
|
12
|
-
date: 2014-03-
|
11
|
+
date: 2014-03-23 00:00:00.000000000 Z
|
13
12
|
dependencies:
|
14
13
|
- !ruby/object:Gem::Dependency
|
15
14
|
name: thor
|
16
15
|
requirement: !ruby/object:Gem::Requirement
|
17
|
-
none: false
|
18
16
|
requirements:
|
19
|
-
- -
|
17
|
+
- - ">="
|
20
18
|
- !ruby/object:Gem::Version
|
21
19
|
version: '0'
|
22
20
|
type: :runtime
|
23
21
|
prerelease: false
|
24
22
|
version_requirements: !ruby/object:Gem::Requirement
|
25
|
-
none: false
|
26
23
|
requirements:
|
27
|
-
- -
|
24
|
+
- - ">="
|
28
25
|
- !ruby/object:Gem::Version
|
29
26
|
version: '0'
|
30
|
-
- !ruby/object:Gem::Dependency
|
31
|
-
name: rainbow
|
32
|
-
requirement: !ruby/object:Gem::Requirement
|
33
|
-
none: false
|
34
|
-
requirements:
|
35
|
-
- - ~>
|
36
|
-
- !ruby/object:Gem::Version
|
37
|
-
version: 1.1.4
|
38
|
-
type: :runtime
|
39
|
-
prerelease: false
|
40
|
-
version_requirements: !ruby/object:Gem::Requirement
|
41
|
-
none: false
|
42
|
-
requirements:
|
43
|
-
- - ~>
|
44
|
-
- !ruby/object:Gem::Version
|
45
|
-
version: 1.1.4
|
46
27
|
- !ruby/object:Gem::Dependency
|
47
28
|
name: activesupport
|
48
29
|
requirement: !ruby/object:Gem::Requirement
|
49
|
-
none: false
|
50
30
|
requirements:
|
51
|
-
- -
|
31
|
+
- - ">="
|
52
32
|
- !ruby/object:Gem::Version
|
53
33
|
version: '0'
|
54
34
|
type: :runtime
|
55
35
|
prerelease: false
|
56
36
|
version_requirements: !ruby/object:Gem::Requirement
|
57
|
-
none: false
|
58
37
|
requirements:
|
59
|
-
- -
|
38
|
+
- - ">="
|
60
39
|
- !ruby/object:Gem::Version
|
61
40
|
version: '0'
|
62
41
|
- !ruby/object:Gem::Dependency
|
63
42
|
name: json
|
64
43
|
requirement: !ruby/object:Gem::Requirement
|
65
|
-
none: false
|
66
44
|
requirements:
|
67
|
-
- -
|
45
|
+
- - ">="
|
68
46
|
- !ruby/object:Gem::Version
|
69
|
-
version:
|
47
|
+
version: '0'
|
70
48
|
type: :runtime
|
71
49
|
prerelease: false
|
72
50
|
version_requirements: !ruby/object:Gem::Requirement
|
73
|
-
none: false
|
74
51
|
requirements:
|
75
|
-
- -
|
52
|
+
- - ">="
|
76
53
|
- !ruby/object:Gem::Version
|
77
|
-
version:
|
54
|
+
version: '0'
|
78
55
|
- !ruby/object:Gem::Dependency
|
79
56
|
name: redcarpet
|
80
57
|
requirement: !ruby/object:Gem::Requirement
|
81
|
-
none: false
|
82
58
|
requirements:
|
83
|
-
- -
|
59
|
+
- - ">="
|
84
60
|
- !ruby/object:Gem::Version
|
85
61
|
version: '0'
|
86
62
|
type: :development
|
87
63
|
prerelease: false
|
88
64
|
version_requirements: !ruby/object:Gem::Requirement
|
89
|
-
none: false
|
90
65
|
requirements:
|
91
|
-
- -
|
66
|
+
- - ">="
|
92
67
|
- !ruby/object:Gem::Version
|
93
68
|
version: '0'
|
94
69
|
- !ruby/object:Gem::Dependency
|
95
70
|
name: rspec
|
96
71
|
requirement: !ruby/object:Gem::Requirement
|
97
|
-
none: false
|
98
72
|
requirements:
|
99
|
-
- -
|
73
|
+
- - ">="
|
100
74
|
- !ruby/object:Gem::Version
|
101
75
|
version: 2.8.0
|
102
76
|
type: :development
|
103
77
|
prerelease: false
|
104
78
|
version_requirements: !ruby/object:Gem::Requirement
|
105
|
-
none: false
|
106
79
|
requirements:
|
107
|
-
- -
|
80
|
+
- - ">="
|
108
81
|
- !ruby/object:Gem::Version
|
109
82
|
version: 2.8.0
|
110
83
|
- !ruby/object:Gem::Dependency
|
111
84
|
name: guard-rspec
|
112
85
|
requirement: !ruby/object:Gem::Requirement
|
113
|
-
none: false
|
114
86
|
requirements:
|
115
|
-
- -
|
87
|
+
- - ">="
|
116
88
|
- !ruby/object:Gem::Version
|
117
89
|
version: '0'
|
118
90
|
type: :development
|
119
91
|
prerelease: false
|
120
92
|
version_requirements: !ruby/object:Gem::Requirement
|
121
|
-
none: false
|
122
93
|
requirements:
|
123
|
-
- -
|
94
|
+
- - ">="
|
124
95
|
- !ruby/object:Gem::Version
|
125
96
|
version: '0'
|
126
97
|
- !ruby/object:Gem::Dependency
|
127
98
|
name: rb-fsevent
|
128
99
|
requirement: !ruby/object:Gem::Requirement
|
129
|
-
none: false
|
130
100
|
requirements:
|
131
|
-
- -
|
101
|
+
- - ">="
|
132
102
|
- !ruby/object:Gem::Version
|
133
103
|
version: '0'
|
134
104
|
type: :development
|
135
105
|
prerelease: false
|
136
106
|
version_requirements: !ruby/object:Gem::Requirement
|
137
|
-
none: false
|
138
107
|
requirements:
|
139
|
-
- -
|
108
|
+
- - ">="
|
140
109
|
- !ruby/object:Gem::Version
|
141
110
|
version: '0'
|
142
111
|
- !ruby/object:Gem::Dependency
|
143
112
|
name: yard
|
144
113
|
requirement: !ruby/object:Gem::Requirement
|
145
|
-
none: false
|
146
114
|
requirements:
|
147
|
-
- -
|
115
|
+
- - ">="
|
148
116
|
- !ruby/object:Gem::Version
|
149
117
|
version: '0'
|
150
118
|
type: :development
|
151
119
|
prerelease: false
|
152
120
|
version_requirements: !ruby/object:Gem::Requirement
|
153
|
-
none: false
|
154
121
|
requirements:
|
155
|
-
- -
|
122
|
+
- - ">="
|
156
123
|
- !ruby/object:Gem::Version
|
157
124
|
version: '0'
|
158
125
|
- !ruby/object:Gem::Dependency
|
159
126
|
name: cane
|
160
127
|
requirement: !ruby/object:Gem::Requirement
|
161
|
-
none: false
|
162
128
|
requirements:
|
163
|
-
- -
|
129
|
+
- - ">="
|
164
130
|
- !ruby/object:Gem::Version
|
165
131
|
version: '0'
|
166
132
|
type: :development
|
167
133
|
prerelease: false
|
168
134
|
version_requirements: !ruby/object:Gem::Requirement
|
169
|
-
none: false
|
170
135
|
requirements:
|
171
|
-
- -
|
136
|
+
- - ">="
|
172
137
|
- !ruby/object:Gem::Version
|
173
138
|
version: '0'
|
174
139
|
- !ruby/object:Gem::Dependency
|
175
140
|
name: flog
|
176
141
|
requirement: !ruby/object:Gem::Requirement
|
177
|
-
none: false
|
178
142
|
requirements:
|
179
|
-
- -
|
143
|
+
- - ">="
|
180
144
|
- !ruby/object:Gem::Version
|
181
145
|
version: '0'
|
182
146
|
type: :development
|
183
147
|
prerelease: false
|
184
148
|
version_requirements: !ruby/object:Gem::Requirement
|
185
|
-
none: false
|
186
149
|
requirements:
|
187
|
-
- -
|
150
|
+
- - ">="
|
188
151
|
- !ruby/object:Gem::Version
|
189
152
|
version: '0'
|
190
153
|
- !ruby/object:Gem::Dependency
|
191
154
|
name: flay
|
192
155
|
requirement: !ruby/object:Gem::Requirement
|
193
|
-
none: false
|
194
156
|
requirements:
|
195
|
-
- -
|
157
|
+
- - ">="
|
196
158
|
- !ruby/object:Gem::Version
|
197
159
|
version: '0'
|
198
160
|
type: :development
|
199
161
|
prerelease: false
|
200
162
|
version_requirements: !ruby/object:Gem::Requirement
|
201
|
-
none: false
|
202
163
|
requirements:
|
203
|
-
- -
|
164
|
+
- - ">="
|
204
165
|
- !ruby/object:Gem::Version
|
205
166
|
version: '0'
|
206
167
|
- !ruby/object:Gem::Dependency
|
207
168
|
name: ruby2ruby
|
208
169
|
requirement: !ruby/object:Gem::Requirement
|
209
|
-
none: false
|
210
170
|
requirements:
|
211
|
-
- -
|
171
|
+
- - ">="
|
212
172
|
- !ruby/object:Gem::Version
|
213
173
|
version: '0'
|
214
174
|
type: :development
|
215
175
|
prerelease: false
|
216
176
|
version_requirements: !ruby/object:Gem::Requirement
|
217
|
-
none: false
|
218
177
|
requirements:
|
219
|
-
- -
|
178
|
+
- - ">="
|
220
179
|
- !ruby/object:Gem::Version
|
221
180
|
version: '0'
|
222
181
|
- !ruby/object:Gem::Dependency
|
223
182
|
name: RedCloth
|
224
183
|
requirement: !ruby/object:Gem::Requirement
|
225
|
-
none: false
|
226
184
|
requirements:
|
227
|
-
- -
|
185
|
+
- - ">="
|
228
186
|
- !ruby/object:Gem::Version
|
229
187
|
version: '0'
|
230
188
|
type: :development
|
231
189
|
prerelease: false
|
232
190
|
version_requirements: !ruby/object:Gem::Requirement
|
233
|
-
none: false
|
234
191
|
requirements:
|
235
|
-
- -
|
192
|
+
- - ">="
|
236
193
|
- !ruby/object:Gem::Version
|
237
194
|
version: '0'
|
238
195
|
- !ruby/object:Gem::Dependency
|
239
196
|
name: simplecov
|
240
197
|
requirement: !ruby/object:Gem::Requirement
|
241
|
-
none: false
|
242
198
|
requirements:
|
243
|
-
- -
|
199
|
+
- - ">="
|
244
200
|
- !ruby/object:Gem::Version
|
245
201
|
version: '0'
|
246
202
|
type: :development
|
247
203
|
prerelease: false
|
248
204
|
version_requirements: !ruby/object:Gem::Requirement
|
249
|
-
none: false
|
250
205
|
requirements:
|
251
|
-
- -
|
206
|
+
- - ">="
|
252
207
|
- !ruby/object:Gem::Version
|
253
208
|
version: '0'
|
254
209
|
- !ruby/object:Gem::Dependency
|
255
210
|
name: rb-inotify
|
256
211
|
requirement: !ruby/object:Gem::Requirement
|
257
|
-
none: false
|
258
212
|
requirements:
|
259
|
-
- -
|
213
|
+
- - ">="
|
260
214
|
- !ruby/object:Gem::Version
|
261
215
|
version: '0'
|
262
216
|
type: :development
|
263
217
|
prerelease: false
|
264
218
|
version_requirements: !ruby/object:Gem::Requirement
|
265
|
-
none: false
|
266
219
|
requirements:
|
267
|
-
- -
|
220
|
+
- - ">="
|
268
221
|
- !ruby/object:Gem::Version
|
269
222
|
version: '0'
|
270
223
|
- !ruby/object:Gem::Dependency
|
271
224
|
name: libnotify
|
272
225
|
requirement: !ruby/object:Gem::Requirement
|
273
|
-
none: false
|
274
226
|
requirements:
|
275
|
-
- -
|
227
|
+
- - ">="
|
276
228
|
- !ruby/object:Gem::Version
|
277
229
|
version: '0'
|
278
230
|
type: :development
|
279
231
|
prerelease: false
|
280
232
|
version_requirements: !ruby/object:Gem::Requirement
|
281
|
-
none: false
|
282
233
|
requirements:
|
283
|
-
- -
|
234
|
+
- - ">="
|
284
235
|
- !ruby/object:Gem::Version
|
285
236
|
version: '0'
|
286
237
|
- !ruby/object:Gem::Dependency
|
287
238
|
name: pry
|
288
239
|
requirement: !ruby/object:Gem::Requirement
|
289
|
-
none: false
|
290
240
|
requirements:
|
291
|
-
- -
|
241
|
+
- - ">="
|
292
242
|
- !ruby/object:Gem::Version
|
293
243
|
version: '0'
|
294
244
|
type: :development
|
295
245
|
prerelease: false
|
296
246
|
version_requirements: !ruby/object:Gem::Requirement
|
297
|
-
none: false
|
298
247
|
requirements:
|
299
|
-
- -
|
248
|
+
- - ">="
|
300
249
|
- !ruby/object:Gem::Version
|
301
250
|
version: '0'
|
302
251
|
- !ruby/object:Gem::Dependency
|
303
252
|
name: rake
|
304
253
|
requirement: !ruby/object:Gem::Requirement
|
305
|
-
none: false
|
306
254
|
requirements:
|
307
|
-
- -
|
255
|
+
- - ">="
|
308
256
|
- !ruby/object:Gem::Version
|
309
257
|
version: '0'
|
310
258
|
type: :development
|
311
259
|
prerelease: false
|
312
260
|
version_requirements: !ruby/object:Gem::Requirement
|
313
|
-
none: false
|
314
261
|
requirements:
|
315
|
-
- -
|
262
|
+
- - ">="
|
316
263
|
- !ruby/object:Gem::Version
|
317
264
|
version: '0'
|
318
265
|
description: Fudge Continuous Integration Server
|
@@ -322,122 +269,119 @@ executables:
|
|
322
269
|
extensions: []
|
323
270
|
extra_rdoc_files: []
|
324
271
|
files:
|
272
|
+
- bin/fudge
|
325
273
|
- lib/fudge.rb
|
326
|
-
- lib/fudge/cli.rb
|
327
|
-
- lib/fudge/output_checker.rb
|
328
274
|
- lib/fudge/build.rb
|
329
|
-
- lib/fudge/
|
275
|
+
- lib/fudge/cli.rb
|
276
|
+
- lib/fudge/description.rb
|
277
|
+
- lib/fudge/exceptions.rb
|
278
|
+
- lib/fudge/file_finder.rb
|
279
|
+
- lib/fudge/formatters.rb
|
280
|
+
- lib/fudge/formatters/simple.rb
|
281
|
+
- lib/fudge/generator.rb
|
330
282
|
- lib/fudge/helpers.rb
|
331
|
-
- lib/fudge/
|
283
|
+
- lib/fudge/helpers/bundle_aware.rb
|
284
|
+
- lib/fudge/output_checker.rb
|
285
|
+
- lib/fudge/parser.rb
|
286
|
+
- lib/fudge/rspec/matchers.rb
|
287
|
+
- lib/fudge/runner.rb
|
288
|
+
- lib/fudge/task_dsl.rb
|
289
|
+
- lib/fudge/tasks.rb
|
332
290
|
- lib/fudge/tasks/brakeman.rb
|
291
|
+
- lib/fudge/tasks/cane.rb
|
292
|
+
- lib/fudge/tasks/clean_bundler_env.rb
|
293
|
+
- lib/fudge/tasks/composite_task.rb
|
294
|
+
- lib/fudge/tasks/each_directory.rb
|
295
|
+
- lib/fudge/tasks/flay.rb
|
296
|
+
- lib/fudge/tasks/flog.rb
|
297
|
+
- lib/fudge/tasks/in_directory.rb
|
298
|
+
- lib/fudge/tasks/rake.rb
|
333
299
|
- lib/fudge/tasks/rspec.rb
|
334
300
|
- lib/fudge/tasks/shell.rb
|
335
|
-
- lib/fudge/tasks/each_directory.rb
|
336
301
|
- lib/fudge/tasks/sub_process.rb
|
337
|
-
- lib/fudge/tasks/clean_bundler_env.rb
|
338
|
-
- lib/fudge/tasks/flog.rb
|
339
|
-
- lib/fudge/tasks/yard.rb
|
340
302
|
- lib/fudge/tasks/task.rb
|
341
|
-
- lib/fudge/tasks/
|
342
|
-
- lib/fudge/
|
343
|
-
- lib/fudge/tasks/composite_task.rb
|
344
|
-
- lib/fudge/tasks/in_directory.rb
|
345
|
-
- lib/fudge/runner.rb
|
346
|
-
- lib/fudge/parser.rb
|
347
|
-
- lib/fudge/tasks.rb
|
348
|
-
- lib/fudge/generator.rb
|
349
|
-
- lib/fudge/description.rb
|
350
|
-
- lib/fudge/helpers/bundle_aware.rb
|
351
|
-
- lib/fudge/file_finder.rb
|
352
|
-
- lib/fudge/exceptions.rb
|
353
|
-
- lib/fudge/rspec/matchers.rb
|
303
|
+
- lib/fudge/tasks/yard.rb
|
304
|
+
- lib/fudge/version.rb
|
354
305
|
- lib/fudge/with_directory.rb
|
355
|
-
- lib/fudge/task_dsl.rb
|
356
|
-
- spec/support/dummy_task.rb
|
357
|
-
- spec/support/output.rb
|
358
|
-
- spec/support/tmpdir.rb
|
359
|
-
- spec/spec_helper.rb
|
360
|
-
- spec/lib/fudge/exceptions_spec.rb
|
361
306
|
- spec/lib/fudge/build_spec.rb
|
362
|
-
- spec/lib/fudge/
|
307
|
+
- spec/lib/fudge/cli_spec.rb
|
308
|
+
- spec/lib/fudge/description_spec.rb
|
309
|
+
- spec/lib/fudge/exceptions_spec.rb
|
310
|
+
- spec/lib/fudge/formatters/simple_spec.rb
|
311
|
+
- spec/lib/fudge/output_checker_spec.rb
|
363
312
|
- spec/lib/fudge/parser_spec.rb
|
364
|
-
- spec/lib/fudge/
|
313
|
+
- spec/lib/fudge/runner_spec.rb
|
314
|
+
- spec/lib/fudge/tasks/brakeman_spec.rb
|
365
315
|
- spec/lib/fudge/tasks/bundler_spec.rb
|
366
|
-
- spec/lib/fudge/tasks/flog_spec.rb
|
367
|
-
- spec/lib/fudge/tasks/each_directory_spec.rb
|
368
316
|
- spec/lib/fudge/tasks/cane_spec.rb
|
369
|
-
- spec/lib/fudge/tasks/yard_spec.rb
|
370
|
-
- spec/lib/fudge/tasks/shell_spec.rb
|
371
|
-
- spec/lib/fudge/tasks/sub_process_spec.rb
|
372
|
-
- spec/lib/fudge/tasks/brakeman_spec.rb
|
373
317
|
- spec/lib/fudge/tasks/composite_task_spec.rb
|
318
|
+
- spec/lib/fudge/tasks/each_directory_spec.rb
|
319
|
+
- spec/lib/fudge/tasks/flay_spec.rb
|
320
|
+
- spec/lib/fudge/tasks/flog_spec.rb
|
321
|
+
- spec/lib/fudge/tasks/in_directory_spec.rb
|
322
|
+
- spec/lib/fudge/tasks/rake_spec.rb
|
374
323
|
- spec/lib/fudge/tasks/rspec_spec.rb
|
324
|
+
- spec/lib/fudge/tasks/shell_spec.rb
|
325
|
+
- spec/lib/fudge/tasks/sub_process_spec.rb
|
375
326
|
- spec/lib/fudge/tasks/task_spec.rb
|
376
|
-
- spec/lib/fudge/tasks/
|
377
|
-
- spec/lib/fudge/tasks/in_directory_spec.rb
|
378
|
-
- spec/lib/fudge/cli_spec.rb
|
327
|
+
- spec/lib/fudge/tasks/yard_spec.rb
|
379
328
|
- spec/lib/fudge/tasks_spec.rb
|
380
329
|
- spec/lib/fudge/with_directory_spec.rb
|
381
|
-
- spec/
|
382
|
-
- spec/
|
383
|
-
-
|
330
|
+
- spec/spec_helper.rb
|
331
|
+
- spec/support/dummy_task.rb
|
332
|
+
- spec/support/output.rb
|
333
|
+
- spec/support/tmpdir.rb
|
384
334
|
homepage: http://github.com/Sage/fudge
|
385
335
|
licenses:
|
386
336
|
- MIT
|
337
|
+
metadata: {}
|
387
338
|
post_install_message:
|
388
339
|
rdoc_options: []
|
389
340
|
require_paths:
|
390
341
|
- lib
|
391
342
|
required_ruby_version: !ruby/object:Gem::Requirement
|
392
|
-
none: false
|
393
343
|
requirements:
|
394
|
-
- -
|
344
|
+
- - ">="
|
395
345
|
- !ruby/object:Gem::Version
|
396
346
|
version: '0'
|
397
|
-
segments:
|
398
|
-
- 0
|
399
|
-
hash: -792395080375115495
|
400
347
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
401
|
-
none: false
|
402
348
|
requirements:
|
403
|
-
- -
|
349
|
+
- - ">="
|
404
350
|
- !ruby/object:Gem::Version
|
405
351
|
version: '0'
|
406
|
-
segments:
|
407
|
-
- 0
|
408
|
-
hash: -792395080375115495
|
409
352
|
requirements: []
|
410
353
|
rubyforge_project:
|
411
|
-
rubygems_version:
|
354
|
+
rubygems_version: 2.2.2
|
412
355
|
signing_key:
|
413
|
-
specification_version:
|
356
|
+
specification_version: 4
|
414
357
|
summary: Fudge CI Server
|
415
358
|
test_files:
|
416
|
-
- spec/support/dummy_task.rb
|
417
359
|
- spec/support/output.rb
|
418
360
|
- spec/support/tmpdir.rb
|
419
|
-
- spec/
|
420
|
-
- spec/lib/fudge/
|
421
|
-
- spec/lib/fudge/
|
422
|
-
- spec/lib/fudge/
|
423
|
-
- spec/lib/fudge/
|
424
|
-
- spec/lib/fudge/tasks/
|
425
|
-
- spec/lib/fudge/tasks/bundler_spec.rb
|
426
|
-
- spec/lib/fudge/tasks/flog_spec.rb
|
427
|
-
- spec/lib/fudge/tasks/each_directory_spec.rb
|
361
|
+
- spec/support/dummy_task.rb
|
362
|
+
- spec/lib/fudge/cli_spec.rb
|
363
|
+
- spec/lib/fudge/formatters/simple_spec.rb
|
364
|
+
- spec/lib/fudge/tasks_spec.rb
|
365
|
+
- spec/lib/fudge/tasks/rake_spec.rb
|
366
|
+
- spec/lib/fudge/tasks/task_spec.rb
|
428
367
|
- spec/lib/fudge/tasks/cane_spec.rb
|
429
|
-
- spec/lib/fudge/tasks/yard_spec.rb
|
430
|
-
- spec/lib/fudge/tasks/shell_spec.rb
|
431
|
-
- spec/lib/fudge/tasks/sub_process_spec.rb
|
432
368
|
- spec/lib/fudge/tasks/brakeman_spec.rb
|
369
|
+
- spec/lib/fudge/tasks/shell_spec.rb
|
433
370
|
- spec/lib/fudge/tasks/composite_task_spec.rb
|
371
|
+
- spec/lib/fudge/tasks/each_directory_spec.rb
|
372
|
+
- spec/lib/fudge/tasks/yard_spec.rb
|
373
|
+
- spec/lib/fudge/tasks/flog_spec.rb
|
434
374
|
- spec/lib/fudge/tasks/rspec_spec.rb
|
435
|
-
- spec/lib/fudge/tasks/task_spec.rb
|
436
|
-
- spec/lib/fudge/tasks/rake_spec.rb
|
437
375
|
- spec/lib/fudge/tasks/in_directory_spec.rb
|
438
|
-
- spec/lib/fudge/
|
439
|
-
- spec/lib/fudge/
|
376
|
+
- spec/lib/fudge/tasks/bundler_spec.rb
|
377
|
+
- spec/lib/fudge/tasks/flay_spec.rb
|
378
|
+
- spec/lib/fudge/tasks/sub_process_spec.rb
|
379
|
+
- spec/lib/fudge/build_spec.rb
|
380
|
+
- spec/lib/fudge/description_spec.rb
|
381
|
+
- spec/lib/fudge/parser_spec.rb
|
382
|
+
- spec/lib/fudge/exceptions_spec.rb
|
440
383
|
- spec/lib/fudge/with_directory_spec.rb
|
441
384
|
- spec/lib/fudge/output_checker_spec.rb
|
442
|
-
- spec/lib/fudge/
|
385
|
+
- spec/lib/fudge/runner_spec.rb
|
386
|
+
- spec/spec_helper.rb
|
443
387
|
has_rdoc:
|