aboutsummaryrefslogtreecommitdiffstats
path: root/actionpack/test/testing_sandbox.rb
diff options
context:
space:
mode:
Diffstat (limited to 'actionpack/test/testing_sandbox.rb')
-rw-r--r--actionpack/test/testing_sandbox.rb29
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