More helpful error message when a jasmine server is already running

This commit is contained in:
ragaskar 2009-10-31 10:50:18 -07:00
parent f9d73761bb
commit c21431415b
2 changed files with 28 additions and 3 deletions

View File

@ -133,7 +133,12 @@ module Jasmine
JsAlert.new
])
Thin::Server.start('0.0.0.0', port, app)
begin
Thin::Server.start('0.0.0.0', port, app)
rescue RuntimeError => e
raise e unless e.message == 'no acceptor'
raise RuntimeError.new("A server is already running on port #{port}")
end
end
end

View File

@ -1,12 +1,14 @@
require 'spec'
require 'open-uri'
require 'thin'
require File.dirname(__FILE__) + '/../jasmine_runner'
describe Jasmine::SimpleServer do
before do
@port = Jasmine::find_unused_port
end
after do
Jasmine::kill_process_group(@jasmine_server_pid) if @jasmine_server_pid
end
@ -25,12 +27,30 @@ describe Jasmine::SimpleServer do
run_html.should =~ /<script src="file2"/
end
describe "RuntimeError" do
it "should throw an Already Running error if there is already a server running" do
Thin::Server.should_receive(:start).and_raise(RuntimeError.new('no acceptor'))
lambda {
Jasmine::SimpleServer.start(@port, ["file1", "file2"], {})
}.should raise_error(RuntimeError, "A server is already running on port #{@port}")
end
it "re-raises other RuntimeErrors" do
Thin::Server.should_receive(:start).and_raise(RuntimeError.new('some random error'))
lambda {
Jasmine::SimpleServer.start(@port, ["file1", "file2"], {})
}.should raise_error(RuntimeError, "some random error")
end
end
it "should take a proc that returns a list of spec files" do
spec_fileses = [["file1", "file2"], ["file1", "file2", "file3"]]
spec_files_proc = lambda do
spec_fileses.shift
end
@jasmine_server_pid = fork do
Process.setpgrp
Jasmine::SimpleServer.start(@port, spec_files_proc, {})