use std::fs;
use std::os::unix::fs::PermissionsExt;
use syncbox::sync::{ SyncParameters};
use syncbox::sync::sync_directories;
use tempfile::TempDir;
#[tokio::test]
async fn test_target_directory_not_writable() {
let temp_dir = TempDir::new().unwrap();
let source = temp_dir.path().join("source");
let target = temp_dir.path().join("target");
fs::create_dir(&source).unwrap();
fs::write(source.join("test.txt"), "hello").unwrap();
fs::create_dir(&target).unwrap();
let readonly_perm = fs::Permissions::from_mode(0o555); fs::set_permissions(&target, readonly_perm).unwrap();
let params = SyncParameters{
source,
target,
dry_run: false,
checksum: false,
excludes: vec![],
delete_extra: false,
delete_excludes: vec![],
detail: false,
};
let result = sync_directories(¶ms).await;
assert!(result.is_err());
let err = result.unwrap_err();
assert!(format!("{:?}", err).contains("Only readable directory"));
}