Class: SpecGuard
Direct Known Subclasses
BackgroundGuard, CompliantOnGuard, ConflictsGuard, EndianGuard, ExtensionsGuard, FeatureGuard, NonComplianceGuard, NotCompliantOnGuard, PlatformGuard, QuarantineGuard, RunnerGuard, SuperUserGuard, SupportedGuard, TTYGuard, UserGuard, VersionGuard
Instance Attribute Summary collapse
Class Method Summary
collapse
Instance Method Summary
collapse
Constructor Details
#initialize(*args) ⇒ SpecGuard
Returns a new instance of SpecGuard.
63
64
65
|
# File 'lib/mspec/guards/guard.rb', line 63
def initialize(*args)
self.parameters = @args = args
end
|
Instance Attribute Details
Returns the value of attribute name.
61
62
63
|
# File 'lib/mspec/guards/guard.rb', line 61
def name
@name
end
|
#parameters ⇒ Object
Returns the value of attribute parameters.
61
62
63
|
# File 'lib/mspec/guards/guard.rb', line 61
def parameters
@parameters
end
|
Class Method Details
11
12
13
|
# File 'lib/mspec/guards/guard.rb', line 11
def self.clear
@report = nil
end
|
.clear_guards ⇒ Object
31
32
33
|
# File 'lib/mspec/guards/guard.rb', line 31
def self.clear_guards
@guards = []
end
|
15
16
17
18
19
20
21
22
23
24
25
|
# File 'lib/mspec/guards/guard.rb', line 15
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
|
27
28
29
|
# File 'lib/mspec/guards/guard.rb', line 27
def self.guards
@guards ||= []
end
|
7
8
9
|
# File 'lib/mspec/guards/guard.rb', line 7
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 and RUBY_PATCHLEVEL = 71:
:major => "8"
:minor => "8.2"
:tiny => "8.2.3"
:teeny => "8.2.3"
:full => "8.2.3.71"
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
|
# File 'lib/mspec/guards/guard.rb', line 43
def self.ruby_version(which = :minor)
case which
when :major
n = 1
when :minor
n = 2
when :tiny, :teeny
n = 3
else
n = 4
end
patch = RUBY_PATCHLEVEL.to_i
patch = 0 if patch < 0
version = "#{RUBY_VERSION}.#{patch}"
version.split('.')[0,n].join('.')
end
|
Instance Method Details
#===(other) ⇒ Object
84
85
86
|
# File 'lib/mspec/guards/guard.rb', line 84
def ===(other)
true
end
|
#add(example) ⇒ Object
101
102
103
104
|
# File 'lib/mspec/guards/guard.rb', line 101
def add(example)
record example.description
MSpec.retrieve(:formatter).tally.counter.guards!
end
|
#implementation?(*args) ⇒ Boolean
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
|
# File 'lib/mspec/guards/guard.rb', line 111
def implementation?(*args)
args.any? do |name|
!!case name
when :rubinius
RUBY_NAME =~ /^rbx/
when :ruby
RUBY_NAME =~ /^ruby/
when :jruby
RUBY_NAME =~ /^jruby/
when :ironruby
RUBY_NAME =~ /^ironruby/
when :macruby
RUBY_NAME =~ /^macruby/
when :maglev
RUBY_NAME =~ /^maglev/
else
false
end
end
end
|
#match? ⇒ Boolean
162
163
164
|
# File 'lib/mspec/guards/guard.rb', line 162
def match?
implementation?(*@args) or platform?(*@args)
end
|
#os?(*oses) ⇒ Boolean
154
155
156
157
158
159
160
|
# File 'lib/mspec/guards/guard.rb', line 154
def os?(*oses)
oses.any? do |os|
host_os = Config::CONFIG['host_os'] || RUBY_PLATFORM
host_os.downcase!
host_os.match(os.to_s) || windows?(os, host_os)
end
end
|
140
141
142
143
144
145
146
147
148
|
# File 'lib/mspec/guards/guard.rb', line 140
def platform?(*args)
args.any? do |platform|
if platform != :java && RUBY_PLATFORM.match('java') && os?(platform)
true
else
RUBY_PLATFORM.match(platform.to_s) || windows?(platform, RUBY_PLATFORM)
end
end
end
|
#record(description) ⇒ Object
97
98
99
|
# File 'lib/mspec/guards/guard.rb', line 97
def record(description)
SpecGuard.report[report_key] << description
end
|
#report_key ⇒ Object
93
94
95
|
# File 'lib/mspec/guards/guard.rb', line 93
def report_key
"#{name} #{parameters.join(", ")}"
end
|
#standard? ⇒ Boolean
132
133
134
|
# File 'lib/mspec/guards/guard.rb', line 132
def standard?
implementation? :ruby
end
|
#windows?(sym, key) ⇒ Boolean
136
137
138
|
# File 'lib/mspec/guards/guard.rb', line 136
def windows?(sym, key)
sym == :windows && !key.match(/(mswin|mingw)/).nil?
end
|
#wordsize?(size) ⇒ Boolean
150
151
152
|
# File 'lib/mspec/guards/guard.rb', line 150
def wordsize?(size)
size == 8 * 1.size
end
|
#yield?(invert = false) ⇒ Boolean
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
|
# File 'lib/mspec/guards/guard.rb', line 67
def yield?(invert=false)
return true if MSpec.mode? :unguarded
allow = match? ^ invert
if not allow and reporting?
MSpec.guard
MSpec.register :finish, SpecGuard
MSpec.register :add, self
return true
elsif MSpec.mode? :verify
return true
end
allow
end
|