diff options
Diffstat (limited to 'actionpack/test/testing_sandbox.rb')
-rw-r--r-- | actionpack/test/testing_sandbox.rb | 29 |
1 files changed, 7 insertions, 22 deletions
diff --git a/actionpack/test/testing_sandbox.rb b/actionpack/test/testing_sandbox.rb index b21f411730..b3b8b0f4d4 100644 --- a/actionpack/test/testing_sandbox.rb +++ b/actionpack/test/testing_sandbox.rb @@ -1,26 +1,11 @@ module TestingSandbox - - # This whole thing *could* be much simpler, but I don't think Tempfile, - # popen and others exist on all platforms (like Windows). - def execute_in_sandbox(code) - test_name = "#{File.dirname(__FILE__)}/test.#{$$}.rb" - res_name = "#{File.dirname(__FILE__)}/test.#{$$}.out" - - File.open(test_name, "w+") do |file| - file.write(<<-CODE) - $:.unshift "../lib" - block = Proc.new do - #{code} - end - print block.call - CODE + # Temporarily replaces KCODE for the block + def with_kcode(kcode) + old_kcode, $KCODE = $KCODE, kcode + begin + yield + ensure + $KCODE = old_kcode end - - system("ruby #{test_name} > #{res_name}") or raise "could not run test in sandbox" - File.read(res_name) - ensure - File.delete(test_name) rescue nil - File.delete(res_name) rescue nil end - end |