fudge 0.3.8 → 0.4.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- 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:
|