Class: SpecGuard
- Inherits:
-
Object
show all
- Defined in:
- lib/extensions/mspec/mspec/guards/guard.rb
Instance Attribute Summary collapse
Class Method Summary
collapse
Instance Method Summary
collapse
Constructor Details
#initialize(*args) ⇒ SpecGuard
Returns a new instance of SpecGuard.
57
58
59
|
# File 'lib/extensions/mspec/mspec/guards/guard.rb', line 57
def initialize(*args)
@parameters = args
end
|
Instance Attribute Details
Returns the value of attribute name.
55
56
57
|
# File 'lib/extensions/mspec/mspec/guards/guard.rb', line 55
def name
@name
end
|
Class Method Details
10
11
12
|
# File 'lib/extensions/mspec/mspec/guards/guard.rb', line 10
def self.clear
@report = nil
end
|
.clear_guards ⇒ Object
30
31
32
|
# File 'lib/extensions/mspec/mspec/guards/guard.rb', line 30
def self.clear_guards
@guards = []
end
|
14
15
16
17
18
19
20
21
22
23
24
|
# File 'lib/extensions/mspec/mspec/guards/guard.rb', line 14
def self.finish
report.keys.sort.each do |key|
desc = report[key]
size = desc.size
spec = size == 1 ? "spec" : "specs"
print "\n\n#{size} #{spec} omitted by guard: #{key}:\n"
desc.each { |description| print "\n", description; }
end
print "\n\n"
end
|
26
27
28
|
# File 'lib/extensions/mspec/mspec/guards/guard.rb', line 26
def self.guards
@guards ||= []
end
|
6
7
8
|
# File 'lib/extensions/mspec/mspec/guards/guard.rb', line 6
def self.report
@report ||= Hash.new { |h,k| h[k] = [] }
end
|
.ruby_version(which = :minor) ⇒ Object
Returns a partial Ruby version string based on which. For example, if RUBY_VERSION = 8.2.3:
:major => "8"
:minor => "8.2"
:tiny => "8.2.3"
:teeny => "8.2.3"
:full => "8.2.3"
42
43
44
45
46
47
48
49
50
51
52
53
|
# File 'lib/extensions/mspec/mspec/guards/guard.rb', line 42
def self.ruby_version(which = :minor)
case which
when :major
n = 1
when :minor
n = 2
when :tiny, :teeny, :full
n = 3
end
RUBY_VERSION.split('.')[0,n].join('.')
end
|
Instance Method Details
#add(example) ⇒ Object
105
106
107
108
|
# File 'lib/extensions/mspec/mspec/guards/guard.rb', line 105
def add(example)
record example.description
MSpec.retrieve(:formatter).tally.counter.guards!
end
|
#match? ⇒ Boolean
115
116
117
|
# File 'lib/extensions/mspec/mspec/guards/guard.rb', line 115
def match?
raise "must be implemented by the subclass"
end
|
#record(description) ⇒ Object
101
102
103
|
# File 'lib/extensions/mspec/mspec/guards/guard.rb', line 101
def record(description)
SpecGuard.report[report_key] << description
end
|
#report_key ⇒ Object
97
98
99
|
# File 'lib/extensions/mspec/mspec/guards/guard.rb', line 97
def report_key
"#{name} #{@parameters.join(", ")}"
end
|
#reporting? ⇒ Boolean
92
93
94
95
|
# File 'lib/extensions/mspec/mspec/guards/guard.rb', line 92
def reporting?
MSpec.mode?(:report) or
(MSpec.mode?(:report_on) and SpecGuard.guards.include?(name))
end
|
#run_if(name, &block) ⇒ Object
78
79
80
81
82
83
|
# File 'lib/extensions/mspec/mspec/guards/guard.rb', line 78
def run_if(name, &block)
@name = name
yield if yield?(false)
ensure
unregister
end
|
#run_unless(name, &block) ⇒ Object
85
86
87
88
89
90
|
# File 'lib/extensions/mspec/mspec/guards/guard.rb', line 85
def run_unless(name, &block)
@name = name
yield if yield?(true)
ensure
unregister
end
|
#unregister ⇒ Object
110
111
112
113
|
# File 'lib/extensions/mspec/mspec/guards/guard.rb', line 110
def unregister
MSpec.unguard
MSpec.unregister :add, self
end
|
#yield?(invert = false) ⇒ Boolean
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
|
# File 'lib/extensions/mspec/mspec/guards/guard.rb', line 61
def yield?(invert = false)
return true if MSpec.mode? :unguarded
allow = match? ^ invert
if !allow and reporting?
MSpec.guard
MSpec.register :finish, SpecGuard
MSpec.register :add, self
return true
elsif MSpec.mode? :verify
return true
end
allow
end
|