spicycode-micronaut 0.1.7.4 → 0.1.8.0
Sign up to get free protection for your applications and to get access to all the features.
- data/Rakefile +1 -1
- data/examples/lib/micronaut/configuration_example.rb +39 -0
- data/examples/lib/micronaut/formatters/base_formatter_example.rb +12 -0
- data/examples/lib/micronaut/formatters/progress_formatter_example.rb +1 -0
- data/lib/micronaut/behaviour.rb +6 -4
- data/lib/micronaut/configuration.rb +20 -1
- data/lib/micronaut/formatters/base_formatter.rb +11 -1
- data/lib/micronaut/formatters/base_text_formatter.rb +1 -0
- metadata +1 -1
data/Rakefile
CHANGED
@@ -67,5 +67,44 @@ describe Micronaut::Configuration do
|
|
67
67
|
config.run_all_when_everything_filtered?.should == false
|
68
68
|
end
|
69
69
|
end
|
70
|
+
|
71
|
+
describe '#trace?' do
|
72
|
+
|
73
|
+
it "is false by default" do
|
74
|
+
Micronaut::Configuration.new.trace?.should == false
|
75
|
+
end
|
76
|
+
|
77
|
+
it "is true if configuration.trace is true", :full_backtrace => true do
|
78
|
+
config = Micronaut::Configuration.new
|
79
|
+
config.trace = true
|
80
|
+
config.trace?.should == true
|
81
|
+
end
|
82
|
+
|
83
|
+
end
|
84
|
+
|
85
|
+
describe '#trace' do
|
86
|
+
|
87
|
+
it "requires a block" do
|
88
|
+
config = Micronaut::Configuration.new
|
89
|
+
config.trace = true
|
90
|
+
lambda { config.trace(true) }.should raise_error(ArgumentError)
|
91
|
+
end
|
92
|
+
|
93
|
+
it "does nothing if trace is false" do
|
94
|
+
config = Micronaut::Configuration.new
|
95
|
+
config.trace = false
|
96
|
+
config.output.expects(:puts).never
|
97
|
+
config.trace { "my trace string is awesome" }
|
98
|
+
end
|
99
|
+
|
100
|
+
it "allows overriding tracing an optional param" do
|
101
|
+
config = Micronaut::Configuration.new
|
102
|
+
config.trace = false
|
103
|
+
config.output.expects(:puts).with(includes("my trace string is awesome"))
|
104
|
+
config.trace(true) { "my trace string is awesome" }
|
105
|
+
end
|
106
|
+
|
107
|
+
|
108
|
+
end
|
70
109
|
|
71
110
|
end
|
@@ -122,4 +122,16 @@ describe Micronaut::Formatters::BaseFormatter do
|
|
122
122
|
|
123
123
|
end
|
124
124
|
|
125
|
+
describe '#trace' do
|
126
|
+
|
127
|
+
it "outputs trace message if behaviour metadata has :trace => true" do
|
128
|
+
Micronaut.configuration.output.expects(:puts).with(includes("Starting example: example"))
|
129
|
+
behaviour = Micronaut::Behaviour.describe("foo", :trace => true) {}
|
130
|
+
@formatter.behaviour = behaviour
|
131
|
+
@formatter.example_started("example")
|
132
|
+
end
|
133
|
+
|
134
|
+
end
|
135
|
+
|
136
|
+
|
125
137
|
end
|
data/lib/micronaut/behaviour.rb
CHANGED
@@ -92,11 +92,13 @@ module Micronaut
|
|
92
92
|
@metadata.update(extra_metadata)
|
93
93
|
|
94
94
|
Micronaut.configuration.find_modules(self).each do |include_or_extend, mod, opts|
|
95
|
-
if include_or_extend == :extend
|
95
|
+
if include_or_extend == :extend
|
96
|
+
Micronaut.configuration.trace { "Extending module #{mod} on #{self}" }
|
96
97
|
send(:extend, mod) unless extended_modules.include?(mod)
|
97
|
-
else
|
98
|
-
|
99
|
-
|
98
|
+
else
|
99
|
+
Micronaut.configuration.trace { "Including module #{mod} on #{self}" }
|
100
|
+
send(:include, mod) unless included_modules.include?(mod)
|
101
|
+
end
|
100
102
|
end
|
101
103
|
end
|
102
104
|
|
@@ -19,12 +19,16 @@ module Micronaut
|
|
19
19
|
# Enable profiling of example run - defaults to false
|
20
20
|
attr_accessor :profile_examples
|
21
21
|
|
22
|
+
# Enable verbose interal logging of the framework - defaults to false
|
23
|
+
attr_accessor :trace
|
24
|
+
|
22
25
|
attr_reader :mock_framework
|
23
26
|
|
24
27
|
def initialize
|
25
28
|
@backtrace_clean_patterns = [/\/lib\/ruby\//, /bin\/rcov:/, /vendor\/rails/, /bin\/micronaut/, /#{::Micronaut::InstallDirectory}/]
|
26
|
-
@profile_examples = false
|
27
29
|
@run_all_when_everything_filtered = true
|
30
|
+
@trace = false
|
31
|
+
@profile_examples = false
|
28
32
|
@color_enabled = false
|
29
33
|
@before_and_afters = { :before => { :each => [], :all => [] }, :after => { :each => [], :all => [] } }
|
30
34
|
@include_or_extend_modules = []
|
@@ -96,6 +100,21 @@ module Micronaut
|
|
96
100
|
def output
|
97
101
|
$stdout
|
98
102
|
end
|
103
|
+
|
104
|
+
# Output some string for debugging/tracing assistance if trace is enabled
|
105
|
+
# The trace string should be sent as a block, which means it will only be interpolated if trace is actually enabled
|
106
|
+
# We allow an override here so that trace can be set at lower levels (such as the describe or example level)
|
107
|
+
def trace(override = false)
|
108
|
+
raise(ArgumentError, "Must yield a block with your string to trace.") unless block_given?
|
109
|
+
return unless trace? || override
|
110
|
+
Micronaut.configuration.output.puts("[TRACE] #{yield}")
|
111
|
+
end
|
112
|
+
|
113
|
+
# If true, Micronaut will provide detailed trace output of its self as it runs.
|
114
|
+
# Can be turned on at the global (configuration) level or at the individual behaviour (describe) level.
|
115
|
+
def trace?
|
116
|
+
@trace == true
|
117
|
+
end
|
99
118
|
|
100
119
|
# RJS I think we should rename include/extend so they don't conflict or confuse with the ruby builtin
|
101
120
|
# maybe register_include, setup_include, add_include, or just _include ?
|
@@ -18,6 +18,15 @@ module Micronaut
|
|
18
18
|
Micronaut.configuration.output
|
19
19
|
end
|
20
20
|
|
21
|
+
def trace(&blk)
|
22
|
+
Micronaut.configuration.trace(trace_override_flag, &blk)
|
23
|
+
end
|
24
|
+
|
25
|
+
# Allow setting trace at the behaviour level as well globally
|
26
|
+
def trace_override_flag
|
27
|
+
behaviour && behaviour.metadata[:trace]
|
28
|
+
end
|
29
|
+
|
21
30
|
def profile_examples?
|
22
31
|
Micronaut.configuration.profile_examples
|
23
32
|
end
|
@@ -58,11 +67,12 @@ module Micronaut
|
|
58
67
|
|
59
68
|
# This method is invoked when an +example+ starts.
|
60
69
|
def example_started(example)
|
61
|
-
|
70
|
+
trace { "Starting example: #{example}" }
|
62
71
|
end
|
63
72
|
|
64
73
|
# This method is invoked when an +example+ passes.
|
65
74
|
def example_passed(example)
|
75
|
+
trace { "Example passed: #{example}" }
|
66
76
|
end
|
67
77
|
|
68
78
|
# This method is invoked when an +example+ fails, i.e. an exception occurred
|