Skip to content

Commit

Permalink
Showing 135 changed files with 280 additions and 479 deletions.
4 changes: 4 additions & 0 deletions .travis.yml
Original file line number Diff line number Diff line change
@@ -42,6 +42,10 @@ matrix:
jdk: oraclejdk8
- env: JT='test mri'
- env: JTRCI='lib/ruby/truffle/jruby+truffle/gem_ci/travis.txt'
- env: PHASE='-Pmain'
jdk: oraclejdk8
- env: PHASE='-Pj2ee'
jdk: oraclejdk7
# NOTE: build seems to never start (waited for any to finish for more than a day) - probably a travis-ci bug
#- env: PHASE='-Pmain'
# sudo: required
42 changes: 7 additions & 35 deletions core/src/main/java/org/jruby/RubyKernel.java
Original file line number Diff line number Diff line change
@@ -2066,65 +2066,37 @@ public static IRubyObject gsub(ThreadContext context, IRubyObject recv, IRubyObj
public static class LoopMethods {
@JRubyMethod(module = true, visibility = PRIVATE, reads = LASTLINE, writes = LASTLINE)
public static IRubyObject gsub(ThreadContext context, IRubyObject recv, IRubyObject arg0, Block block) {
RubyString str = getLastlineString(context, context.runtime);

context.setLastLine(str.gsub(context, arg0, block));

return str;
return context.setLastLine(getLastlineString(context, context.runtime).gsub(context, arg0, block));
}

@JRubyMethod(module = true, visibility = PRIVATE, reads = LASTLINE, writes = LASTLINE)
public static IRubyObject gsub(ThreadContext context, IRubyObject recv, IRubyObject arg0, IRubyObject arg1, Block block) {
RubyString str = getLastlineString(context, context.runtime);

context.setLastLine(str.gsub(context, arg0, arg1, block));

return str;
return context.setLastLine(getLastlineString(context, context.runtime).gsub(context, arg0, arg1, block));
}

@JRubyMethod(module = true, visibility = PRIVATE, reads = LASTLINE, writes = LASTLINE)
public static IRubyObject sub(ThreadContext context, IRubyObject recv, IRubyObject arg0, Block block) {
RubyString str = getLastlineString(context, context.runtime);

context.setLastLine(str.sub(context, arg0, block));

return str;
return context.setLastLine(getLastlineString(context, context.runtime).sub(context, arg0, block));
}

@JRubyMethod(module = true, visibility = PRIVATE, reads = LASTLINE, writes = LASTLINE)
public static IRubyObject sub(ThreadContext context, IRubyObject recv, IRubyObject arg0, IRubyObject arg1, Block block) {
RubyString str = getLastlineString(context, context.runtime);

context.setLastLine(str.sub(context, arg0, arg1, block));

return str;
return context.setLastLine(getLastlineString(context, context.runtime).sub(context, arg0, arg1, block));
}

@JRubyMethod(module = true, visibility = PRIVATE, reads = LASTLINE, writes = LASTLINE)
public static IRubyObject chop(ThreadContext context, IRubyObject recv) {
RubyString str = getLastlineString(context, context.runtime);

context.setLastLine(str.chop(context));

return str;
return context.setLastLine(getLastlineString(context, context.runtime).chop(context));
}

@JRubyMethod(module = true, visibility = PRIVATE, reads = LASTLINE, writes = LASTLINE)
public static IRubyObject chomp(ThreadContext context, IRubyObject recv) {
RubyString str = getLastlineString(context, context.runtime);

context.setLastLine(str.chomp(context));

return str;
return context.setLastLine(getLastlineString(context, context.runtime).chomp(context));
}

@JRubyMethod(module = true, visibility = PRIVATE, reads = LASTLINE, writes = LASTLINE)
public static IRubyObject chomp(ThreadContext context, IRubyObject recv, IRubyObject arg0) {
RubyString str = getLastlineString(context, context.runtime);

context.setLastLine(str.chomp(context, arg0));

return str;
return context.setLastLine(getLastlineString(context, context.runtime).chomp(context, arg0));
}
}

4 changes: 2 additions & 2 deletions core/src/main/java/org/jruby/ir/IRBuilder.java
Original file line number Diff line number Diff line change
@@ -1025,6 +1025,7 @@ public Operand buildCall(CallNode callNode) {

ArrayNode argsAry;
if (
!callNode.isLazy() &&
callNode.getName().equals("[]") &&
callNode.getArgsNode() instanceof ArrayNode &&
(argsAry = (ArrayNode) callNode.getArgsNode()).size() == 1 &&
@@ -1035,14 +1036,13 @@ public Operand buildCall(CallNode callNode) {
return callResult;
}

Operand[] args = setupCallArgs(callArgsNode);

Label lazyLabel = getNewLabel();
Label endLabel = getNewLabel();
if (callNode.isLazy()) {
addInstr(new BNilInstr(lazyLabel, receiver));
}

Operand[] args = setupCallArgs(callArgsNode);
Operand block = setupCallClosure(callNode.getIterNode());

CallInstr callInstr = CallInstr.create(scope, callResult, callNode.getName(), receiver, args, block);
4 changes: 2 additions & 2 deletions core/src/main/java/org/jruby/ir/runtime/IRRuntimeHelpers.java
Original file line number Diff line number Diff line change
@@ -29,6 +29,7 @@
import org.jruby.parser.StaticScope;
import org.jruby.runtime.*;
import org.jruby.runtime.builtin.IRubyObject;
import org.jruby.runtime.callsite.CachingCallSite;
import org.jruby.runtime.callsite.FunctionalCachingCallSite;
import org.jruby.runtime.callsite.NormalCachingCallSite;
import org.jruby.runtime.callsite.RefinedCachingCallSite;
@@ -1800,8 +1801,7 @@ public static RubyString freezeLiteralString(ThreadContext context, RubyString s

@JIT
public static IRubyObject callOptimizedAref(ThreadContext context, IRubyObject caller, IRubyObject target, RubyString keyStr, CallSite site) {
// FIXME: optimized builtin check for Hash#[]
if (target instanceof RubyHash) {
if (target instanceof RubyHash && ((CachingCallSite) site).retrieveCache(target.getMetaClass(), "[]").method.isBuiltin()) {
// call directly with cached frozen string
return ((RubyHash) target).op_aref(context, keyStr);
}
Original file line number Diff line number Diff line change
@@ -164,8 +164,15 @@ protected void promoteToFullBuild(ThreadContext context) {
if (context.runtime.isBooting()) return; // don't JIT during runtime boot

if (callCount >= 0) {
// ensure we've got code ready for JIT
ensureInstrsReady();
closure.prepareForCompilation();

// if we don't have an explicit protocol, disable JIT
if (!closure.hasExplicitCallProtocol()) {
if (Options.JIT_LOGGING.load()) {
LOG.info("JIT failed; no protocol found in block: " + closure);
}
callCount = -1;
return;
}
5 changes: 3 additions & 2 deletions core/src/main/ruby/jruby/kernel/signal.rb
Original file line number Diff line number Diff line change
@@ -10,14 +10,15 @@ def trap(sig, cmd = nil, &block)
oldhandler, installed = if block
raise SecurityError.new("Insecure: tainted signal trap") if block.tainted?
Signal::__jtrap_kernel(block, sig)
elsif cmd
else
raise SecurityError.new("Insecure: tainted signal trap") if cmd.tainted?
cmd = cmd.to_s if Symbol === cmd
case cmd
when Proc
Signal::__jtrap_kernel(cmd, sig)
when 'EXIT'
Signal::__jtrap_kernel(proc{exit}, sig)
when 'SIG_IGN', 'IGNORE'
when NilClass, 'SIG_IGN', 'IGNORE'
Signal::__jtrap_restore_kernel(sig)
when 'SIG_DFL', 'DEFAULT'
Signal::__jtrap_platform_kernel(sig)
3 changes: 2 additions & 1 deletion lib/ruby/truffle/jruby+truffle/bin/jruby+truffle
Original file line number Diff line number Diff line change
@@ -2,4 +2,5 @@

require_relative '../lib/runner.rb'

JRubyTruffleRunner.new
runner = JRubyTruffleRunner.new
exit runner.run
4 changes: 3 additions & 1 deletion lib/ruby/truffle/jruby+truffle/gem_ci/activesupport.rb
Original file line number Diff line number Diff line change
@@ -5,7 +5,9 @@
git_clone 'https://github.com/rails/rails.git', branch: '4-2-stable'
end

setup
use_only_https_git_paths!

has_to_succeed setup

result run(%w[--require-pattern test/**/*_test.rb -r exclude_tests -- -I test -e nil], raise: false)

13 changes: 9 additions & 4 deletions lib/ruby/truffle/jruby+truffle/gem_ci/default.rb
Original file line number Diff line number Diff line change
@@ -1,8 +1,13 @@
unless File.exists? repository_dir
git_clone option(:git)
end
declare_options git: ['--git URL', 'Path to the gem\'s repository', STORE_NEW_VALUE, nil],
version: ['--version VERSION', 'Version of the gem', STORE_NEW_VALUE, nil]

setup
git_clone option(:git) unless File.exists? repository_dir
git_checkout git_tag option(:version)

delete_gemfile_lock!
use_only_https_git_paths!

has_to_succeed setup

result run(%w[-S rake], raise: false)

Original file line number Diff line number Diff line change
@@ -0,0 +1,9 @@
---
:setup:
:file:
bundler.rb: |
module Bundler
BundlerError = Class.new(Exception)
def self.setup(*args)
end
end
Original file line number Diff line number Diff line change
@@ -1,12 +1,4 @@
:setup:
:file:
"bundler/gem_tasks.rb": nil
:stored_commands:
:ci:
- :setup
- :test
:setup:
- "git clone git@github.com:lucasocon/openweather.git"
- "jruby+truffle --dir openweather setup"
:test: "jruby+truffle --dir openweather run --require-pattern 'test/*_test.rb' -I test -- -e nil"

336 changes: 217 additions & 119 deletions lib/ruby/truffle/jruby+truffle/lib/runner.rb

Large diffs are not rendered by default.

4 changes: 0 additions & 4 deletions spec/tags/ruby/core/argf/bytes_tags.txt

This file was deleted.

4 changes: 0 additions & 4 deletions spec/tags/ruby/core/argf/chars_tags.txt

This file was deleted.

2 changes: 0 additions & 2 deletions spec/tags/ruby/core/argf/close_tags.txt
Original file line number Diff line number Diff line change
@@ -1,4 +1,2 @@
fails:ARGF.close closes the current open stream
fails:ARGF.close returns self
fails:ARGF.close raises an IOError if called on a closed stream
fails:ARGF.close does not close STDIN
1 change: 0 additions & 1 deletion spec/tags/ruby/core/argf/closed_tags.txt

This file was deleted.

4 changes: 0 additions & 4 deletions spec/tags/ruby/core/argf/each_byte_tags.txt

This file was deleted.

4 changes: 0 additions & 4 deletions spec/tags/ruby/core/argf/each_char_tags.txt

This file was deleted.

3 changes: 0 additions & 3 deletions spec/tags/ruby/core/argf/each_line_tags.txt

This file was deleted.

3 changes: 0 additions & 3 deletions spec/tags/ruby/core/argf/each_tags.txt

This file was deleted.

4 changes: 0 additions & 4 deletions spec/tags/ruby/core/argf/eof_tags.txt

This file was deleted.

1 change: 0 additions & 1 deletion spec/tags/ruby/core/argf/file_tags.txt

This file was deleted.

1 change: 0 additions & 1 deletion spec/tags/ruby/core/argf/filename_tags.txt
Original file line number Diff line number Diff line change
@@ -1,2 +1 @@
fails:ARGF.filename returns the current file name on each file
fails:ARGF.filename sets the $FILENAME global variable with the current file name on each file
2 changes: 0 additions & 2 deletions spec/tags/ruby/core/argf/fileno_tags.txt

This file was deleted.

2 changes: 0 additions & 2 deletions spec/tags/ruby/core/argf/getc_tags.txt

This file was deleted.

6 changes: 0 additions & 6 deletions spec/tags/ruby/core/argf/gets_tags.txt
Original file line number Diff line number Diff line change
@@ -1,7 +1 @@
fails:ARGF.gets reads one line of a file
fails:ARGF.gets reads all lines of a file
fails:ARGF.gets reads all lines of two files
fails:ARGF.gets sets $_ global variable with each line read
fails:ARGF.gets returns nil when reaching end of files
fails:ARGF.gets reads the contents of the file with default encoding
slow:ARGF.gets reads all lines of stdin
2 changes: 0 additions & 2 deletions spec/tags/ruby/core/argf/lines_tags.txt
Original file line number Diff line number Diff line change
@@ -1,3 +1 @@
fails:ARGF.lines with a separator yields each separated section of all streams
fails:ARGF.lines reads each line of files
fails:ARGF.lines returns self when passed a block
1 change: 0 additions & 1 deletion spec/tags/ruby/core/argf/path_tags.txt
Original file line number Diff line number Diff line change
@@ -1,2 +1 @@
fails:ARGF.path returns the current file name on each file
fails:ARGF.path sets the $FILENAME global variable with the current file name on each file
3 changes: 0 additions & 3 deletions spec/tags/ruby/core/argf/pos_tags.txt

This file was deleted.

12 changes: 0 additions & 12 deletions spec/tags/ruby/core/argf/read_tags.txt
Original file line number Diff line number Diff line change
@@ -1,15 +1,3 @@
fails:ARGF.read reads the contents of a file
fails:ARGF.read treats first nil argument as no length limit
fails:ARGF.read treats second nil argument as no output buffer
fails:ARGF.read treats second argument as an output buffer
fails:ARGF.read reads a number of bytes from the first file
fails:ARGF.read reads from a single file consecutively
fails:ARGF.read reads the contents of two files
fails:ARGF.read reads the contents of one file and some characters from the second
fails:ARGF.read reads across two files consecutively
fails:ARGF.read reads the contents of the same file twice
fails:ARGF.read reads the contents of a special device file
fails:ARGF.read reads the contents of the file with default encoding
slow:ARGF.read reads the contents of stdin
slow:ARGF.read reads a number of bytes from stdin
slow:ARGF.read reads the contents of one file and stdin
2 changes: 0 additions & 2 deletions spec/tags/ruby/core/argf/readchar_tags.txt

This file was deleted.

5 changes: 0 additions & 5 deletions spec/tags/ruby/core/argf/readline_tags.txt

This file was deleted.

2 changes: 0 additions & 2 deletions spec/tags/ruby/core/argf/readlines_tags.txt

This file was deleted.

2 changes: 0 additions & 2 deletions spec/tags/ruby/core/argf/rewind_tags.txt
Original file line number Diff line number Diff line change
@@ -1,3 +1 @@
fails:ARGF.rewind goes back to beginning of current file
fails:ARGF.rewind resets ARGF.lineno to 0
fails:ARGF.rewind raises an ArgumentError when end of stream reached
3 changes: 0 additions & 3 deletions spec/tags/ruby/core/argf/seek_tags.txt

This file was deleted.

4 changes: 0 additions & 4 deletions spec/tags/ruby/core/argf/set_encoding_tags.txt

This file was deleted.

3 changes: 0 additions & 3 deletions spec/tags/ruby/core/argf/skip_tags.txt

This file was deleted.

2 changes: 0 additions & 2 deletions spec/tags/ruby/core/argf/tell_tags.txt

This file was deleted.

2 changes: 0 additions & 2 deletions spec/tags/ruby/core/argf/to_a_tags.txt

This file was deleted.

2 changes: 0 additions & 2 deletions spec/tags/ruby/core/argf/to_i_tags.txt

This file was deleted.

1 change: 0 additions & 1 deletion spec/tags/ruby/core/argf/to_io_tags.txt

This file was deleted.

1 change: 0 additions & 1 deletion spec/tags/ruby/core/array/partition_tags.txt

This file was deleted.

1 change: 0 additions & 1 deletion spec/tags/ruby/core/array/select_tags.txt

This file was deleted.

1 change: 0 additions & 1 deletion spec/tags/ruby/core/bignum/divide_tags.txt

This file was deleted.

6 changes: 0 additions & 6 deletions spec/tags/ruby/core/complex/coerce_tags.txt

This file was deleted.

1 change: 0 additions & 1 deletion spec/tags/ruby/core/complex/eql_tags.txt

This file was deleted.

1 change: 0 additions & 1 deletion spec/tags/ruby/core/complex/exponent_tags.txt

This file was deleted.

1 change: 0 additions & 1 deletion spec/tags/ruby/core/complex/fdiv_tags.txt

This file was deleted.

1 change: 0 additions & 1 deletion spec/tags/ruby/core/complex/inspect_tags.txt

This file was deleted.

1 change: 0 additions & 1 deletion spec/tags/ruby/core/complex/integer_tags.txt

This file was deleted.

3 changes: 0 additions & 3 deletions spec/tags/ruby/core/complex/real_tags.txt

This file was deleted.

1 change: 0 additions & 1 deletion spec/tags/ruby/core/dir/fileno_tags.txt
Original file line number Diff line number Diff line change
@@ -1 +0,0 @@
fails:Dir#fileno returns the file descriptor of the dir
1 change: 0 additions & 1 deletion spec/tags/ruby/core/dir/glob_tags.txt
Original file line number Diff line number Diff line change
@@ -1,4 +1,3 @@
fails(JRUBY-5667):Dir.glob splits the string on \0 if there is only one string given
fails:Dir.glob raises an Encoding::CompatibilityError if the argument encoding is not compatible with US-ASCII
fails:Dir.glob matches nothing when given an empty list of paths
fails:Dir.glob splits the string on \0 if there is only one string given
1 change: 0 additions & 1 deletion spec/tags/ruby/core/enumerable/each_cons_tags.txt
Original file line number Diff line number Diff line change
@@ -1,2 +1 @@
fails:Enumerable#each_cons raises an Argument Error if there is not a single parameter > 0
fails:Enumerable#each_cons raises an ArgumentError if there is not a single parameter > 0
1 change: 0 additions & 1 deletion spec/tags/ruby/core/enumerable/each_slice_tags.txt
Original file line number Diff line number Diff line change
@@ -1,2 +1 @@
fails:Enumerable#each_slice raises an Argument Error if there is not a single parameter > 0
fails:Enumerable#each_slice raises an ArgumentError if there is not a single parameter > 0
1 change: 0 additions & 1 deletion spec/tags/ruby/core/enumerable/grep_tags.txt
Original file line number Diff line number Diff line change
@@ -1 +0,0 @@
fails:Enumerable#grep calls the block with an array when yielded with multiple arguments
2 changes: 0 additions & 2 deletions spec/tags/ruby/core/enumerable/slice_when_tags.txt
Original file line number Diff line number Diff line change
@@ -1,4 +1,2 @@
fails:Enumerable#slice_when when given a block returns an enumerator
fails:Enumerable#slice_when when given a block splits chunks between adjacent elements i and j where the block returns true
fails:Enumerable#slice_when when given a block calls the block for length of the receiver enumerable minus one times
fails:Enumerable#slice_when when not given a block raises an ArgumentError
1 change: 0 additions & 1 deletion spec/tags/ruby/core/exception/name_tags.txt
Original file line number Diff line number Diff line change
@@ -1,3 +1,2 @@
fails:NameError#name returns a class variable name as a symbol
fails:NameError#name always returns a symbol when a NameError is raised from #instance_variable_get
fails:NameError#name always returns a symbol when a NameError is raised from #class_variable_get
1 change: 0 additions & 1 deletion spec/tags/ruby/core/exception/result_tags.txt

This file was deleted.

3 changes: 0 additions & 3 deletions spec/tags/ruby/core/fixnum/divide_tags.txt

This file was deleted.

2 changes: 0 additions & 2 deletions spec/tags/ruby/core/hash/compare_by_identity_tags.txt

This file was deleted.

1 change: 0 additions & 1 deletion spec/tags/ruby/core/integer/pred_tags.txt

This file was deleted.

1 change: 0 additions & 1 deletion spec/tags/ruby/core/integer/rationalize_tags.txt

This file was deleted.

1 change: 0 additions & 1 deletion spec/tags/ruby/core/integer/round_tags.txt

This file was deleted.

1 change: 0 additions & 1 deletion spec/tags/ruby/core/integer/to_r_tags.txt

This file was deleted.

1 change: 0 additions & 1 deletion spec/tags/ruby/core/io/for_fd_tags.txt
Original file line number Diff line number Diff line change
@@ -1,3 +1,2 @@
fails:IO.for_fd raises an error if passed binary/text mode two ways
fails:IO.for_fd raises an error if passed matching binary/text mode two ways
fails:IO.for_fd raises an error if passed conflicting binary/text mode two ways
1 change: 0 additions & 1 deletion spec/tags/ruby/core/io/new_tags.txt
Original file line number Diff line number Diff line change
@@ -1,3 +1,2 @@
fails:IO.new raises an error if passed binary/text mode two ways
fails:IO.new raises an error if passed matching binary/text mode two ways
fails:IO.new raises an error if passed conflicting binary/text mode two ways
1 change: 0 additions & 1 deletion spec/tags/ruby/core/io/open_tags.txt
Original file line number Diff line number Diff line change
@@ -1,3 +1,2 @@
fails:IO.open raises an error if passed binary/text mode two ways
fails:IO.open raises an error if passed matching binary/text mode two ways
fails:IO.open raises an error if passed conflicting binary/text mode two ways
2 changes: 0 additions & 2 deletions spec/tags/ruby/core/io/popen_tags.txt
Original file line number Diff line number Diff line change
@@ -2,5 +2,3 @@ unstable(JRUBY-4171,linux,intermittent failure):IO.popen writes to a write-only
fails:IO.popen starts returns a forked process if the command is -
fails:IO.popen with a leading Array argument accepts a trailing Hash of Process.exec options
fails:IO.popen with a leading Array argument accepts an IO mode argument following the Array
fails:IO.popen with a leading ENV Hash accepts a single String command with a trailing Hash of Process.exec options, and an IO mode
fails:IO.popen with a leading ENV Hash accepts an Array command with a separate trailing Hash of Process.exec options, and an IO mode
2 changes: 0 additions & 2 deletions spec/tags/ruby/core/io/write_tags.txt

This file was deleted.

1 change: 0 additions & 1 deletion spec/tags/ruby/core/kernel/Complex_tags.txt
Original file line number Diff line number Diff line change
@@ -1,2 +1 @@
fails:Kernel.Complex() when passed a single non-Numeric coerces the passed argument using #to_c
fails:Kernel.Complex() when passed [Integer] returns a new Complex number with 0 as the imaginary component
1 change: 0 additions & 1 deletion spec/tags/ruby/core/kernel/Float_tags.txt
Original file line number Diff line number Diff line change
@@ -1,7 +1,6 @@
errors:Kernel.Float for hexadecimal literals with binary exponent interprets the fractional part (on the left side of 'p') in hexadecimal
errors:Kernel.Float for hexadecimal literals with binary exponent interprets the exponent (on the right of 'p') in decimal
errors:Kernel.Float for hexadecimal literals with binary exponent returns Infinity for '0x1p10000'
errors:Kernel.Float for hexadecimal literals with binary exponent interprets the fractional part
fails:Kernel.Float for hexadecimal literals with binary exponent interprets the fractional part (on the left side of 'p') in hexadecimal
fails:Kernel.Float for hexadecimal literals with binary exponent interprets the exponent (on the right of 'p') in decimal
fails:Kernel.Float for hexadecimal literals with binary exponent returns Infinity for '0x1p10000'
13 changes: 0 additions & 13 deletions spec/tags/ruby/core/kernel/chomp_tags.txt

This file was deleted.

7 changes: 0 additions & 7 deletions spec/tags/ruby/core/kernel/chop_tags.txt

This file was deleted.

3 changes: 0 additions & 3 deletions spec/tags/ruby/core/kernel/eval_tags.txt
Original file line number Diff line number Diff line change
@@ -1,4 +1 @@
fails:Kernel#eval allows a binding to be captured inside an eval
fails:Kernel#eval raises a LocalJumpError if there is no lambda-style closure in the chain
fails:Kernel#eval unwinds through a Proc-style closure and returns from a lambda-style closure in the closure chain
fails:Kernel#eval returns from the scope calling #eval when evaluating 'return'
2 changes: 0 additions & 2 deletions spec/tags/ruby/core/kernel/exit_tags.txt
Original file line number Diff line number Diff line change
@@ -1,4 +1,2 @@
fails:Kernel#exit! exits with the given status
fails:Kernel#exit! exits immediately when called from a thread
fails:Kernel.exit! exits with the given status
fails:Kernel.exit! exits immediately when called from a thread
1 change: 0 additions & 1 deletion spec/tags/ruby/core/kernel/frozen_tags.txt

This file was deleted.

1 change: 0 additions & 1 deletion spec/tags/ruby/core/kernel/instance_variables_tags.txt

This file was deleted.

1 change: 0 additions & 1 deletion spec/tags/ruby/core/kernel/lambda_tags.txt

This file was deleted.

2 changes: 0 additions & 2 deletions spec/tags/ruby/core/kernel/private_methods_tags.txt

This file was deleted.

2 changes: 0 additions & 2 deletions spec/tags/ruby/core/kernel/protected_methods_tags.txt

This file was deleted.

2 changes: 0 additions & 2 deletions spec/tags/ruby/core/kernel/public_methods_tags.txt

This file was deleted.

3 changes: 2 additions & 1 deletion spec/tags/ruby/core/kernel/require_tags.txt
Original file line number Diff line number Diff line change
@@ -4,8 +4,9 @@ fails:Kernel#require (concurrently) blocks a second thread from returning while
fails:Kernel#require (concurrently) blocks based on the path
fails:Kernel#require (concurrently) allows a 2nd require if the 1st raised an exception
fails:Kernel#require (concurrently) blocks a 3rd require if the 1st raises an exception and the 2nd is still running
fails:Kernel#require (path resolution) does not load a relative path unless the current working directory is in $LOAD_PATH
fails:Kernel#require (path resolution) does not load a bare filename unless the current working directory is in $LOAD_PATH
fails:Kernel.require (path resolution) does not load a bare filename unless the current working directory is in $LOAD_PATH
fails:Kernel#require (path resolution) does not load a relative path unless the current working directory is in $LOAD_PATH
fails:Kernel.require (path resolution) does not load a relative path unless the current working directory is in $LOAD_PATH
fails:Kernel.require (concurrently) allows a 2nd require if the 1st raised an exception
fails:Kernel.require (concurrently) blocks a second thread from returning while the 1st is still requiring
1 change: 0 additions & 1 deletion spec/tags/ruby/core/marshal/load_tags.txt
Original file line number Diff line number Diff line change
@@ -3,7 +3,6 @@ fails:Marshal.load for a Integer loads 0
fails:Marshal.load for a Class raises ArgumentError if given a nonexistent class
fails:Marshal.load for a Module loads an old module
fails:Marshal.load for a wrapped C pointer loads
fails:Marshal.load for a wrapped C pointer raises TypeError when the local class is missing _data_load
fails:Marshal.load for a Hash loads an extended_user_hash with a parameter to initialize
fails:Marshal.load for a user Class loads a user-marshaled extended object
fails:Marshal.load for a user Class loads an extended Object
1 change: 0 additions & 1 deletion spec/tags/ruby/core/marshal/restore_tags.txt
Original file line number Diff line number Diff line change
@@ -3,7 +3,6 @@ fails:Marshal.restore for a Integer loads 0
fails:Marshal.restore for a Class raises ArgumentError if given a nonexistent class
fails:Marshal.restore for a Module loads an old module
fails:Marshal.restore for a wrapped C pointer loads
fails:Marshal.restore for a wrapped C pointer raises TypeError when the local class is missing _data_load
fails:Marshal.restore for a Hash loads an extended_user_hash with a parameter to initialize
fails:Marshal.restore for a user Class loads a user-marshaled extended object
fails:Marshal.restore for a user Class loads an extended Object
2 changes: 0 additions & 2 deletions spec/tags/ruby/core/math/acos_tags.txt

This file was deleted.

2 changes: 0 additions & 2 deletions spec/tags/ruby/core/math/acosh_tags.txt

This file was deleted.

2 changes: 0 additions & 2 deletions spec/tags/ruby/core/math/asin_tags.txt

This file was deleted.

4 changes: 0 additions & 4 deletions spec/tags/ruby/core/math/atanh_tags.txt

This file was deleted.

4 changes: 0 additions & 4 deletions spec/tags/ruby/core/math/cbrt_tags.txt

This file was deleted.

2 changes: 0 additions & 2 deletions spec/tags/ruby/core/math/log10_tags.txt

This file was deleted.

3 changes: 0 additions & 3 deletions spec/tags/ruby/core/math/log2_tags.txt

This file was deleted.

2 changes: 0 additions & 2 deletions spec/tags/ruby/core/math/log_tags.txt

This file was deleted.

4 changes: 0 additions & 4 deletions spec/tags/ruby/core/math/sqrt_tags.txt

This file was deleted.

1 change: 0 additions & 1 deletion spec/tags/ruby/core/module/attr_accessor_tags.txt

This file was deleted.

1 change: 0 additions & 1 deletion spec/tags/ruby/core/module/attr_reader_tags.txt

This file was deleted.

1 change: 0 additions & 1 deletion spec/tags/ruby/core/module/attr_writer_tags.txt

This file was deleted.

1 change: 0 additions & 1 deletion spec/tags/ruby/core/module/autoload_tags.txt
Original file line number Diff line number Diff line change
@@ -1,6 +1,5 @@
fails:Module#autoload does not load the file when referring to the constant in defined?
fails:Module#autoload shares the autoload request across dup'ed copies of modules
fails:Module#autoload returns 'constant' on referring the constant with defined?()
fails(ruby-10741):Module#autoload does not load the file when accessing the constants table of the module
fails:Module#autoload does not load the file when referring to the constant in defined?
fails:Module#autoload returns 'constant' on referring the constant with defined?()
2 changes: 0 additions & 2 deletions spec/tags/ruby/core/module/const_get_tags.txt

This file was deleted.

1 change: 0 additions & 1 deletion spec/tags/ruby/core/module/define_method_tags.txt
Original file line number Diff line number Diff line change
@@ -1,3 +1,2 @@
fails:Module#define_method when name is :initialize passed a block sets visibility to private when method name is :initialize
fails:Module#define_method when name is :initialize given an UnboundMethod sets the visibility to private when method is named :initialize
fails:Module#define_method when name is not a special private name given an UnboundMethod sets the visibility of the method to the current visibility
1 change: 0 additions & 1 deletion spec/tags/ruby/core/module/name_tags.txt
Original file line number Diff line number Diff line change
@@ -1,2 +1 @@
fails:Module#name is nil when assigned to a constant in an anonymous module

3 changes: 0 additions & 3 deletions spec/tags/ruby/core/numeric/quo_tags.txt

This file was deleted.

1 change: 0 additions & 1 deletion spec/tags/ruby/core/numeric/to_c_tags.txt

This file was deleted.

1 change: 0 additions & 1 deletion spec/tags/ruby/core/process/euid_tags.txt

This file was deleted.

4 changes: 0 additions & 4 deletions spec/tags/ruby/core/process/exec_tags.txt
Original file line number Diff line number Diff line change
@@ -1,7 +1,3 @@
fails:Process.exec raises Errno::ENOENT for an empty string
fails:Process.exec raises Errno::ENOENT for a command which does not exist
fails:Process.exec raises an ArgumentError if the command includes a null byte
fails:Process.exec raises Errno::EACCES when the file does not have execute permissions
fails:Process.exec raises Errno::EACCES when passed a directory
fails:Process.exec sets the current directory when given the :chdir option
fails:Process.exec with a command array uses the first element as the command name and the second as the argv[0] value
1 change: 0 additions & 1 deletion spec/tags/ruby/core/process/exit_tags.txt
Original file line number Diff line number Diff line change
@@ -1,2 +1 @@
fails:Process.exit! exits with the given status
fails:Process.exit! exits immediately when called from a thread
43 changes: 0 additions & 43 deletions spec/tags/ruby/core/process/getrlimit_tags.txt
Original file line number Diff line number Diff line change
@@ -1,43 +0,0 @@
fails:Process.getrlimit returns a two-element Array of Integers
fails:Process.getrlimit when passed an Object calls #to_int to convert to an Integer
fails:Process.getrlimit when passed an Object raises a TypeError if #to_int does not return an Integer
fails:Process.getrlimit when passed a Symbol coerces :AS into RLIMIT_AS
fails:Process.getrlimit when passed a Symbol coerces :CORE into RLIMIT_CORE
fails:Process.getrlimit when passed a Symbol coerces :CPU into RLIMIT_CPU
fails:Process.getrlimit when passed a Symbol coerces :DATA into RLIMIT_DATA
fails:Process.getrlimit when passed a Symbol coerces :FSIZE into RLIMIT_FSIZE
fails:Process.getrlimit when passed a Symbol coerces :NOFILE into RLIMIT_NOFILE
fails:Process.getrlimit when passed a Symbol coerces :STACK into RLIMIT_STACK
fails:Process.getrlimit when passed a Symbol coerces :MEMLOCK into RLIMIT_MEMLOCK
fails:Process.getrlimit when passed a Symbol coerces :NPROC into RLIMIT_NPROC
fails:Process.getrlimit when passed a Symbol coerces :RSS into RLIMIT_RSS
fails:Process.getrlimit when passed a Symbol coerces :RTPRIO into RLIMIT_RTPRIO
fails:Process.getrlimit when passed a Symbol coerces :RTTIME into RLIMIT_RTTIME
fails:Process.getrlimit when passed a Symbol coerces :SIGPENDING into RLIMIT_SIGPENDING
fails:Process.getrlimit when passed a Symbol coerces :MSGQUEUE into RLIMIT_MSGQUEUE
fails:Process.getrlimit when passed a Symbol coerces :NICE into RLIMIT_NICE
fails:Process.getrlimit when passed a Symbol raises ArgumentError when passed an unknown resource
fails:Process.getrlimit when passed a String coerces 'AS' into RLIMIT_AS
fails:Process.getrlimit when passed a String coerces 'CORE' into RLIMIT_CORE
fails:Process.getrlimit when passed a String coerces 'CPU' into RLIMIT_CPU
fails:Process.getrlimit when passed a String coerces 'DATA' into RLIMIT_DATA
fails:Process.getrlimit when passed a String coerces 'FSIZE' into RLIMIT_FSIZE
fails:Process.getrlimit when passed a String coerces 'NOFILE' into RLIMIT_NOFILE
fails:Process.getrlimit when passed a String coerces 'STACK' into RLIMIT_STACK
fails:Process.getrlimit when passed a String coerces 'MEMLOCK' into RLIMIT_MEMLOCK
fails:Process.getrlimit when passed a String coerces 'NPROC' into RLIMIT_NPROC
fails:Process.getrlimit when passed a String coerces 'RSS' into RLIMIT_RSS
fails:Process.getrlimit when passed a String coerces 'RTPRIO' into RLIMIT_RTPRIO
fails:Process.getrlimit when passed a String coerces 'RTTIME' into RLIMIT_RTTIME
fails:Process.getrlimit when passed a String coerces 'SIGPENDING' into RLIMIT_SIGPENDING
fails:Process.getrlimit when passed a String coerces 'MSGQUEUE' into RLIMIT_MSGQUEUE
fails:Process.getrlimit when passed a String coerces 'NICE' into RLIMIT_NICE
fails:Process.getrlimit when passed a String raises ArgumentError when passed an unknown resource
fails:Process.getrlimit when passed on Object calls #to_str to convert to a String
fails:Process.getrlimit when passed on Object calls #to_int if #to_str does not return a String
fails:Process.getrlimit when passed a Symbol coerces :OFILE into RLIMIT_OFILE
fails:Process.getrlimit when passed a Symbol coerces :NLIMITS into RLIMIT_NLIMITS
fails:Process.getrlimit when passed a Symbol coerces :LOCKS into RLIMIT_LOCKS
fails:Process.getrlimit when passed a String coerces 'OFILE' into RLIMIT_OFILE
fails:Process.getrlimit when passed a String coerces 'NLIMITS' into RLIMIT_NLIMITS
fails:Process.getrlimit when passed a String coerces 'LOCKS' into RLIMIT_LOCKS
9 changes: 0 additions & 9 deletions spec/tags/ruby/core/process/setrlimit_tags.txt
Original file line number Diff line number Diff line change
@@ -1,5 +1,4 @@
fails:Process.setrlimit when passed an Object calls #to_int to convert resource to an Integer
fails:Process.setrlimit when passed an Object raises a TypeError if #to_int for resource does not return an Integer
fails:Process.setrlimit when passed an Object calls #to_int to convert the soft limit to an Integer
fails:Process.setrlimit when passed an Object calls #to_int to convert the hard limit to an Integer
fails:Process.setrlimit when passed a Symbol coerces :AS into RLIMIT_AS
@@ -8,31 +7,23 @@ fails:Process.setrlimit when passed a Symbol coerces :CPU into RLIMIT_CPU
fails:Process.setrlimit when passed a Symbol coerces :DATA into RLIMIT_DATA
fails:Process.setrlimit when passed a Symbol coerces :FSIZE into RLIMIT_FSIZE
fails:Process.setrlimit when passed a Symbol coerces :NOFILE into RLIMIT_NOFILE
fails:Process.setrlimit when passed a Symbol coerces :STACK into RLIMIT_STACK
fails:Process.setrlimit when passed a Symbol coerces :MEMLOCK into RLIMIT_MEMLOCK
fails:Process.setrlimit when passed a Symbol coerces :NPROC into RLIMIT_NPROC
fails:Process.setrlimit when passed a Symbol coerces :RSS into RLIMIT_RSS
fails:Process.setrlimit when passed a Symbol coerces :RTPRIO into RLIMIT_RTPRIO
fails:Process.setrlimit when passed a Symbol coerces :RTTIME into RLIMIT_RTTIME
fails:Process.setrlimit when passed a Symbol coerces :SIGPENDING into RLIMIT_SIGPENDING
fails:Process.setrlimit when passed a Symbol coerces :MSGQUEUE into RLIMIT_MSGQUEUE
fails:Process.setrlimit when passed a Symbol coerces :NICE into RLIMIT_NICE
fails:Process.setrlimit when passed a Symbol raises ArgumentError when passed an unknown resource
fails:Process.setrlimit when passed a String coerces 'AS' into RLIMIT_AS
fails:Process.setrlimit when passed a String coerces 'CORE' into RLIMIT_CORE
fails:Process.setrlimit when passed a String coerces 'CPU' into RLIMIT_CPU
fails:Process.setrlimit when passed a String coerces 'DATA' into RLIMIT_DATA
fails:Process.setrlimit when passed a String coerces 'FSIZE' into RLIMIT_FSIZE
fails:Process.setrlimit when passed a String coerces 'NOFILE' into RLIMIT_NOFILE
fails:Process.setrlimit when passed a String coerces 'STACK' into RLIMIT_STACK
fails:Process.setrlimit when passed a String coerces 'MEMLOCK' into RLIMIT_MEMLOCK
fails:Process.setrlimit when passed a String coerces 'NPROC' into RLIMIT_NPROC
fails:Process.setrlimit when passed a String coerces 'RSS' into RLIMIT_RSS
fails:Process.setrlimit when passed a String coerces 'RTPRIO' into RLIMIT_RTPRIO
fails:Process.setrlimit when passed a String coerces 'RTTIME' into RLIMIT_RTTIME
fails:Process.setrlimit when passed a String coerces 'SIGPENDING' into RLIMIT_SIGPENDING
fails:Process.setrlimit when passed a String coerces 'MSGQUEUE' into RLIMIT_MSGQUEUE
fails:Process.setrlimit when passed a String coerces 'NICE' into RLIMIT_NICE
fails:Process.setrlimit when passed a String raises ArgumentError when passed an unknown resource
fails:Process.setrlimit when passed on Object calls #to_str to convert to a String
fails:Process.setrlimit when passed on Object calls #to_int if #to_str does not return a String
5 changes: 0 additions & 5 deletions spec/tags/ruby/core/process/spawn_tags.txt
Original file line number Diff line number Diff line change
@@ -1,20 +1,15 @@
fails:Process.spawn calls #to_str to convert the environment keys
fails:Process.spawn calls #to_str to convert the environment values
fails:Process.spawn joins a new process group if pgroup: true
fails:Process.spawn joins a new process group if pgroup: 0
fails:Process.spawn sets the umask if given the :umask option
critical(runs very long before failing):Process.spawn redirects STDOUT to the given file if out: String
critical(runs very long before failing):Process.spawn redirects STDERR to the given file if err: String
fails:Process.spawn does NOT redirect both STDERR and STDOUT at the time to the given name
fails:Process.spawn raises an Errno::EACCES when passed a directory
fails:Process.spawn with a command array uses the first element as the command name and the second as the argv[0] value
fails:Process.spawn with a command array calls #to_ary to convert the argument to an Array
fails:Process.spawn with Integer option keys maps the key to a file descriptor in the child that inherits the file descriptor from the parent specified by the value
fails:Process.spawn does not unset other environment variables when given a false :unsetenv_others option
fails:Process.spawn does not unset environment variables included in the environment hash
fails:Process.spawn joins the current process if pgroup: false
fails:Process.spawn redirects STDOUT to the given file if out: String
fails:Process.spawn redirects STDERR to the given file if err: String
fails:Process.spawn when passed close_others: false does not close file descriptors >= 3 in the child process if fds are set close_on_exec=false
fails:Process.spawn when passed close_others: false closes file descriptors >= 3 in the child process because they are set close_on_exec by default
fails:Process.spawn redirects STDOUT to the given file if out: [String name, String mode]
1 change: 0 additions & 1 deletion spec/tags/ruby/core/process/uid_tags.txt

This file was deleted.

2 changes: 0 additions & 2 deletions spec/tags/ruby/core/range/inspect_tags.txt

This file was deleted.

2 changes: 0 additions & 2 deletions spec/tags/ruby/core/range/to_s_tags.txt

This file was deleted.

1 change: 0 additions & 1 deletion spec/tags/ruby/core/rational/divmod_tags.txt

This file was deleted.

1 change: 0 additions & 1 deletion spec/tags/ruby/core/rational/exponent_tags.txt
Original file line number Diff line number Diff line change
@@ -2,6 +2,5 @@ critical(hangs):Rational#** when passed Bignum returns positive Infinity when se
critical(hangs):Rational#** when passed Bignum returns 0.0 when self is > 1 and the exponent is negative
critical(hangs):Rational#** when passed Bignum returns positive Infinity when self < -1
critical(hangs):Rational#** when passed Bignum returns 0.0 when self is < -1 and the exponent is negative
fails:Rational#** raises ZeroDivisionError for Rational(0, 1) passed a negative Rational
fails:Rational#** when passed Bignum returns positive Infinity when self is > 1
fails:Rational#** when passed Bignum returns 0.0 when self is > 1 and the exponent is negative
1 change: 0 additions & 1 deletion spec/tags/ruby/core/rational/integer_tags.txt

This file was deleted.

3 changes: 0 additions & 3 deletions spec/tags/ruby/core/rational/round_tags.txt

This file was deleted.

1 change: 0 additions & 1 deletion spec/tags/ruby/core/rational/to_s_tags.txt

This file was deleted.

6 changes: 2 additions & 4 deletions spec/tags/ruby/core/signal/trap_tags.txt
Original file line number Diff line number Diff line change
@@ -1,7 +1,5 @@
fails(JRUBY-4869):Signal.trap ignores the signal when passed nil
fails:Signal.trap ignores the signal when passed nil
fails(JRUBY-5666):Signal.trap the special EXIT signal code runs the proc before at_exit handlers
fails:Signal.trap accepts 'DEFAULT' as a symbol in place of a proc
fails:Signal.trap accepts 'SIG_DFL' as a symbol in place of a proc
fails:Signal.trap accepts 'SIG_IGN' as a symbol in place of a proc
fails:Signal.trap accepts 'IGNORE' as a symbol in place of a proc
critical(appears to succeed but IGNORE gets stuck in signal and can't be changed):Signal.trap accepts 'SIG_IGN' as a symbol in place of a proc
critical(appears to succeed but IGNORE gets stuck in signal and can't be changed):Signal.trap accepts 'IGNORE' as a symbol in place of a proc
1 change: 0 additions & 1 deletion spec/tags/ruby/core/string/oct_tags.txt

This file was deleted.

1 change: 0 additions & 1 deletion spec/tags/ruby/core/struct/hash_tags.txt

This file was deleted.

1 change: 0 additions & 1 deletion spec/tags/ruby/core/thread/element_set_tags.txt
Original file line number Diff line number Diff line change
@@ -1,2 +1 @@
fails:Thread#[]= raises exceptions on the wrong type of keys
fails:Thread#[]= raises a RuntimeError if the thread is frozen
Empty file.
1 change: 0 additions & 1 deletion spec/tags/ruby/core/thread/new_tags.txt

This file was deleted.

1 change: 0 additions & 1 deletion spec/tags/ruby/core/time/local_tags.txt
Original file line number Diff line number Diff line change
@@ -1,2 +1 @@
fails:Time.local creates the correct time just after dst change
fails(Joda Time behavior):Time.local respects rare old timezones
1 change: 0 additions & 1 deletion spec/tags/ruby/core/time/mktime_tags.txt
Original file line number Diff line number Diff line change
@@ -1,2 +1 @@
fails:Time.mktime creates the correct time just after dst change
fails(Joda Time behavior):Time.mktime respects rare old timezones
1 change: 0 additions & 1 deletion spec/tags/ruby/core/time/new_tags.txt
Original file line number Diff line number Diff line change
@@ -3,4 +3,3 @@ fails:Time.new with a utc_offset argument raises ArgumentError if the String arg
fails:Time.new with a utc_offset argument with an argument that responds to #to_r coerces using #to_r
fails:Time.new with a utc_offset argument with an argument that responds to #to_str coerces using #to_str
fails:Time.new with a utc_offset argument returns a non-UTC time
fails(Joda Time behavior):Time.new respects rare old timezones
1 change: 0 additions & 1 deletion spec/tags/ruby/core/time/zone_tags.txt
Original file line number Diff line number Diff line change
@@ -1,2 +1 @@
fails:Time#zone returns nil when getting the local time with a fixed offset
fails:Time#zone Encoding.default_internal is set returns an ASCII string
2 changes: 0 additions & 2 deletions spec/tags/ruby/language/block_tags.txt
Original file line number Diff line number Diff line change
@@ -7,5 +7,3 @@ fails:A block yielded a single Array assigns symbol keys from a Hash to keyword
fails:A block yielded a single Array assigns symbol keys from a Hash returned by #to_hash to keyword arguments
fails:A block yielded a single Array calls #to_hash on the argument but does not use the result when no keywords are present
fails:A block yielded a single Array assigns non-symbol keys to non-keyword arguments
fails:Post-args with optional args with a circular argument reference shadows an existing local with the same name as the argument
fails:Post-args with optional args with a circular argument reference shadows an existing method with the same name as the argument
2 changes: 0 additions & 2 deletions spec/tags/ruby/language/class_tags.txt

This file was deleted.

2 changes: 0 additions & 2 deletions spec/tags/ruby/language/def_tags.txt
Original file line number Diff line number Diff line change
@@ -1,3 +1 @@
fails:An instance method with a default argument does not call a method with the same name as the local
fails:An instance method with a default argument shadows an existing method with the same name as the local
fails:A nested method definition creates a method in the surrounding context when evaluated in a def expr.method
2 changes: 0 additions & 2 deletions spec/tags/ruby/language/lambda_tags.txt
Original file line number Diff line number Diff line change
@@ -1,3 +1 @@
fails:A lambda expression 'lambda { ... }' with an implicit block can be created
fails:A lambda literal -> () { } assigns variables from parameters with circular optional argument reference shadows an existing local with the same name as the argument
fails:A lambda literal -> () { } assigns variables from parameters with circular optional argument reference shadows an existing method with the same name as the argument
1 change: 0 additions & 1 deletion spec/tags/ruby/language/regexp/character_classes_tags.txt

This file was deleted.

1 change: 0 additions & 1 deletion spec/tags/ruby/library/bigdecimal/new_tags.txt
Original file line number Diff line number Diff line change
@@ -1 +0,0 @@
critical(JRUBY-3749):BigDecimal.new doesn't segfault when using a very large string to build the number
2 changes: 2 additions & 0 deletions test/mri/excludes/TestRubyOptions.rb
Original file line number Diff line number Diff line change
@@ -18,6 +18,7 @@
exclude :test_safe_level, "needs investigation"
exclude :test_script_from_stdin, "uses io/console in ways we don't support yet"
exclude :test_script_is_directory, "uses io/console in ways we don't support yet"
exclude :test_search, "passes independently but fails in suite"
exclude :test_segv_loaded_features, "needs investigation"
exclude :test_segv_setproctitle, "needs investigation"
exclude :test_segv_test, "needs investigation"
@@ -27,6 +28,7 @@
exclude :test_shebang, "needs investigation"
exclude :test_unmatching_glob, "needs investigation"
exclude :test_unused_variable, "needs investigation"
exclude :test_usage, "expects a specific number of lines in -h output"
exclude :test_usage_long, "needs investigation"
exclude :test_verbose, "needs investigation"
exclude :test_version, "needs investigation"
12 changes: 9 additions & 3 deletions test/mri/ruby/test_array.rb
Original file line number Diff line number Diff line change
@@ -1819,9 +1819,11 @@ def test_permutation

bug3708 = '[ruby-dev:42067]'
assert_equal(b, @cls[0, 1, 2, 3, 4][1, 4].permutation.to_a, bug3708)
end

def test_permutation_stack_error
bug9932 = '[ruby-core:63103] [Bug #9932]'
assert_separately([], <<-"end;") # do
assert_separately([], <<-"end;", timeout: 30) # do
assert_nothing_raised(SystemStackError, "#{bug9932}") do
assert_equal(:ok, Array.new(100_000, nil).permutation {break :ok})
end
@@ -1851,8 +1853,10 @@ def test_repeated_permutation

a = @cls[0, 1, 2, 3, 4][1, 4].repeated_permutation(2)
assert_empty(a.reject {|x| !x.include?(0)})
end

assert_separately([], <<-"end;") # do
def test_repeated_permutation_stack_error
assert_separately([], <<-"end;", timeout: 30) # do
assert_nothing_raised(SystemStackError) do
assert_equal(:ok, Array.new(100_000, nil).repeated_permutation(500_000) {break :ok})
end
@@ -1886,8 +1890,10 @@ def test_repeated_combination

a = @cls[0, 1, 2, 3, 4][1, 4].repeated_combination(2)
assert_empty(a.reject {|x| !x.include?(0)})
end

assert_separately([], <<-"end;") # do
def test_repeated_combination_stack_error
assert_separately([], <<-"end;", timeout: 30) # do
assert_nothing_raised(SystemStackError) do
assert_equal(:ok, Array.new(100_000, nil).repeated_combination(500_000) {break :ok})
end

0 comments on commit 3a7fb32

Please sign in to comment.