RDoc tweaks

This commit is contained in:
Bryan Helmkamp 2008-11-24 19:59:27 -05:00
parent 5502948417
commit 3b8fc5551f
17 changed files with 51 additions and 226 deletions

View File

@ -1,12 +1,11 @@
=== Webrat
= Webrat - Ruby Acceptance Testing for Web applications
- [Code on GitHub](http://github.com/brynary/webrat)
- [Tickets on Lighthouse](http://webrat.lighthouseapp.com/)
- {Code on GitHub}[http://github.com/brynary/webrat]
- {Tickets on Lighthouse}[http://webrat.lighthouseapp.com/]
=== Description
== Description
Webrat (_Ruby Acceptance Testing for Web applications_)
lets you quickly write robust and thorough acceptance tests for a Ruby
Webrat lets you quickly write robust and thorough acceptance tests for a Ruby
web application. By leveraging the DOM, it can run tests similarly to an
in-browser testing solution without the associated performance hit (and
browser dependency). The result is tests that are less fragile and more
@ -19,9 +18,9 @@ that may make it a requirement for your project. If JavaScript is not central
to your application, Webrat is a simpler, effective solution that will let you
run your tests much faster and more frequently.
Initial development was sponsored by [EastMedia](http://www.eastmedia.com).
Initial development was sponsored by EastMedia[http://www.eastmedia.com].
=== Synopsis
== Synopsis
def test_sign_up
visit "/"
@ -59,14 +58,14 @@ tests to break unnecessarily as your application evolves:
A test written with Webrat can handle these changes to these without any modifications.
=== Merb
== Merb
To avoid losing sessions, you need this in environments/test.rb:
Merb::Config.use do |c|
Merb::Config.use do |c|
c[:session_store] = 'memory'
end
end
=== Install
== Install
To install the latest release:
@ -78,13 +77,13 @@ In your stories/helper.rb:
You could also unpack the gem into vendor/plugins.
=== Authors
== Authors
- Maintained by [Bryan Helmkamp](mailto:bryan@brynary.com)
- Original code written by [Seth Fitzsimmons](mailto:seth@mojodna.net)
- Maintained by {Bryan Helmkamp}[mailto:bryan@brynary.com]
- Original code written by {Seth Fitzsimmons}[mailto:seth@mojodna.net]
- Many other contributors. See attributions in History.txt
=== License
== License
Copyright (c) 2007 Bryan Helmkamp, Seth Fitzsimmons.
See MIT-LICENSE.txt in this directory.

View File

@ -24,11 +24,11 @@ module Webrat
self.parse_with_nokogiri = !Webrat.on_java?
end
def parse_with_nokogiri?
def parse_with_nokogiri? #:nodoc:
@parse_with_nokogiri ? true : false
end
def open_error_files?
def open_error_files? #:nodoc:
@open_error_files ? true : false
end

View File

@ -11,7 +11,7 @@ module Webrat
end
end
def field(*args)
def field(*args) # :nodoc:
# This is the default locator strategy
find_field_with_id(*args) ||
find_field_named(*args) ||
@ -96,7 +96,7 @@ module Webrat
end
end
def find_field_id_for_label(label_text)
def find_field_id_for_label(label_text) #:nodoc:
label = forms.detect_mapped { |form| form.label_matching(label_text) }
if label
label.for_id

View File

@ -42,9 +42,6 @@ module Webrat
# Matches the contents of an HTML document with
# whatever string is supplied
#
# ---
# @api public
def contain(content)
HasContent.new(content)
end

View File

@ -28,8 +28,6 @@ module Webrat
#
# ==== Returns
# HaveSelector:: A new have selector matcher.
# ---
# @api public
def have_selector(expected, &block)
HaveSelector.new(expected, &block)
end

View File

@ -74,8 +74,6 @@ module Webrat
#
# ==== Returns
# HaveXpath:: A new have xpath matcher.
# ---
# @api public
def have_xpath(expected, &block)
HaveXpath.new(expected, &block)
end

View File

@ -1,7 +1,7 @@
module Webrat
module MIME
module Webrat #:nodoc:
module MIME #:nodoc:
def self.mime_type(string_or_symbol)
def self.mime_type(string_or_symbol) #:nodoc:
if string_or_symbol.is_a?(String)
string_or_symbol
else

View File

@ -27,9 +27,9 @@ module Webrat
end
module Nokogiri
module CSS
class XPathVisitor
module Nokogiri #:nodoc:
module CSS #:nodoc:
class XPathVisitor #:nodoc:
def visit_pseudo_class_text(node) #:nodoc:
"@type='text'"

View File

@ -1,7 +1,7 @@
module Webrat
module XML
module Webrat #:nodoc:
module XML #:nodoc:
def self.document(stringlike)
def self.document(stringlike) #:nodoc:
if Webrat.configuration.parse_with_nokogiri?
Webrat.nokogiri_document(stringlike)
else
@ -21,7 +21,7 @@ module Webrat
end
end
def self.css_search(element, *searches)
def self.css_search(element, *searches) #:nodoc:
if Webrat.configuration.parse_with_nokogiri?
element.css(*searches)
else

View File

@ -1,7 +1,7 @@
require "mechanize"
module Webrat
class MechanizeSession < Session
module Webrat #:nodoc:
class MechanizeSession < Session #:nodoc:
attr_accessor :response
alias :page :response

View File

@ -52,8 +52,8 @@ module Webrat
end
end
module Merb
module Test
module Merb #:nodoc:
module Test #:nodoc:
module RequestHelper #:nodoc:
def request(uri, env = {})
@_webrat_session ||= Webrat::MerbSession.new

View File

@ -69,8 +69,8 @@ module Webrat
end
end
module ActionController
module Integration
module ActionController #:nodoc:
module Integration #:nodoc:
class Session #:nodoc:
unless instance_methods.include?("put_via_redirect")
require "webrat/rails/redirect_actions"

View File

@ -7,37 +7,37 @@ Webrat.configuration.mode = :selenium
module Webrat
def self.with_selenium_server
def self.with_selenium_server #:nodoc:
start_selenium_server
yield
stop_selenium_server
end
def self.start_selenium_server
def self.start_selenium_server #:nodoc:
remote_control = ::Selenium::RemoteControl::RemoteControl.new("0.0.0.0", 4444, 5)
remote_control.jar_file = File.expand_path(__FILE__ + "../../../../vendor/selenium-server.jar")
remote_control.start :background => true
TCPSocket.wait_for_service :host => "0.0.0.0", :port => 4444
end
def self.stop_selenium_server
def self.stop_selenium_server #:nodoc:
remote_control = ::Selenium::RemoteControl::RemoteControl.new("0.0.0.0", 4444, 5)
remote_control.stop
end
def self.start_app_server
def self.start_app_server #:nodoc:
pid_file = File.expand_path(RAILS_ROOT + "/tmp/pids/mongrel_selenium.pid")
system("mongrel_rails start -d --chdir=#{RAILS_ROOT} --port=3001 --environment=selenium --pid #{pid_file} &")
TCPSocket.wait_for_service :host => "0.0.0.0", :port => 3001
end
def self.stop_app_server
def self.stop_app_server #:nodoc:
pid_file = File.expand_path(RAILS_ROOT + "/tmp/pids/mongrel_selenium.pid")
system "mongrel_rails stop -c #{RAILS_ROOT} --pid #{pid_file}"
end
module Selenium
module Rails
module Selenium #:nodoc:
module Rails #:nodoc:
class World < ::ActionController::IntegrationTest
def initialize #:nodoc:
@ -50,8 +50,8 @@ module Webrat
end
module ::ActionController
module Integration
module ::ActionController #:nodoc:
module Integration #:nodoc:
class Session #:nodoc:
include Webrat::Methods
end

View File

@ -134,7 +134,7 @@ module Webrat
protected
def setup
def setup #:nodoc:
silence_stream(STDOUT) do
Webrat.start_selenium_server
Webrat.start_app_server
@ -147,11 +147,11 @@ module Webrat
teardown_at_exit
end
def selenium
def selenium #:nodoc:
browser
end
def teardown_at_exit
def teardown_at_exit #:nodoc:
at_exit do
silence_stream(STDOUT) do
$browser.stop

View File

@ -1,40 +0,0 @@
require "stringio"
require 'rubygems'
require 'spec'
require 'spec/runner/formatter/specdoc_formatter'
module Spec
module Runner
module Formatter
class BaseTextFormatter
def dump_failure(counter, failure)
output = @options.error_stream
output.puts
output.puts "#{counter.to_s})"
output.puts colourise("#{failure.header}\n#{failure.exception.message}", failure)
output.puts format_backtrace(failure.exception.backtrace)
output.flush
end
end
end
end
end
def run_spec(spec, base_dir)
$VERBOSE = nil
err, out = StringIO.new, StringIO.new
def out.tty?() true end
options = Spec::Runner::OptionParser.parse(%W(#{spec} -fs --color), err, out)
options.filename_pattern = File.expand_path(spec)
failure = ! Spec::Runner::CommandLine.run(options)
File.open(File.join(base_dir, "results", "#{File.basename(spec)}_out"), "w") do |file|
file.puts out.string
end
File.open(File.join(base_dir, "results", "#{File.basename(spec)}_err"), "w") do |file|
file.puts err.string
end
exit!(failure ? -1 : 0)
end
run_spec(ARGV[0], File.expand_path(File.join(File.dirname(__FILE__), "..", ".."))) if ENV["NOW"]

View File

@ -1,127 +0,0 @@
require 'rubygems'
require 'benchmark'
require 'spec'
require 'spec/runner/formatter/base_text_formatter'
require 'spec/spec_helper.rb'
# Load this stuff so it only has to be loaded once for the entire suite
require 'spec/mocks'
require 'spec/mocks/extensions'
require 'spec/runner/formatter/specdoc_formatter'
require 'base64'
require 'nkf'
require 'kconv'
require 'rack'
require 'fileutils'
begin
require 'json'
rescue
require 'json/pure'
end
Merb::Dispatcher
module Merb
class Counter
attr_accessor :time
def initialize
@examples, @failures, @errors, @pending, @total_time = 0, 0, 0, 0, 0
@err = ""
@mutex = Mutex.new
end
def failed?
@failures > 0
end
def add(spec, out, err)
@mutex.synchronize do
puts
puts "Running #{spec}."
STDOUT.puts out
STDOUT.flush
match = out.match(/(\d+) examples?, (\d+) failures?(?:, (\d+) errors?)?(?:, (\d+) pending?)?/m)
time = out.match(/Finished in (\d+\.\d+) seconds/)
@total_time += time[1].to_f if time
if match
e, f, errors, pending = match[1..-1]
@examples += e.to_i
@failures += f.to_i
@errors += errors.to_i
@pending += pending.to_i
end
unless err.chomp.empty?
@err << err.chomp << "\n"
end
end
end
def report
i = 0
@err.gsub!(/^\d*\)\s*/) do
"#{i += 1})\n"
end
puts @err
puts
if @failures != 0 || @errors != 0
print "\e[31m" # Red
elsif @pending != 0
print "\e[33m" # Yellow
else
print "\e[32m" # Green
end
puts "#{@examples} examples, #{@failures} failures, #{@errors} errors, #{@pending} pending, #{sprintf("suite run in %3.3f seconds", @time.real)}"
# TODO: we need to report pending examples all together
puts "\e[0m"
end
end
end
require File.dirname(__FILE__) / "run_spec"
# Runs specs in all files matching the file pattern.
#
def run_specs(globs)
require "optparse"
require "spec"
globs = globs.is_a?(Array) ? globs : [globs]
forking = (ENV["FORK"] ? ENV["FORK"] == "1" : Merb.forking_environment?)
base_dir = File.expand_path(File.dirname(__FILE__) / ".." / ".." / "..")
counter = Merb::Counter.new
forks = 0
failure = false
FileUtils.rm_rf(File.join(base_dir, "results"))
FileUtils.mkdir_p(File.join(base_dir, "results"))
time = Benchmark.measure do
files = {}
globs.each do |glob|
Dir[glob].each do |spec|
if forking
Kernel.fork do
run_spec(spec, base_dir)
end
Process.wait
else
`NOW=1 #{Gem.ruby} #{File.dirname(__FILE__) / "run_spec.rb"} \"#{spec}\"`
end
out = File.read(File.join(base_dir, "results", "#{File.basename(spec)}_out"))
err = File.read(File.join(base_dir, "results", "#{File.basename(spec)}_err"))
counter.add(spec, out, err)
end
end
end
Process.waitall
counter.time = time
counter.report
FileUtils.rm_rf(File.join(base_dir, "results"))
exit!(counter.failed? ? -1 : 0)
end

View File

@ -1,9 +1,9 @@
module Webrat
def self.session_class
module Webrat #:nodoc:
def self.session_class #:nodoc:
TestSession
end
class TestSession < Session
class TestSession < Session #:nodoc:
attr_accessor :response_body
attr_writer :response_code