On Nov 1, 2008, at 12:26 PM, Luis Lavena wrote:
I'm trying to find the real problem about the implementation of
system(...) call for this test:
http://github.com/jimweirich/rake/tree/master/test/test_fileutils.rb#L214-240
# This one does not get expanded
block_run = false
ruby '-e', %{exit "#{env_var}".length} do |ok, status| #
" (emacs wart)
assert(!ok)
assert_equal 15, status.exitstatus
block_run = true
end
assert block_run, "The block must be run"
==
I just verified the output of the command being generated:
ruby -e exit "$RAKE_TEST_RUBY".length
And tested that on linux:
http://pastie.org/private/b7cdjijfgrt1j518cdlosa
As you can see, the lack of quotes around the command for -e option is
generating the issue.
Did I miss something?
Thanks in advance for your time, I'm looking forward find the issue
behind this to properly patch ruby if required.
It's not a command line issue. It is how the system command works in
Ruby. Here is the expected semantics:
$ irb
>> system "echo $HOME"
/Users/jim
=> true
>> system "echo", "$HOME"
$HOME
=> true
>>
A single string argument to system will be expanded by the shell (i.e.
$HOME is translated to "/Users/jim").
When multiple strings are passed to system, they are not expanded by
the shell. (i.e. "$HOME" remains unchanged).
The tests are trying to verify that the rake methods "sh" and "ruby"
exhibit the same behavior as the built-in system method.
I guess my question is:
1) When using system on Windows, do you get the same behavior as above
(possibly substituing "%HOME%" for "$HOME")?
2) If you get different behavior, what should Rake do about it.
--
-- Jim Weirich
-- [EMAIL PROTECTED]
_______________________________________________
Rake-devel mailing list
[email protected]
http://rubyforge.org/mailman/listinfo/rake-devel