plugin_test_helper 0.1.2 → 0.1.3
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- 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
|