diff --git a/Library/Homebrew/test/test_bucket.rb b/Library/Homebrew/test/test_bucket.rb index 96d2177a9a..2f27fed623 100644 --- a/Library/Homebrew/test/test_bucket.rb +++ b/Library/Homebrew/test/test_bucket.rb @@ -102,54 +102,4 @@ class BeerTasting < Test::Unit::TestCase assert_equal 10.5, f-0.1 assert_equal 10.7, f+0.1 end - - def test_pathname_plus_yeast - abcd = orig_abcd = HOMEBREW_CACHE+'abcd' - - shutup do - assert !Pathname.getwd.rmdir_if_possible - assert !Pathname.getwd.abv.empty? - - FileUtils.cp ABS__FILE__, abcd - installed_paths = HOMEBREW_PREFIX.install(abcd) - - abcd = installed_paths[0] - assert((HOMEBREW_PREFIX+orig_abcd.basename).exist?) - assert abcd.exist? - assert_equal HOMEBREW_PREFIX+'abcd', abcd - - assert_raises(RuntimeError) { abcd.write 'CONTENT' } - - abcd.unlink - abcd.write 'HELLOWORLD' - assert_equal 'HELLOWORLD', File.read(abcd) - - assert !orig_abcd.exist? - rv=abcd.cp orig_abcd - assert orig_abcd.exist? - assert_equal rv, orig_abcd - - orig_abcd.unlink - assert !orig_abcd.exist? - abcd.cp HOMEBREW_CACHE - assert orig_abcd.exist? - - HOMEBREW_CACHE.chmod_R 0777 - end - ensure - abcd.unlink - end - - def test_pathname_properties - foo1 = HOMEBREW_CACHE/'foo-0.1.tar.gz' - - assert_equal '.tar.gz', foo1.extname - assert_equal 'foo-0.1', foo1.stem - assert_version_equal '0.1', foo1.version - - foo1 = HOMEBREW_CACHE/'foo-0.1.cpio.gz' - assert_equal '.cpio.gz', foo1.extname - assert_equal 'foo-0.1', foo1.stem - assert_version_equal '0.1', foo1.version - end end diff --git a/Library/Homebrew/test/test_pathname.rb b/Library/Homebrew/test/test_pathname.rb new file mode 100644 index 0000000000..e0e70265ff --- /dev/null +++ b/Library/Homebrew/test/test_pathname.rb @@ -0,0 +1,216 @@ +require 'testing_env' +require 'tmpdir' +require 'extend/pathname' + +class PathnameExtensionTests < Test::Unit::TestCase + include FileUtils + + def setup + @src = Pathname.new(Dir.mktmpdir) + @dst = Pathname.new(Dir.mktmpdir) + @file = @src+'foo' + @dir = @src+'bar' + end + + def teardown + rmtree(@src) + rmtree(@dst) + end + + def test_rmdir_if_possible + mkdir_p @dir + touch @dir+'foo' + + assert !@dir.rmdir_if_possible + assert @dir.directory? + + rm_f @dir+'foo' + assert @dir.rmdir_if_possible + assert !@dir.exist? + end + + def test_rmdir_if_possible_ignore_DS_Store + mkdir_p @dir + touch @dir+'.DS_Store' + assert @dir.rmdir_if_possible + assert !@dir.exist? + end + + def test_write + @file.write('CONTENT') + assert_equal 'CONTENT', File.read(@file) + end + + def test_write_does_not_overwrite + touch @file + assert_raises(RuntimeError) { @file.write('CONTENT') } + end + + def test_chmod_R + perms = 0777 + FileUtils.expects(:chmod_R).with(perms, @dir.to_s) + @dir.chmod_R(perms) + end + + def test_atomic_write + touch @file + @file.atomic_write('CONTENT') + assert_equal 'CONTENT', File.read(@file) + end + + def test_cp + touch @file + mkdir_p @dir + + @file.cp(@dir) + assert @file.file? + assert (@dir+@file.basename).file? + + @dir.cp(@dst) + assert @dir.directory? + assert (@dst+@dir.basename).directory? + end + + def test_ensure_writable + touch @file + chmod 0555, @file + @file.ensure_writable { assert @file.writable? } + assert !@file.writable? + end + + def test_extname + assert_equal '.tar.gz', Pathname('foo-0.1.tar.gz').extname + assert_equal '.cpio.gz', Pathname('foo-0.1.cpio.gz').extname + end + + def test_stem + assert_equal 'foo-0.1', Pathname('foo-0.1.tar.gz').stem + assert_equal 'foo-0.1', Pathname('foo-0.1.cpio.gz').stem + end + + def test_install_missing_file + assert_raises(RuntimeError) do + @dst.install 'non_existent_file' + end + end + + def test_install_removes_original + orig_file = @file + touch @file + + @file, _ = @dst.install(@file) + + assert_equal orig_file.basename, @file.basename + assert @file.exist? + assert !orig_file.exist? + end + + def setup_install_test + cd @src do + (@src+'a.txt').write 'This is sample file a.' + (@src+'b.txt').write 'This is sample file b.' + yield + end + end + + def test_install + setup_install_test do + @dst.install 'a.txt' + + assert((@dst+'a.txt').exist?, 'a.txt not installed.') + assert(!(@dst+'b.txt').exist?, 'b.txt was installed.') + end + end + + def test_install_list + setup_install_test do + @dst.install %w[a.txt b.txt] + + assert((@dst+'a.txt').exist?, 'a.txt not installed.') + assert((@dst+'b.txt').exist?, 'b.txt not installed.') + end + end + + def test_install_glob + setup_install_test do + @dst.install Dir['*.txt'] + + assert((@dst+'a.txt').exist?, 'a.txt not installed.') + assert((@dst+'b.txt').exist?, 'b.txt not installed.') + end + end + + def test_install_directory + setup_install_test do + mkdir_p 'bin' + mv Dir['*.txt'], 'bin' + + @dst.install 'bin' + + assert((@dst+'bin/a.txt').exist?, 'a.txt not installed.') + assert((@dst+'bin/b.txt').exist?, 'b.txt not installed.') + end + end + + def test_install_rename + setup_install_test do + @dst.install 'a.txt' => 'c.txt' + + assert((@dst+'c.txt').exist?, 'c.txt not installed.') + assert(!(@dst+'a.txt').exist?, 'a.txt was installed but not renamed.') + assert(!(@dst+'b.txt').exist?, 'b.txt was installed.') + end + end + + def test_install_rename_more + setup_install_test do + @dst.install({'a.txt' => 'c.txt', 'b.txt' => 'd.txt'}) + + assert((@dst+'c.txt').exist?, 'c.txt not installed.') + assert((@dst+'d.txt').exist?, 'd.txt not installed.') + assert(!(@dst+'a.txt').exist?, 'a.txt was installed but not renamed.') + assert(!(@dst+'b.txt').exist?, 'b.txt was installed but not renamed.') + end + end + + def test_install_rename_directory + setup_install_test do + mkdir_p 'bin' + mv Dir['*.txt'], 'bin' + + @dst.install 'bin' => 'libexec' + + assert(!(@dst+'bin').exist?, 'bin was installed but not renamed.') + assert((@dst+'libexec/a.txt').exist?, 'a.txt not installed.') + assert((@dst+'libexec/b.txt').exist?, 'b.txt not installed.') + end + end + + def test_install_symlink + setup_install_test do + mkdir_p 'bin' + mv Dir['*.txt'], 'bin' + + @dst.install_symlink @src+'bin' + + assert((@dst+'bin').symlink?) + assert((@dst+'bin').directory?) + assert((@dst+'bin/a.txt').exist?) + assert((@dst+'bin/b.txt').exist?) + end + end + + def test_install_returns_installed_paths + foo, bar = @src+'foo', @src+'bar' + touch [foo, bar] + dirs = @dst.install(foo, bar) + assert_equal [@dst+'foo', @dst+'bar'], dirs + end + + def test_install_creates_intermediate_directories + touch @file + assert !@dir.directory? + @dir.install(@file) + assert @dir.directory? + end +end diff --git a/Library/Homebrew/test/test_pathname_install.rb b/Library/Homebrew/test/test_pathname_install.rb deleted file mode 100644 index c036a9b6e4..0000000000 --- a/Library/Homebrew/test/test_pathname_install.rb +++ /dev/null @@ -1,108 +0,0 @@ -require 'testing_env' - -TEMP_FOLDER = HOMEBREW_PREFIX+"temp_dir" -TARGET_FOLDER = TEMP_FOLDER+'folder1' - -class PathnameInstallTests < Test::Unit::TestCase - def setup - FileUtils.mkdir_p TEMP_FOLDER - end - - def with_temp_folder - TEMP_FOLDER.cd do - # Keep these around while building out tests, to make sure - # that test folders start out clean. - assert !TARGET_FOLDER.exist?, "setup failed." - - (TEMP_FOLDER+'a.txt').write "This is sample file a." - (TEMP_FOLDER+'b.txt').write "This is sample file b." - yield - end - end - - def test_install_missing_file - assert_raises(RuntimeError) do - Pathname.getwd.install 'non_existant_file' - end - end - - def test_install - with_temp_folder do - TARGET_FOLDER.install 'a.txt' - - assert((TARGET_FOLDER+'a.txt').exist?, "a.txt not installed.") - assert(!(TARGET_FOLDER+'b.txt').exist?, "b.txt was installed.") - end - end - - def test_install_list - with_temp_folder do - TARGET_FOLDER.install %w[a.txt b.txt] - - assert((TARGET_FOLDER+'a.txt').exist?, "a.txt not installed.") - assert((TARGET_FOLDER+'b.txt').exist?, "b.txt not installed.") - end - end - - def test_install_glob - with_temp_folder do - TARGET_FOLDER.install Dir['*.txt'] - - assert((TARGET_FOLDER+'a.txt').exist?, "a.txt not installed.") - assert((TARGET_FOLDER+'b.txt').exist?, "b.txt not installed.") - end - end - - def test_install_folder - with_temp_folder do - FileUtils.mkdir_p "bin" - system "mv *.txt bin" - - TARGET_FOLDER.install "bin" - - assert((TARGET_FOLDER+'bin/a.txt').exist?, "a.txt not installed.") - assert((TARGET_FOLDER+'bin/b.txt').exist?, "b.txt not installed.") - end - end - - def test_install_rename - with_temp_folder do - TARGET_FOLDER.install 'a.txt' => 'c.txt' - - assert((TARGET_FOLDER+'c.txt').exist?, "c.txt not installed.") - assert(!(TARGET_FOLDER+'a.txt').exist?, "a.txt was installed but not renamed.") - assert(!(TARGET_FOLDER+'b.txt').exist?, "b.txt was installed.") - end - end - - def test_install_rename_more - with_temp_folder do - TARGET_FOLDER.install({'a.txt' => 'c.txt', 'b.txt' => 'd.txt'}) - - assert((TARGET_FOLDER+'c.txt').exist?, "c.txt not installed.") - assert((TARGET_FOLDER+'d.txt').exist?, "d.txt not installed.") - assert(!(TARGET_FOLDER+'a.txt').exist?, "a.txt was installed but not renamed.") - assert(!(TARGET_FOLDER+'b.txt').exist?, "b.txt was installed but not renamed.") - end - end - - def test_install_rename_folder - with_temp_folder do - FileUtils.mkdir_p "bin" - system "mv *.txt bin" - - TARGET_FOLDER.install "bin" => "libexec" - - assert(!(TARGET_FOLDER+'bin').exist?, "bin was installed but not renamed.") - assert((TARGET_FOLDER+'libexec/a.txt').exist?, "a.txt not installed.") - assert((TARGET_FOLDER+'libexec/b.txt').exist?, "b.txt not installed.") - end - end - - # test_install_symlink - # test_install_relative_symlink - - def teardown - FileUtils.rm_rf TEMP_FOLDER - end -end