Class: SpecGuard
Direct Known Subclasses
BackgroundGuard, CompliantOnGuard, ConflictsGuard, EndianGuard, ExtensionsGuard, 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.
65
66
67
|
# File 'lib/mspec/guards/guard.rb', line 65
def initialize(*args)
self.parameters = @args = args
end
|
Instance Attribute Details
Returns the value of attribute name.
63
64
65
|
# File 'lib/mspec/guards/guard.rb', line 63
def name
@name
end
|
#parameters ⇒ Object
Returns the value of attribute parameters.
63
64
65
|
# File 'lib/mspec/guards/guard.rb', line 63
def parameters
@parameters
end
|
Class Method Details
9
10
11
|
# File 'lib/mspec/guards/guard.rb', line 9
def self.clear
@report = nil
end
|
.clear_guards ⇒ Object
29
30
31
|
# File 'lib/mspec/guards/guard.rb', line 29
def self.clear_guards
@guards = []
end
|
13
14
15
16
17
18
19
20
21
22
23
|
# File 'lib/mspec/guards/guard.rb', line 13
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
|
25
26
27
|
# File 'lib/mspec/guards/guard.rb', line 25
def self.guards
@guards ||= []
end
|
5
6
7
|
# File 'lib/mspec/guards/guard.rb', line 5
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"
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
|
# File 'lib/mspec/guards/guard.rb', line 41
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
|
.windows?(key = RUBY_PLATFORM) ⇒ Boolean
59
60
61
|
# File 'lib/mspec/guards/guard.rb', line 59
def self.windows?(key = RUBY_PLATFORM)
!!key.match(/(mswin|mingw)/)
end
|
Instance Method Details
#===(other) ⇒ Object
86
87
88
|
# File 'lib/mspec/guards/guard.rb', line 86
def ===(other)
true
end
|
#add(example) ⇒ Object
103
104
105
106
|
# File 'lib/mspec/guards/guard.rb', line 103
def add(example)
record example.description
MSpec.retrieve(:formatter).tally.counter.guards!
end
|
#implementation?(*args) ⇒ Boolean
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
|
# File 'lib/mspec/guards/guard.rb', line 113
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
165
166
167
|
# File 'lib/mspec/guards/guard.rb', line 165
def match?
implementation?(*@args) or platform?(*@args)
end
|
#os?(*oses) ⇒ Boolean
156
157
158
159
160
161
162
163
|
# File 'lib/mspec/guards/guard.rb', line 156
def os?(*oses)
require 'rbconfig'
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
|
142
143
144
145
146
147
148
149
150
|
# File 'lib/mspec/guards/guard.rb', line 142
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
99
100
101
|
# File 'lib/mspec/guards/guard.rb', line 99
def record(description)
SpecGuard.report[report_key] << description
end
|
#report_key ⇒ Object
95
96
97
|
# File 'lib/mspec/guards/guard.rb', line 95
def report_key
"#{name} #{parameters.join(", ")}"
end
|
#standard? ⇒ Boolean
134
135
136
|
# File 'lib/mspec/guards/guard.rb', line 134
def standard?
implementation? :ruby
end
|
#windows?(sym, key) ⇒ Boolean
138
139
140
|
# File 'lib/mspec/guards/guard.rb', line 138
def windows?(sym, key)
sym == :windows && SpecGuard.windows?(key)
end
|
#wordsize?(size) ⇒ Boolean
152
153
154
|
# File 'lib/mspec/guards/guard.rb', line 152
def wordsize?(size)
size == 8 * 1.size
end
|
#yield?(invert = false) ⇒ Boolean
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
|
# File 'lib/mspec/guards/guard.rb', line 69
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
|