test createemptysrcdirs
# Test the --create-empty-src-dirs logic.
# Should behave the same way as rclone sync.
# Without this flag, empty directories created/deleted on one side are NOT created/deleted on the other side
# With this flag, empty directories created/deleted on one side are created/deleted on the other side; the result should be an exact mirror.
#
# Placeholders are necessary to ensure that git does not lose our empty folders
# After the initial setup sync:
#  1. Create an empty dir on Path1 by creating subdir/placeholder.txt and then deleting the placeholder
#  2. Run bisync without --create-empty-src-dirs
#  3. Confirm the subdir exists only on Path1 and not Path2
#  4. Run bisync WITH --create-empty-src-dirs
#  5. Confirm the subdir exists on both paths
#  6. Delete the empty dir on Path1 using purge-children (and also add files so the path isn't empty)
#  7. Run bisync without --create-empty-src-dirs
#  8. Confirm the subdir exists only on Path2 and not Path1
#  9. Reset, do the delete again, and run bisync WITH --create-empty-src-dirs
#  10. Confirm the subdir has been removed on both paths

test initial bisync
touch-glob 2001-01-02 {datadir/} placeholder.txt
copy-as {datadir/}placeholder.txt {path1/} file1.txt
copy-as {datadir/}placeholder.txt {path1/} file1.copy1.txt
copy-as {datadir/}placeholder.txt {path1/} file1.copy2.txt
copy-as {datadir/}placeholder.txt {path1/} file1.copy3.txt
copy-as {datadir/}placeholder.txt {path1/} file1.copy4.txt
copy-as {datadir/}placeholder.txt {path1/} file1.copy5.txt
bisync resync

test 1. Create an empty dir on Path1 by creating subdir/placeholder.txt and then deleting the placeholder
copy-as {datadir/}placeholder.txt {path1/} subdir/placeholder.txt
touch-glob 2001-01-02 {path1/} subdir
delete-file {path1/}subdir/placeholder.txt

test 2. Run bisync without --create-empty-src-dirs
bisync

test 3. Confirm the subdir exists only on Path1 and not Path2
list-dirs {path1/}
list-dirs {path2/}

test 4.Run bisync WITH --create-empty-src-dirs
bisync create-empty-src-dirs

test 5. Confirm the subdir exists on both paths
list-dirs {path1/}
list-dirs {path2/}

test 6. Delete the empty dir on Path1 using purge-children (and also add files so the path isn't empty)
purge-children {path1/}
copy-as {datadir/}placeholder.txt {path1/} file1.txt
copy-as {datadir/}placeholder.txt {path1/} file1.copy1.txt
copy-as {datadir/}placeholder.txt {path1/} file1.copy2.txt
copy-as {datadir/}placeholder.txt {path1/} file1.copy3.txt
copy-as {datadir/}placeholder.txt {path1/} file1.copy4.txt
copy-as {datadir/}placeholder.txt {path1/} file1.copy5.txt

test 7. Run bisync without --create-empty-src-dirs
bisync

test 8. Confirm the subdir exists only on Path2 and not Path1
list-dirs {path1/}
list-dirs {path2/}

test 9. Reset, do the delete again, and run bisync WITH --create-empty-src-dirs
bisync resync create-empty-src-dirs
list-dirs {path1/}
list-dirs {path2/}

purge-children {path1/}
copy-as {datadir/}placeholder.txt {path1/} file1.txt
copy-as {datadir/}placeholder.txt {path1/} file1.copy1.txt
copy-as {datadir/}placeholder.txt {path1/} file1.copy2.txt
copy-as {datadir/}placeholder.txt {path1/} file1.copy3.txt
copy-as {datadir/}placeholder.txt {path1/} file1.copy4.txt
copy-as {datadir/}placeholder.txt {path1/} file1.copy5.txt
list-dirs {path1/}
list-dirs {path2/}

bisync create-empty-src-dirs

test 10. Confirm the subdir has been removed on both paths
list-dirs {path1/}
list-dirs {path2/}

test 11. bisync again (because if we leave subdir in listings, test will fail due to mismatched modtime)
bisync create-empty-src-dirs