diff options
| author | Paul Buetow <paul@buetow.org> | 2025-02-28 23:35:40 +0200 |
|---|---|---|
| committer | Paul Buetow <paul@buetow.org> | 2025-02-28 23:35:40 +0200 |
| commit | 3b731cf56c8d8c8514a063c96d5d2a3428e42425 (patch) | |
| tree | 660b6068f918884d2e79fad07f529ee032a3a7c0 /test/lib | |
| parent | 90daa76feb3d3fd79992b97029cb526da0e6c417 (diff) | |
can copy recursively a directory
Diffstat (limited to 'test/lib')
| -rw-r--r-- | test/lib/dslkeywords/directory_test.rb | 68 |
1 files changed, 63 insertions, 5 deletions
diff --git a/test/lib/dslkeywords/directory_test.rb b/test/lib/dslkeywords/directory_test.rb index 9fd249f..3245603 100644 --- a/test/lib/dslkeywords/directory_test.rb +++ b/test/lib/dslkeywords/directory_test.rb @@ -6,9 +6,9 @@ require_relative '../../../lib/dsl' class RCMDirectoryTest < Minitest::Test DIR_PATH = './.directory_test.rcmtmp'.freeze - Minitest.after_run do - FileUtils.rm_r(DIR_PATH) if File.directory?(DIR_PATH) - end + # Minitest.after_run do + # FileUtils.rm_r(DIR_PATH) if File.directory?(DIR_PATH) + # end def test_create_directory configure_from_scratch do @@ -28,7 +28,6 @@ class RCMDirectoryTest < Minitest::Test directory delete do path DIR_PATH is absent - requires directory create end end refute File.directory?(DIR_PATH) @@ -42,11 +41,70 @@ class RCMDirectoryTest < Minitest::Test end directory purge do path DIR_PATH - requires touch create is purged without backup end end refute File.directory?(DIR_PATH) end + + def test_copy_directory_recursively + expected_files = {} + + configure_from_scratch do + 2.times do |i| + file "file_#{i + 10}_dest" do + path "#{DIR_PATH}/dest_dir/file_#{i + 10}.txt" + manage directory + expected_files["file_#{i + 10}.txt"] = "file_#{i + 10}_dest" + "file_#{i + 10}_dest" + end + file "file_#{i}_dest" do + path "#{DIR_PATH}/dest_dir/file_#{i}.txt" + manage directory + expected_files["file_#{i}.txt"] = "file_#{i}_dest" + "file_#{i}_dest" + end + file "file_#{i}_sub_dest" do + path "#{DIR_PATH}/dest_dir/sub/file_#{i}.txt" + expected_files["sub/file_#{i}.txt"] = "sub_file_#{i}_dest" + manage directory + "sub_file_#{i}_dest" + end + end + + 4.times do |i| + file "file_#{i}_source" do + path "#{DIR_PATH}/source_dir/file_#{i}.txt" + manage directory + expected_files["file_#{i}.txt"] = "file_#{i}_source" + "file_#{i}_source" + end + file "file_#{i}_sub_source" do + path "#{DIR_PATH}/source_dir/sub/file_#{i}.txt" + manage directory + expected_files["sub/file_#{i}.txt"] = "sub_file_#{i}_source" + "sub_file_#{i}_source" + end + end + + directory "#{DIR_PATH}/dest_dir" do + recursively + without backup + "#{DIR_PATH}/source_dir" + end + end + + expected_files.each do |file_path, content| + assert File.file?("#{DIR_PATH}/dest_dir/#{file_path}") + assert_equal content, File.read("#{DIR_PATH}/dest_dir/#{file_path}") + end + + actual_files = (Dir["#{DIR_PATH}/dest_dir/*"] + Dir["#{DIR_PATH}/dest_dir/*/*"]).select { File.file?(_1) } + actual_files.each do |file_path| + key = file_path.sub("#{DIR_PATH}/dest_dir/", '') + assert expected_files.key?(key) + assert_equal File.read(file_path), expected_files[key] + end + end end |
