opal 0.9.0.beta2 → 0.9.0.rc1
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/.jshintrc +2 -1
- data/.travis.yml +8 -4
- data/CHANGELOG.md +270 -251
- data/CONTRIBUTING.md +41 -0
- data/README.md +8 -8
- data/Rakefile +1 -1
- data/lib/opal/cli.rb +1 -0
- data/lib/opal/cli_options.rb +2 -2
- data/lib/opal/cli_runners.rb +1 -0
- data/lib/opal/cli_runners/nashorn.rb +58 -0
- data/lib/opal/cli_runners/phantom.js +11 -9
- data/lib/opal/compiler.rb +2 -0
- data/lib/opal/erb.rb +2 -1
- data/lib/opal/nodes/def.rb +15 -6
- data/lib/opal/nodes/helpers.rb +1 -1
- data/lib/opal/nodes/literal.rb +1 -1
- data/lib/opal/nodes/masgn.rb +79 -29
- data/lib/opal/nodes/module.rb +1 -1
- data/lib/opal/nodes/top.rb +6 -2
- data/lib/opal/parser.rb +1 -0
- data/lib/opal/parser/grammar.rb +3160 -3083
- data/lib/opal/parser/grammar.y +39 -11
- data/lib/opal/parser/lexer.rb +15 -13
- data/lib/opal/parser/sexp.rb +5 -0
- data/lib/opal/version.rb +1 -1
- data/opal/corelib/array.rb +21 -6
- data/opal/corelib/basic_object.rb +17 -4
- data/opal/corelib/class.rb +1 -1
- data/opal/corelib/constants.rb +2 -2
- data/opal/corelib/enumerator.rb +2 -0
- data/opal/corelib/hash.rb +50 -50
- data/opal/corelib/helpers.rb +1 -1
- data/opal/corelib/io.rb +9 -6
- data/opal/corelib/kernel.rb +37 -9
- data/opal/corelib/module.rb +6 -17
- data/opal/corelib/nil.rb +4 -0
- data/opal/corelib/number.rb +0 -4
- data/opal/corelib/runtime.js +637 -662
- data/opal/corelib/struct.rb +7 -3
- data/spec/filters/bugs/array.rb +4 -9
- data/spec/filters/bugs/basicobject.rb +1 -15
- data/spec/filters/bugs/date.rb +4 -26
- data/spec/filters/bugs/enumerable.rb +26 -1
- data/spec/filters/bugs/enumerator.rb +4 -4
- data/spec/filters/bugs/exception.rb +1 -7
- data/spec/filters/bugs/float.rb +14 -0
- data/spec/filters/bugs/hash.rb +0 -2
- data/spec/filters/bugs/integer.rb +1 -1
- data/spec/filters/bugs/kernel.rb +47 -66
- data/spec/filters/bugs/language.rb +1 -2
- data/spec/filters/bugs/module.rb +11 -14
- data/spec/filters/bugs/numeric.rb +3 -3
- data/spec/filters/bugs/proc.rb +0 -1
- data/spec/filters/bugs/range.rb +2 -3
- data/spec/filters/bugs/regexp.rb +15 -17
- data/spec/filters/bugs/set.rb +2 -2
- data/spec/filters/bugs/string.rb +29 -5
- data/spec/filters/bugs/{strscan.rb → stringscanner.rb} +9 -10
- data/spec/filters/bugs/struct.rb +0 -4
- data/spec/filters/bugs/time.rb +2 -3
- data/spec/filters/bugs/unboundmethod.rb +3 -0
- data/spec/filters/unsupported/freeze.rb +2 -1
- data/spec/filters/unsupported/taint.rb +2 -0
- data/spec/lib/parser/aref_spec.rb +10 -0
- data/spec/lib/parser/lambda_spec.rb +14 -0
- data/spec/lib/parser/op_asgn_spec.rb +17 -0
- data/spec/lib/parser/return_spec.rb +5 -0
- data/spec/lib/parser/unary_spec.rb +4 -0
- data/spec/lib/sprockets/erb_spec.rb +1 -1
- data/spec/mspec/opal/formatters.rb +159 -0
- data/{lib → spec}/mspec/opal/runner.rb +0 -160
- data/spec/opal/core/hash/internals_spec.rb +162 -162
- data/spec/opal/core/kernel/at_exit_spec.rb +70 -0
- data/spec/opal/core/kernel/extend_spec.rb +1 -1
- data/spec/opal/core/kernel/instance_variables_spec.rb +56 -0
- data/spec/opal/core/language/equal_spec.rb +8 -0
- data/spec/opal/core/language/predefined_spec.rb +1 -1
- data/spec/opal/core/language/ternary_operator_spec.rb +14 -0
- data/spec/opal/core/language/versions/{hash_1.9.rb → hash_1_9_spec.rb} +5 -0
- data/spec/opal/core/module/fixtures/classes.rb +11 -1
- data/spec/opal/core/module/method_lookup_spec.rb +13 -0
- data/spec/opal/core/runtime/super_spec.rb +10 -0
- data/spec/opal/stdlib/native/new_spec.rb +84 -0
- data/spec/opal/stdlib/strscan/scan_spec.rb +11 -0
- data/spec/rubyspecs +6 -9
- data/spec/spec_helper.rb +9 -21
- data/stdlib/date.rb +121 -1
- data/stdlib/js.rb +13 -5
- data/stdlib/json.rb +3 -3
- data/stdlib/nashorn.rb +5 -0
- data/stdlib/nashorn/file.rb +13 -0
- data/stdlib/nashorn/io.rb +2 -0
- data/stdlib/native.rb +12 -4
- data/stdlib/nodejs/io.rb +5 -2
- data/stdlib/opal/platform.rb +19 -0
- data/stdlib/phantomjs.rb +4 -0
- data/stdlib/strscan.rb +1 -1
- data/tasks/building.rake +2 -1
- data/tasks/testing.rake +29 -34
- data/tasks/testing/{phantomjs1-sprockets.js → sprockets-phantomjs.js} +2 -20
- data/vendored-minitest/minitest/test.rb +7 -15
- metadata +32 -9
- data/lib/mspec/opal/main.rb.erb +0 -9
data/opal/corelib/struct.rb
CHANGED
@@ -38,11 +38,11 @@ class Struct
|
|
38
38
|
members << name
|
39
39
|
|
40
40
|
define_method name do
|
41
|
-
self[name]
|
41
|
+
`self.$$data[name]`
|
42
42
|
end
|
43
43
|
|
44
44
|
define_method "#{name}=" do |value|
|
45
|
-
self[name] = value
|
45
|
+
`self.$$data[name] = value`
|
46
46
|
end
|
47
47
|
end
|
48
48
|
|
@@ -83,7 +83,11 @@ class Struct
|
|
83
83
|
|
84
84
|
name = members[name]
|
85
85
|
elsif String === name
|
86
|
-
|
86
|
+
%x{
|
87
|
+
if(!self.$$data.hasOwnProperty(name)) {
|
88
|
+
#{raise NameError.new("no member '#{name}' in struct", name)}
|
89
|
+
}
|
90
|
+
}
|
87
91
|
else
|
88
92
|
raise TypeError, "no implicit conversion of #{name.class} into Integer"
|
89
93
|
end
|
data/spec/filters/bugs/array.rb
CHANGED
@@ -1,17 +1,14 @@
|
|
1
1
|
opal_filter "Array" do
|
2
2
|
fails "Array#flatten performs respond_to? and method_missing-aware checks when coercing elements to array"
|
3
3
|
fails "Array#flatten with a non-Array object in the Array calls #method_missing if defined"
|
4
|
-
fails "Array#flatten with a non-Array object in the Array calls #to_ary if not defined when #respond_to_missing? returns true"
|
5
|
-
fails "Array#flatten with a non-Array object in the Array does not call #to_ary if not defined when #respond_to_missing? returns false"
|
6
4
|
fails "Array#join raises a NoMethodError if an element does not respond to #to_str, #to_ary, or #to_s"
|
7
5
|
fails "Array#partition returns in the left array values for which the block evaluates to true"
|
8
6
|
fails "Array#permutation when no block is given returned Enumerator size with an array size greater than 0 returns the descending factorial of array size and given length"
|
9
7
|
fails "Array#permutation when no block is given returned Enumerator size with an array size greater than 0 returns the descending factorial of array size with array size when there's no param"
|
10
8
|
fails "Array#permutation when no block is given returned Enumerator size with an empty array returns 1 when the given length is 0"
|
11
9
|
fails "Array#permutation when no block is given returned Enumerator size with an empty array returns 1 when there's param"
|
12
|
-
fails "Array#
|
13
|
-
fails "Array#rassoc
|
14
|
-
fails "Array#rassoc does not check the last element in each contained but speficically the second" #Spec assumes string and symbols are not equal.
|
10
|
+
fails "Array#rassoc calls elem == obj on the second element of each contained array"
|
11
|
+
fails "Array#rassoc does not check the last element in each contained but speficically the second"
|
15
12
|
fails "Array#repeated_combination accepts sizes larger than the original array"
|
16
13
|
fails "Array#repeated_combination generates from a defensive copy, ignoring mutations"
|
17
14
|
fails "Array#repeated_combination returns an enumerator when no block is provided"
|
@@ -19,11 +16,11 @@ opal_filter "Array" do
|
|
19
16
|
fails "Array#repeated_combination when no block is given returned Enumerator size returns 0 when the combination_size is < 0"
|
20
17
|
fails "Array#repeated_combination when no block is given returned Enumerator size returns 1 when the combination_size is 0"
|
21
18
|
fails "Array#repeated_combination when no block is given returned Enumerator size returns the binomial coeficient between combination_size and array size + combination_size -1"
|
19
|
+
fails "Array#repeated_combination yields [] when length is 0"
|
22
20
|
fails "Array#repeated_combination yields a partition consisting of only singletons"
|
23
21
|
fails "Array#repeated_combination yields nothing for negative length and return self"
|
24
22
|
fails "Array#repeated_combination yields nothing when the array is empty and num is non zero"
|
25
23
|
fails "Array#repeated_combination yields the expected repeated_combinations"
|
26
|
-
fails "Array#repeated_combination yields [] when length is 0"
|
27
24
|
fails "Array#repeated_permutation allows permutations larger than the number of elements"
|
28
25
|
fails "Array#repeated_permutation does not yield when called on an empty Array with a nonzero argument"
|
29
26
|
fails "Array#repeated_permutation generates from a defensive copy, ignoring mutations"
|
@@ -35,8 +32,7 @@ opal_filter "Array" do
|
|
35
32
|
fails "Array#repeated_permutation when no block is given returned Enumerator size returns array size ** combination_size"
|
36
33
|
fails "Array#repeated_permutation yields all repeated_permutations to the block then returns self when called with block but no arguments"
|
37
34
|
fails "Array#repeated_permutation yields the empty repeated_permutation ([[]]) when the given length is 0"
|
38
|
-
fails "Array#select returns a new array of elements for which block is true"
|
39
|
-
fails "Array#shift passed a number n as an argument raises an ArgumentError if more arguments are passed" #Arity issue?
|
35
|
+
fails "Array#select returns a new array of elements for which block is true"
|
40
36
|
fails "Array#slice! calls to_int on range arguments"
|
41
37
|
fails "Array#slice! calls to_int on start and length arguments"
|
42
38
|
fails "Array#slice! does not expand array with indices out of bounds"
|
@@ -54,6 +50,5 @@ opal_filter "Array" do
|
|
54
50
|
fails "Array#sort_by! when no block is given returned Enumerator size returns the enumerable size"
|
55
51
|
fails "Array#uniq! properly handles recursive arrays"
|
56
52
|
fails "Array#zip fills nil when the given enumereator is shorter than self"
|
57
|
-
fails "Array#zip stops at own size when given an infinite enumerator"
|
58
53
|
fails "Array.[] can unpack 2 or more nested referenced array"
|
59
54
|
end
|
@@ -1,33 +1,19 @@
|
|
1
1
|
opal_filter "BasicObject" do
|
2
2
|
fails "BasicObject does not define built-in constants (according to const_defined?)"
|
3
3
|
fails "BasicObject does not define built-in constants (according to defined?)"
|
4
|
-
fails "BasicObject instance metaclass contains methods defined for the BasicObject instance"
|
5
|
-
fails "BasicObject instance metaclass has BasicObject as superclass"
|
6
|
-
fails "BasicObject instance metaclass is an instance of Class"
|
7
4
|
fails "BasicObject metaclass contains methods for the BasicObject class"
|
8
5
|
fails "BasicObject metaclass has Class as superclass"
|
9
6
|
fails "BasicObject raises NameError when referencing built-in constants"
|
10
7
|
fails "BasicObject raises NoMethodError for nonexistent methods after #method_missing is removed"
|
8
|
+
fails "BasicObject#__send__ has a negative arity"
|
11
9
|
fails "BasicObject#initialize does not accept arguments"
|
12
|
-
fails "BasicObject#instance_eval binds self to the receiver"
|
13
|
-
fails "BasicObject#instance_eval evaluates strings"
|
14
|
-
fails "BasicObject#instance_eval executes in the context of the receiver"
|
15
|
-
fails "BasicObject#instance_eval gets constants in the receiver if a string given"
|
16
|
-
fails "BasicObject#instance_eval has access to receiver's instance variables"
|
17
|
-
fails "BasicObject#instance_eval makes the receiver metaclass the scoped class when used with a string"
|
18
10
|
fails "BasicObject#instance_eval raises a TypeError when defining methods on an immediate"
|
19
11
|
fails "BasicObject#instance_eval raises a TypeError when defining methods on numerics"
|
20
12
|
fails "BasicObject#instance_eval sets class variables in the receiver"
|
21
|
-
fails "BasicObject#instance_eval treats block-local variables as local to the block"
|
22
13
|
fails "BasicObject#instance_exec binds the block's binding self to the receiver"
|
23
14
|
fails "BasicObject#instance_exec has an arity of -1"
|
24
15
|
fails "BasicObject#instance_exec raises a LocalJumpError unless given a block"
|
25
16
|
fails "BasicObject#instance_exec raises a TypeError when defining methods on an immediate"
|
26
17
|
fails "BasicObject#instance_exec raises a TypeError when defining methods on numerics"
|
27
18
|
fails "BasicObject#instance_exec sets class variables in the receiver"
|
28
|
-
fails "BasicObject#__send__ has a negative arity"
|
29
|
-
fails "Kernel#public_send has a negative arity"
|
30
|
-
fails "Kernel#send has a negative arity"
|
31
|
-
fails "Module#prepend does not affect the superclass"
|
32
|
-
fails "Module#singleton_class? returns true for singleton classes"
|
33
19
|
end
|
data/spec/filters/bugs/date.rb
CHANGED
@@ -1,12 +1,4 @@
|
|
1
1
|
opal_filter "Date" do
|
2
|
-
fails "Date constants defines ABBR_MONTHNAMES"
|
3
|
-
fails "Date constants defines DAYNAMES"
|
4
|
-
fails "Date constants defines ENGLAND"
|
5
|
-
fails "Date constants defines GREGORIAN"
|
6
|
-
fails "Date constants defines ITALY"
|
7
|
-
fails "Date constants defines JULIAN"
|
8
|
-
fails "Date constants defines MONTHNAMES"
|
9
|
-
fails "Date constants freezes MONTHNAMES, DAYNAMES, ABBR_MONTHNAMES, ABBR_DAYSNAMES"
|
10
2
|
fails "Date#<< raises an error on non numeric parameters"
|
11
3
|
fails "Date#<=> returns -1 when self is less than a Numeric"
|
12
4
|
fails "Date#<=> returns 1 when self is greater than a Numeric"
|
@@ -14,9 +6,7 @@ opal_filter "Date" do
|
|
14
6
|
fails "Date#>> returns the day of the reform if date falls within calendar reform"
|
15
7
|
fails "Date#ajd determines the Astronomical Julian day"
|
16
8
|
fails "Date#amjd determines the Astronomical Modified Julian day"
|
17
|
-
fails "Date#civil creates a Date for -4712 by default"
|
18
9
|
fails "Date#civil creates a Date for different calendar reform dates"
|
19
|
-
fails "Date#civil creates a date with arguments"
|
20
10
|
fails "Date#civil doesn't create dates for invalid arguments"
|
21
11
|
fails "Date#commercial creates a Date for Julian Day Number day 0 by default"
|
22
12
|
fails "Date#commercial Creates a Date for the correct day given the year, week and day number"
|
@@ -35,9 +25,7 @@ opal_filter "Date" do
|
|
35
25
|
fails "Date#gregorian_leap? returns true if a year is a leap year in the Gregorian calendar"
|
36
26
|
fails "Date#hash returns the same value for equal dates"
|
37
27
|
fails "Date#italy converts a date object into another with the Italian calendar reform"
|
38
|
-
fails "Date#jd determines the Julian day for a Date object"
|
39
28
|
fails "Date#julian converts a date object into another with the Julian calendar"
|
40
|
-
fails "Date#julian? marks a day after the calendar reform as Julian"
|
41
29
|
fails "Date#julian? marks a day before the calendar reform as Julian"
|
42
30
|
fails "Date#ld determines the Modified Julian day"
|
43
31
|
fails "Date#mday determines the day of the month"
|
@@ -56,6 +44,10 @@ opal_filter "Date" do
|
|
56
44
|
fails "Date#parse parses YYYYDDD as year and day number"
|
57
45
|
fails "Date#parse parses YYYYMMDD as year, month and day number"
|
58
46
|
fails "Date#parse throws an argument error for a single digit"
|
47
|
+
fails "Date#parse with '-' separator EU-style can parse a MM-DD-YY string into a Date object NOT using the year digits as 20XX"
|
48
|
+
fails "Date#parse with '-' separator EU-style can parse a MM-DD-YY string into a Date object using the year digits as 20XX"
|
49
|
+
fails "Date#parse with '-' separator EU-style can parse a MM-DD-YY string into a Date object"
|
50
|
+
fails "Date#parse with '-' separator EU-style can parse a MM-DD-YYYY string into a Date object"
|
59
51
|
fails "Date#parse with ' ' separator can handle negative year numbers"
|
60
52
|
fails "Date#parse with ' ' separator can parse a 'DD mmm YYYY' string into a Date object"
|
61
53
|
fails "Date#parse with ' ' separator can parse a 'mmm DD YYYY' string into a Date object"
|
@@ -65,10 +57,6 @@ opal_filter "Date" do
|
|
65
57
|
fails "Date#parse with ' ' separator can parse a month name, day and year into a Date object"
|
66
58
|
fails "Date#parse with ' ' separator can parse a year, day and month name into a Date object"
|
67
59
|
fails "Date#parse with ' ' separator can parse a year, month name and day into a Date object"
|
68
|
-
fails "Date#parse with '-' separator EU-style can parse a MM-DD-YY string into a Date object NOT using the year digits as 20XX"
|
69
|
-
fails "Date#parse with '-' separator EU-style can parse a MM-DD-YY string into a Date object using the year digits as 20XX"
|
70
|
-
fails "Date#parse with '-' separator EU-style can parse a MM-DD-YY string into a Date object"
|
71
|
-
fails "Date#parse with '-' separator EU-style can parse a MM-DD-YYYY string into a Date object"
|
72
60
|
fails "Date#parse with '.' separator can handle negative year numbers"
|
73
61
|
fails "Date#parse with '.' separator can parse a 'DD mmm YYYY' string into a Date object"
|
74
62
|
fails "Date#parse with '.' separator can parse a 'mmm DD YYYY' string into a Date object"
|
@@ -151,9 +139,7 @@ opal_filter "Date" do
|
|
151
139
|
fails "Date.jd returns a Date object representing Julian day 0 (-4712-01-01) if no arguments passed"
|
152
140
|
fails "Date.julian_leap? determines whether a year is a leap year in the Julian calendar"
|
153
141
|
fails "Date.julian_leap? determines whether a year is not a leap year in the Julian calendar"
|
154
|
-
fails "Date.new creates a Date for -4712 by default"
|
155
142
|
fails "Date.new creates a Date for different calendar reform dates"
|
156
|
-
fails "Date.new creates a date with arguments"
|
157
143
|
fails "Date.new doesn't create dates for invalid arguments"
|
158
144
|
fails "Date.ordinal constructs a Date object from an ordinal date"
|
159
145
|
fails "Date.valid_jd? returns false if passed nil"
|
@@ -161,12 +147,4 @@ opal_filter "Date" do
|
|
161
147
|
fails "Date.valid_jd? returns true if passed false"
|
162
148
|
fails "Date.valid_ordinal? determines if the date is a valid ordinal date"
|
163
149
|
fails "Date.valid_ordinal? handles negative day numbers"
|
164
|
-
fails "Date::Infinity should be able to check whether Infinity is finite"
|
165
|
-
fails "Date::Infinity should be able to check whether Infinity is infinite"
|
166
|
-
fails "Date::Infinity should be able to check whether Infinity is not a number"
|
167
|
-
fails "Date::Infinity should be able to check whether Infinity is zero"
|
168
|
-
fails "Date::Infinity should be able to coerce a Date::Infinity object"
|
169
|
-
fails "Date::Infinity should be able to compare Infinity objects"
|
170
|
-
fails "Date::Infinity should be able to return plus Infinity for abs"
|
171
|
-
fails "Date::Infinity should be able to use -@ and +@ for Date::Infinity"
|
172
150
|
end
|
@@ -5,6 +5,22 @@ opal_filter "Enumerable" do
|
|
5
5
|
fails "Enumerable#each_entry passes through the values yielded by #each_with_index"
|
6
6
|
fails "Enumerable#each_entry returns an enumerator if no block"
|
7
7
|
fails "Enumerable#each_entry yields multiple arguments as an array"
|
8
|
+
fails "Enumerable#max that is nil returns the maximum element"
|
9
|
+
fails "Enumerable#max when called with an argument n on a enumerable of length x where x < n returns an array containing the maximum n elements of length x"
|
10
|
+
fails "Enumerable#max when called with an argument n with a block returns an array containing the maximum n elements"
|
11
|
+
fails "Enumerable#max when called with an argument n without a block returns an array containing the maximum n elements"
|
12
|
+
fails "Enumerable#max_by when called with an argument n when n is nil returns the maximum element"
|
13
|
+
fails "Enumerable#max_by when called with an argument n with a block on a enumerable of length x where x < n returns an array containing the maximum n elements of length n"
|
14
|
+
fails "Enumerable#max_by when called with an argument n with a block returns an array containing the maximum n elements based on the block's value"
|
15
|
+
fails "Enumerable#max_by when called with an argument n without a block returns an enumerator"
|
16
|
+
fails "Enumerable#min that is nil returns the minimum element"
|
17
|
+
fails "Enumerable#min when called with an argument n on a enumerable of length x where x < n returns an array containing the minimum n elements of length x"
|
18
|
+
fails "Enumerable#min when called with an argument n with a block returns an array containing the minimum n elements"
|
19
|
+
fails "Enumerable#min when called with an argument n without a block returns an array containing the minimum n elements"
|
20
|
+
fails "Enumerable#min_by when called with an argument n when n is nil returns the minimum element"
|
21
|
+
fails "Enumerable#min_by when called with an argument n with a block on a enumerable of length x where x < n returns an array containing the minimum n elements of length n"
|
22
|
+
fails "Enumerable#min_by when called with an argument n with a block returns an array containing the minimum n elements based on the block's value"
|
23
|
+
fails "Enumerable#min_by when called with an argument n without a block returns an enumerator"
|
8
24
|
fails "Enumerable#minmax_by Enumerable with no size when no block is given returned Enumerator size returns nil"
|
9
25
|
fails "Enumerable#minmax_by Enumerable with size when no block is given returned Enumerator size returns the enumerable size"
|
10
26
|
fails "Enumerable#minmax_by gathers whole arrays as elements when each yields multiple"
|
@@ -15,6 +31,16 @@ opal_filter "Enumerable" do
|
|
15
31
|
fails "Enumerable#minmax_by returns the object that appears first in #each in case of a tie"
|
16
32
|
fails "Enumerable#minmax_by uses min/max.<=>(current) to determine order"
|
17
33
|
fails "Enumerable#reverse_each gathers whole arrays as elements when each yields multiple"
|
34
|
+
fails "Enumerable#slice_after raises an ArgumentError when given an incorrect number of arguments"
|
35
|
+
fails "Enumerable#slice_after when given a block and an argument raises an ArgumentError"
|
36
|
+
fails "Enumerable#slice_after when given a block and no argument calls the block to determine when to yield"
|
37
|
+
fails "Enumerable#slice_after when given an argument and no block calls === on the argument to determine when to yield"
|
38
|
+
fails "Enumerable#slice_after when given an argument and no block doesn't yield an empty array if the filter matches the first entry or the last entry"
|
39
|
+
fails "Enumerable#slice_after when given an argument and no block uses standard boolean as a test"
|
40
|
+
fails "Enumerable#slice_when when given a block calls the block for length of the receiver enumerable minus one times"
|
41
|
+
fails "Enumerable#slice_when when given a block returns an enumerator"
|
42
|
+
fails "Enumerable#slice_when when given a block splits chunks between adjacent elements i and j where the block returns true"
|
43
|
+
fails "Enumerable#slice_when when not given a block raises an ArgumentError"
|
18
44
|
fails "Enumerable#sort compare values returned by block with 0"
|
19
45
|
fails "Enumerable#sort raises an error if objects can't be compared"
|
20
46
|
fails "Enumerable#take_while calls the block with initial args when yielded with multiple arguments"
|
@@ -28,5 +54,4 @@ opal_filter "Enumerable" do
|
|
28
54
|
fails "Enumerable#zip converts arguments to enums using #to_enum"
|
29
55
|
fails "Enumerable#zip gathers whole arrays as elements when each yields multiple"
|
30
56
|
fails "Enumerable#zip passes each element of the result array to a block and return nil if a block is given"
|
31
|
-
fails "Enumerator#size returns the result from size.call if the size respond to call "
|
32
57
|
end
|
@@ -1,11 +1,9 @@
|
|
1
1
|
opal_filter "Enumerator" do
|
2
|
-
fails "#
|
3
|
-
fails "#to_enum exposes multi-arg yields as an array"
|
4
|
-
fails "Enumerator#each requires multiple arguments" # arity issue
|
5
|
-
fails "Enumerator#each_with_index passes on the given block's return value"
|
2
|
+
fails "Enumerator#each requires multiple arguments"
|
6
3
|
fails "Enumerator#each_with_index raises an ArgumentError if passed extra arguments"
|
7
4
|
fails "Enumerator#each_with_index returns the iterator's return value"
|
8
5
|
fails "Enumerator#each_with_index returns the object being enumerated when given a block"
|
6
|
+
fails "Enumerator#enum_for exposes multi-arg yields as an array"
|
9
7
|
fails "Enumerator#feed can be called for each iteration"
|
10
8
|
fails "Enumerator#feed causes yield to return the value if called during iteration"
|
11
9
|
fails "Enumerator#feed raises a TypeError if called more than once without advancing the enumerator"
|
@@ -42,4 +40,6 @@ opal_filter "Enumerator" do
|
|
42
40
|
fails "Enumerator#peek_values returns the next element in self"
|
43
41
|
fails "Enumerator#peek_values works in concert with #rewind"
|
44
42
|
fails "Enumerator#size returns returning value from size.call if set size is a Proc"
|
43
|
+
fails "Enumerator#size returns the result from size.call if the size respond to call"
|
44
|
+
fails "Enumerator#to_enum exposes multi-arg yields as an array"
|
45
45
|
end
|
@@ -1,13 +1,11 @@
|
|
1
1
|
opal_filter "Exception" do
|
2
|
-
fails "ArgumentError gives its own class name as message if it has no message"
|
3
2
|
fails "Errno::EAGAIN is the same class as Errno::EWOULDBLOCK if they represent the same errno value"
|
4
|
-
fails "Errno::EINVAL.new accepts an optional custom message and location"
|
5
3
|
fails "Errno::EINVAL.new accepts an optional custom message"
|
4
|
+
fails "Errno::EINVAL.new accepts an optional custom message and location"
|
6
5
|
fails "Errno::EINVAL.new can be called with no arguments"
|
7
6
|
fails "Errno::EMFILE can be subclassed"
|
8
7
|
fails "Exception is a superclass of EncodingError"
|
9
8
|
fails "Exception is a superclass of Interrupt"
|
10
|
-
fails "Exception is a superclass of SecurityError"
|
11
9
|
fails "Exception is a superclass of SystemStackError"
|
12
10
|
fails "Exception#== returns false if the two exceptions differ only in their backtrace"
|
13
11
|
fails "Exception#== returns false if the two exceptions differ only in their message"
|
@@ -23,9 +21,7 @@ opal_filter "Exception" do
|
|
23
21
|
fails "Exception#backtrace includes the line number of the location immediately prior to where self raised in the second element"
|
24
22
|
fails "Exception#backtrace includes the line number of the location where self raised in the first element"
|
25
23
|
fails "Exception#backtrace includes the name of the method from where self raised in the first element"
|
26
|
-
fails "Exception#backtrace returns an Array"
|
27
24
|
fails "Exception#backtrace returns nil if no backtrace was set"
|
28
|
-
fails "Exception#backtrace sets each element to a String"
|
29
25
|
fails "Exception#set_backtrace accepts a String"
|
30
26
|
fails "Exception#set_backtrace accepts an Array of Strings"
|
31
27
|
fails "Exception#set_backtrace accepts an empty Array"
|
@@ -48,9 +44,7 @@ opal_filter "Exception" do
|
|
48
44
|
fails "SignalException.new takes a signal symbol with SIG prefix as the first argument"
|
49
45
|
fails "SignalException.new takes a signal symbol without SIG prefix as the first argument"
|
50
46
|
fails "SignalException.new takes an optional message argument with a signal number"
|
51
|
-
fails "StandardError is a superclass of ZeroDivisionError"
|
52
47
|
fails "StopIteration#result returns the method-returned-object from an Enumerator"
|
53
|
-
fails "SystemCallError can be subclassed"
|
54
48
|
fails "SystemCallError#errno returns nil when no errno given"
|
55
49
|
fails "SystemCallError#errno returns the errno given as optional argument to new"
|
56
50
|
fails "SystemCallError#message returns the default message when no message is given"
|
data/spec/filters/bugs/float.rb
CHANGED
@@ -1,5 +1,19 @@
|
|
1
1
|
opal_filter "Float" do
|
2
2
|
fails "Float#divmod returns an [quotient, modulus] from dividing self by other" # precision errors caused by Math.frexp and Math.ldexp
|
3
|
+
fails "Float#next_float returns a float the smallest possible step greater than the receiver"
|
4
|
+
fails "Float#next_float returns NAN if NAN was the receiver"
|
5
|
+
fails "Float#next_float returns negative zero when stepping upward from just below zero"
|
6
|
+
fails "Float#next_float reverses the effect of prev_float"
|
7
|
+
fails "Float#next_float steps directly between -1.0 and -1.0 + EPSILON/2"
|
8
|
+
fails "Float#next_float steps directly between 1.0 and 1.0 + EPSILON"
|
9
|
+
fails "Float#next_float steps directly between MAX and INFINITY"
|
10
|
+
fails "Float#prev_float returns a float the smallest possible step smaller than the receiver"
|
11
|
+
fails "Float#prev_float returns NAN if NAN was the receiver"
|
12
|
+
fails "Float#prev_float returns positive zero when stepping downward from just above zero"
|
13
|
+
fails "Float#prev_float reverses the effect of next_float"
|
14
|
+
fails "Float#prev_float steps directly between -1.0 and -1.0 - EPSILON"
|
15
|
+
fails "Float#prev_float steps directly between 1.0 and 1.0 - EPSILON/2"
|
16
|
+
fails "Float#prev_float steps directly between MAX and INFINITY"
|
3
17
|
fails "Float#rationalize returns self as a simplified Rational with no argument" # precision errors caused by Math.frexp and Math.ldexp
|
4
18
|
fails "Float#to_i returns self truncated to an Integer"
|
5
19
|
fails "Float#to_int returns self truncated to an Integer"
|
data/spec/filters/bugs/hash.rb
CHANGED
@@ -7,9 +7,7 @@ opal_filter "Hash" do
|
|
7
7
|
fails "Hash#eql? compares keys with eql? semantics" # spec relies on integer and float being different
|
8
8
|
fails "Hash#eql? computes equality for complex recursive hashes"
|
9
9
|
fails "Hash#eql? computes equality for recursive hashes & arrays"
|
10
|
-
fails "Hash#fetch raises an ArgumentError when not passed one or two arguments" # arity issue?
|
11
10
|
fails "Hash#invert compares new keys with eql? semantics" # spec relies on integer and float being different
|
12
11
|
fails "Hash#[] compares keys with eql? semantics" # spec relies on integer and float being different
|
13
12
|
fails "Hash#[] does not create copies of the immediate default value" # spec uses mutable string
|
14
|
-
fails "Hash.new raises an ArgumentError if more than one argument is passed" # arity issue?
|
15
13
|
end
|
@@ -20,9 +20,9 @@ opal_filter "Integer" do
|
|
20
20
|
fails "Integer#chr without argument when Encoding.default_internal is not nil and self is greater than 255 returns a String encoding self interpreted as a codepoint in the default internal encoding"
|
21
21
|
fails "Integer#chr without argument when Encoding.default_internal is not nil and self is greater than 255 returns a String with the default internal encoding"
|
22
22
|
fails "Integer#gcdlcm raises a TypeError unless the argument is an Integer"
|
23
|
+
fails "Integer#gcdlcm returns [self, self] if self is equal to the argument"
|
23
24
|
fails "Integer#gcdlcm returns a two-element Array"
|
24
25
|
fails "Integer#gcdlcm returns an Array"
|
25
26
|
fails "Integer#gcdlcm returns the greatest common divisor of self and argument as the first element"
|
26
27
|
fails "Integer#gcdlcm returns the least common multiple of self and argument as the last element"
|
27
|
-
fails "Integer#gcdlcm returns [self, self] if self is equal to the argument"
|
28
28
|
end
|
data/spec/filters/bugs/kernel.rb
CHANGED
@@ -1,9 +1,14 @@
|
|
1
1
|
opal_filter "Kernel" do
|
2
2
|
fails "Kernel#=~ returns nil matching any object"
|
3
|
-
fails "Kernel#Array does not call #to_a on an Array"
|
3
|
+
fails "Kernel#Array does not call #to_a on an Array"
|
4
|
+
fails "Kernel#String calls #to_s if #respond_to?(:to_s) returns true"
|
5
|
+
fails "Kernel#String raises a TypeError if #to_s does not exist"
|
6
|
+
fails "Kernel#String raises a TypeError if #to_s is not defined, even though #respond_to?(:to_s) returns true"
|
7
|
+
fails "Kernel#String raises a TypeError if respond_to? returns false for #to_s"
|
8
|
+
fails "Kernel#__dir__ returns the real name of the directory containing the currently-executing file"
|
9
|
+
fails "Kernel#__dir__ when used in eval with top level binding returns the real name of the directory containing the currently-executing file"
|
4
10
|
fails "Kernel#block_given? is a private method"
|
5
11
|
fails "Kernel#class returns the class of the object"
|
6
|
-
fails "Kernel#clone copies modules included in the singleton class"
|
7
12
|
fails "Kernel#define_singleton_method when given an UnboundMethod will raise when attempting to define an object's singleton method from another object's singleton method"
|
8
13
|
fails "Kernel#dup does not copy constants defined in the singleton class"
|
9
14
|
fails "Kernel#eval allows a binding to be captured inside an eval"
|
@@ -29,35 +34,37 @@ opal_filter "Kernel" do
|
|
29
34
|
fails "Kernel#eval uses the filename of the binding if none is provided"
|
30
35
|
fails "Kernel#eval uses the receiver as self inside the eval"
|
31
36
|
fails "Kernel#eval uses the same scope for local variables when given the same binding"
|
32
|
-
fails "Kernel#
|
33
|
-
fails "Kernel#
|
37
|
+
fails "Kernel#extend calls extend_object on argument"
|
38
|
+
fails "Kernel#extend does not calls append_features on arguments metaclass"
|
39
|
+
fails "Kernel#extend makes the class a kind_of? the argument"
|
40
|
+
fails "Kernel#extend on frozen instance raises a RuntimeError"
|
41
|
+
fails "Kernel#extend on frozen instance raises an ArgumentError when no arguments given"
|
42
|
+
fails "Kernel#extend raises an ArgumentError when no arguments given"
|
43
|
+
fails "Kernel#extend requires multiple arguments"
|
34
44
|
fails "Kernel#freeze causes instance_variable_set to raise RuntimeError"
|
35
45
|
fails "Kernel#freeze causes mutative calls to raise RuntimeError"
|
36
46
|
fails "Kernel#freeze on a Float has no effect since it is already frozen"
|
37
47
|
fails "Kernel#freeze on integers has no effect since they are already frozen"
|
38
|
-
fails "Kernel#freeze on true, false and nil
|
48
|
+
fails "Kernel#freeze on true, false and nil has no effect since they are already frozen"
|
39
49
|
fails "Kernel#frozen? on a Float returns true"
|
40
50
|
fails "Kernel#frozen? on integers returns true"
|
51
|
+
fails "Kernel#frozen? on true, false and nil returns true"
|
41
52
|
fails "Kernel#inspect does not call #to_s if it is defined"
|
42
53
|
fails "Kernel#inspect returns a tainted string if self is tainted"
|
43
54
|
fails "Kernel#inspect returns an untrusted string if self is untrusted"
|
44
|
-
fails "Kernel#instance_variables immediate values returns the correct array if an instance variable is added"
|
45
|
-
fails "Kernel#instance_variables regular objects returns an empty array if no instance variables are defined"
|
46
|
-
fails "Kernel#instance_variables regular objects returns the correct array if an instance variable is added"
|
47
55
|
fails "Kernel#instance_variable_set on frozen objects keeps stored object after any exceptions"
|
48
56
|
fails "Kernel#instance_variable_set on frozen objects raises a RuntimeError when passed replacement is different from stored object"
|
49
57
|
fails "Kernel#instance_variable_set on frozen objects raises a RuntimeError when passed replacement is identical to stored object"
|
50
|
-
fails "Kernel#
|
58
|
+
fails "Kernel#instance_variables immediate values returns the correct array if an instance variable is added"
|
51
59
|
fails "Kernel#is_a? returns true if given a Module that object has been extended with"
|
52
60
|
fails "Kernel#iterator? is a private method"
|
53
|
-
fails "Kernel#
|
61
|
+
fails "Kernel#itself returns the receiver itself"
|
54
62
|
fails "Kernel#kind_of? returns true if given a Module that object has been extended with"
|
55
63
|
fails "Kernel#local_variables contains locals as they are added"
|
56
64
|
fails "Kernel#local_variables is a private method"
|
57
65
|
fails "Kernel#local_variables is accessible from bindings"
|
58
66
|
fails "Kernel#local_variables is accessible in eval"
|
59
67
|
fails "Kernel#method can be called even if we only repond_to_missing? method, true"
|
60
|
-
fails "Kernel#method raises a NameError for an invalid singleton method name"
|
61
68
|
fails "Kernel#method returns a method object if we repond_to_missing? method"
|
62
69
|
fails "Kernel#method will see an alias of the original method as == when in a derived class"
|
63
70
|
fails "Kernel#methods returns private singleton methods defined by obj.meth"
|
@@ -106,22 +113,15 @@ opal_filter "Kernel" do
|
|
106
113
|
fails "Kernel#public_methods returns a list of the names of publicly accessible methods in the object"
|
107
114
|
fails "Kernel#public_methods when passed false returns a list of public methods in without its ancestors"
|
108
115
|
fails "Kernel#public_methods when passed nil returns a list of public methods in without its ancestors"
|
109
|
-
fails "Kernel#public_send
|
116
|
+
fails "Kernel#public_send has a negative arity"
|
110
117
|
fails "Kernel#public_send raises a NoMethodError if the method is protected"
|
111
118
|
fails "Kernel#public_send raises a NoMethodError if the named method is an alias of a private method"
|
112
119
|
fails "Kernel#public_send raises a NoMethodError if the named method is an alias of a protected method"
|
113
120
|
fails "Kernel#public_send raises a NoMethodError if the named method is private"
|
114
121
|
fails "Kernel#puts delegates to $stdout.puts"
|
115
122
|
fails "Kernel#puts is a private method"
|
116
|
-
fails "Kernel#
|
117
|
-
fails "Kernel#remove_instance_variable raises a TypeError if passed an Object not defining #to_str"
|
118
|
-
fails "Kernel#remove_instance_variable when passed a String removes the instance variable"
|
119
|
-
fails "Kernel#remove_instance_variable when passed a String returns the instance variable's value"
|
120
|
-
fails "Kernel#remove_instance_variable when passed a Symbol removes the instance variable"
|
121
|
-
fails "Kernel#remove_instance_variable when passed a Symbol returns the instance variable's value"
|
122
|
-
fails "Kernel#remove_instance_variable when passed an Object calls #to_str to convert the argument"
|
123
|
+
fails "Kernel#raise raises RuntimeError if no exception class is given"
|
123
124
|
fails "Kernel#respond_to? does not change method visibility when finding private method"
|
124
|
-
fails "Kernel#respond_to? is a public method"
|
125
125
|
fails "Kernel#respond_to? is only an instance method"
|
126
126
|
fails "Kernel#respond_to? returns false even if obj responds to the given private method (include_private = false)"
|
127
127
|
fails "Kernel#respond_to? returns false if obj responds to the given private method"
|
@@ -145,7 +145,7 @@ opal_filter "Kernel" do
|
|
145
145
|
fails "Kernel#respond_to_missing? isn't called when obj responds to the given protected method, include_private = true"
|
146
146
|
fails "Kernel#respond_to_missing? isn't called when obj responds to the given public method"
|
147
147
|
fails "Kernel#respond_to_missing? isn't called when obj responds to the given public method, include_private = true"
|
148
|
-
fails "Kernel#send
|
148
|
+
fails "Kernel#send has a negative arity"
|
149
149
|
fails "Kernel#singleton_class raises TypeError for Fixnum"
|
150
150
|
fails "Kernel#singleton_class raises TypeError for Symbol"
|
151
151
|
fails "Kernel#singleton_methods when not passed an argument does not return any included methods for a class including a module"
|
@@ -230,26 +230,36 @@ opal_filter "Kernel" do
|
|
230
230
|
fails "Kernel#singleton_methods when passed true returns the names of singleton methods for an object extented with a module"
|
231
231
|
fails "Kernel#singleton_methods when passed true returns the names of singleton methods for an object extented with two modules"
|
232
232
|
fails "Kernel#singleton_methods when passed true returns the names of singleton methods for an object"
|
233
|
-
fails "Kernel#String calls #to_s if #respond_to?(:to_s) returns true"
|
234
|
-
fails "Kernel#String raises a TypeError if #to_s does not exist"
|
235
|
-
fails "Kernel#String raises a TypeError if #to_s is not defined, even though #respond_to?(:to_s) returns true"
|
236
|
-
fails "Kernel#String raises a TypeError if respond_to? returns false for #to_s"
|
237
233
|
fails "Kernel#warn requires multiple arguments"
|
238
|
-
fails "Kernel
|
239
|
-
fails "Kernel#__dir__ when used in eval with top level binding returns the real name of the directory containing the currently-executing file"
|
240
|
-
fails "Kernel.Array does not call #to_a on an Array" #something funky with the spec itself
|
241
|
-
fails "Kernel.Complex() when passed a non-Numeric second argument raises TypeError"
|
242
|
-
fails "Kernel.Complex() when passed a Numeric which responds to #real? with false returns the passed argument"
|
243
|
-
fails "Kernel.Complex() when passed a Numeric which responds to #real? with true returns a Complex with the passed argument as the real component and 0 as the imaginary component"
|
244
|
-
fails "Kernel.Complex() when passed a single non-Numeric coerces the passed argument using #to_c"
|
234
|
+
fails "Kernel.Array does not call #to_a on an Array"
|
245
235
|
fails "Kernel.Complex() when passed Numerics n1 and n2 and at least one responds to #real? with false returns n1 + n2 * Complex(0, 1)"
|
246
|
-
fails "Kernel.Complex() when passed two Numerics and both respond to #real? with true returns a Complex with the passed arguments as real and imaginary components respectively"
|
247
236
|
fails "Kernel.Complex() when passed [Complex, Complex] returns a new Complex number based on the two given numbers"
|
248
237
|
fails "Kernel.Complex() when passed [Complex] returns the passed Complex number"
|
249
|
-
fails "Kernel.Complex() when passed
|
250
|
-
fails "Kernel.Complex() when passed
|
251
|
-
fails "Kernel.
|
252
|
-
fails "Kernel.
|
238
|
+
fails "Kernel.Complex() when passed a Numeric which responds to #real? with false returns the passed argument"
|
239
|
+
fails "Kernel.Complex() when passed a non-Numeric second argument raises TypeError"
|
240
|
+
fails "Kernel.Complex() when passed a single non-Numeric coerces the passed argument using #to_c"
|
241
|
+
fails "Kernel.Rational when passed a String converts the String to a Rational using the same method as String#to_r"
|
242
|
+
fails "Kernel.Rational when passed a String does not use the same method as Float#to_r"
|
243
|
+
fails "Kernel.Rational when passed a String raises a TypeError if the first argument is a Symbol"
|
244
|
+
fails "Kernel.Rational when passed a String raises a TypeError if the second argument is a Symbol"
|
245
|
+
fails "Kernel.Rational when passed a String scales the Rational value of the first argument by the Rational value of the second"
|
246
|
+
fails "Kernel.Rational when passed a String when passed a Numeric calls #to_r to convert the first argument to a Rational"
|
247
|
+
fails "Kernel.String calls #to_s if #respond_to?(:to_s) returns true"
|
248
|
+
fails "Kernel.String raises a TypeError if #to_s does not exist"
|
249
|
+
fails "Kernel.String raises a TypeError if #to_s is not defined, even though #respond_to?(:to_s) returns true"
|
250
|
+
fails "Kernel.String raises a TypeError if respond_to? returns false for #to_s"
|
251
|
+
fails "Kernel.__callee__ returns method name even from eval"
|
252
|
+
fails "Kernel.__callee__ returns method name even from send"
|
253
|
+
fails "Kernel.__callee__ returns the aliased name when aliased method"
|
254
|
+
fails "Kernel.__callee__ returns the caller from a define_method called from the same class"
|
255
|
+
fails "Kernel.__callee__ returns the caller from block inside define_method too"
|
256
|
+
fails "Kernel.__callee__ returns the caller from blocks too"
|
257
|
+
fails "Kernel.__callee__ returns the caller from define_method too"
|
258
|
+
fails "Kernel.__method__ returns method name even from eval"
|
259
|
+
fails "Kernel.__method__ returns method name even from send"
|
260
|
+
fails "Kernel.__method__ returns the caller from block inside define_method too"
|
261
|
+
fails "Kernel.__method__ returns the caller from blocks too"
|
262
|
+
fails "Kernel.__method__ returns the caller from define_method too"
|
253
263
|
fails "Kernel.global_variables finds subset starting with std"
|
254
264
|
fails "Kernel.global_variables is a private method"
|
255
265
|
fails "Kernel.lambda accepts 0 arguments when used with ||"
|
@@ -269,19 +279,6 @@ opal_filter "Kernel" do
|
|
269
279
|
fails "Kernel.printf writes to stdout when a string is the first argument"
|
270
280
|
fails "Kernel.proc is a private method"
|
271
281
|
fails "Kernel.rand is a private method"
|
272
|
-
fails "Kernel.Rational passed Integer returns a new Rational number with 1 as the denominator"
|
273
|
-
fails "Kernel.Rational passed two integers reduces the Rational"
|
274
|
-
fails "Kernel.Rational passed two integers returns a new Rational number"
|
275
|
-
fails "Kernel.Rational when passed a String converts the String to a Rational using the same method as String#to_r"
|
276
|
-
fails "Kernel.Rational when passed a String does not use the same method as Float#to_r"
|
277
|
-
fails "Kernel.Rational when passed a String raises a TypeError if the first argument is a Symbol"
|
278
|
-
fails "Kernel.Rational when passed a String raises a TypeError if the first argument is nil"
|
279
|
-
fails "Kernel.Rational when passed a String raises a TypeError if the second argument is a Symbol"
|
280
|
-
fails "Kernel.Rational when passed a String raises a TypeError if the second argument is nil"
|
281
|
-
fails "Kernel.Rational when passed a String scales the Rational value of the first argument by the Rational value of the second"
|
282
|
-
fails "Kernel.Rational when passed a String when passed a Complex raises a RangeError if the imaginary part is not 0"
|
283
|
-
fails "Kernel.Rational when passed a String when passed a Complex returns a Rational from the real part if the imaginary part is 0"
|
284
|
-
fails "Kernel.Rational when passed a String when passed a Numeric calls #to_r to convert the first argument to a Rational"
|
285
282
|
fails "Kernel.srand accepts a Bignum as a seed"
|
286
283
|
fails "Kernel.srand accepts a negative seed"
|
287
284
|
fails "Kernel.srand accepts and uses a seed of 0"
|
@@ -289,22 +286,6 @@ opal_filter "Kernel" do
|
|
289
286
|
fails "Kernel.srand is a private method"
|
290
287
|
fails "Kernel.srand returns the previous seed value"
|
291
288
|
fails "Kernel.srand seeds the RNG correctly and repeatably"
|
292
|
-
fails "Kernel.String calls #to_s if #respond_to?(:to_s) returns true"
|
293
|
-
fails "Kernel.String raises a TypeError if #to_s does not exist"
|
294
|
-
fails "Kernel.String raises a TypeError if #to_s is not defined, even though #respond_to?(:to_s) returns true"
|
295
|
-
fails "Kernel.String raises a TypeError if respond_to? returns false for #to_s"
|
296
|
-
fails "Kernel.__callee__ returns method name even from eval"
|
297
|
-
fails "Kernel.__callee__ returns method name even from send"
|
298
|
-
fails "Kernel.__callee__ returns the aliased name when aliased method"
|
299
|
-
fails "Kernel.__callee__ returns the caller from a define_method called from the same class"
|
300
|
-
fails "Kernel.__callee__ returns the caller from block inside define_method too"
|
301
|
-
fails "Kernel.__callee__ returns the caller from blocks too"
|
302
|
-
fails "Kernel.__callee__ returns the caller from define_method too"
|
303
|
-
fails "Kernel.__method__ returns method name even from eval"
|
304
|
-
fails "Kernel.__method__ returns method name even from send"
|
305
|
-
fails "Kernel.__method__ returns the caller from block inside define_method too"
|
306
|
-
fails "Kernel.__method__ returns the caller from blocks too"
|
307
|
-
fails "Kernel.__method__ returns the caller from define_method too"
|
308
289
|
fails "self.send(:block_given?) returns false when a method defined by define_method is called with a block"
|
309
290
|
fails "self.send(:block_given?) returns true if and only if a block is supplied"
|
310
291
|
end
|