Not really. It appears that the problem is with the rake.bat batch
file that is used on Windows. Pared down, it looks something like
this:
"%~d0%~p0ruby" -x "%~f0" %*
goto endofruby
#!/bin/ruby
require 'rubygems'
require 'rake'
load 'rake'
__END__
:endofruby
The problem is that the batch file doesn't seem to properly pass along
the exit code in a way that causes Windows to do the right thing if
you perform a goto in the batch file. Here's a simple test case:
C:\>type tmp1.bat
@echo off
ruby -e "puts 'failing...'; exit(1)"
C:\>tmp1.bat && echo "success"
failing...
C:\>type tmp2.bat
@echo off
ruby -e "puts 'failing...'; exit(1)"
goto alldone
:alldone
echo The error level is %ERRORLEVEL%
C:\>tmp2.bat && echo "success"
failing...
The error level is 1
"success"
I hoped maybe I could fix this by really truly having the batch file
return the right error code, but no such luck:
C:\>exit /?
Quits the CMD.EXE program (command interpreter) or the current
batch script.
EXIT [/B] [exitCode]
/B specifies to exit the current batch script instead of
CMD.EXE. If executed from outside a batch script, it
will quit CMD.EXE
exitCode specifies a numeric number. if /B is specified, sets
ERRORLEVEL that number. If quitting CMD.EXE, sets the
process
exit code with that number.
C:\>type tmp3.bat
@echo off
ruby -e "puts 'failing...'; exit(1)"
goto alldone
:alldone
echo The error level is %ERRORLEVEL%
EXIT /B %ERRORLEVEL%
C:\>tmp3.bat && echo "success"
failing...
The error level is 1
"success"
If this is important, you could modify the rake.bat file on Windows
(in c:\ruby\bin) to have it not use the trick ruby -x option, and
instead just use -e instead. Something like:
C:\>type \ruby\bin\rake.bat
@"%~d0%~p0ruby" -e "require 'rubygems'; require 'rake'; load 'rake'"
%*
C:\>rake && echo "success"
rake aborted!
No Rakefile found (looking for: rakefile, Rakefile, rakefile.rb,
Rakefile.rb)
c:/ruby/lib/ruby/gems/1.8/gems/rake-0.7.2/lib/rake.rb:1849:in
`load_rakefile'
(See full trace by running task with --trace)
···
On Mar 22, 3:38 pm, "S. Robert James" <srobertja...@gmail.com> wrote:
Rake returns 0 exit status on Windows, even after failure.