imedo-dry_plugin_test_helper 0.0.6 → 0.0.7

Sign up to get free protection for your applications and to get access to all the features.
data/README.rdoc CHANGED
@@ -9,7 +9,7 @@ Bugs:: No dedicated bug tracker yet - Email us or just send pull requests
9
9
  Makes your plugin tests dry and isolates plugin tests from you real app.
10
10
 
11
11
  == Dependencies
12
- * Rails 2.0.2 (should work also with 1.2)
12
+ * Rails > 2.0.2 (should work also with 1.2)
13
13
  * sqlite3 - http://www.sqlite.org/
14
14
 
15
15
  == Installation
@@ -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.4.gem
29
+ $ sudo gem install pkg/dry_plugin_test_helper-0.0.7.gem
30
30
 
31
31
  == Usage
32
32
 
@@ -37,8 +37,7 @@ In your plugin test helper use these lines:
37
37
 
38
38
  PluginTestEnvironment.initialize_environment(File.dirname(__FILE__))
39
39
 
40
- This sets up the test environment which means you have a stub rails app with
41
- you plugin loaded and also the following models:
40
+ This sets up the test environment in $HOME/.dry_plugin_test_helper/2.3/ (for Rails 2.3) which means you have a stub rails app with you plugin loaded and also the following models:
42
41
 
43
42
  * Article: belongs_to :author, has_many :comments
44
43
  * Author: has_many :articles
@@ -70,7 +69,7 @@ initialize the test environment like this:
70
69
 
71
70
  PluginTestEnvironment.initialize_environment(File.dirname(__FILE__), :use_standard_migration => false)
72
71
 
72
+
73
73
  == TODO
