diff options
author | nahi <nahi@b2dd03c8-39d4-4d8f-98ff-823fe69b080e> | 2004-01-06 02:34:24 +0000 |
---|---|---|
committer | nahi <nahi@b2dd03c8-39d4-4d8f-98ff-823fe69b080e> | 2004-01-06 02:34:24 +0000 |
commit | 79c0e644a175754540399ff2148f3fdb5c998339 (patch) | |
tree | a3cd5ab3ba1d5fb8ca8e4341c3d2e4bcb67e44e3 /test/inlinetest.rb | |
parent | ff1b89a96d0f103ff0c917c458ddd3e36e9b3718 (diff) |
* test/inlinetest.rb, test/{test_generator.rb,test_ipaddr.rb,
test_pathname.rb,test_pp.rb,test_prettyprint.rb,test_set.rb,
test_time.rb,test_tsort.rb: added.
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@5385 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
Diffstat (limited to 'test/inlinetest.rb')
-rw-r--r-- | test/inlinetest.rb | 52 |
1 files changed, 52 insertions, 0 deletions
diff --git a/test/inlinetest.rb b/test/inlinetest.rb new file mode 100644 index 0000000000..cd1ee0c683 --- /dev/null +++ b/test/inlinetest.rb @@ -0,0 +1,52 @@ +module InlineTest + def loadtest(libname) + in_critical do + in_progname(libpath(libname)) do + Kernel.load(libname) + end + end + end + module_function :loadtest + + def loadtest__END__part(libname) + program = File.open(libpath(libname)) { |f| f.read } + mainpart, endpart = program.split(/^__END__$/) + if endpart.nil? + raise RuntimeError.new("No __END__ part in the library '#{filename}'") + end + require(libname) + eval(endpart) + end + module_function :loadtest__END__part + + def self.in_critical + th_criticality = Thread.critical + Thread.critical = true + begin + yield + ensure + Thread.critical = th_criticality + end + end + + def self.in_progname(progname) + progname_backup = $0.dup + $0.replace(progname) + begin + yield + ensure + $0.replace(progname_backup) + end + end + + def self.libpath(libname) + libpath = nil + $:.find do |path| + File.file?(testname = File.join(path, libname)) && libpath = testname + end + if libpath.nil? + raise RuntimeError.new("'#{libname}' not found") + end + libpath + end +end |