1
0
Fork 0
mirror of https://github.com/sinatra/sinatra synced 2023-03-27 23:18:01 -04:00

Convert tests to custom test/spec/mini [#87]

The "spec" task has been removed and Rake's built in
test helper is used to run specs now so we should be able to
test with multiple installed versions of Ruby.
This commit is contained in:
Simon Rozet 2009-01-20 20:47:45 +01:00 committed by Ryan Tomayko
parent c43058af67
commit 045f93be91
4 changed files with 383 additions and 376 deletions

View file

@ -1,23 +1,17 @@
require 'rubygems'
require 'rake/clean'
require 'rake/testtask'
require 'fileutils'
task :default => :test
task :spec => :test
# SPECS ===============================================================
desc 'Run specs with story style output'
task :spec do
pattern = ENV['TEST'] || '.*'
sh "specrb --testcase '#{pattern}' --specdox -Ilib:test test/*_test.rb"
Rake::TestTask.new(:test) do |t|
t.test_files = FileList['test/*_test.rb']
end
desc 'Run specs with unit test style output'
task :test do |t|
sh "specrb -Ilib:test test/*_test.rb"
end
desc 'Run compatibility specs'
desc 'Run compatibility specs (requires test/spec)'
task :compat do |t|
pattern = ENV['TEST'] || '.*'
sh "specrb --testcase '#{pattern}' -Ilib:test compat/*_test.rb"

View file

@ -1,14 +1,7 @@
begin
require 'test/spec'
rescue LoadError
require 'rubygems'
require 'test/spec'
end
require 'rubygems' # required so that sinatra/base can require rack
$:.unshift File.dirname(File.dirname(__FILE__)) + '/lib'
require 'sinatra/base'
require 'sinatra/test'
require 'sinatra/test/spec'
require 'sinatra/test/unit'
module Sinatra::Test
# Sets up a Sinatra::Base subclass defined with the block
@ -23,3 +16,21 @@ class Sinatra::Base
# Allow assertions in request context
include Test::Unit::Assertions
end
##
# test/spec/mini
# http://pastie.caboo.se/158871
# chris@ozmm.org
#
def describe(*args, &block)
return super unless (name = args.first) && block
klass = Class.new(Test::Unit::TestCase) do
def self.it(name, &block)
define_method("test_#{name.gsub(/\W/,'_')}", &block)
end
def self.xspecify(*args) end
def self.before(&block) define_method(:setup, &block) end
def self.after(&block) define_method(:teardown, &block) end
end
klass.class_eval &block
end

View file

@ -1,8 +1,7 @@
require File.dirname(__FILE__) + '/helper'
describe 'Sinatra::Helpers' do
describe '#status' do
setup do
before do
mock_app {
get '/' do
status 207
@ -155,18 +154,22 @@ describe 'Sinatra::Helpers' do
describe '#media_type' do
include Sinatra::Helpers
it "looks up media types in Rack's MIME registry" do
Rack::Mime::MIME_TYPES['.foo'] = 'application/foo'
assert_equal 'application/foo', media_type('foo')
assert_equal 'application/foo', media_type('.foo')
assert_equal 'application/foo', media_type(:foo)
end
it 'returns nil when given nil' do
assert media_type(nil).nil?
end
it 'returns nil when media type not registered' do
assert media_type(:bizzle).nil?
end
it 'returns the argument when given a media type string' do
assert_equal 'text/plain', media_type('text/plain')
end
@ -227,14 +230,15 @@ describe 'Sinatra::Helpers' do
end
describe '#send_file' do
before {
before do
@file = File.dirname(__FILE__) + '/file.txt'
File.open(@file, 'wb') { |io| io.write('Hello World') }
}
after {
end
after do
File.unlink @file
@file = nil
}
end
def send_file_app
path = @file
@ -356,6 +360,4 @@ describe 'Sinatra::Helpers' do
get '/'
assert_equal 'W/"FOO"', response['ETag']
end
end
end

View file

@ -38,7 +38,7 @@ describe "Middleware" do
end
end
specify "runs in the order defined" do
it "runs in the order defined" do
@app.use UpcaseMiddleware
@app.use DowncaseMiddleware
get '/Foo'
@ -46,7 +46,7 @@ describe "Middleware" do
assert_equal "UpcaseMiddleware, DowncaseMiddleware", response['X-Tests']
end
specify "resets the prebuilt pipeline when new middleware is added" do
it "resets the prebuilt pipeline when new middleware is added" do
@app.use UpcaseMiddleware
get '/Foo'
assert_equal "/FOO", body