aboutsummaryrefslogtreecommitdiffstats
path: root/railties/test/app_loader_test.rb
diff options
context:
space:
mode:
authorRyan Bigg <git@ryanbigg.com>2015-04-23 13:05:30 +1000
committerRyan Bigg <git@ryanbigg.com>2015-05-21 16:50:41 +1000
commitf9640b090019d9cff899b28a8c8d4f638ad04acb (patch)
treebb4ab3b856154bed774537f09a2cb2fdfb288cf2 /railties/test/app_loader_test.rb
parent40ff5087ec3c932d2b8f79425d8b741f7ed3f362 (diff)
downloadrails-f9640b090019d9cff899b28a8c8d4f638ad04acb.tar.gz
rails-f9640b090019d9cff899b28a8c8d4f638ad04acb.tar.bz2
rails-f9640b090019d9cff899b28a8c8d4f638ad04acb.zip
Remove redundant 'Rails' from Rails::AppRailsLoader constant
Diffstat (limited to 'railties/test/app_loader_test.rb')
-rw-r--r--railties/test/app_loader_test.rb89
1 files changed, 89 insertions, 0 deletions
diff --git a/railties/test/app_loader_test.rb b/railties/test/app_loader_test.rb
new file mode 100644
index 0000000000..e7f0098681
--- /dev/null
+++ b/railties/test/app_loader_test.rb
@@ -0,0 +1,89 @@
+require 'tmpdir'
+require 'abstract_unit'
+require 'rails/app_rails_loader'
+
+class AppLoaderTest < ActiveSupport::TestCase
+ def loader
+ @loader ||= Class.new do
+ extend Rails::AppLoader
+
+ def self.exec_arguments
+ @exec_arguments
+ end
+
+ def self.exec(*args)
+ @exec_arguments = args
+ end
+ end
+ end
+
+ def write(filename, contents=nil)
+ FileUtils.mkdir_p(File.dirname(filename))
+ File.write(filename, contents)
+ end
+
+ def expects_exec(exe)
+ assert_equal [Rails::AppLoader::RUBY, exe], loader.exec_arguments
+ end
+
+ setup do
+ @tmp = Dir.mktmpdir('railties-rails-loader-test-suite')
+ @cwd = Dir.pwd
+ Dir.chdir(@tmp)
+ end
+
+ ['bin', 'script'].each do |script_dir|
+ exe = "#{script_dir}/rails"
+
+ test "is not in a Rails application if #{exe} is not found in the current or parent directories" do
+ def loader.find_executables; end
+
+ assert !loader.exec_app
+ end
+
+ test "is not in a Rails application if #{exe} exists but is a folder" do
+ FileUtils.mkdir_p(exe)
+
+ assert !loader.exec_app
+ end
+
+ ['APP_PATH', 'ENGINE_PATH'].each do |keyword|
+ test "is in a Rails application if #{exe} exists and contains #{keyword}" do
+ write exe, keyword
+
+ loader.exec_app
+
+ expects_exec exe
+ end
+
+ test "is not in a Rails application if #{exe} exists but doesn't contain #{keyword}" do
+ write exe
+
+ assert !loader.exec_app
+ end
+
+ test "is in a Rails application if parent directory has #{exe} containing #{keyword} and chdirs to the root directory" do
+ write "foo/bar/#{exe}"
+ write "foo/#{exe}", keyword
+
+ Dir.chdir('foo/bar')
+
+ loader.exec_app
+
+ expects_exec exe
+
+ # Compare the realpath in case either of them has symlinks.
+ #
+ # This happens in particular in Mac OS X, where @tmp starts
+ # with "/var", and Dir.pwd with "/private/var", due to a
+ # default system symlink var -> private/var.
+ assert_equal File.realpath("#@tmp/foo"), File.realpath(Dir.pwd)
+ end
+ end
+ end
+
+ teardown do
+ Dir.chdir(@cwd)
+ FileUtils.rm_rf(@tmp)
+ end
+end