-
Notifications
You must be signed in to change notification settings - Fork 609
/
spec_helper.rb
84 lines (76 loc) · 1.9 KB
/
spec_helper.rb
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
$:.unshift File.dirname(__FILE__)
begin
if ENV['USE_RSPEC'] == '1'
require 'rspec_helper'
else
require 'mspec_helper'
end
rescue
require 'mspec_helper'
end
if !defined?(RUBY_NAME) then
begin
require 'rbconfig'
RUBY_NAME = Config::CONFIG["RUBY_INSTALL_NAME"]
rescue Exception
RUBY_NAME = RUBY_ENGINE
end
end
def engine?(name)
case name
when :rbx, :rubinius
RUBY_NAME == 'rbx'
when :ruby
RUBY_NAME == 'ruby'
when :jruby
RUBY_NAME == 'jruby'
else
false
end
end
# The four methods #compliant, #noncompliant, #extension, and #failure
# each describe one aspect of the specs they annotate, as follows:
#
# compliant(:ruby, :jruby) do
# Run these specs on the listed engines.
# Used for specs that conform to the Ruby "standard"
# end
#
# noncompliant(:rubinius, :jruby) do
# Run these specs on the listed engines.
# Used for specs that do not conform to the Ruby "standard"
# end
#
# extension(:rubinus, :cardinal) do
# Run these specs on the listed engines.
# Used for specs that do NOT behave differently than a Ruby
# "standard" behavior, perhaps because no equivalent behavior
# exists in Ruby.
# end
#
# failure(:rubinius) do
# Do NOT run these specs on the listed platform.
# Used for specs that are expected to fail, perhaps because of
# a bug on the listed engine. This is not for specs that are
# noncompliant. This is a convenience to prevent executing
# specs on a particular engine, perhaps because executing
# the spec causes particularly nasty behavior.
# end
#
# Please refer to these comments for the semantics of these
# four methods. Don't refer to the implementation as it could
# likely change.
def compliant(*engines)
if engines.any? { |e| engine?(e) }
yield
end
end
def failure(*engines)
unless engines.any? { |e| engine?(e) }
yield
end
end
class Object
alias noncompliant compliant
alias extension compliant
end