-
Notifications
You must be signed in to change notification settings - Fork 2
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
Added a few basic specs, mostly to work out how to go about it.
- Loading branch information
Showing
11 changed files
with
188 additions
and
4 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Original file line | Diff line number | Diff line change |
---|---|---|---|
@@ -0,0 +1,4 @@ | |||
#!/usr/bin/env ruby | |||
$LOAD_PATH.unshift(File.expand_path(File.dirname(__FILE__) + "/../vendor/plugins/rspec/lib")) | |||
require 'spec' | |||
exit ::Spec::Runner::CommandLine.run(::Spec::Runner::OptionParser.parse(ARGV, STDERR, STDOUT)) |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Original file line | Diff line number | Diff line change |
---|---|---|---|
@@ -0,0 +1,116 @@ | |||
#!/usr/bin/env ruby | |||
$LOAD_PATH.unshift File.dirname(__FILE__) + '/../vendor/plugins/rspec/lib' # For rspec installed as plugin | |||
require 'rubygems' | |||
require 'drb/drb' | |||
require 'rbconfig' | |||
require 'spec' | |||
require 'optparse' | |||
|
|||
# This is based on Florian Weber's TDDMate | |||
module Spec | |||
module Runner | |||
class RailsSpecServer | |||
def run(argv, stderr, stdout) | |||
$stdout = stdout | |||
$stderr = stderr | |||
|
|||
base = ActiveRecord::Base | |||
def base.clear_reloadable_connections! | |||
active_connections.each do |name, conn| | |||
if conn.requires_reloading? | |||
conn.disconnect! | |||
active_connections.delete(name) | |||
end | |||
end | |||
end | |||
|
|||
if ActionController.const_defined?(:Dispatcher) | |||
dispatcher = ::ActionController::Dispatcher.new($stdout) | |||
dispatcher.cleanup_application | |||
elsif ::Dispatcher.respond_to?(:reset_application!) | |||
::Dispatcher.reset_application! | |||
else | |||
raise "Application reloading failed" | |||
end | |||
if Object.const_defined?(:Fixtures) && Fixtures.respond_to?(:reset_cache) | |||
Fixtures.reset_cache | |||
end | |||
|
|||
::Dependencies.mechanism = :load | |||
require_dependency('application.rb') unless Object.const_defined?(:ApplicationController) | |||
load File.dirname(__FILE__) + '/../spec/spec_helper.rb' | |||
|
|||
if in_memory_database? | |||
load "#{RAILS_ROOT}/db/schema.rb" # use db agnostic schema by default | |||
ActiveRecord::Migrator.up('db/migrate') # use migrations | |||
end | |||
|
|||
::Spec::Runner::CommandLine.run( | |||
::Spec::Runner::OptionParser.parse( | |||
argv, | |||
$stderr, | |||
$stdout | |||
) | |||
) | |||
end | |||
|
|||
def in_memory_database? | |||
ENV["RAILS_ENV"] == "test" and | |||
::ActiveRecord::Base.connection.class.to_s == "ActiveRecord::ConnectionAdapters::SQLite3Adapter" and | |||
::Rails::Configuration.new.database_configuration['test']['database'] == ':memory:' | |||
end | |||
end | |||
end | |||
end | |||
puts "Loading Rails environment" | |||
|
|||
ENV["RAILS_ENV"] = "test" | |||
require File.expand_path(File.dirname(__FILE__) + "/../config/environment") | |||
require 'dispatcher' | |||
|
|||
def restart_test_server | |||
puts "restarting" | |||
config = ::Config::CONFIG | |||
ruby = File::join(config['bindir'], config['ruby_install_name']) + config['EXEEXT'] | |||
command_line = [ruby, $0, ARGV].flatten.join(' ') | |||
exec(command_line) | |||
end | |||
|
|||
def daemonize(pid_file = nil) | |||
return yield if $DEBUG | |||
pid = Process.fork{ | |||
Process.setsid | |||
Dir.chdir(RAILS_ROOT) | |||
trap("SIGINT"){ exit! 0 } | |||
trap("SIGTERM"){ exit! 0 } | |||
trap("SIGHUP"){ restart_test_server } | |||
File.open("/dev/null"){|f| | |||
STDERR.reopen f | |||
STDIN.reopen f | |||
STDOUT.reopen f | |||
} | |||
yield | |||
} | |||
puts "spec_server launched. (PID: %d)" % pid | |||
File.open(pid_file,"w"){|f| f.puts pid } if pid_file | |||
exit! 0 | |||
end | |||
|
|||
options = Hash.new | |||
opts = OptionParser.new | |||
opts.on("-d", "--daemon"){|v| options[:daemon] = true } | |||
opts.on("-p", "--pid PIDFILE"){|v| options[:pid] = v } | |||
opts.parse!(ARGV) | |||
|
|||
puts "Ready" | |||
exec_server = lambda { | |||
trap("USR2") { restart_test_server } if Signal.list.has_key?("USR2") | |||
DRb.start_service("druby://127.0.0.1:8989", Spec::Runner::RailsSpecServer.new) | |||
DRb.thread.join | |||
} | |||
|
|||
if options[:daemon] | |||
daemonize(options[:pid], &exec_server) | |||
else | |||
exec_server.call | |||
end |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Original file line | Diff line number | Diff line change |
---|---|---|---|
@@ -0,0 +1,20 @@ | |||
require File.dirname(__FILE__) + '/../spec_helper' | |||
|
|||
describe Page do | |||
before do | |||
clear_projects | |||
create_test_project | |||
end | |||
|
|||
it "should create a page" do | |||
create_test_page | |||
@project.pages.all.length.should == 1 | |||
@page.path.should == "#{Project.projects_root}/test_project/test_page.markdown" | |||
File.exist?(@page.path).should be_true | |||
end | |||
|
|||
def create_test_page | |||
@page = @project.pages.build(:name => "test_page") | |||
@page.save | |||
end | |||
end |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Original file line | Diff line number | Diff line change |
---|---|---|---|
@@ -0,0 +1,15 @@ | |||
require File.dirname(__FILE__) + '/../spec_helper' | |||
|
|||
describe Project do | |||
before do | |||
clear_projects | |||
end | |||
|
|||
it "should create a project" do | |||
create_test_project | |||
Project.all.length.should == 1 | |||
@project.path.should == "#{Project.projects_root}/test_project" | |||
File.exist?(@project.path).should be_true | |||
File.exist?("#{@project.path}/.git").should be_true | |||
end | |||
end |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Original file line | Diff line number | Diff line change |
---|---|---|---|
@@ -0,0 +1,2 @@ | |||
--exclude "spec/*,gems/*" | |||
--rails |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Original file line | Diff line number | Diff line change |
---|---|---|---|
@@ -0,0 +1,4 @@ | |||
--colour | |||
--format progress | |||
--loadby mtime | |||
--reverse |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Original file line | Diff line number | Diff line change |
---|---|---|---|
@@ -0,0 +1,17 @@ | |||
# This file is copied to ~/spec when you run 'ruby script/generate rspec' | |||
# from the project root directory. | |||
ENV["RAILS_ENV"] = "test" | |||
require File.expand_path(File.dirname(__FILE__) + "/../config/environment") | |||
require 'spec' | |||
require 'spec/rails' | |||
|
|||
Spec::Runner.configure do |config| | |||
def clear_projects | |||
`rm -rf #{Project.projects_root}` | |||
end | |||
|
|||
def create_test_project | |||
@project = Project.new(:name => "test_project") | |||
@project.save | |||
end | |||
end |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Original file line | Diff line number | Diff line change |
---|---|---|---|
@@ -0,0 +1,4 @@ | |||
dir = File.dirname(__FILE__) | |||
Dir[File.expand_path("#{dir}/**/*.rb")].uniq.each do |file| | |||
require file | |||
end |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Original file line | Diff line number | Diff line change |
---|---|---|---|
@@ -0,0 +1,3 @@ | |||
ENV["RAILS_ENV"] = "test" | |||
require File.expand_path(File.dirname(__FILE__) + "/../config/environment") | |||
require 'spec/rails/story_adapter' |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters