Project

General

Profile

Actions

Bug #7489

closed

Kernel.spawn sometimes executes string directly

Added by jcaesar (Julius Caesar) over 11 years ago. Updated almost 11 years ago.

Status:
Closed
Target version:
ruby -v:
ruby 1.9.3p327 (2012-11-10 revision 37606) [x86_64-linux]
Backport:
[ruby-core:50459]

Description

Kernel.spawn throws an exception in certain cases where it shouldn't.
It seems to attempt to execute the command directly, rather than passing
it to the shell.

See the demo script below. What should happen, when I run this script,
is that both assertions should fail, and there should be an error message
from the testing framework about each test. What actually happens is
that both tests pass and the test framework reports success.

#-------------------------------
require 'test/unit'

class TestSpawn < Test::Unit::TestCase
#> either command would work fine if executed

in the shell.

def test1
assert_raises(Errno::ENOENT) { spawn ':' }
end

def test2
assert_raises(Errno::ENOENT) { spawn 'a=b true' }
end
end
#-------------------------------

My compiler is GCC, and the output of "gcc --version" is:

gcc-4.4.real (Debian 4.4.5-8) 4.4.5
Copyright (C) 2010 Free Software Foundation, Inc.
This is free software; see the source for copying conditions. There is NO
warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.

Please note that I have attached my rbconfig.rb file.


Files

rbconfig.rb (8.4 KB) rbconfig.rb The rbconfig.rb file for the ruby version I'm using jcaesar (Julius Caesar), 12/02/2012 02:58 AM
Actions

Also available in: Atom PDF

Like0
Like0Like0Like0Like0