Skip to content

Commit 578ee89

Browse files
committed
- install a mock_app for testing and set up autotest.
1 parent 10af2b9 commit 578ee89

38 files changed

+3087
-1
lines changed

.autotest

+27
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,27 @@
1+
class Autotest
2+
##
3+
# Convert a path in a string, s, into a class name, changing
4+
# underscores to CamelCase, etc.
5+
6+
def path_to_classname(s)
7+
sep = File::SEPARATOR
8+
f = s.sub(/^test#{sep}/, '').sub(/\.rb$/, '').split(sep)
9+
f = f.map { |path| path.split(/_|(\d+)/).map { |seg| seg.capitalize }.join }
10+
f = f.map { |path| path =~ /Test$/ ? path : "#{path}Test" }
11+
f.join('::')
12+
end
13+
end
14+
15+
Autotest.add_hook :initialize do |at|
16+
# doesn't seem to work
17+
# at.clear_mappings
18+
19+
at.add_mapping(/^lib\/.*\.rb$/) do |filename, _|
20+
possible = File.basename(filename, 'rb').gsub '_', '_?'
21+
files_matching %r%^test/.*#{possible}_test\.rb$%
22+
end
23+
24+
at.add_mapping(/^test.*\/.*_test\.rb$/) do |filename, _|
25+
filename
26+
end
27+
end

test/mock_app/.gitignore

+2
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,2 @@
1+
tmp/
2+
log/
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,10 @@
1+
# Filters added to this controller apply to all controllers in the application.
2+
# Likewise, all the methods added will be available for all controllers.
3+
4+
class ApplicationController < ActionController::Base
5+
helper :all # include all helpers, all the time
6+
protect_from_forgery # See ActionController::RequestForgeryProtection for details
7+
8+
# Scrub sensitive parameters from your log
9+
# filter_parameter_logging :password
10+
end
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,3 @@
1+
# Methods added to this helper will be available to all templates in the application.
2+
module ApplicationHelper
3+
end

test/mock_app/config/boot.rb

+110
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,110 @@
1+
# Don't change this file!
2+
# Configure your app in config/environment.rb and config/environments/*.rb
3+
4+
RAILS_ROOT = "#{File.dirname(__FILE__)}/.." unless defined?(RAILS_ROOT)
5+
6+
module Rails
7+
class << self
8+
def boot!
9+
unless booted?
10+
preinitialize
11+
pick_boot.run
12+
end
13+
end
14+
15+
def booted?
16+
defined? Rails::Initializer
17+
end
18+
19+
def pick_boot
20+
(vendor_rails? ? VendorBoot : GemBoot).new
21+
end
22+
23+
def vendor_rails?
24+
File.exist?("#{RAILS_ROOT}/vendor/rails")
25+
end
26+
27+
def preinitialize
28+
load(preinitializer_path) if File.exist?(preinitializer_path)
29+
end
30+
31+
def preinitializer_path
32+
"#{RAILS_ROOT}/config/preinitializer.rb"
33+
end
34+
end
35+
36+
class Boot
37+
def run
38+
load_initializer
39+
Rails::Initializer.run(:set_load_path)
40+
end
41+
end
42+
43+
class VendorBoot < Boot
44+
def load_initializer
45+
require "#{RAILS_ROOT}/vendor/rails/railties/lib/initializer"
46+
Rails::Initializer.run(:install_gem_spec_stubs)
47+
Rails::GemDependency.add_frozen_gem_path
48+
end
49+
end
50+
51+
class GemBoot < Boot
52+
def load_initializer
53+
self.class.load_rubygems
54+
load_rails_gem
55+
require 'initializer'
56+
end
57+
58+
def load_rails_gem
59+
if version = self.class.gem_version
60+
gem 'rails', version
61+
else
62+
gem 'rails'
63+
end
64+
rescue Gem::LoadError => load_error
65+
$stderr.puts %(Missing the Rails #{version} gem. Please `gem install -v=#{version} rails`, update your RAILS_GEM_VERSION setting in config/environment.rb for the Rails version you do have installed, or comment out RAILS_GEM_VERSION to use the latest version installed.)
66+
exit 1
67+
end
68+
69+
class << self
70+
def rubygems_version
71+
Gem::RubyGemsVersion rescue nil
72+
end
73+
74+
def gem_version
75+
if defined? RAILS_GEM_VERSION
76+
RAILS_GEM_VERSION
77+
elsif ENV.include?('RAILS_GEM_VERSION')
78+
ENV['RAILS_GEM_VERSION']
79+
else
80+
parse_gem_version(read_environment_rb)
81+
end
82+
end
83+
84+
def load_rubygems
85+
require 'rubygems'
86+
min_version = '1.3.1'
87+
unless rubygems_version >= min_version
88+
$stderr.puts %Q(Rails requires RubyGems >= #{min_version} (you have #{rubygems_version}). Please `gem update --system` and try again.)
89+
exit 1
90+
end
91+
92+
rescue LoadError
93+
$stderr.puts %Q(Rails requires RubyGems >= #{min_version}. Please install RubyGems and try again: http://rubygems.rubyforge.org)
94+
exit 1
95+
end
96+
97+
def parse_gem_version(text)
98+
$1 if text =~ /^[^#]*RAILS_GEM_VERSION\s*=\s*["']([!~<>=]*\s*[\d.]+)["']/
99+
end
100+
101+
private
102+
def read_environment_rb
103+
File.read("#{RAILS_ROOT}/config/environment.rb")
104+
end
105+
end
106+
end
107+
end
108+
109+
# All that for this:
110+
Rails.boot!

test/mock_app/config/database.yml

+16
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,16 @@
1+
# SQLite version 3.x
2+
# gem install sqlite3-ruby (not necessary on OS X Leopard)
3+
development:
4+
adapter: sqlite3
5+
database: db/development.sqlite3
6+
pool: 5
7+
timeout: 5000
8+
9+
# Warning: The database defined as "test" will be erased and
10+
# re-generated from your development database when you run "rake".
11+
# Do not set this db to the same as development or production.
12+
test:
13+
adapter: sqlite3
14+
database: db/test.sqlite3
15+
pool: 5
16+
timeout: 5000

test/mock_app/config/environment.rb

+41
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,41 @@
1+
# Be sure to restart your server when you modify this file
2+
3+
# Specifies gem version of Rails to use when vendor/rails is not present
4+
RAILS_GEM_VERSION = '2.3.3' unless defined? RAILS_GEM_VERSION
5+
6+
# Bootstrap the Rails environment, frameworks, and default configuration
7+
require File.join(File.dirname(__FILE__), 'boot')
8+
9+
Rails::Initializer.run do |config|
10+
# Settings in config/environments/* take precedence over those specified here.
11+
# Application configuration should go into files in config/initializers
12+
# -- all .rb files in that directory are automatically loaded.
13+
14+
# Add additional load paths for your own custom dirs
15+
# config.load_paths += %W( #{RAILS_ROOT}/extras )
16+
17+
# Specify gems that this application depends on and have them installed with rake gems:install
18+
# config.gem "bj"
19+
# config.gem "hpricot", :version => '0.6', :source => "http://code.whytheluckystiff.net"
20+
# config.gem "sqlite3-ruby", :lib => "sqlite3"
21+
# config.gem "aws-s3", :lib => "aws/s3"
22+
23+
# Only load the plugins named here, in the order given (default is alphabetical).
24+
# :all can be used as a placeholder for all plugins not explicitly named
25+
# config.plugins = [ :exception_notification, :ssl_requirement, :all ]
26+
27+
# Skip frameworks you're not going to use. To use Rails without a database,
28+
# you must remove the Active Record framework.
29+
# config.frameworks -= [ :active_record, :active_resource, :action_mailer ]
30+
31+
# Activate observers that should always be running
32+
# config.active_record.observers = :cacher, :garbage_collector, :forum_observer
33+
34+
# Set Time.zone default to the specified zone and make Active Record auto-convert to this zone.
35+
# Run "rake -D time" for a list of tasks for finding time zone names.
36+
config.time_zone = 'UTC'
37+
38+
# The default locale is :en and all translations from config/locales/*.rb,yml are auto loaded.
39+
# config.i18n.load_path += Dir[Rails.root.join('my', 'locales', '*.{rb,yml}')]
40+
# config.i18n.default_locale = :de
41+
end
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,17 @@
1+
# Settings specified here will take precedence over those in config/environment.rb
2+
3+
# In the development environment your application's code is reloaded on
4+
# every request. This slows down response time but is perfect for development
5+
# since you don't have to restart the webserver when you make code changes.
6+
config.cache_classes = false
7+
8+
# Log error messages when you accidentally call methods on nil.
9+
config.whiny_nils = true
10+
11+
# Show full error reports and disable caching
12+
config.action_controller.consider_all_requests_local = true
13+
config.action_view.debug_rjs = true
14+
config.action_controller.perform_caching = false
15+
16+
# Don't care if the mailer can't send
17+
config.action_mailer.raise_delivery_errors = false
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,28 @@
1+
# Settings specified here will take precedence over those in config/environment.rb
2+
3+
# The production environment is meant for finished, "live" apps.
4+
# Code is not reloaded between requests
5+
config.cache_classes = true
6+
7+
# Full error reports are disabled and caching is turned on
8+
config.action_controller.consider_all_requests_local = false
9+
config.action_controller.perform_caching = true
10+
config.action_view.cache_template_loading = true
11+
12+
# See everything in the log (default is :info)
13+
# config.log_level = :debug
14+
15+
# Use a different logger for distributed setups
16+
# config.logger = SyslogLogger.new
17+
18+
# Use a different cache store in production
19+
# config.cache_store = :mem_cache_store
20+
21+
# Enable serving of images, stylesheets, and javascripts from an asset server
22+
# config.action_controller.asset_host = "http://assets.example.com"
23+
24+
# Disable delivery errors, bad email addresses will be ignored
25+
# config.action_mailer.raise_delivery_errors = false
26+
27+
# Enable threaded mode
28+
# config.threadsafe!
+28
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,28 @@
1+
# Settings specified here will take precedence over those in config/environment.rb
2+
3+
# The test environment is used exclusively to run your application's
4+
# test suite. You never need to work with it otherwise. Remember that
5+
# your test database is "scratch space" for the test suite and is wiped
6+
# and recreated between test runs. Don't rely on the data there!
7+
config.cache_classes = true
8+
9+
# Log error messages when you accidentally call methods on nil.
10+
config.whiny_nils = true
11+
12+
# Show full error reports and disable caching
13+
config.action_controller.consider_all_requests_local = true
14+
config.action_controller.perform_caching = false
15+
config.action_view.cache_template_loading = true
16+
17+
# Disable request forgery protection in test environment
18+
config.action_controller.allow_forgery_protection = false
19+
20+
# Tell Action Mailer not to deliver emails to the real world.
21+
# The :test delivery method accumulates sent emails in the
22+
# ActionMailer::Base.deliveries array.
23+
config.action_mailer.delivery_method = :test
24+
25+
# Use SQL instead of Active Record's schema dumper when creating the test database.
26+
# This is necessary if your schema can't be completely dumped by the schema dumper,
27+
# like if you have constraints or database-specific column types
28+
# config.active_record.schema_format = :sql
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,7 @@
1+
# Be sure to restart your server when you modify this file.
2+
3+
# You can add backtrace silencers for libraries that you're using but don't wish to see in your backtraces.
4+
# Rails.backtrace_cleaner.add_silencer { |line| line =~ /my_noisy_library/ }
5+
6+
# You can also remove all the silencers if you're trying do debug a problem that might steem from framework code.
7+
# Rails.backtrace_cleaner.remove_silencers!
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,10 @@
1+
# Be sure to restart your server when you modify this file.
2+
3+
# Add new inflection rules using the following format
4+
# (all these examples are active by default):
5+
# ActiveSupport::Inflector.inflections do |inflect|
6+
# inflect.plural /^(ox)$/i, '\1en'
7+
# inflect.singular /^(ox)en/i, '\1'
8+
# inflect.irregular 'person', 'people'
9+
# inflect.uncountable %w( fish sheep )
10+
# end
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,5 @@
1+
# Be sure to restart your server when you modify this file.
2+
3+
# Add new mime types for use in respond_to blocks:
4+
# Mime::Type.register "text/richtext", :rtf
5+
# Mime::Type.register_alias "text/html", :iphone
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,19 @@
1+
# Be sure to restart your server when you modify this file.
2+
3+
# These settings change the behavior of Rails 2 apps and will be defaults
4+
# for Rails 3. You can remove this initializer when Rails 3 is released.
5+
6+
if defined?(ActiveRecord)
7+
# Include Active Record class name as root for JSON serialized output.
8+
ActiveRecord::Base.include_root_in_json = true
9+
10+
# Store the full class name (including module namespace) in STI type column.
11+
ActiveRecord::Base.store_full_sti_class = true
12+
end
13+
14+
# Use ISO 8601 format for JSON serialized times and dates.
15+
ActiveSupport.use_standard_json_time_format = true
16+
17+
# Don't escape HTML entities in JSON, leave that for the #json_escape helper.
18+
# if you're including raw json in an HTML page.
19+
ActiveSupport.escape_html_entities_in_json = false
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,15 @@
1+
# Be sure to restart your server when you modify this file.
2+
3+
# Your secret key for verifying cookie session data integrity.
4+
# If you change this key, all old sessions will become invalid!
5+
# Make sure the secret is at least 30 characters and all random,
6+
# no regular words or you'll be exposed to dictionary attacks.
7+
ActionController::Base.session = {
8+
:key => '_mock_app_session',
9+
:secret => 'ed0122432f6132fc5c99c928dc133a0863df7f24b0f2d53ce9dc2e9885a9b1f944d8ac6390333e2f1a72f902554bdaca75024fb23eb11a4548b0af4731439be2'
10+
}
11+
12+
# Use the database for sessions instead of the cookie-based default,
13+
# which shouldn't be used to store highly confidential information
14+
# (create the session table with "rake db:sessions:create")
15+
# ActionController::Base.session_store = :active_record_store

test/mock_app/config/locales/en.yml

+5
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,5 @@
1+
# Sample localization file for English. Add more files in this directory for other locales.
2+
# See http://github.com/svenfuchs/rails-i18n/tree/master/rails%2Flocale for starting points.
3+
4+
en:
5+
hello: "Hello world"

0 commit comments

Comments
 (0)