plugin_test_helper 0.1.2 → 0.1.3
Sign up to get free protection for your applications and to get access to all the features.
- data/CHANGELOG +10 -0
- data/MIT-LICENSE +2 -2
- data/README +3 -7
- data/Rakefile +5 -5
- data/generators/plugin_test_console/plugin_test_console_generator.rb +2 -2
- data/generators/plugin_test_controller/plugin_test_controller_generator.rb +7 -12
- data/generators/plugin_test_controller/templates/controller.rb +1 -4
- data/generators/plugin_test_controller/templates/{view.rhtml → view.html.erb} +0 -0
- data/generators/plugin_test_helper/templates/test_helper.rb +1 -1
- data/generators/plugin_test_migration/templates/migration.rb +1 -1
- data/generators/plugin_test_model/templates/fixtures.yml +11 -3
- data/generators/plugin_test_model/templates/migration.rb +4 -1
- data/generators/plugin_test_structure/templates/app_root/config/boot.rb +101 -34
- data/generators/plugin_test_structure/templates/app_root/config/database.yml +1 -2
- data/generators/plugin_test_structure/templates/app_root/config/environment.rb +0 -3
- data/generators/plugin_test_structure/templates/app_root/config/routes.rb +2 -0
- data/lib/plugin_test_helper.rb +5 -21
- data/lib/plugin_test_helper/console_with_fixtures.rb +2 -2
- data/lib/plugin_test_helper/extensions/initializer.rb +36 -4
- data/lib/plugin_test_helper/extensions/routing.rb +19 -2
- data/lib/plugin_test_helper/generator.rb +0 -1
- data/lib/plugin_test_helper/plugin_locator.rb +10 -0
- data/test/app_roots/with_custom_config/config/environment.rb +0 -10
- data/test/app_roots/with_custom_config/vendor/plugins/acts_as_foo/lib/acts_as_foo.rb +1 -3
- data/test/app_roots/with_fixtures/db/migrate/001_create_people.rb +1 -1
- data/test/app_roots/with_migration/db/migrate/001_create_people.rb +1 -1
- data/test/fixtures/people.yml +0 -1
- data/test/functional/plugin_test_helper_test.rb +17 -32
- data/test/test_helper.rb +27 -0
- data/test/unit/plugin_locator_test.rb +19 -0
- metadata +112 -100
data/CHANGELOG
CHANGED
@@ -1,5 +1,15 @@
|
|
1
1
|
*SVN*
|
2
2
|
|
3
|
+
*0.1.3* (May 5th, 2008)
|
4
|
+
|
5
|
+
* Update documentation
|
6
|
+
|
7
|
+
* Update to be compatible with Rails 2.1
|
8
|
+
|
9
|
+
* Add PluginAWeek::PluginTestHelper::PluginLocator so that you don't have to explicitly define config.plugins if the test app has anything under vendor/plugins
|
10
|
+
|
11
|
+
* Add default routes
|
12
|
+
|
3
13
|
*0.1.2* (October 15th, 2007)
|
4
14
|
|
5
15
|
* Don't create vendor/plugins in the plugin_test_structure generator
|
data/MIT-LICENSE
CHANGED
@@ -1,4 +1,4 @@
|
|
1
|
-
Copyright (c) 2006-
|
1
|
+
Copyright (c) 2006-2008 Aaron Pfeifer
|
2
2
|
|
3
3
|
Permission is hereby granted, free of charge, to any person obtaining
|
4
4
|
a copy of this software and associated documentation files (the
|
@@ -17,4 +17,4 @@ MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
|
|
17
17
|
NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
|
18
18
|
LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
|
19
19
|
OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
|
20
|
-
WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
|
20
|
+
WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
|
data/README
CHANGED
@@ -5,10 +5,6 @@ environment that simulates its usage in a real application.
|
|
5
5
|
|
6
6
|
== Resources
|
7
7
|
|
8
|
-
Announcement
|
9
|
-
|
10
|
-
* http://www.pluginaweek.org
|
11
|
-
|
12
8
|
Wiki
|
13
9
|
|
14
10
|
* http://wiki.pluginaweek.org/Plugin_test_helper
|
@@ -19,11 +15,11 @@ API
|
|
19
15
|
|
20
16
|
Development
|
21
17
|
|
22
|
-
* http://dev.pluginaweek.org/browser/trunk/
|
18
|
+
* http://dev.pluginaweek.org/browser/trunk/plugin_test_helper
|
23
19
|
|
24
20
|
Source
|
25
21
|
|
26
|
-
* http://svn.pluginaweek.org/trunk/
|
22
|
+
* http://svn.pluginaweek.org/trunk/plugin_test_helper
|
27
23
|
|
28
24
|
== Description
|
29
25
|
|
@@ -191,7 +187,7 @@ Example:
|
|
191
187
|
|
192
188
|
== Dependencies
|
193
189
|
|
194
|
-
|
190
|
+
None.
|
195
191
|
|
196
192
|
== References
|
197
193
|
|
data/Rakefile
CHANGED
@@ -4,7 +4,7 @@ require 'rake/gempackagetask'
|
|
4
4
|
require 'rake/contrib/sshpublisher'
|
5
5
|
|
6
6
|
PKG_NAME = 'plugin_test_helper'
|
7
|
-
PKG_VERSION = '0.1.
|
7
|
+
PKG_VERSION = '0.1.3'
|
8
8
|
PKG_FILE_NAME = "#{PKG_NAME}-#{PKG_VERSION}"
|
9
9
|
RUBY_FORGE_PROJECT = 'pluginaweek'
|
10
10
|
|
@@ -39,8 +39,8 @@ spec = Gem::Specification.new do |s|
|
|
39
39
|
s.has_rdoc = true
|
40
40
|
s.test_files = Dir['test/**/*_test.rb']
|
41
41
|
|
42
|
-
s.author = 'Aaron Pfeifer
|
43
|
-
s.email = '
|
42
|
+
s.author = 'Aaron Pfeifer'
|
43
|
+
s.email = 'aaron@pluginaweek.org'
|
44
44
|
s.homepage = 'http://www.pluginaweek.org'
|
45
45
|
end
|
46
46
|
|
@@ -52,12 +52,12 @@ end
|
|
52
52
|
|
53
53
|
desc 'Publish the beta gem'
|
54
54
|
task :pgem => [:package] do
|
55
|
-
Rake::SshFilePublisher.new('
|
55
|
+
Rake::SshFilePublisher.new('aaron@pluginaweek.org', '/home/aaron/gems.pluginaweek.org/public/gems', 'pkg', "#{PKG_FILE_NAME}.gem").upload
|
56
56
|
end
|
57
57
|
|
58
58
|
desc 'Publish the API documentation'
|
59
59
|
task :pdoc => [:rdoc] do
|
60
|
-
Rake::SshDirPublisher.new('
|
60
|
+
Rake::SshDirPublisher.new('aaron@pluginaweek.org', "/home/aaron/api.pluginaweek.org/public/#{PKG_NAME}", 'rdoc').upload
|
61
61
|
end
|
62
62
|
|
63
63
|
desc 'Publish the API docs and gem'
|
@@ -4,10 +4,10 @@ class PluginTestConsoleGenerator < Rails::Generator::NamedBase
|
|
4
4
|
record do |m|
|
5
5
|
plugin_root = "vendor/plugins/#{name}"
|
6
6
|
|
7
|
-
# Script directory
|
7
|
+
# Script directory
|
8
8
|
m.directory File.join(plugin_root, 'script')
|
9
9
|
|
10
|
-
# Console class
|
10
|
+
# Console class
|
11
11
|
m.file 'console', File.join(plugin_root, 'script/console')
|
12
12
|
end
|
13
13
|
end
|
@@ -2,25 +2,20 @@
|
|
2
2
|
class PluginTestControllerGenerator < PluginAWeek::PluginTestHelper::Generator
|
3
3
|
def manifest #:nodoc:
|
4
4
|
record do |m|
|
5
|
-
# Check for class naming collisions
|
5
|
+
# Check for class naming collisions
|
6
6
|
m.class_collisions class_path, "#{class_name}Controller", "#{class_name}Helper"
|
7
7
|
|
8
|
-
# Controller and views directories
|
8
|
+
# Controller and views directories
|
9
9
|
m.directory File.join(plugin_app_root, 'app/controllers', class_path)
|
10
10
|
m.directory File.join(plugin_app_root, 'app/views', class_path, file_name)
|
11
11
|
|
12
|
-
# Controller class
|
13
|
-
m.template 'controller.rb',
|
14
|
-
File.join(plugin_app_root,
|
15
|
-
'app/controllers',
|
16
|
-
class_path,
|
17
|
-
"#{file_name}_controller.rb")
|
12
|
+
# Controller class
|
13
|
+
m.template 'controller.rb', File.join(plugin_app_root, 'app/controllers', class_path, "#{file_name}_controller.rb")
|
18
14
|
|
19
|
-
# View template for each action
|
15
|
+
# View template for each action
|
20
16
|
actions.each do |action|
|
21
|
-
path = File.join(plugin_app_root, 'app/views', class_path, file_name, "#{action}.
|
22
|
-
m.template 'view.
|
23
|
-
:assigns => { :action => action, :path => path }
|
17
|
+
path = File.join(plugin_app_root, 'app/views', class_path, file_name, "#{action}.html.erb")
|
18
|
+
m.template 'view.html.erb', path, :assigns => {:action => action, :path => path}
|
24
19
|
end
|
25
20
|
end
|
26
21
|
end
|
File without changes
|
@@ -1,11 +1,19 @@
|
|
1
1
|
# Read about fixtures at http://ar.rubyonrails.org/classes/Fixtures.html
|
2
|
+
|
3
|
+
<% unless attributes.empty? -%>
|
2
4
|
one:
|
3
|
-
id: 1
|
4
5
|
<% for attribute in attributes -%>
|
5
6
|
<%= attribute.name %>: <%= attribute.default %>
|
6
7
|
<% end -%>
|
8
|
+
|
7
9
|
two:
|
8
|
-
id: 2
|
9
10
|
<% for attribute in attributes -%>
|
10
11
|
<%= attribute.name %>: <%= attribute.default %>
|
11
|
-
<% end -%>
|
12
|
+
<% end -%>
|
13
|
+
<% else -%>
|
14
|
+
# one:
|
15
|
+
# column: value
|
16
|
+
#
|
17
|
+
# two:
|
18
|
+
# column: value
|
19
|
+
<% end -%>
|
@@ -2,7 +2,10 @@ class <%= migration_name %> < ActiveRecord::Migration
|
|
2
2
|
def self.up
|
3
3
|
create_table :<%= table_name %> do |t|
|
4
4
|
<% for attribute in attributes -%>
|
5
|
-
t
|
5
|
+
t.<%= attribute.type %> :<%= attribute.name %>
|
6
|
+
<% end -%>
|
7
|
+
<% unless options[:skip_timestamps] %>
|
8
|
+
t.timestamps
|
6
9
|
<% end -%>
|
7
10
|
end
|
8
11
|
end
|
@@ -1,47 +1,114 @@
|
|
1
|
-
|
2
|
-
|
1
|
+
# Allow customization of the rails framework path
|
2
|
+
RAILS_FRAMEWORK_ROOT = (ENV['RAILS_FRAMEWORK_ROOT'] || "#{RAILS_ROOT}/vendor/rails") unless defined?(RAILS_FRAMEWORK_ROOT)
|
3
3
|
|
4
|
-
|
5
|
-
|
6
|
-
root_path = Pathname.new(root_path).cleanpath(true).to_s
|
7
|
-
end
|
4
|
+
# Don't change this file!
|
5
|
+
# Configure your app in config/environment.rb and config/environments/*.rb
|
8
6
|
|
9
|
-
|
10
|
-
end
|
7
|
+
RAILS_ROOT = "#{File.dirname(__FILE__)}/.." unless defined?(RAILS_ROOT)
|
11
8
|
|
12
|
-
|
13
|
-
|
14
|
-
|
9
|
+
module Rails
|
10
|
+
class << self
|
11
|
+
def boot!
|
12
|
+
unless booted?
|
13
|
+
preinitialize
|
14
|
+
pick_boot.run
|
15
|
+
end
|
16
|
+
end
|
15
17
|
|
16
|
-
|
17
|
-
|
18
|
-
|
19
|
-
else
|
20
|
-
require 'rubygems'
|
18
|
+
def booted?
|
19
|
+
defined? Rails::Initializer
|
20
|
+
end
|
21
21
|
|
22
|
-
|
23
|
-
|
24
|
-
|
22
|
+
def pick_boot
|
23
|
+
(vendor_rails? ? VendorBoot : GemBoot).new
|
24
|
+
end
|
25
25
|
|
26
|
-
|
27
|
-
|
28
|
-
|
26
|
+
def vendor_rails?
|
27
|
+
File.exist?(RAILS_FRAMEWORK_ROOT)
|
28
|
+
end
|
29
|
+
|
30
|
+
def preinitialize
|
31
|
+
load(preinitializer_path) if File.exist?(preinitializer_path)
|
32
|
+
end
|
33
|
+
|
34
|
+
def preinitializer_path
|
35
|
+
"#{RAILS_ROOT}/config/preinitializer.rb"
|
36
|
+
end
|
37
|
+
end
|
38
|
+
|
39
|
+
class Boot
|
40
|
+
def run
|
41
|
+
load_initializer
|
42
|
+
Rails::Initializer.run(:set_load_path)
|
43
|
+
end
|
44
|
+
end
|
45
|
+
|
46
|
+
class VendorBoot < Boot
|
47
|
+
def load_initializer
|
48
|
+
require "#{RAILS_FRAMEWORK_ROOT}/railties/lib/initializer"
|
49
|
+
Rails::Initializer.run(:install_gem_spec_stubs)
|
50
|
+
end
|
51
|
+
end
|
29
52
|
|
30
|
-
|
31
|
-
|
32
|
-
|
53
|
+
class GemBoot < Boot
|
54
|
+
def load_initializer
|
55
|
+
self.class.load_rubygems
|
56
|
+
load_rails_gem
|
57
|
+
require 'initializer'
|
58
|
+
end
|
59
|
+
|
60
|
+
def load_rails_gem
|
61
|
+
if version = self.class.gem_version
|
62
|
+
gem 'rails', version
|
33
63
|
else
|
34
|
-
|
35
|
-
|
36
|
-
|
37
|
-
|
64
|
+
gem 'rails'
|
65
|
+
end
|
66
|
+
rescue Gem::LoadError => load_error
|
67
|
+
$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.)
|
68
|
+
exit 1
|
69
|
+
end
|
70
|
+
|
71
|
+
class << self
|
72
|
+
def rubygems_version
|
73
|
+
Gem::RubyGemsVersion if defined? Gem::RubyGemsVersion
|
74
|
+
end
|
75
|
+
|
76
|
+
def gem_version
|
77
|
+
if defined? RAILS_GEM_VERSION
|
78
|
+
RAILS_GEM_VERSION
|
79
|
+
elsif ENV.include?('RAILS_GEM_VERSION')
|
80
|
+
ENV['RAILS_GEM_VERSION']
|
81
|
+
else
|
82
|
+
parse_gem_version(read_environment_rb)
|
83
|
+
end
|
84
|
+
end
|
85
|
+
|
86
|
+
def load_rubygems
|
87
|
+
require 'rubygems'
|
88
|
+
|
89
|
+
unless rubygems_version >= '0.9.4'
|
90
|
+
$stderr.puts %(Rails requires RubyGems >= 0.9.4 (you have #{rubygems_version}). Please `gem update --system` and try again.)
|
91
|
+
exit 1
|
92
|
+
end
|
93
|
+
|
94
|
+
rescue LoadError
|
95
|
+
$stderr.puts %(Rails requires RubyGems >= 0.9.4. Please install RubyGems and try again: http://rubygems.rubyforge.org)
|
38
96
|
exit 1
|
39
97
|
end
|
40
|
-
|
41
|
-
|
42
|
-
|
98
|
+
|
99
|
+
def parse_gem_version(text)
|
100
|
+
$1 if text =~ /^[^#]*RAILS_GEM_VERSION\s*=\s*["']([!~<>=]*\s*[\d.]+)["']/
|
101
|
+
end
|
102
|
+
|
103
|
+
private
|
104
|
+
def read_environment_rb
|
105
|
+
environment_rb = "#{RAILS_ROOT}/config/environment.rb"
|
106
|
+
environment_rb = "#{HELPER_RAILS_ROOT}/config/environment.rb" unless File.exists?(environment_rb)
|
107
|
+
File.read(environment_rb)
|
108
|
+
end
|
43
109
|
end
|
44
110
|
end
|
45
|
-
|
46
|
-
Rails::Initializer.run(:set_load_path)
|
47
111
|
end
|
112
|
+
|
113
|
+
# All that for this:
|
114
|
+
Rails.boot!
|
data/lib/plugin_test_helper.rb
CHANGED
@@ -1,42 +1,26 @@
|
|
1
1
|
# Make sure our default RAILS_ROOT from the helper plugin is in the load path
|
2
|
-
unless defined?(HELPER_RAILS_ROOT)
|
3
|
-
HELPER_RAILS_ROOT = "#{File.dirname(__FILE__)}/../generators/plugin_test_structure/templates/app_root"
|
4
|
-
end
|
2
|
+
HELPER_RAILS_ROOT = "#{File.dirname(__FILE__)}/../generators/plugin_test_structure/templates/app_root" unless defined?(HELPER_RAILS_ROOT)
|
5
3
|
$:.unshift(HELPER_RAILS_ROOT)
|
6
4
|
|
7
5
|
# Determine the plugin's root test directory and add it to the load path
|
8
|
-
unless defined?(RAILS_ROOT)
|
9
|
-
root_path = File.join(File.expand_path('.'), 'test/app_root')
|
10
|
-
|
11
|
-
unless RUBY_PLATFORM =~ /(:?mswin|mingw)/
|
12
|
-
require 'pathname'
|
13
|
-
root_path = Pathname.new(root_path).cleanpath(true).to_s
|
14
|
-
end
|
15
|
-
|
16
|
-
RAILS_ROOT = root_path
|
17
|
-
end
|
6
|
+
RAILS_ROOT = (File.directory?('./test/app_root') ? './test/app_root' : HELPER_RAILS_ROOT) unless defined?(RAILS_ROOT)
|
18
7
|
$:.unshift(RAILS_ROOT)
|
19
8
|
|
20
9
|
# Set the default environment to sqlite3's in_memory database
|
21
10
|
ENV['RAILS_ENV'] ||= 'in_memory'
|
22
11
|
|
23
|
-
#
|
12
|
+
# First boost the Rails framework
|
24
13
|
require 'config/boot'
|
25
|
-
require 'active_support'
|
26
|
-
require 'action_controller'
|
27
14
|
|
28
|
-
#
|
29
|
-
# located
|
30
|
-
require 'plugin_test_helper/generator'
|
15
|
+
# Extend it so that we can hook into the initialization process
|
31
16
|
require 'plugin_test_helper/extensions/initializer'
|
32
|
-
require 'plugin_test_helper/extensions/routing'
|
33
17
|
|
34
18
|
# Load the Rails environment and testing framework
|
35
19
|
require_or_load 'config/environment'
|
36
20
|
require_or_load 'test_help'
|
37
21
|
|
38
22
|
# Undo changes to RAILS_ENV
|
39
|
-
silence_warnings {
|
23
|
+
silence_warnings {RAILS_ENV = ENV['RAILS_ENV']}
|
40
24
|
|
41
25
|
# Set default fixture loading properties
|
42
26
|
class Test::Unit::TestCase #:nodoc:
|
@@ -1,3 +1,3 @@
|
|
1
|
-
(ENV['FIXTURES'] ? ENV['FIXTURES'].split(/,/) : Dir.glob(File.join(RAILS_ROOT, '
|
2
|
-
Fixtures.create_fixtures(File.join(RAILS_ROOT, '
|
1
|
+
(ENV['FIXTURES'] ? ENV['FIXTURES'].split(/,/) : Dir.glob(File.join(RAILS_ROOT, '../fixtures/*.{yml,csv}'))).each do |fixture_file|
|
2
|
+
Fixtures.create_fixtures(File.join(RAILS_ROOT, '../fixtures'), File.basename(fixture_file, '.*'))
|
3
3
|
end
|
@@ -1,6 +1,27 @@
|
|
1
|
+
require 'active_support'
|
2
|
+
require 'plugin_test_helper/plugin_locator'
|
3
|
+
|
1
4
|
module PluginAWeek #:nodoc:
|
2
5
|
module PluginTestHelper
|
3
6
|
module Extensions #:nodoc:
|
7
|
+
# Adds in hooks for extending other parts of the Rails framework *after*
|
8
|
+
# Rails has loaded those frameworks
|
9
|
+
module Initializer
|
10
|
+
def self.included(base)
|
11
|
+
base.class_eval do
|
12
|
+
alias_method_chain :require_frameworks, :test_helper
|
13
|
+
end
|
14
|
+
end
|
15
|
+
|
16
|
+
# Load the needed frameworks and then our extensions to them
|
17
|
+
def require_frameworks_with_test_helper
|
18
|
+
require_frameworks_without_test_helper
|
19
|
+
|
20
|
+
require 'plugin_test_helper/generator'
|
21
|
+
require 'plugin_test_helper/extensions/routing'
|
22
|
+
end
|
23
|
+
end
|
24
|
+
|
4
25
|
# Overrides some of the default values in the Rails configuration so that
|
5
26
|
# files can be reused from this test helper or overridden by the plugin
|
6
27
|
# using the helper
|
@@ -11,6 +32,7 @@ module PluginAWeek #:nodoc:
|
|
11
32
|
alias_method_chain :default_load_paths, :test_helper
|
12
33
|
alias_method_chain :default_database_configuration_file, :test_helper
|
13
34
|
alias_method_chain :default_controller_paths, :test_helper
|
35
|
+
alias_method_chain :default_plugin_locators, :test_helper
|
14
36
|
alias_method_chain :default_plugin_paths, :test_helper
|
15
37
|
end
|
16
38
|
end
|
@@ -31,31 +53,41 @@ module PluginAWeek #:nodoc:
|
|
31
53
|
config
|
32
54
|
lib
|
33
55
|
vendor
|
34
|
-
).map {
|
56
|
+
).map {|dir| "#{HELPER_RAILS_ROOT}/#{dir}"}
|
35
57
|
end
|
36
58
|
|
37
59
|
# Load the database configuration from the plugin or the helper
|
38
60
|
def default_database_configuration_file_with_test_helper
|
39
61
|
database_file = default_database_configuration_file_without_test_helper
|
40
|
-
File.exists?(database_file) ? database_file : File.join(HELPER_RAILS_ROOT, 'config
|
62
|
+
File.exists?(database_file) ? database_file : File.join(HELPER_RAILS_ROOT, 'config/database.yml')
|
41
63
|
end
|
42
64
|
|
43
65
|
# Add the helper's controllers path
|
44
66
|
def default_controller_paths_with_test_helper
|
45
67
|
paths = default_controller_paths_without_test_helper
|
46
|
-
paths << File.join(HELPER_RAILS_ROOT, 'app
|
68
|
+
paths << File.join(HELPER_RAILS_ROOT, 'app/controllers')
|
69
|
+
end
|
70
|
+
|
71
|
+
# Adds a custom plugin locator for loading the plugin being tested
|
72
|
+
def default_plugin_locators_with_test_helper
|
73
|
+
locators = default_plugin_locators_without_test_helper
|
74
|
+
locators.unshift(PluginAWeek::PluginTestHelper::PluginLocator)
|
47
75
|
end
|
48
76
|
|
49
77
|
# Add the helper's vendor/plugins path
|
50
78
|
def default_plugin_paths_with_test_helper
|
51
79
|
paths = default_plugin_paths_without_test_helper
|
52
|
-
paths <<
|
80
|
+
paths << File.join(HELPER_RAILS_ROOT, '/vendor/plugins')
|
53
81
|
end
|
54
82
|
end
|
55
83
|
end
|
56
84
|
end
|
57
85
|
end
|
58
86
|
|
87
|
+
Rails::Initializer.class_eval do
|
88
|
+
include PluginAWeek::PluginTestHelper::Extensions::Initializer
|
89
|
+
end
|
90
|
+
|
59
91
|
Rails::Configuration.class_eval do
|
60
92
|
include PluginAWeek::PluginTestHelper::Extensions::Configuration
|
61
93
|
end
|
@@ -7,17 +7,34 @@ module PluginAWeek #:nodoc:
|
|
7
7
|
module Routing
|
8
8
|
def self.included(base)
|
9
9
|
base.class_eval do
|
10
|
-
|
10
|
+
alias_method_chain :reload, :test_helper
|
11
|
+
alias_method_chain :load_routes!, :test_helper
|
11
12
|
end
|
12
13
|
end
|
13
14
|
|
15
|
+
# Load routes from either the helper or the plugin
|
16
|
+
def reload_with_test_helper
|
17
|
+
if @routes_last_modified && defined?(RAILS_ROOT)
|
18
|
+
routes_path = File.join("#{RAILS_ROOT}/config/routes.rb")
|
19
|
+
routes_path = File.join("#{HELPER_RAILS_ROOT}/config/routes.rb") unless File.exists?(routes_path)
|
20
|
+
|
21
|
+
mtime = File.stat(routes_path).mtime
|
22
|
+
# if it hasn't been changed, then just return
|
23
|
+
return if mtime == @routes_last_modified
|
24
|
+
# if it has changed then record the new time and fall to the load! below
|
25
|
+
@routes_last_modified = mtime
|
26
|
+
end
|
27
|
+
load!
|
28
|
+
end
|
29
|
+
|
14
30
|
# Load routes from either the helper or the plugin
|
15
31
|
def load_routes_with_test_helper!
|
16
32
|
if defined?(RAILS_ROOT) && defined?(::ActionController::Routing::Routes) && self == ::ActionController::Routing::Routes
|
17
33
|
routes_path = File.join("#{RAILS_ROOT}/config/routes.rb")
|
18
|
-
routes_path = File.join("#{HELPER_RAILS_ROOT}/config/routes.rb")
|
34
|
+
routes_path = File.join("#{HELPER_RAILS_ROOT}/config/routes.rb") unless File.exists?(routes_path)
|
19
35
|
|
20
36
|
load File.join(routes_path)
|
37
|
+
@routes_last_modified = File.stat(routes_path).mtime
|
21
38
|
else
|
22
39
|
add_route ":controller/:action/:id"
|
23
40
|
end
|
@@ -0,0 +1,10 @@
|
|
1
|
+
module PluginAWeek #:nodoc:
|
2
|
+
module PluginTestHelper
|
3
|
+
# Assists in the initialization process by locating the plugin being tested
|
4
|
+
class PluginLocator < Rails::Plugin::Locator
|
5
|
+
def plugins
|
6
|
+
[Rails::Plugin.new(File.expand_path('.'))]
|
7
|
+
end
|
8
|
+
end
|
9
|
+
end
|
10
|
+
end
|
@@ -1,16 +1,6 @@
|
|
1
1
|
require 'config/boot'
|
2
2
|
|
3
3
|
Rails::Initializer.run do |config|
|
4
|
-
config.log_level = :debug
|
5
4
|
config.cache_classes = false
|
6
5
|
config.whiny_nils = true
|
7
|
-
config.breakpoint_server = true
|
8
|
-
config.load_paths << "#{RAILS_ROOT}/../../lib"
|
9
|
-
config.plugin_paths << '..'
|
10
|
-
config.plugins = [
|
11
|
-
File.basename(File.expand_path('.')),
|
12
|
-
'acts_as_foo'
|
13
|
-
]
|
14
6
|
end
|
15
|
-
|
16
|
-
Dependencies.log_activity = true
|
data/test/fixtures/people.yml
CHANGED
@@ -1,4 +1,4 @@
|
|
1
|
-
require File.dirname(__FILE__) + '/../test_helper'
|
1
|
+
require File.expand_path(File.dirname(__FILE__) + '/../test_helper')
|
2
2
|
require 'fileutils'
|
3
3
|
|
4
4
|
class PluginTestHelperTest < Test::Unit::TestCase
|
@@ -12,84 +12,69 @@ class PluginTestHelperTest < Test::Unit::TestCase
|
|
12
12
|
end
|
13
13
|
|
14
14
|
def test_should_load_with_empty_app_root
|
15
|
-
|
15
|
+
setup_app('empty')
|
16
16
|
end
|
17
17
|
|
18
18
|
def test_should_load_with_custom_application_controller
|
19
|
-
|
19
|
+
setup_app('with_custom_application_controller')
|
20
20
|
|
21
21
|
assert ApplicationController.respond_to?(:custom?)
|
22
22
|
end
|
23
23
|
|
24
24
|
def test_should_load_with_custom_config
|
25
|
-
|
25
|
+
setup_app('with_custom_config')
|
26
26
|
|
27
|
-
assert_not_nil PluginAWeek::
|
27
|
+
assert_not_nil PluginAWeek::ActsAsFoo
|
28
28
|
end
|
29
29
|
|
30
30
|
def test_should_load_with_controller
|
31
|
-
|
31
|
+
setup_app('with_controller')
|
32
32
|
|
33
33
|
assert_not_nil PeopleController
|
34
34
|
end
|
35
35
|
|
36
36
|
def test_should_load_with_model
|
37
|
-
|
37
|
+
setup_app('with_model')
|
38
38
|
|
39
39
|
assert_not_nil Person
|
40
40
|
end
|
41
41
|
|
42
42
|
def test_should_load_with_helper
|
43
|
-
|
43
|
+
setup_app('with_helper')
|
44
44
|
|
45
45
|
assert_not_nil PeopleHelper
|
46
46
|
end
|
47
47
|
|
48
48
|
def test_should_load_with_migration
|
49
|
-
|
49
|
+
setup_app('with_migration')
|
50
50
|
|
51
51
|
ActiveRecord::Migrator.migrate("#{RAILS_ROOT}/db/migrate")
|
52
52
|
assert Person.table_exists?
|
53
53
|
end
|
54
54
|
|
55
55
|
def test_should_load_with_fixtures
|
56
|
-
|
56
|
+
setup_app('with_fixtures')
|
57
57
|
|
58
58
|
ActiveRecord::Migrator.migrate("#{RAILS_ROOT}/db/migrate")
|
59
|
-
|
60
|
-
|
59
|
+
|
60
|
+
fixtures_path = "#{File.dirname(__FILE__)}/../fixtures"
|
61
|
+
Dir.glob("#{fixtures_path}/*.yml").each do |fixture_file|
|
62
|
+
Fixtures.create_fixtures(fixtures_path, File.basename(fixture_file, '.*'))
|
61
63
|
end
|
62
64
|
|
63
65
|
assert Person.count > 0
|
64
66
|
end
|
65
67
|
|
66
68
|
def test_should_load_with_routes
|
67
|
-
|
69
|
+
setup_app('with_routes')
|
68
70
|
|
69
71
|
assert ActionController::Routing::Routes.routes.length == 0
|
70
72
|
end
|
71
73
|
|
72
74
|
def teardown
|
73
|
-
|
74
|
-
ActiveRecord::Base.reset_subclasses
|
75
|
-
Dependencies.clear
|
76
|
-
ActiveRecord::Base.clear_reloadable_connections!
|
75
|
+
teardown_app
|
77
76
|
|
78
77
|
$LOAD_PATH.replace(@original_load_path)
|
79
|
-
FileUtils.
|
80
|
-
end
|
81
|
-
|
82
|
-
private
|
83
|
-
def assert_valid_environment
|
84
|
-
assert_not_nil ApplicationController
|
85
|
-
assert ActiveRecord::Base.connection.active?
|
86
|
-
end
|
87
|
-
|
88
|
-
def initialize_app(name)
|
89
|
-
FileUtils.mkdir('test/app_root')
|
90
|
-
FileUtils.cp_r("test/app_roots/#{name}/.", 'test/app_root')
|
91
|
-
|
92
|
-
load 'plugin_test_helper.rb'
|
93
|
-
assert_valid_environment
|
78
|
+
FileUtils.rm_r(Dir.glob('test/app_root/*'))
|
94
79
|
end
|
95
80
|
end
|
data/test/test_helper.rb
CHANGED
@@ -1,3 +1,30 @@
|
|
1
1
|
require 'test/unit'
|
2
|
+
require 'fileutils'
|
2
3
|
|
3
4
|
$:.unshift("#{File.dirname(__FILE__)}/../lib")
|
5
|
+
|
6
|
+
FileUtils.rmtree('test/app_root')
|
7
|
+
FileUtils.mkdir('test/app_root')
|
8
|
+
|
9
|
+
class Test::Unit::TestCase
|
10
|
+
private
|
11
|
+
def assert_valid_environment
|
12
|
+
assert_not_nil ApplicationController
|
13
|
+
assert ActiveRecord::Base.connection.active?
|
14
|
+
end
|
15
|
+
|
16
|
+
def setup_app(name)
|
17
|
+
FileUtils.cp_r(Dir.glob("test/app_roots/#{name}/*"), 'test/app_root')
|
18
|
+
|
19
|
+
load 'plugin_test_helper.rb'
|
20
|
+
assert_valid_environment
|
21
|
+
end
|
22
|
+
|
23
|
+
def teardown_app
|
24
|
+
# Clear dependencies
|
25
|
+
self.class.use_transactional_fixtures = false
|
26
|
+
ActiveRecord::Base.reset_subclasses
|
27
|
+
Dependencies.clear
|
28
|
+
ActiveRecord::Base.clear_reloadable_connections!
|
29
|
+
end
|
30
|
+
end
|
@@ -0,0 +1,19 @@
|
|
1
|
+
require File.expand_path(File.dirname(__FILE__) + '/../test_helper')
|
2
|
+
|
3
|
+
class PluginLocatorTest < Test::Unit::TestCase
|
4
|
+
def setup
|
5
|
+
@original_load_path = $LOAD_PATH
|
6
|
+
setup_app('empty')
|
7
|
+
end
|
8
|
+
|
9
|
+
def test_should_locate_plugin_being_tested
|
10
|
+
locator = PluginAWeek::PluginTestHelper::PluginLocator.new(nil)
|
11
|
+
assert_equal ['plugin_test_helper'], locator.plugins.map(&:name)
|
12
|
+
end
|
13
|
+
|
14
|
+
def teardown
|
15
|
+
teardown_app
|
16
|
+
$LOAD_PATH.replace(@original_load_path)
|
17
|
+
FileUtils.rm_r(Dir.glob('test/app_root/*'))
|
18
|
+
end
|
19
|
+
end
|
metadata
CHANGED
@@ -1,149 +1,161 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
|
-
rubygems_version: 0.9.4
|
3
|
-
specification_version: 1
|
4
2
|
name: plugin_test_helper
|
5
3
|
version: !ruby/object:Gem::Version
|
6
|
-
version: 0.1.
|
7
|
-
date: 2007-10-15 00:00:00 -04:00
|
8
|
-
summary: Simplifies plugin testing by creating an isolated Rails environment that simulates its usage in a real application.
|
9
|
-
require_paths:
|
10
|
-
- lib
|
11
|
-
email: info@pluginaweek.org
|
12
|
-
homepage: http://www.pluginaweek.org
|
13
|
-
rubyforge_project:
|
14
|
-
description:
|
15
|
-
autorequire: plugin_test_helper
|
16
|
-
default_executable:
|
17
|
-
bindir: bin
|
18
|
-
has_rdoc: true
|
19
|
-
required_ruby_version: !ruby/object:Gem::Version::Requirement
|
20
|
-
requirements:
|
21
|
-
- - ">"
|
22
|
-
- !ruby/object:Gem::Version
|
23
|
-
version: 0.0.0
|
24
|
-
version:
|
4
|
+
version: 0.1.3
|
25
5
|
platform: ruby
|
26
|
-
signing_key:
|
27
|
-
cert_chain:
|
28
|
-
post_install_message:
|
29
6
|
authors:
|
30
|
-
- Aaron Pfeifer
|
7
|
+
- Aaron Pfeifer
|
8
|
+
autorequire: plugin_test_helper
|
9
|
+
bindir: bin
|
10
|
+
cert_chain: []
|
11
|
+
|
12
|
+
date: 2008-05-05 00:00:00 -04:00
|
13
|
+
default_executable:
|
14
|
+
dependencies: []
|
15
|
+
|
16
|
+
description:
|
17
|
+
email: aaron@pluginaweek.org
|
18
|
+
executables: []
|
19
|
+
|
20
|
+
extensions: []
|
21
|
+
|
22
|
+
extra_rdoc_files: []
|
23
|
+
|
31
24
|
files:
|
32
25
|
- generators/plugin_test_migration
|
33
|
-
- generators/plugin_test_console
|
34
|
-
- generators/plugin_test_helper
|
35
|
-
- generators/plugin_test_model
|
36
|
-
- generators/plugin_test_controller
|
37
|
-
- generators/plugin_test_structure
|
38
26
|
- generators/plugin_test_migration/templates
|
39
|
-
- generators/plugin_test_migration/plugin_test_migration_generator.rb
|
40
27
|
- generators/plugin_test_migration/templates/migration.rb
|
41
|
-
- generators/
|
42
|
-
- generators/
|
43
|
-
- generators/plugin_test_console/templates/console
|
44
|
-
- generators/plugin_test_helper/plugin_test_helper_generator.rb
|
45
|
-
- generators/plugin_test_helper/templates
|
46
|
-
- generators/plugin_test_helper/templates/test_helper.rb
|
47
|
-
- generators/plugin_test_model/templates
|
48
|
-
- generators/plugin_test_model/plugin_test_model_generator.rb
|
49
|
-
- generators/plugin_test_model/templates/migration.rb
|
50
|
-
- generators/plugin_test_model/templates/model.rb
|
51
|
-
- generators/plugin_test_model/templates/fixtures.yml
|
52
|
-
- generators/plugin_test_controller/templates
|
53
|
-
- generators/plugin_test_controller/plugin_test_controller_generator.rb
|
54
|
-
- generators/plugin_test_controller/templates/controller.rb
|
55
|
-
- generators/plugin_test_controller/templates/view.rhtml
|
28
|
+
- generators/plugin_test_migration/plugin_test_migration_generator.rb
|
29
|
+
- generators/plugin_test_structure
|
56
30
|
- generators/plugin_test_structure/templates
|
57
|
-
- generators/plugin_test_structure/plugin_test_structure_generator.rb
|
58
31
|
- generators/plugin_test_structure/templates/app_root
|
59
|
-
- generators/plugin_test_structure/templates/app_root/lib
|
60
32
|
- generators/plugin_test_structure/templates/app_root/config
|
61
|
-
- generators/plugin_test_structure/templates/app_root/app
|
62
33
|
- generators/plugin_test_structure/templates/app_root/config/routes.rb
|
63
|
-
- generators/plugin_test_structure/templates/app_root/config/environments
|
64
|
-
- generators/plugin_test_structure/templates/app_root/config/boot.rb
|
65
|
-
- generators/plugin_test_structure/templates/app_root/config/database.yml
|
66
34
|
- generators/plugin_test_structure/templates/app_root/config/environment.rb
|
35
|
+
- generators/plugin_test_structure/templates/app_root/config/boot.rb
|
36
|
+
- generators/plugin_test_structure/templates/app_root/config/environments
|
67
37
|
- generators/plugin_test_structure/templates/app_root/config/environments/sqlite.rb
|
68
|
-
- generators/plugin_test_structure/templates/app_root/config/environments/mysql.rb
|
69
38
|
- generators/plugin_test_structure/templates/app_root/config/environments/sqlite3.rb
|
70
39
|
- generators/plugin_test_structure/templates/app_root/config/environments/in_memory.rb
|
40
|
+
- generators/plugin_test_structure/templates/app_root/config/environments/mysql.rb
|
71
41
|
- generators/plugin_test_structure/templates/app_root/config/environments/postgresql.rb
|
42
|
+
- generators/plugin_test_structure/templates/app_root/config/database.yml
|
43
|
+
- generators/plugin_test_structure/templates/app_root/app
|
72
44
|
- generators/plugin_test_structure/templates/app_root/app/controllers
|
73
45
|
- generators/plugin_test_structure/templates/app_root/app/controllers/application.rb
|
74
|
-
- lib
|
46
|
+
- generators/plugin_test_structure/templates/app_root/lib
|
47
|
+
- generators/plugin_test_structure/plugin_test_structure_generator.rb
|
48
|
+
- generators/plugin_test_controller
|
49
|
+
- generators/plugin_test_controller/templates
|
50
|
+
- generators/plugin_test_controller/templates/view.html.erb
|
51
|
+
- generators/plugin_test_controller/templates/controller.rb
|
52
|
+
- generators/plugin_test_controller/plugin_test_controller_generator.rb
|
53
|
+
- generators/plugin_test_model
|
54
|
+
- generators/plugin_test_model/templates
|
55
|
+
- generators/plugin_test_model/templates/model.rb
|
56
|
+
- generators/plugin_test_model/templates/fixtures.yml
|
57
|
+
- generators/plugin_test_model/templates/migration.rb
|
58
|
+
- generators/plugin_test_model/plugin_test_model_generator.rb
|
59
|
+
- generators/plugin_test_console
|
60
|
+
- generators/plugin_test_console/templates
|
61
|
+
- generators/plugin_test_console/templates/console
|
62
|
+
- generators/plugin_test_console/plugin_test_console_generator.rb
|
63
|
+
- generators/plugin_test_helper
|
64
|
+
- generators/plugin_test_helper/templates
|
65
|
+
- generators/plugin_test_helper/templates/test_helper.rb
|
66
|
+
- generators/plugin_test_helper/plugin_test_helper_generator.rb
|
75
67
|
- lib/plugin_test_helper.rb
|
68
|
+
- lib/plugin_test_helper
|
69
|
+
- lib/plugin_test_helper/plugin_locator.rb
|
70
|
+
- lib/plugin_test_helper/generator.rb
|
76
71
|
- lib/plugin_test_helper/console_with_fixtures.rb
|
77
72
|
- lib/plugin_test_helper/extensions
|
78
|
-
- lib/plugin_test_helper/generator.rb
|
79
|
-
- lib/plugin_test_helper/extensions/routing.rb
|
80
73
|
- lib/plugin_test_helper/extensions/initializer.rb
|
81
|
-
-
|
82
|
-
- test/app_roots
|
74
|
+
- lib/plugin_test_helper/extensions/routing.rb
|
83
75
|
- test/fixtures
|
76
|
+
- test/fixtures/people.yml
|
77
|
+
- test/app_root
|
84
78
|
- test/functional
|
85
|
-
- test/
|
86
|
-
- test/
|
87
|
-
- test/app_roots
|
88
|
-
- test/app_roots/with_controller
|
89
|
-
- test/app_roots/with_custom_application_controller
|
79
|
+
- test/functional/plugin_test_helper_test.rb
|
80
|
+
- test/test_helper.rb
|
81
|
+
- test/app_roots
|
90
82
|
- test/app_roots/empty
|
83
|
+
- test/app_roots/empty/empty
|
91
84
|
- test/app_roots/with_migration
|
92
|
-
- test/app_roots/
|
85
|
+
- test/app_roots/with_migration/db
|
86
|
+
- test/app_roots/with_migration/db/migrate
|
87
|
+
- test/app_roots/with_migration/db/migrate/001_create_people.rb
|
88
|
+
- test/app_roots/with_migration/app
|
89
|
+
- test/app_roots/with_migration/app/models
|
90
|
+
- test/app_roots/with_migration/app/models/person.rb
|
91
|
+
- test/app_roots/with_custom_application_controller
|
92
|
+
- test/app_roots/with_custom_application_controller/app
|
93
|
+
- test/app_roots/with_custom_application_controller/app/controllers
|
94
|
+
- test/app_roots/with_custom_application_controller/app/controllers/application.rb
|
93
95
|
- test/app_roots/with_custom_config
|
94
|
-
- test/app_roots/
|
95
|
-
- test/app_roots/
|
96
|
-
- test/app_roots/
|
97
|
-
- test/app_roots/
|
98
|
-
- test/app_roots/
|
99
|
-
- test/app_roots/
|
96
|
+
- test/app_roots/with_custom_config/vendor
|
97
|
+
- test/app_roots/with_custom_config/vendor/plugins
|
98
|
+
- test/app_roots/with_custom_config/vendor/plugins/acts_as_foo
|
99
|
+
- test/app_roots/with_custom_config/vendor/plugins/acts_as_foo/init.rb
|
100
|
+
- test/app_roots/with_custom_config/vendor/plugins/acts_as_foo/lib
|
101
|
+
- test/app_roots/with_custom_config/vendor/plugins/acts_as_foo/lib/acts_as_foo.rb
|
102
|
+
- test/app_roots/with_custom_config/config
|
103
|
+
- test/app_roots/with_custom_config/config/environment.rb
|
104
|
+
- test/app_roots/with_helper
|
100
105
|
- test/app_roots/with_helper/app
|
101
106
|
- test/app_roots/with_helper/app/helpers
|
102
107
|
- test/app_roots/with_helper/app/helpers/people_helper.rb
|
108
|
+
- test/app_roots/with_model
|
103
109
|
- test/app_roots/with_model/app
|
104
110
|
- test/app_roots/with_model/app/models
|
105
111
|
- test/app_roots/with_model/app/models/person.rb
|
112
|
+
- test/app_roots/with_controller
|
106
113
|
- test/app_roots/with_controller/app
|
107
114
|
- test/app_roots/with_controller/app/controllers
|
108
115
|
- test/app_roots/with_controller/app/controllers/people_controller.rb
|
109
|
-
- test/app_roots/
|
110
|
-
- test/app_roots/with_custom_application_controller/app/controllers
|
111
|
-
- test/app_roots/with_custom_application_controller/app/controllers/application.rb
|
112
|
-
- test/app_roots/empty/empty
|
113
|
-
- test/app_roots/with_migration/app
|
114
|
-
- test/app_roots/with_migration/db
|
115
|
-
- test/app_roots/with_migration/app/models
|
116
|
-
- test/app_roots/with_migration/app/models/person.rb
|
117
|
-
- test/app_roots/with_migration/db/migrate
|
118
|
-
- test/app_roots/with_migration/db/migrate/001_create_people.rb
|
116
|
+
- test/app_roots/with_routes
|
119
117
|
- test/app_roots/with_routes/config
|
120
118
|
- test/app_roots/with_routes/config/routes.rb
|
121
|
-
- test/app_roots/
|
122
|
-
- test/app_roots/
|
123
|
-
- test/app_roots/
|
124
|
-
- test/app_roots/
|
125
|
-
- test/app_roots/
|
126
|
-
- test/app_roots/
|
127
|
-
- test/app_roots/
|
128
|
-
- test/
|
129
|
-
- test/
|
130
|
-
- test/functional/plugin_test_helper_test.rb
|
119
|
+
- test/app_roots/with_fixtures
|
120
|
+
- test/app_roots/with_fixtures/db
|
121
|
+
- test/app_roots/with_fixtures/db/migrate
|
122
|
+
- test/app_roots/with_fixtures/db/migrate/001_create_people.rb
|
123
|
+
- test/app_roots/with_fixtures/app
|
124
|
+
- test/app_roots/with_fixtures/app/models
|
125
|
+
- test/app_roots/with_fixtures/app/models/person.rb
|
126
|
+
- test/unit
|
127
|
+
- test/unit/plugin_locator_test.rb
|
131
128
|
- CHANGELOG
|
132
129
|
- init.rb
|
133
130
|
- MIT-LICENSE
|
134
131
|
- Rakefile
|
135
132
|
- README
|
136
|
-
|
137
|
-
|
133
|
+
has_rdoc: true
|
134
|
+
homepage: http://www.pluginaweek.org
|
135
|
+
post_install_message:
|
138
136
|
rdoc_options: []
|
139
137
|
|
140
|
-
|
141
|
-
|
142
|
-
|
143
|
-
|
144
|
-
|
145
|
-
|
138
|
+
require_paths:
|
139
|
+
- lib
|
140
|
+
required_ruby_version: !ruby/object:Gem::Requirement
|
141
|
+
requirements:
|
142
|
+
- - ">="
|
143
|
+
- !ruby/object:Gem::Version
|
144
|
+
version: "0"
|
145
|
+
version:
|
146
|
+
required_rubygems_version: !ruby/object:Gem::Requirement
|
147
|
+
requirements:
|
148
|
+
- - ">="
|
149
|
+
- !ruby/object:Gem::Version
|
150
|
+
version: "0"
|
151
|
+
version:
|
146
152
|
requirements: []
|
147
153
|
|
148
|
-
|
149
|
-
|
154
|
+
rubyforge_project:
|
155
|
+
rubygems_version: 1.1.0
|
156
|
+
signing_key:
|
157
|
+
specification_version: 2
|
158
|
+
summary: Simplifies plugin testing by creating an isolated Rails environment that simulates its usage in a real application.
|
159
|
+
test_files:
|
160
|
+
- test/functional/plugin_test_helper_test.rb
|
161
|
+
- test/unit/plugin_locator_test.rb
|