74
74
  * support for RSpec and other testing frameworks (might already work - haven't tried it)
75
75
  * Automatic Rails version discovery
76
- * Clean up / strip down rails env to bare minimum
@@ -1,8 +1,3 @@
1
1
  require 'rubygems'
2
- require 'active_support'
3
- require 'active_record'
4
2
 
5
- ENV['RAILS_ENV'] ||= 'sqlite3'
6
-
7
- require File.dirname(__FILE__) + '/silent_logger'
8
3
  require File.dirname(__FILE__) + '/plugin_test_environment'
@@ -1,6 +1,8 @@
1
1
  class PluginTestEnvironment
2
2
 
3
- cattr_accessor :plugin_path
3
+ class << self
4
+ attr_accessor :plugin_path
5
+ end
4
6
 
5
7
  # initializes the test environment
6
8
  #
@@ -14,8 +16,10 @@ class PluginTestEnvironment
14
16
  plugin_dir = find_plugin_dir_by_caller
15
17
  end
16
18
  end
19
+
17
20
  self.plugin_path = File.join(plugin_dir, '..')
18
- require File.dirname(__FILE__) + '/../rails_root/config/boot.rb'
21
+ require rails_root_dir(options[:rails_version]) + '/config/boot.rb'
22
+ require File.dirname(__FILE__) + '/silent_logger'
19
23
 
20
24
  Rails::Initializer.run do |config|
21
25
  config.logger = SilentLogger.new
@@ -29,8 +33,8 @@ class PluginTestEnvironment
29
33
  yield config if block_given?
30
34
  end
31
35
 
32
- require File.dirname(__FILE__) + '/../rails_root/config/environment.rb'
33
-
36
+ require rails_root_dir(options[:rails_version]) + '/config/environment.rb'
37
+
34
38
  Test::Unit::TestCase.class_eval do
35
39
  cattr_accessor :rails_root
36
40
  self.rails_root = PluginTestEnvironment.plugin_path
@@ -42,6 +46,35 @@ class PluginTestEnvironment
42
46
  plugin_migration
43
47
  end
44
48
 
49
+ def self.rails_root_dir(rails_version)
50
+ rails_dir = File.join(test_helper_base_dir, "#{rails_version || latest_rails_version}/")
51
+ init_environment(rails_version || latest_rails_version) unless File.exists?(rails_dir)
52
+ rails_dir
53
+ end
54
+
55
+ def self.test_helper_base_dir
56
+ File.join(ENV['HOME'], ".dry_plugin_test_helper")
57
+ end
58
+
59
+ def self.latest_rails_version
60
+ Gem.cache.find_name(/^rails$/).map { |g| g.version.version }.last
61
+ end
62
+
63
+ def self.init_environment(rails_version)
64
+ target_directory = File.join(test_helper_base_dir, rails_version)
65
+ FileUtils.mkdir_p target_directory
66
+ system("rails _#{rails_version}_ #{File.expand_path(target_directory)}")
67
+ FileUtils.cp_r File.dirname(__FILE__) + '/../rails_root_fixtures/app/models', target_directory + '/app'
68
+ FileUtils.cp_r File.dirname(__FILE__) + '/../rails_root_fixtures/db/migrate', target_directory + '/db'
69
+ FileUtils.cp_r File.dirname(__FILE__) + '/../rails_root_fixtures/vendor/plugins/plugin_to_test', target_directory + '/vendor/plugins/'
70
+ FileUtils.cp File.dirname(__FILE__) + '/../rails_root_fixtures/config/database.yml', target_directory + '/config/database.yml'
71
+ end
72
+
73
+ def self.remove_environment_for_rails_version(version)
74
+ dir = File.join(test_helper_base_dir, version)
75
+ FileUtils.rm_r(dir) if File.exists?(dir)
76
+ end
77
+
45
78
  def self.initialize_engines_environment(plugin_dir, options = {:use_standard_migration => true})
46
79
  initialize_environment(plugin_dir, options.merge(:skip_fixtures => true)) do |config|
47
80
  initialize_engines
@@ -143,6 +176,12 @@ class PluginTestEnvironment
143
176
  def self.plugin_migration
144
177
  custom_migration = "#{PluginTestEnvironment.plugin_path}/test/migration.rb"
145
178
  if File.exists?(custom_migration)
179
+ self.const_set(:Migration, Class.new(ActiveRecord::Migration))
180
+ Migration.class_eval do
181
+ def self.setup(&block)
182
+ self.class.send(:define_method, :up, &block)
183
+ end
184
+ end
146
185
  require custom_migration
147
186
  Migration.up
148
187
  end
@@ -153,10 +192,4 @@ class PluginTestEnvironment
153
192
  File.dirname(caller[1].split(":").first)
154
193
  end
155
194
 
156
- class Migration < ActiveRecord::Migration
157
- def self.setup(&block)
158
- self.class.send(:define_method, :up, &block)
159
- end
160
- end
161
-
162
195
  end
@@ -0,0 +1,12 @@
1
+ dbsetup: &in_memory
2
+ :adapter: sqlite3
3
+ :dbfile: ':memory:'
4
+
5
+ development:
6
+ <<: *in_memory
7
+
8
+ test:
9
+ <<: *in_memory
10
+
11
+ production:
12
+ <<: *in_memory
@@ -1,3 +1,3 @@
1
- init_path = PluginTestEnvironment.plugin_path + "/init.rb" #
2
-
1
+ init_path = PluginTestEnvironment.plugin_path + "/init.rb" #
2
+
3
3
  silence_warnings { eval(IO.read(init_path), binding, init_path) }
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.6
4
+ version: 0.0.7
5
5
  platform: ruby
6
6
  authors:
7
7
  - Hendrik Volkmer
@@ -9,19 +9,9 @@ autorequire: active_record
9
9
  bindir: bin
10
10
  cert_chain: []
11
11
 
12
- date: 2009-04-27 00:00:00 -07:00
12
+ date: 2009-05-14 00:00:00 -07:00
13
13
  default_executable:
14
14
  dependencies:
15
- - !ruby/object:Gem::Dependency
16
- name: activerecord
17
- type: :runtime
18
- version_requirement:
19
- version_requirements: !ruby/object:Gem::Requirement
20
- requirements:
21
- - - ">="
22
- - !ruby/object:Gem::Version
23
- version: 1.15.3
24
- version:
25
15
  - !ruby/object:Gem::Dependency
26
16
  name: sqlite3-ruby
27
17
  type: :runtime
@@ -44,34 +34,21 @@ files:
44
34
  - lib/dry_plugin_test_helper.rb
45
35
  - lib/plugin_test_environment.rb
46
36
  - lib/silent_logger.rb
47
- - rails_root/app
48
- - rails_root/app/controllers
49
- - rails_root/app/controllers/application.rb
50
- - rails_root/app/models
51
- - rails_root/app/models/article.rb
52
- - rails_root/app/models/author.rb
53
- - rails_root/app/models/comment.rb
54
- - rails_root/app/models/user.rb
55
- - rails_root/config
56
- - rails_root/config/boot.rb
57
- - rails_root/config/database.yml
58
- - rails_root/config/environment.rb
59
- - rails_root/config/environments
60
- - rails_root/config/environments/mysql.rb
61
- - rails_root/config/environments/postgresql.rb
62
- - rails_root/config/environments/sqlite.rb
63
- - rails_root/config/environments/sqlite3.rb
64
- - rails_root/config/environments/test.rb
65
- - rails_root/config/routes.rb
66
- - rails_root/db
67
- - rails_root/db/migrate
68
- - rails_root/db/migrate/001_create_environment.rb
69
- - rails_root/script
70
- - rails_root/script/console
71
- - rails_root/vendor
72
- - rails_root/vendor/plugins
73
- - rails_root/vendor/plugins/plugin_to_test
74
- - rails_root/vendor/plugins/plugin_to_test/init.rb
37
+ - rails_root_fixtures/app
38
+ - rails_root_fixtures/app/models
39
+ - rails_root_fixtures/app/models/article.rb
40
+ - rails_root_fixtures/app/models/author.rb
41
+ - rails_root_fixtures/app/models/comment.rb
42
+ - rails_root_fixtures/app/models/user.rb
43
+ - rails_root_fixtures/config
44
+ - rails_root_fixtures/config/database.yml
45
+ - rails_root_fixtures/db
46
+ - rails_root_fixtures/db/migrate
47
+ - rails_root_fixtures/db/migrate/001_create_environment.rb
48
+ - rails_root_fixtures/vendor
49
+ - rails_root_fixtures/vendor/plugins
50
+ - rails_root_fixtures/vendor/plugins/plugin_to_test
51
+ - rails_root_fixtures/vendor/plugins/plugin_to_test/init.rb
75
52
  - fixtures/articles.yml
76
53
  - README.rdoc
77
54
  has_rdoc: true
@@ -1,2 +0,0 @@
1
- class ApplicationController < ActionController::Base
2
- end
@@ -1,45 +0,0 @@
1
- # Don't change this file. Configuration is done in config/environment.rb and config/environments/*.rb
2
-
3
- unless defined?(RAILS_ROOT)
4
- root_path = File.join(File.dirname(__FILE__), '..')
5
-
6
- unless RUBY_PLATFORM =~ /(:?mswin|mingw)/
7
- require 'pathname'
8
- root_path = Pathname.new(root_path).cleanpath(true).to_s
9
- end
10
-
11
- RAILS_ROOT = root_path
12
- end
13
-
14
- unless defined?(Rails::Initializer)
15
- if File.directory?("#{RAILS_ROOT}/vendor/rails")
16
- require "#{RAILS_ROOT}/vendor/rails/railties/lib/initializer"
17
- else
18
- require 'rubygems'
19
-
20
- environment_without_comments = IO.readlines(File.dirname(__FILE__) + '/environment.rb').reject { |l| l =~ /^#/ }.join
21
- environment_without_comments =~ /[^#]RAILS_GEM_VERSION = '([\d.]+)'/
22
- rails_gem_version = $1
23
-
24
- if version = defined?(RAILS_GEM_VERSION) ? RAILS_GEM_VERSION : rails_gem_version
25
- # Asking for 1.1.6 will give you 1.1.6.5206, if available -- makes it easier to use beta gems
26
- rails_gem = Gem.cache.search('rails', "~>#{version}.0").sort_by { |g| g.version.version }.last
27
-
28
- if rails_gem
29
- gem "rails", "=#{rails_gem.version.version}"
30
- require rails_gem.full_gem_path + '/lib/initializer'
31
- else
32
- STDERR.puts %(Cannot find gem for Rails ~>#{version}.0:
33
- Install the missing gem with 'gem install -v=#{version} rails', or
34
- change environment.rb to define RAILS_GEM_VERSION with your desired version.
35
- )
36
- exit 1
37
- end
38
- else
39
- gem "rails"
40
- require 'initializer'
41
- end
42
- end
43
-
44
- Rails::Initializer.run(:set_load_path)
45
- end
@@ -1,21 +0,0 @@
1
- sqlite:
2
- :adapter: sqlite
3
- :dbfile: ':memory:'
4
- sqlite3:
5
- :adapter: sqlite3
6
- :dbfile: ':memory:'
7
- test:
8
- :adapter: sqlite3
9
- :dbfile: ':memory:'
10
- postgresql:
11
- :adapter: postgresql
12
- :username: postgres
13
- :password: postgres
14
- :database: most_popular_test
15
- :min_messages: ERROR
16
- mysql:
17
- :adapter: mysql
18
- :host: localhost
19
- :username: root
20
- :password:
21
- :database: most_popular_test
@@ -1,11 +0,0 @@
1
- # Specifies gem version of Rails to use when vendor/rails is not present
2
- #RAILS_GEM_VERSION = '1.1.6'
3
- #RAILS_GEM_VERSION = '2.0.2' unless defined? RAILS_GEM_VERSION
4
-
5
- require File.join(File.dirname(__FILE__), 'boot')
6
-
7
- Dependencies.log_activity = false
8
-
9
- # Load the testing framework
10
- silence_warnings { RAILS_ENV = ENV['RAILS_ENV'] }
11
-
File without changes
File without changes
File without changes
File without changes
File without changes
@@ -1,9 +0,0 @@
1
- ActionController::Routing::Routes.draw do |map|
2
- # Allow downloading Web Service WSDL as a file with an extension
3
- # instead of a file named 'wsdl'
4
- map.connect ':controller/service.wsdl', :action => 'wsdl'
5
-
6
- # Default route
7
- map.connect ':controller/:action/:id.:format'
8
- map.connect ':controller/:action/:id'
9
- end
@@ -1,3 +0,0 @@
1
- #!/usr/bin/env ruby
2
- require File.dirname(__FILE__) + '/../config/boot'
3
- require 'commands/console'