$:.unshift File.join(File.dirname(__FILE__),"..","lib") $:.unshift File.join(File.dirname(__FILE__)) require 'minitest/autorun' require 'rim/file_helper' require 'fileutils' require 'test_helper' class FileHelperTest < Minitest::Test include FileUtils include TestHelper def setup @test_dir = empty_test_dir("file_helper_test") end def teardown remove_test_dirs end def test_find_matching_relative_files create_test_file(".", "aaa") create_test_file(".", "abc") create_test_file(".", "bbb") create_test_file("f1", "aaa") create_test_file("f1", "ccc") create_test_file("f2", "ccc") create_test_file("f2", "ddd") files = RIM::FileHelper.find_matching_files(@test_dir, false) assert files[0] == "aaa" assert files[1] == "abc" assert files[2] == "bbb" assert files[3] == "f1" assert files[4] == "f1/aaa" assert files[5] == "f1/ccc" assert files[6] == "f2" assert files[7] == "f2/ccc" assert files[8] == "f2/ddd" end def test_find_matching_absolute_files create_test_file(".", "aaa") create_test_file(".", "abc") create_test_file(".", "bbb") create_test_file("f1", "aaa") create_test_file("f1", "ccc") create_test_file("f2", "ccc") create_test_file("f2", "ddd") files = RIM::FileHelper.find_matching_files(@test_dir, true) assert files[0] == File.join(@test_dir, "aaa") assert files[1] == File.join(@test_dir, "abc") assert files[2] == File.join(@test_dir, "bbb") assert files[3] == File.join(@test_dir, "f1") assert files[4] == File.join(@test_dir, "f1/aaa") assert files[5] == File.join(@test_dir, "f1/ccc") assert files[6] == File.join(@test_dir, "f2") assert files[7] == File.join(@test_dir, "f2/ccc") assert files[8] == File.join(@test_dir, "f2/ddd") end def test_find_matching_relative_files_with_patterns create_test_file(".", "aaa") create_test_file(".", "abc") create_test_file(".", "bbb") create_test_file("f1", "aaa") create_test_file("f1", "ccc") create_test_file("f2", "ccc") create_test_file("f2", "ddd") files = RIM::FileHelper.find_matching_files(@test_dir, false, ["**/a*", "f2/ccc"]) assert files[0] == "aaa" assert files[1] == "abc" assert files[2] == "f1/aaa" assert files[3] == "f2/ccc" end def test_find_matching_absolute_files_with_patterns create_test_file(".", "aaa") create_test_file(".", "abc") create_test_file(".", "bbb") create_test_file("f1", "aaa") create_test_file("f1", "ccc") create_test_file("f2", "ccc") create_test_file("f2", "ddd") files = RIM::FileHelper.find_matching_files(@test_dir, true, ["**/a*", "f2/ccc"]) assert files[0] == File.join(@test_dir, "aaa") assert files[1] == File.join(@test_dir, "abc") assert files[2] == File.join(@test_dir, "f1/aaa") assert files[3] == File.join(@test_dir, "f2/ccc") end def test_remove_empty_dirs create_test_file(".", "a") create_test_file("f1", "ab") create_test_file("f1/f1") create_test_file("f1/f1/f1") create_test_file("f1/f1/f2") RIM::FileHelper.remove_empty_dirs(@test_dir) files = RIM::FileHelper.find_matching_files(@test_dir, false) assert files[0] = "a" assert files[1] = "f1" assert files[2] = "f1/ab" assert !files[3] end def test_remove_empty_dirs_with_avoid create_test_file(".", "a") create_test_file("f1", "ab") create_test_file("f1/f1") create_test_file("f1/f1/f1") create_test_file("f1/f1/f2") RIM::FileHelper.remove_empty_dirs(@test_dir, File.join(@test_dir, "f1/f1")) files = RIM::FileHelper.find_matching_files(@test_dir, false) assert files[0] = "a" assert files[1] = "f1" assert files[2] = "f1/ab" assert files[2] = "f1/f1" assert !files[4] end private def create_test_file(dir, name = nil) abs_dir = File.join(@test_dir, dir) FileUtils.mkdir_p(abs_dir) if name File.open(File.join(abs_dir, name), "w") do |f| f.write("Content of #{name}\n") end end end end