testbot 0.5.2 → 0.5.3
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/CHANGELOG +1 -1
- data/README.markdown +1 -1
- data/Rakefile +53 -0
- data/lib/shared/testbot.rb +1 -1
- data/test/fixtures/local/Rakefile +7 -0
- data/test/fixtures/local/config/testbot.yml +5 -0
- data/test/fixtures/local/log/test.log +0 -0
- data/test/fixtures/local/script/spec +2 -0
- data/test/fixtures/local/spec/models/car_spec.rb +0 -0
- data/test/fixtures/local/spec/models/house_spec.rb +0 -0
- data/test/fixtures/local/spec/spec.opts +0 -0
- data/test/fixtures/local/tmp/restart.txt +0 -0
- data/test/requester/test_requester.rb +346 -0
- data/test/runner/test_job.rb +70 -0
- data/test/server/test_group.rb +43 -0
- data/test/server/test_server.rb +451 -0
- data/test/shared/adapters/helpers/test_ruby_env.rb +76 -0
- data/test/shared/adapters/test_adapter.rb +21 -0
- data/test/shared/test_testbot.rb +185 -0
- data/test/test_integration.rb +55 -0
- data/testbot.gemspec +2 -1
- metadata +34 -3
@@ -0,0 +1,76 @@
|
|
1
|
+
require File.expand_path(File.join(File.dirname(__FILE__), '../../../../lib/shared/adapters/helpers/ruby_env.rb'))
|
2
|
+
require 'test/unit'
|
3
|
+
require 'shoulda'
|
4
|
+
require 'flexmock/test_unit'
|
5
|
+
|
6
|
+
class RubyEnvTest < Test::Unit::TestCase
|
7
|
+
|
8
|
+
context "self.bundler?" do
|
9
|
+
|
10
|
+
should "return true if bundler is installed and there is a Gemfile" do
|
11
|
+
flexmock(Gem).should_receive(:available?).with("bundler").once.and_return(true)
|
12
|
+
flexmock(File).should_receive(:exists?).with("path/to/project/Gemfile").once.and_return(true)
|
13
|
+
assert_equal true, RubyEnv.bundler?("path/to/project")
|
14
|
+
end
|
15
|
+
|
16
|
+
should "return false if bundler is installed but there is no Gemfile" do
|
17
|
+
flexmock(Gem).should_receive(:available?).with("bundler").once.and_return(true)
|
18
|
+
flexmock(File).should_receive(:exists?).and_return(false)
|
19
|
+
assert_equal false, RubyEnv.bundler?("path/to/project")
|
20
|
+
end
|
21
|
+
|
22
|
+
should "return false if bundler is not installed" do
|
23
|
+
flexmock(Gem).should_receive(:available?).with("bundler").once.and_return(false)
|
24
|
+
assert_equal false, RubyEnv.bundler?("path/to/project")
|
25
|
+
end
|
26
|
+
|
27
|
+
end
|
28
|
+
|
29
|
+
context "self.ruby_command" do
|
30
|
+
|
31
|
+
should "use ruby by default" do
|
32
|
+
flexmock(RubyEnv).should_receive(:bundler?).and_return(false)
|
33
|
+
flexmock(File).should_receive(:exists?).and_return(false)
|
34
|
+
assert_equal 'ruby -S rspec', RubyEnv.ruby_command("path/to/project", :script => "script/spec", :bin => "rspec")
|
35
|
+
end
|
36
|
+
|
37
|
+
should "use bundler when available and use the binary when there is no script" do
|
38
|
+
flexmock(RubyEnv).should_receive(:bundler?).once.with("path/to/project").and_return(true)
|
39
|
+
flexmock(File).should_receive(:exists?).with("path/to/project/script/spec").and_return(false)
|
40
|
+
assert_equal 'ruby -S bundle exec rspec', RubyEnv.ruby_command("path/to/project", :script => "script/spec", :bin => "rspec")
|
41
|
+
end
|
42
|
+
|
43
|
+
should "use the script when it exists when using bundler" do
|
44
|
+
flexmock(RubyEnv).should_receive(:bundler?).and_return(true)
|
45
|
+
flexmock(File).should_receive(:exists?).and_return(true)
|
46
|
+
assert_equal 'ruby -S bundle exec script/spec', RubyEnv.ruby_command("path/to/project", :script => "script/spec", :bin => "rspec")
|
47
|
+
end
|
48
|
+
|
49
|
+
should "use the script when it exists when not using bundler" do
|
50
|
+
flexmock(RubyEnv).should_receive(:bundler?).and_return(false)
|
51
|
+
flexmock(File).should_receive(:exists?).and_return(true)
|
52
|
+
assert_equal 'ruby -S script/spec', RubyEnv.ruby_command("path/to/project", :script => "script/spec", :bin => "rspec")
|
53
|
+
end
|
54
|
+
|
55
|
+
should "be able to use jruby" do
|
56
|
+
flexmock(RubyEnv).should_receive(:bundler?).and_return(false)
|
57
|
+
flexmock(File).should_receive(:exists?).and_return(true)
|
58
|
+
assert_equal 'jruby -S script/spec', RubyEnv.ruby_command("path/to/project", :script => "script/spec",
|
59
|
+
:bin => "rspec", :ruby_interpeter => "jruby")
|
60
|
+
end
|
61
|
+
|
62
|
+
should "be able to use jruby with bundler" do
|
63
|
+
flexmock(RubyEnv).should_receive(:bundler?).and_return(true)
|
64
|
+
flexmock(File).should_receive(:exists?).and_return(true)
|
65
|
+
assert_equal 'jruby -S bundle exec script/spec', RubyEnv.ruby_command("path/to/project", :script => "script/spec",
|
66
|
+
:bin => "rspec", :ruby_interpeter => "jruby")
|
67
|
+
end
|
68
|
+
|
69
|
+
should "use the interpeter when there is no binary specified" do
|
70
|
+
flexmock(RubyEnv).should_receive(:bundler?).and_return(true)
|
71
|
+
flexmock(File).should_receive(:exists?).and_return(false)
|
72
|
+
assert_equal 'ruby -S bundle exec ruby', RubyEnv.ruby_command("path/to/project")
|
73
|
+
end
|
74
|
+
end
|
75
|
+
|
76
|
+
end
|
@@ -0,0 +1,21 @@
|
|
1
|
+
require File.expand_path(File.join(File.dirname(__FILE__), '../../../lib/shared/adapters/adapter.rb'))
|
2
|
+
require 'test/unit'
|
3
|
+
require 'shoulda'
|
4
|
+
|
5
|
+
class AdapterTest < Test::Unit::TestCase
|
6
|
+
|
7
|
+
should "be able to find the adapters" do
|
8
|
+
assert_equal RSpecAdapter, Adapter.find(:spec)
|
9
|
+
assert_equal CucumberAdapter, Adapter.find(:features)
|
10
|
+
assert_equal TestUnitAdapter, Adapter.find(:test)
|
11
|
+
end
|
12
|
+
|
13
|
+
should "find be able to find an adapter by string" do
|
14
|
+
assert_equal RSpecAdapter, Adapter.find("spec")
|
15
|
+
end
|
16
|
+
|
17
|
+
should "return be able to all types" do
|
18
|
+
assert_equal [ RSpecAdapter, CucumberAdapter, TestUnitAdapter ], Adapter.all
|
19
|
+
end
|
20
|
+
|
21
|
+
end
|
@@ -0,0 +1,185 @@
|
|
1
|
+
require File.expand_path(File.join(File.dirname(__FILE__), '../../lib/shared/testbot')) unless defined?(Testbot)
|
2
|
+
require 'test/unit'
|
3
|
+
require 'shoulda'
|
4
|
+
require 'flexmock/test_unit'
|
5
|
+
require 'sinatra'
|
6
|
+
require File.expand_path(File.join(File.dirname(__FILE__), '../../lib/requester/requester'))
|
7
|
+
require File.expand_path(File.join(File.dirname(__FILE__), '../../lib/server/server'))
|
8
|
+
|
9
|
+
module Testbot
|
10
|
+
|
11
|
+
module TestHelpers
|
12
|
+
|
13
|
+
def requester_attributes
|
14
|
+
{ :server_host => "192.168.0.100",
|
15
|
+
:rsync_path => nil,
|
16
|
+
:rsync_ignores => '', :server_user => nil, :available_runner_usage => nil,
|
17
|
+
:project => nil, :ssh_tunnel => nil }
|
18
|
+
end
|
19
|
+
|
20
|
+
end
|
21
|
+
|
22
|
+
class CLITest < Test::Unit::TestCase
|
23
|
+
|
24
|
+
include TestHelpers
|
25
|
+
|
26
|
+
context "self.run" do
|
27
|
+
|
28
|
+
context "with no args" do
|
29
|
+
should "return false" do
|
30
|
+
assert_equal false, CLI.run([])
|
31
|
+
end
|
32
|
+
end
|
33
|
+
|
34
|
+
context "with --help" do
|
35
|
+
should "return false" do
|
36
|
+
assert_equal false, CLI.run([ '--help' ])
|
37
|
+
end
|
38
|
+
end
|
39
|
+
|
40
|
+
context "with --version" do
|
41
|
+
should "print version and return true" do
|
42
|
+
flexmock(CLI).should_receive(:puts).once.with("Testbot #{Testbot.version}")
|
43
|
+
assert_equal true, CLI.run([ '--version' ])
|
44
|
+
end
|
45
|
+
end
|
46
|
+
|
47
|
+
context "with --server" do
|
48
|
+
should "start a server" do
|
49
|
+
flexmock(SimpleDaemonize).should_receive(:stop).once.with(Testbot::SERVER_PID)
|
50
|
+
flexmock(SimpleDaemonize).should_receive(:start).once.with(any, Testbot::SERVER_PID, "testbot (server)")
|
51
|
+
flexmock(CLI).should_receive(:puts).once.with("Testbot server started (pid: #{Process.pid})")
|
52
|
+
assert_equal true, CLI.run([ "--server" ])
|
53
|
+
end
|
54
|
+
|
55
|
+
should "start a server when start is passed" do
|
56
|
+
flexmock(SimpleDaemonize).should_receive(:stop).once.with(Testbot::SERVER_PID)
|
57
|
+
flexmock(SimpleDaemonize).should_receive(:start).once
|
58
|
+
flexmock(CLI).should_receive(:puts)
|
59
|
+
assert_equal true, CLI.run([ "--server", "start" ])
|
60
|
+
end
|
61
|
+
|
62
|
+
should "stop a server when stop is passed" do
|
63
|
+
flexmock(SimpleDaemonize).should_receive(:stop).once.with(Testbot::SERVER_PID).and_return(true)
|
64
|
+
flexmock(CLI).should_receive(:puts).once.with("Testbot server stopped")
|
65
|
+
assert_equal true, CLI.run([ "--server", "stop" ])
|
66
|
+
end
|
67
|
+
|
68
|
+
should "not print when SimpleDaemonize.stop returns false" do
|
69
|
+
flexmock(SimpleDaemonize).should_receive(:stop).and_return(false)
|
70
|
+
flexmock(CLI).should_receive(:puts).never
|
71
|
+
CLI.run([ "--stop", "server" ])
|
72
|
+
end
|
73
|
+
|
74
|
+
should "start it in the foreground with run" do
|
75
|
+
flexmock(SimpleDaemonize).should_receive(:stop).once.with(Testbot::SERVER_PID)
|
76
|
+
flexmock(SimpleDaemonize).should_receive(:start).never
|
77
|
+
flexmock(Sinatra::Application).should_receive(:run!).once.with(:environment => "production")
|
78
|
+
assert_equal true, CLI.run([ "--server", 'run' ])
|
79
|
+
end
|
80
|
+
end
|
81
|
+
|
82
|
+
context "with --runner" do
|
83
|
+
should "start a runner" do
|
84
|
+
flexmock(SimpleDaemonize).should_receive(:stop).once.with(Testbot::RUNNER_PID)
|
85
|
+
flexmock(SimpleDaemonize).should_receive(:start).once.with(any, Testbot::RUNNER_PID, "testbot (runner)")
|
86
|
+
flexmock(CLI).should_receive(:puts).once.with("Testbot runner started (pid: #{Process.pid})")
|
87
|
+
assert_equal true, CLI.run([ "--runner", "--connect", "192.168.0.100", "--working_dir", "/tmp/testbot" ])
|
88
|
+
end
|
89
|
+
|
90
|
+
should "start a runner when start is passed" do
|
91
|
+
flexmock(SimpleDaemonize).should_receive(:stop).once.with(Testbot::RUNNER_PID)
|
92
|
+
flexmock(SimpleDaemonize).should_receive(:start).once
|
93
|
+
flexmock(CLI).should_receive(:puts)
|
94
|
+
assert_equal true, CLI.run([ "--runner", "start", "--connect", "192.168.0.100" ])
|
95
|
+
end
|
96
|
+
|
97
|
+
should "stop a runner when stop is passed" do
|
98
|
+
flexmock(SimpleDaemonize).should_receive(:stop).once.with(Testbot::RUNNER_PID).and_return(true)
|
99
|
+
flexmock(CLI).should_receive(:puts).once.with("Testbot runner stopped")
|
100
|
+
assert_equal true, CLI.run([ "--runner", "stop" ])
|
101
|
+
end
|
102
|
+
|
103
|
+
should "return false without connect" do
|
104
|
+
assert_equal false, CLI.run([ "--runner", "--connect" ])
|
105
|
+
assert_equal false, CLI.run([ "--runner" ])
|
106
|
+
end
|
107
|
+
|
108
|
+
should "start it in the foreground with run" do
|
109
|
+
flexmock(SimpleDaemonize).should_receive(:stop).once.with(Testbot::RUNNER_PID)
|
110
|
+
flexmock(SimpleDaemonize).should_receive(:start).never
|
111
|
+
flexmock(Runner::Runner).should_receive(:new).once.and_return(mock = Object.new)
|
112
|
+
flexmock(mock).should_receive(:run!).once
|
113
|
+
assert_equal true, CLI.run([ "--runner", 'run', '--connect', '192.168.0.100' ])
|
114
|
+
end
|
115
|
+
end
|
116
|
+
|
117
|
+
Adapter.all.each do |adapter|
|
118
|
+
context "with --#{adapter.type}" do
|
119
|
+
should "start a #{adapter.name} requester and return true" do
|
120
|
+
flexmock(Requester::Requester).should_receive(:new).once.
|
121
|
+
with(requester_attributes).and_return(mock = Object.new)
|
122
|
+
flexmock(mock).should_receive(:run_tests).once.with(adapter, adapter.base_path)
|
123
|
+
assert_equal true, CLI.run([ "--#{adapter.type}", "--connect", "192.168.0.100" ])
|
124
|
+
end
|
125
|
+
|
126
|
+
should "accept a custom rsync_path" do
|
127
|
+
flexmock(Requester::Requester).should_receive(:new).once.
|
128
|
+
with(requester_attributes.merge({ :rsync_path => "/somewhere/else" })).
|
129
|
+
and_return(mock = Object.new)
|
130
|
+
flexmock(mock).should_receive(:run_tests)
|
131
|
+
CLI.run([ "--#{adapter.type}", "--connect", "192.168.0.100", '--rsync_path', '/somewhere/else' ])
|
132
|
+
end
|
133
|
+
|
134
|
+
should "accept rsync_ignores" do
|
135
|
+
flexmock(Requester::Requester).should_receive(:new).once.
|
136
|
+
with(requester_attributes.merge({ :rsync_ignores => "tmp log" })).
|
137
|
+
and_return(mock = Object.new)
|
138
|
+
flexmock(mock).should_receive(:run_tests)
|
139
|
+
CLI.run([ "--#{adapter.type}", "--connect", "192.168.0.100", '--rsync_ignores', 'tmp', 'log' ])
|
140
|
+
end
|
141
|
+
|
142
|
+
should "accept ssh tunnel" do
|
143
|
+
flexmock(Requester::Requester).should_receive(:new).once.
|
144
|
+
with(requester_attributes.merge({ :ssh_tunnel => true })).
|
145
|
+
and_return(mock = Object.new)
|
146
|
+
flexmock(mock).should_receive(:run_tests)
|
147
|
+
CLI.run([ "--#{adapter.type}", "--connect", "192.168.0.100", '--ssh_tunnel' ])
|
148
|
+
end
|
149
|
+
|
150
|
+
should "accept a custom user" do
|
151
|
+
flexmock(Requester::Requester).should_receive(:new).once.
|
152
|
+
with(requester_attributes.merge({ :server_user => "cruise" })).
|
153
|
+
and_return(mock = Object.new)
|
154
|
+
flexmock(mock).should_receive(:run_tests)
|
155
|
+
CLI.run([ "--#{adapter.type}", "--connect", "192.168.0.100", '--user', 'cruise' ])
|
156
|
+
end
|
157
|
+
|
158
|
+
should "accept a custom project name" do
|
159
|
+
flexmock(Requester::Requester).should_receive(:new).once.
|
160
|
+
with(requester_attributes.merge({ :project => "rspec" })).
|
161
|
+
and_return(mock = Object.new)
|
162
|
+
flexmock(mock).should_receive(:run_tests)
|
163
|
+
CLI.run([ "--#{adapter.type}", "--connect", "192.168.0.100", '--project', 'rspec' ])
|
164
|
+
end
|
165
|
+
end
|
166
|
+
end
|
167
|
+
end
|
168
|
+
|
169
|
+
context "self.parse_args" do
|
170
|
+
|
171
|
+
should 'convert ARGV arguments to a hash' do
|
172
|
+
hash = CLI.parse_args("--runner --connect http://127.0.0.1:#{Testbot::SERVER_PORT} --working_dir ~/testbot --ssh_tunnel user@testbot_server".split)
|
173
|
+
assert_equal ({ :runner => true, :connect => "http://127.0.0.1:#{Testbot::SERVER_PORT}", :working_dir => "~/testbot", :ssh_tunnel => "user@testbot_server" }), hash
|
174
|
+
end
|
175
|
+
|
176
|
+
should "handle just a key without a value" do
|
177
|
+
hash = CLI.parse_args([ "--server" ])
|
178
|
+
assert_equal ({ :server => true }), hash
|
179
|
+
end
|
180
|
+
|
181
|
+
end
|
182
|
+
|
183
|
+
end
|
184
|
+
|
185
|
+
end
|
@@ -0,0 +1,55 @@
|
|
1
|
+
require 'rubygems'
|
2
|
+
require 'test/unit'
|
3
|
+
require 'fileutils'
|
4
|
+
require 'shoulda'
|
5
|
+
|
6
|
+
class IntegrationTest < Test::Unit::TestCase
|
7
|
+
|
8
|
+
def stop!
|
9
|
+
system "export INTEGRATION_TEST=true; bin/testbot --server stop > /dev/null"
|
10
|
+
system "export INTEGRATION_TEST=true; bin/testbot --runner stop > /dev/null"
|
11
|
+
end
|
12
|
+
|
13
|
+
# This is slow, and Test:Unit does not have "before/after :all" method, so I'm using a single testcase for multiple tests
|
14
|
+
should "be able to send a build request, have it run and show the results" do
|
15
|
+
Thread.new {
|
16
|
+
|
17
|
+
sleep 30
|
18
|
+
puts "Still running after 30 secs, stopping..."
|
19
|
+
stop!
|
20
|
+
}
|
21
|
+
|
22
|
+
system "rm -rf tmp; mkdir -p tmp; cp -rf test/fixtures/local tmp/local"
|
23
|
+
system "export INTEGRATION_TEST=true; bin/testbot --runner --connect 127.0.0.1 --working_dir tmp/runner > /dev/null"
|
24
|
+
system "export INTEGRATION_TEST=true; bin/testbot --server > /dev/null"
|
25
|
+
|
26
|
+
# For debug
|
27
|
+
# Thread.new do
|
28
|
+
# system "export INTEGRATION_TEST=true; bin/testbot --runner run --connect 127.0.0.1 --working_dir tmp/runner"
|
29
|
+
# end
|
30
|
+
# Thread.new do
|
31
|
+
# system "export INTEGRATION_TEST=true; bin/testbot --server run"
|
32
|
+
# end
|
33
|
+
|
34
|
+
sleep 2.0
|
35
|
+
result = `cd tmp/local; INTEGRATION_TEST=true ../../bin/testbot --spec --connect 127.0.0.1 --rsync_path ../server --rsync_ignores "log/* tmp/*"`
|
36
|
+
|
37
|
+
# Should include the result from script/spec
|
38
|
+
#puts result.inspect
|
39
|
+
assert result.include?('script/spec got called with ["-O", "spec/spec.opts", "spec/models/house_spec.rb", "spec/models/car_spec.rb"]') ||
|
40
|
+
result.include?('script/spec got called with ["-O", "spec/spec.opts", "spec/models/car_spec.rb", "spec/models/house_spec.rb"]')
|
41
|
+
|
42
|
+
|
43
|
+
# Should not include ignored files
|
44
|
+
assert !File.exists?("tmp/server/log/test.log")
|
45
|
+
assert !File.exists?("tmp/server/tmp/restart.txt")
|
46
|
+
assert !File.exists?("tmp/runner/local/log/test.log")
|
47
|
+
assert !File.exists?("tmp/runner/local/tmp/restart.txt")
|
48
|
+
end
|
49
|
+
|
50
|
+
def teardown
|
51
|
+
stop!
|
52
|
+
FileUtils.rm_rf "tmp"
|
53
|
+
end
|
54
|
+
|
55
|
+
end
|
data/testbot.gemspec
CHANGED
@@ -11,7 +11,7 @@ Gem::Specification.new do |s|
|
|
11
11
|
s.description = %q{Testbot is a test distribution tool that works with Rails, RSpec, Test::Unit and Cucumber.}
|
12
12
|
s.bindir = "bin"
|
13
13
|
s.executables = [ "testbot" ]
|
14
|
-
s.files = Dir.glob("lib/**/*") + %w(Gemfile .gemtest testbot.gemspec CHANGELOG README.markdown bin/testbot) +
|
14
|
+
s.files = Dir.glob("lib/**/*") + Dir.glob("test/**/*") + %w(Gemfile .gemtest Rakefile testbot.gemspec CHANGELOG README.markdown bin/testbot) +
|
15
15
|
(File.exists?("DEV_VERSION") ? [ "DEV_VERSION" ] : [])
|
16
16
|
s.add_dependency('sinatra', '=1.0.0') # To be able to use rack 1.0.1 which is compatible with rails 2.
|
17
17
|
s.add_dependency('httparty', '>= 0.6.1')
|
@@ -27,5 +27,6 @@ Gem::Specification.new do |s|
|
|
27
27
|
s.add_development_dependency("cucumber")
|
28
28
|
s.add_development_dependency("rvm")
|
29
29
|
s.add_development_dependency("rake")
|
30
|
+
s.add_development_dependency("bundler")
|
30
31
|
end
|
31
32
|
|
metadata
CHANGED
@@ -1,13 +1,13 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: testbot
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
hash:
|
4
|
+
hash: 13
|
5
5
|
prerelease:
|
6
6
|
segments:
|
7
7
|
- 0
|
8
8
|
- 5
|
9
|
-
-
|
10
|
-
version: 0.5.
|
9
|
+
- 3
|
10
|
+
version: 0.5.3
|
11
11
|
platform: ruby
|
12
12
|
authors:
|
13
13
|
- "Joakim Kolsj\xC3\xB6"
|
@@ -212,6 +212,20 @@ dependencies:
|
|
212
212
|
version: "0"
|
213
213
|
type: :development
|
214
214
|
version_requirements: *id013
|
215
|
+
- !ruby/object:Gem::Dependency
|
216
|
+
name: bundler
|
217
|
+
prerelease: false
|
218
|
+
requirement: &id014 !ruby/object:Gem::Requirement
|
219
|
+
none: false
|
220
|
+
requirements:
|
221
|
+
- - ">="
|
222
|
+
- !ruby/object:Gem::Version
|
223
|
+
hash: 3
|
224
|
+
segments:
|
225
|
+
- 0
|
226
|
+
version: "0"
|
227
|
+
type: :development
|
228
|
+
version_requirements: *id014
|
215
229
|
description: Testbot is a test distribution tool that works with Rails, RSpec, Test::Unit and Cucumber.
|
216
230
|
email:
|
217
231
|
- joakim.kolsjo@gmail.com
|
@@ -249,8 +263,25 @@ files:
|
|
249
263
|
- lib/shared/testbot.rb
|
250
264
|
- lib/tasks/testbot.rake
|
251
265
|
- lib/testbot.rb
|
266
|
+
- test/fixtures/local/config/testbot.yml
|
267
|
+
- test/fixtures/local/log/test.log
|
268
|
+
- test/fixtures/local/Rakefile
|
269
|
+
- test/fixtures/local/script/spec
|
270
|
+
- test/fixtures/local/spec/models/car_spec.rb
|
271
|
+
- test/fixtures/local/spec/models/house_spec.rb
|
272
|
+
- test/fixtures/local/spec/spec.opts
|
273
|
+
- test/fixtures/local/tmp/restart.txt
|
274
|
+
- test/requester/test_requester.rb
|
275
|
+
- test/runner/test_job.rb
|
276
|
+
- test/server/test_group.rb
|
277
|
+
- test/server/test_server.rb
|
278
|
+
- test/shared/adapters/helpers/test_ruby_env.rb
|
279
|
+
- test/shared/adapters/test_adapter.rb
|
280
|
+
- test/shared/test_testbot.rb
|
281
|
+
- test/test_integration.rb
|
252
282
|
- Gemfile
|
253
283
|
- .gemtest
|
284
|
+
- Rakefile
|
254
285
|
- testbot.gemspec
|
255
286
|
- CHANGELOG
|
256
287
|
- README.markdown
|