pkoch-spork-testunit 0.0.7a

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
data/README.textile ADDED
@@ -0,0 +1,7 @@
1
+ h1. Test::Unit support for Spork
2
+
3
+ This includes a plugin for spork to enable Test::Unit support for spork. It also comes with a very bare-bones drb client to run tests.
4
+
5
+ To use it, install the gem, then fire up spork in your project directory (the file test/test_helper.rb must exist to detect that Test::Unit is being used).
6
+
7
+ Then, once spork is running, invoke @testdrb@ (e.g. @testdrb -Itest test/your_test.rb@) to run your tests under Spork.
data/bin/testdrb ADDED
@@ -0,0 +1,17 @@
1
+ #!/usr/bin/env ruby
2
+
3
+ # These fix 1.8.7 test/unit results where a DRbUnknown is returned because the testdrb client doesn't have the classes
4
+ # in its local namespace. (See issue #2)
5
+ begin
6
+ require 'minitest/unit'
7
+ rescue LoadError
8
+ # MiniTest is Ruby 1.9, and the classes below only exist in the pre 1.9 test/unit
9
+ require 'test/unit/testresult'
10
+ require 'test/unit/failure'
11
+ end
12
+
13
+ require 'drb'
14
+ DRb.start_service("druby://127.0.0.1:0") # this allows Ruby to do some magical stuff so you can pass an output stream over DRb.
15
+ test_server = DRbObject.new_with_uri("druby://127.0.0.1:8988")
16
+ result = test_server.run(ARGV, $stderr, $stdout)
17
+
@@ -0,0 +1,97 @@
1
+ class Spork::TestFramework::TestUnit < Spork::TestFramework
2
+ DEFAULT_PORT = 8988
3
+ HELPER_FILE = File.join(Dir.pwd, "test/test_helper.rb")
4
+
5
+ def run_tests(argv, stderr, stdout)
6
+ if defined? MiniTest
7
+ # Ruby 1.9
8
+ stdout = Purdytest::IO.new(stdout) if defined? Purdytest # rewrap
9
+ MiniTest::Unit.output = stdout
10
+
11
+ # MiniTest's test/unit does not support -I, -r, or -e
12
+ # Extract them and remove from arguments that are passed to testrb.
13
+ argv.each_with_index do |arg, idx|
14
+ if arg =~ /-I(.*)/
15
+ if $1 == ''
16
+ # Path is next argument.
17
+ include_path = argv[idx + 1]
18
+ argv[idx + 1] = nil # Will be squashed when compact called.
19
+ else
20
+ include_path = $1
21
+ end
22
+ $LOAD_PATH << include_path
23
+ argv[idx] = nil
24
+ elsif arg =~ /-r(.*)/
25
+ if $1 == ''
26
+ # File is next argument.
27
+ require_file = argv[idx + 1]
28
+ argv[idx + 1] = nil # Will be squashed when compact called.
29
+ else
30
+ require_file = $1
31
+ end
32
+ require require_file
33
+ argv[idx] = nil
34
+ elsif arg =~ /^-e$/
35
+ eval argv[idx + 1]
36
+ argv[idx] = argv[idx + 1] = nil
37
+ end
38
+ end
39
+ argv.compact!
40
+
41
+ require 'test/unit'
42
+ if defined? Turn
43
+ # Use turn's wrapper around minitest
44
+ if argv.empty?
45
+ puts "Usage: testrb [options] tests..."
46
+ exit 1
47
+ end
48
+ runner = Turn::MiniRunner.new
49
+ config = Turn.config do |c|
50
+ c.tests = argv
51
+ c.framework = :minitest
52
+ end
53
+ controller = Turn::Controller.new(config)
54
+ controller.start
55
+ elsif Test::Unit.respond_to?(:setup_argv)
56
+ # copied from ruby-1.9.2-p136/bin/testrb:
57
+ Test::Unit.setup_argv(argv) {|files|
58
+ if files.empty?
59
+ puts "Usage: testrb [options] tests..."
60
+ exit 1
61
+ end
62
+ if files.size == 1
63
+ $0 = File.basename(files[0])
64
+ else
65
+ $0 = files.to_s
66
+ end
67
+ files
68
+ }
69
+
70
+ MiniTest::Unit.new.run(argv)
71
+ else
72
+ # copied from ruby-head/bin/testrb:
73
+ tests = Test::Unit::AutoRunner.new(true)
74
+ tests.options.banner.sub!(/\[options\]/, '\& tests...')
75
+ unless tests.process_args(argv)
76
+ abort tests.options.banner
77
+ end
78
+ files = tests.to_run
79
+ $0 = files.size == 1 ? File.basename(files[0]) : files.to_s
80
+ tests.run
81
+ end
82
+ else
83
+ # Ruby 1.8
84
+ Object.send(:remove_const, :STDOUT); Object.send(:const_set, :STDOUT, stdout)
85
+ require 'test/unit/autorunner'
86
+ r = Test::Unit::AutoRunner.new(true)
87
+ exit(false) unless r.process_args(argv)
88
+ r.run
89
+ end
90
+ rescue => e
91
+ puts "-"*30
92
+ puts "Error executing #{argv.join(' ')}"
93
+ puts e.message
94
+ puts e.backtrace
95
+ puts "-"*30
96
+ end
97
+ end
metadata ADDED
@@ -0,0 +1,63 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: pkoch-spork-testunit
3
+ version: !ruby/object:Gem::Version
4
+ version: 0.0.7a
5
+ prerelease: 5
6
+ platform: ruby
7
+ authors:
8
+ - Tim Harper
9
+ - Paulo Köch
10
+ autorequire:
11
+ bindir: bin
12
+ cert_chain: []
13
+ date: 2012-02-11 00:00:00.000000000 Z
14
+ dependencies:
15
+ - !ruby/object:Gem::Dependency
16
+ name: spork
17
+ requirement: &70326818243580 !ruby/object:Gem::Requirement
18
+ none: false
19
+ requirements:
20
+ - - ! '>='
21
+ - !ruby/object:Gem::Version
22
+ version: 0.6.0
23
+ type: :runtime
24
+ prerelease: false
25
+ version_requirements: *70326818243580
26
+ description: Test Unit runner for spork
27
+ email:
28
+ - timcharper+spork@gmail.com
29
+ executables:
30
+ - testdrb
31
+ extensions: []
32
+ extra_rdoc_files:
33
+ - README.textile
34
+ files:
35
+ - bin/testdrb
36
+ - lib/spork/test_framework/test_unit.rb
37
+ - README.textile
38
+ homepage: http://github.com/pkoch/spork-testunit
39
+ licenses: []
40
+ post_install_message:
41
+ rdoc_options:
42
+ - --charset=UTF-8
43
+ require_paths:
44
+ - lib
45
+ required_ruby_version: !ruby/object:Gem::Requirement
46
+ none: false
47
+ requirements:
48
+ - - ! '>='
49
+ - !ruby/object:Gem::Version
50
+ version: '0'
51
+ required_rubygems_version: !ruby/object:Gem::Requirement
52
+ none: false
53
+ requirements:
54
+ - - ! '>='
55
+ - !ruby/object:Gem::Version
56
+ version: '0'
57
+ requirements: []
58
+ rubyforge_project:
59
+ rubygems_version: 1.8.15
60
+ signing_key:
61
+ specification_version: 3
62
+ summary: spork-testunit
63
+ test_files: []