summaryrefslogtreecommitdiff
path: root/test/lib
diff options
context:
space:
mode:
authorPaul Buetow <paul@buetow.org>2025-02-28 23:35:40 +0200
committerPaul Buetow <paul@buetow.org>2025-02-28 23:35:40 +0200
commit3b731cf56c8d8c8514a063c96d5d2a3428e42425 (patch)
tree660b6068f918884d2e79fad07f529ee032a3a7c0 /test/lib
parent90daa76feb3d3fd79992b97029cb526da0e6c417 (diff)
can copy recursively a directory
Diffstat (limited to 'test/lib')
-rw-r--r--test/lib/dslkeywords/directory_test.rb68
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