imedo-dry_plugin_test_helper 0.0.3 → 0.0.5
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/README.rdoc +11 -7
- data/lib/dry_plugin_test_helper.rb +0 -33
- data/lib/plugin_test_environment.rb +119 -8
- data/lib/silent_logger.rb +2 -0
- data/rails_root/config/environment.rb +1 -31
- metadata +25 -16
data/README.rdoc
CHANGED
@@ -26,7 +26,7 @@ download the source code and build the gem yourself
|
|
26
26
|
$ git clone git://github.com/imedo/dry_plugin_test_helper.git
|
27
27
|
$ cd dry_plugin_test_helper
|
28
28
|
$ rake
|
29
|
-
$ sudo gem install pkg/dry_plugin_test_helper-0.0.
|
29
|
+
$ sudo gem install pkg/dry_plugin_test_helper-0.0.4.gem
|
30
30
|
|
31
31
|
== Usage
|
32
32
|
|
@@ -35,8 +35,7 @@ In your plugin test helper use these lines:
|
|
35
35
|
require 'rubygems'
|
36
36
|
require 'dry_plugin_test_helper'
|
37
37
|
|
38
|
-
PluginTestEnvironment.
|
39
|
-
|
38
|
+
PluginTestEnvironment.initialize_environment(File.dirname(__FILE__))
|
40
39
|
|
41
40
|
This sets up the test environment which means you have a stub rails app with
|
42
41
|
you plugin loaded and also the following models:
|
@@ -59,14 +58,19 @@ this:
|
|
59
58
|
end
|
60
59
|
|
61
60
|
end
|
61
|
+
|
62
|
+
The database is automatically filled with the standard fixtures supplied by the gem.
|
63
|
+
If you want to use your own fixtures (e.g. if you use additionals models) create them
|
64
|
+
in the test/fixtures directory of your plugin. Note that the standard fixtures won't
|
65
|
+
get loaded if you use your own so you might have to add fixtures for the standard
|
66
|
+
models if you need them.
|
62
67
|
|
63
|
-
If you don't want the standard models
|
64
|
-
like this:
|
68
|
+
If you don't want the standard models (= database tables and fixtures) you can
|
69
|
+
initialize the test environment like this:
|
65
70
|
|
66
|
-
PluginTestEnvironment.
|
71
|
+
PluginTestEnvironment.initialize_environment(File.dirname(__FILE__), :use_standard_migration => false)
|
67
72
|
|
68
73
|
== TODO
|
69
|
-
* Tests for the test gem itself
|
70
74
|
* support for RSpec and other testing frameworks (might already work - haven't tried it)
|
71
75
|
* Automatic Rails version discovery
|
72
76
|
* Clean up / strip down rails env to bare minimum
|
@@ -6,36 +6,3 @@ ENV['RAILS_ENV'] ||= 'sqlite3'
|
|
6
6
|
|
7
7
|
require File.dirname(__FILE__) + '/silent_logger'
|
8
8
|
require File.dirname(__FILE__) + '/plugin_test_environment'
|
9
|
-
|
10
|
-
require 'time'
|
11
|
-
|
12
|
-
|
13
|
-
# Code by Jay Fields
|
14
|
-
# http://blog.jayfields.com/2007/11/ruby-timeis.html
|
15
|
-
class Time
|
16
|
-
def self.metaclass
|
17
|
-
class << self; self; end
|
18
|
-
end
|
19
|
-
|
20
|
-
def self.is(point_in_time)
|
21
|
-
new_time = case point_in_time
|
22
|
-
when String then Time.parse(point_in_time)
|
23
|
-
when Time then point_in_time
|
24
|
-
else raise ArgumentError.new("argument should be a string or time instance")
|
25
|
-
end
|
26
|
-
class << self
|
27
|
-
alias old_now now
|
28
|
-
end
|
29
|
-
metaclass.class_eval do
|
30
|
-
define_method :now do
|
31
|
-
new_time
|
32
|
-
end
|
33
|
-
end
|
34
|
-
yield
|
35
|
-
class << self
|
36
|
-
alias now old_now
|
37
|
-
undef old_now
|
38
|
-
end
|
39
|
-
end
|
40
|
-
end
|
41
|
-
|
@@ -2,13 +2,124 @@ class PluginTestEnvironment
|
|
2
2
|
|
3
3
|
cattr_accessor :plugin_path
|
4
4
|
|
5
|
-
|
6
|
-
|
5
|
+
# initializes the test environment
|
6
|
+
#
|
7
|
+
#
|
8
|
+
def self.initialize_environment(plugin_dir, options = {:use_standard_migration => true})
|
9
|
+
self.plugin_path = File.join(plugin_dir, '..')
|
10
|
+
require File.dirname(__FILE__) + '/../rails_root/config/boot.rb'
|
11
|
+
|
12
|
+
Rails::Initializer.run do |config|
|
13
|
+
config.logger = SilentLogger.new
|
14
|
+
config.log_level = :debug
|
15
|
+
|
16
|
+
config.cache_classes = false
|
17
|
+
config.whiny_nils = true
|
18
|
+
|
19
|
+
config.load_paths << "#{File.dirname(__FILE__)}/../../../lib/"
|
20
|
+
|
21
|
+
yield config if block_given?
|
22
|
+
end
|
23
|
+
|
7
24
|
require File.dirname(__FILE__) + '/../rails_root/config/environment.rb'
|
8
|
-
|
25
|
+
|
26
|
+
Test::Unit::TestCase.class_eval do
|
27
|
+
cattr_accessor :rails_root
|
28
|
+
self.rails_root = PluginTestEnvironment.plugin_path
|
29
|
+
end
|
30
|
+
|
31
|
+
initialize_fixtures unless options[:skip_fixtures]
|
32
|
+
|
33
|
+
ActiveRecord::Migrator.migrate("#{RAILS_ROOT}/db/migrate") if options[:use_standard_migration]
|
9
34
|
plugin_migration
|
10
35
|
end
|
11
36
|
|
37
|
+
def self.initialize_engines_environment(plugin_dir, options = {:use_standard_migration => true})
|
38
|
+
initialize_environment(plugin_dir, options.merge(:skip_fixtures => true)) do |config|
|
39
|
+
initialize_engines
|
40
|
+
set_app_load_paths(config)
|
41
|
+
set_nested_plugin_load_paths(config)
|
42
|
+
yield config if block_given?
|
43
|
+
end
|
44
|
+
|
45
|
+
set_app_view_path
|
46
|
+
load_nested_plugins
|
47
|
+
set_nested_plugin_view_paths
|
48
|
+
|
49
|
+
initialize_fixtures unless options[:skip_fixtures]
|
50
|
+
end
|
51
|
+
|
52
|
+
def self.initialize_engines
|
53
|
+
require "#{self.plugin_path}/vendor/plugins/engines/boot"
|
54
|
+
Engines.use_plugin_asset_directory = false
|
55
|
+
end
|
56
|
+
|
57
|
+
def self.set_app_load_paths(config)
|
58
|
+
Dir["#{self.plugin_path}/app/**"].each do |path|
|
59
|
+
config.load_paths << path
|
60
|
+
end
|
61
|
+
end
|
62
|
+
|
63
|
+
def self.set_nested_plugin_load_paths(config)
|
64
|
+
Dir["#{self.plugin_path}/vendor/plugins/*/init.rb"].each do |plugin|
|
65
|
+
nested_plugin_dir = File.dirname(plugin)
|
66
|
+
Dir["#{nested_plugin_dir}/lib", "#{nested_plugin_dir}/app/**"].each do |path|
|
67
|
+
config.load_paths << path
|
68
|
+
end
|
69
|
+
end
|
70
|
+
end
|
71
|
+
|
72
|
+
def self.set_app_view_path
|
73
|
+
view_path = File.join(self.plugin_path, 'app', 'views')
|
74
|
+
if File.exist?(view_path)
|
75
|
+
ActionController::Base.view_paths.insert(1, view_path)
|
76
|
+
end
|
77
|
+
end
|
78
|
+
|
79
|
+
def self.load_nested_plugins
|
80
|
+
Dir.glob("#{self.plugin_path}/vendor/plugins/*/init.rb").each do |plugin|
|
81
|
+
require plugin
|
82
|
+
end
|
83
|
+
end
|
84
|
+
|
85
|
+
def self.set_nested_plugin_view_paths
|
86
|
+
Dir.glob("#{self.plugin_path}/vendor/plugins/*/init.rb").each do |plugin|
|
87
|
+
nested_plugin_dir = File.dirname(plugin)
|
88
|
+
view_path = File.join(nested_plugin_dir, 'app', 'views')
|
89
|
+
if File.exist?(view_path)
|
90
|
+
ActionController::Base.view_paths.insert(1, view_path)
|
91
|
+
end
|
92
|
+
end
|
93
|
+
end
|
94
|
+
|
95
|
+
def self.initialize_fixtures
|
96
|
+
require 'test_help'
|
97
|
+
|
98
|
+
Test::Unit::TestCase.fixture_path = PluginTestEnvironment.fixture_path
|
99
|
+
$LOAD_PATH.unshift(Test::Unit::TestCase.fixture_path)
|
100
|
+
|
101
|
+
Test::Unit::TestCase.class_eval do
|
102
|
+
def create_fixtures(*table_names)
|
103
|
+
if block_given?
|
104
|
+
Fixtures.create_fixtures(Test::Unit::TestCase.fixture_path, table_names) { yield }
|
105
|
+
else
|
106
|
+
Fixtures.create_fixtures(Test::Unit::TestCase.fixture_path, table_names)
|
107
|
+
end
|
108
|
+
end
|
109
|
+
|
110
|
+
self.use_transactional_fixtures = false
|
111
|
+
self.use_instantiated_fixtures = false
|
112
|
+
end
|
113
|
+
end
|
114
|
+
|
115
|
+
# initializes the test environment
|
116
|
+
#
|
117
|
+
# deprecated - use PluginTestEnvironment#initialize_environment instead
|
118
|
+
def self.init_env(plugin_dir, use_standard_migration = true)
|
119
|
+
puts "This method is deprecated please use PluginTestEnvironment#initialize_environment instead"
|
120
|
+
initialize_environment(plugin_dir, :use_standard_migration => use_standard_migration)
|
121
|
+
end
|
122
|
+
|
12
123
|
def self.fixture_path
|
13
124
|
if File.exists?(PluginTestEnvironment.plugin_path + '/test/fixtures')
|
14
125
|
PluginTestEnvironment.plugin_path + '/test/fixtures'
|
@@ -22,13 +133,13 @@ class PluginTestEnvironment
|
|
22
133
|
end
|
23
134
|
|
24
135
|
def self.plugin_migration
|
25
|
-
|
26
|
-
|
136
|
+
custom_migration = "#{PluginTestEnvironment.plugin_path}/test/migration.rb"
|
137
|
+
if File.exists?(custom_migration)
|
138
|
+
require custom_migration
|
27
139
|
Migration.up
|
28
|
-
rescue LoadError
|
29
140
|
end
|
30
|
-
end
|
31
|
-
|
141
|
+
end
|
142
|
+
|
32
143
|
class Migration < ActiveRecord::Migration
|
33
144
|
def self.setup(&block)
|
34
145
|
self.class.send(:define_method, :up, &block)
|
data/lib/silent_logger.rb
CHANGED
@@ -1,41 +1,11 @@
|
|
1
1
|
# Specifies gem version of Rails to use when vendor/rails is not present
|
2
2
|
#RAILS_GEM_VERSION = '1.1.6'
|
3
|
-
RAILS_GEM_VERSION = '2.0.2' unless defined? RAILS_GEM_VERSION
|
3
|
+
#RAILS_GEM_VERSION = '2.0.2' unless defined? RAILS_GEM_VERSION
|
4
4
|
|
5
5
|
require File.join(File.dirname(__FILE__), 'boot')
|
6
|
-
#require 'plugin_dependencies'
|
7
|
-
|
8
|
-
Rails::Initializer.run do |config|
|
9
|
-
config.logger = SilentLogger.new
|
10
|
-
config.log_level = :debug
|
11
|
-
|
12
|
-
config.cache_classes = false
|
13
|
-
config.whiny_nils = true
|
14
|
-
#config.breakpoint_server = true
|
15
|
-
config.load_paths << "#{File.dirname(__FILE__)}/../../../lib/"
|
16
|
-
end
|
17
6
|
|
18
7
|
Dependencies.log_activity = false
|
19
8
|
|
20
|
-
require 'test_help'
|
21
|
-
|
22
|
-
|
23
|
-
Test::Unit::TestCase.fixture_path = PluginTestEnvironment.fixture_path
|
24
|
-
$LOAD_PATH.unshift(Test::Unit::TestCase.fixture_path)
|
25
|
-
|
26
|
-
class Test::Unit::TestCase #:nodoc:
|
27
|
-
def create_fixtures(*table_names)
|
28
|
-
if block_given?
|
29
|
-
Fixtures.create_fixtures(Test::Unit::TestCase.fixture_path, table_names) { yield }
|
30
|
-
else
|
31
|
-
Fixtures.create_fixtures(Test::Unit::TestCase.fixture_path, table_names)
|
32
|
-
end
|
33
|
-
end
|
34
|
-
|
35
|
-
self.use_transactional_fixtures = false
|
36
|
-
self.use_instantiated_fixtures = false
|
37
|
-
end
|
38
|
-
|
39
9
|
# Load the testing framework
|
40
10
|
silence_warnings { RAILS_ENV = ENV['RAILS_ENV'] }
|
41
11
|
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: imedo-dry_plugin_test_helper
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.0.
|
4
|
+
version: 0.0.5
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Hendrik Volkmer
|
@@ -9,7 +9,7 @@ autorequire: active_record
|
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
11
|
|
12
|
-
date: 2008-
|
12
|
+
date: 2008-11-12 00:00:00 -08:00
|
13
13
|
default_executable:
|
14
14
|
dependencies:
|
15
15
|
- !ruby/object:Gem::Dependency
|
@@ -21,6 +21,15 @@ dependencies:
|
|
21
21
|
- !ruby/object:Gem::Version
|
22
22
|
version: 1.15.3
|
23
23
|
version:
|
24
|
+
- !ruby/object:Gem::Dependency
|
25
|
+
name: sqlite3-ruby
|
26
|
+
version_requirement:
|
27
|
+
version_requirements: !ruby/object:Gem::Requirement
|
28
|
+
requirements:
|
29
|
+
- - ">="
|
30
|
+
- !ruby/object:Gem::Version
|
31
|
+
version: 1.2.1
|
32
|
+
version:
|
24
33
|
description:
|
25
34
|
email: hvolkmer@imedo.de
|
26
35
|
executables: []
|
@@ -30,30 +39,30 @@ extensions: []
|
|
30
39
|
extra_rdoc_files:
|
31
40
|
- README.rdoc
|
32
41
|
files:
|
33
|
-
- lib/silent_logger.rb
|
34
42
|
- lib/dry_plugin_test_helper.rb
|
35
43
|
- lib/plugin_test_environment.rb
|
36
|
-
-
|
37
|
-
- rails_root/db/migrate
|
38
|
-
- rails_root/db/migrate/001_create_environment.rb
|
44
|
+
- lib/silent_logger.rb
|
39
45
|
- rails_root/app
|
40
46
|
- rails_root/app/controllers
|
41
47
|
- rails_root/app/controllers/application.rb
|
42
48
|
- rails_root/app/models
|
43
|
-
- rails_root/app/models/author.rb
|
44
|
-
- rails_root/app/models/user.rb
|
45
49
|
- rails_root/app/models/article.rb
|
50
|
+
- rails_root/app/models/author.rb
|
46
51
|
- rails_root/app/models/comment.rb
|
52
|
+
- rails_root/app/models/user.rb
|
47
53
|
- rails_root/config
|
48
|
-
- rails_root/config/
|
49
|
-
- rails_root/config/environments
|
50
|
-
- rails_root/config/environments/sqlite3.rb
|
51
|
-
- rails_root/config/environments/sqlite.rb
|
52
|
-
- rails_root/config/environments/postgresql.rb
|
53
|
-
- rails_root/config/environments/mysql.rb
|
54
|
+
- rails_root/config/boot.rb
|
54
55
|
- rails_root/config/database.yml
|
55
56
|
- rails_root/config/environment.rb
|
56
|
-
- rails_root/config/
|
57
|
+
- rails_root/config/environments
|
58
|
+
- rails_root/config/environments/mysql.rb
|
59
|
+
- rails_root/config/environments/postgresql.rb
|
60
|
+
- rails_root/config/environments/sqlite.rb
|
61
|
+
- rails_root/config/environments/sqlite3.rb
|
62
|
+
- rails_root/config/routes.rb
|
63
|
+
- rails_root/db
|
64
|
+
- rails_root/db/migrate
|
65
|
+
- rails_root/db/migrate/001_create_environment.rb
|
57
66
|
- rails_root/script
|
58
67
|
- rails_root/script/console
|
59
68
|
- rails_root/vendor
|
@@ -84,7 +93,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
84
93
|
requirements: []
|
85
94
|
|
86
95
|
rubyforge_project:
|
87
|
-
rubygems_version: 1.0
|
96
|
+
rubygems_version: 1.2.0
|
88
97
|
signing_key:
|
89
98
|
specification_version: 2
|
90
99
|
summary: Providing dry standard test environment for Ruby on Rails plugins
|