summaryrefslogtreecommitdiff
path: root/test/samples/suite.rb
diff options
context:
space:
mode:
authorKornelius Kalnbach <murphy@rubychan.de>2013-06-23 16:06:02 +0200
committerKornelius Kalnbach <murphy@rubychan.de>2013-06-23 16:06:02 +0200
commit0013b649f714f23eef0859921fa7804ca7caef76 (patch)
tree7c278ee7c420729b4738fe2a195e529ffd2bb6da /test/samples/suite.rb
parentaddcbd446066d0da1627112814e3ce1b8d404da0 (diff)
parent64ca2ae8ad5130bdcf652aa7aa08298de00f20f4 (diff)
downloadcoderay-0013b649f714f23eef0859921fa7804ca7caef76.tar.gz
Merge branch 'master' into go-scanner
Conflicts: lib/coderay/helpers/file_type.rb
Diffstat (limited to 'test/samples/suite.rb')
-rw-r--r--test/samples/suite.rb86
1 files changed, 86 insertions, 0 deletions
diff --git a/test/samples/suite.rb b/test/samples/suite.rb
new file mode 100644
index 0000000..cfe53c0
--- /dev/null
+++ b/test/samples/suite.rb
@@ -0,0 +1,86 @@
+mydir = File.dirname(__FILE__)
+$:.unshift mydir + '/../../lib/'
+
+$VERBOSE = true
+
+require 'test/unit'
+include Test::Unit
+
+class CodeRaySuite < TestCase
+
+ def self.dir &block
+ @dir ||= File.dirname(__FILE__)
+ if block
+ Dir.chdir @dir, &block
+ end
+ @dir
+ end
+
+ def dir &block
+ self.class.dir(&block)
+ end
+
+ def test_ALL
+ dir do
+ for input in Dir["*.rb"] - %w(server.rb stream.rb suite.rb)
+ next if input[/^load_/]
+ puts "[ testing #{input}... ]"
+ name = File.basename(input, ".rb")
+ output = name + '.expected'
+ code = File.open(input, 'rb') { |f| break f.read }
+
+ result = `ruby -wI../../lib #{input}`
+
+ diff = output.sub '.expected', '.diff'
+ File.delete diff if File.exist? diff
+ computed = output.sub '.expected', '.actual'
+ if File.exist? output
+ expected = File.read output
+ ok = expected == result
+ unless ok
+ File.open(computed, 'w') { |f| f.write result }
+ `diff #{output} #{computed} > #{diff}`
+ puts "Test failed; output written to #{diff}."
+ end
+ assert(ok, "Output error: #{computed} != #{output}")
+ else
+ File.open(output, 'w') do |f| f.write result end
+ puts "New test: #{output}"
+ end
+
+ end
+ end
+ end
+
+end
+
+require 'test/unit/testsuite'
+$suite = TestSuite.new 'CodeRay Demos Test'
+$suite << CodeRaySuite.suite
+
+def load_suite name
+ begin
+ require name + '/suite.rb'
+ rescue LoadError
+ $stderr.puts <<-ERR
+
+!! Folder #{File.split(__FILE__).first + '/' + name} not found
+
+ ERR
+ false
+ end
+end
+
+if subsuite = ARGV.find { |a| break $1 if a[/^([^-].*)/] }
+ load_suite(subsuite) or exit
+else
+ Dir[mydir + '/*/'].each { |suite| load_suite suite }
+end
+
+if ARGV.include? '-f'
+ require 'test/unit/ui/fox/testrunner'
+ UI::Fox::TestRunner.run $suite
+else
+ require 'test/unit/ui/console/testrunner'
+ UI::Console::TestRunner.run $suite
+end