112 lines
3.7 KiB
Plaintext
112 lines
3.7 KiB
Plaintext
// 01_file_operations.rhai
|
|
// Tests for file system operations in the OS module
|
|
|
|
// Custom assert function
|
|
fn assert_true(condition, message) {
|
|
if !condition {
|
|
print(`ASSERTION FAILED: ${message}`);
|
|
throw message;
|
|
}
|
|
}
|
|
|
|
// Create a test directory structure
|
|
let test_dir = "rhai_test_fs";
|
|
let sub_dir = test_dir + "/subdir";
|
|
|
|
// Test mkdir function
|
|
print("Testing mkdir...");
|
|
let mkdir_result = mkdir(test_dir);
|
|
assert_true(exist(test_dir), "Directory creation failed");
|
|
print(`✓ mkdir: ${mkdir_result}`);
|
|
|
|
// Test nested directory creation
|
|
let nested_result = mkdir(sub_dir);
|
|
assert_true(exist(sub_dir), "Nested directory creation failed");
|
|
print(`✓ mkdir (nested): ${nested_result}`);
|
|
|
|
// Test file_write function
|
|
let test_file = test_dir + "/test.txt";
|
|
let file_content = "This is a test file created by Rhai test script.";
|
|
let write_result = file_write(test_file, file_content);
|
|
assert_true(exist(test_file), "File creation failed");
|
|
print(`✓ file_write: ${write_result}`);
|
|
|
|
// Test file_read function
|
|
let read_content = file_read(test_file);
|
|
assert_true(read_content == file_content, "File content doesn't match");
|
|
print(`✓ file_read: Content matches`);
|
|
|
|
// Test file_size function
|
|
let size = file_size(test_file);
|
|
assert_true(size > 0, "File size should be greater than 0");
|
|
print(`✓ file_size: ${size} bytes`);
|
|
|
|
// Test file_write_append function
|
|
let append_content = "\nThis is appended content.";
|
|
let append_result = file_write_append(test_file, append_content);
|
|
let new_content = file_read(test_file);
|
|
assert_true(new_content == file_content + append_content, "Appended content doesn't match");
|
|
print(`✓ file_write_append: ${append_result}`);
|
|
|
|
// Test copy function
|
|
let copied_file = test_dir + "/copied.txt";
|
|
let copy_result = copy(test_file, copied_file);
|
|
assert_true(exist(copied_file), "File copy failed");
|
|
print(`✓ copy: ${copy_result}`);
|
|
|
|
// Test mv function
|
|
let moved_file = test_dir + "/moved.txt";
|
|
let mv_result = mv(copied_file, moved_file);
|
|
assert_true(exist(moved_file), "File move failed");
|
|
assert_true(!exist(copied_file), "Source file still exists after move");
|
|
print(`✓ mv: ${mv_result}`);
|
|
|
|
// Test find_file function
|
|
let found_file = find_file(test_dir, "*.txt");
|
|
assert_true(found_file.contains("test.txt") || found_file.contains("moved.txt"), "find_file failed");
|
|
print(`✓ find_file: ${found_file}`);
|
|
|
|
// Test find_files function
|
|
let found_files = find_files(test_dir, "*.txt");
|
|
assert_true(found_files.len() == 2, "find_files should find 2 files");
|
|
print(`✓ find_files: Found ${found_files.len()} files`);
|
|
|
|
// Test find_dir function
|
|
let found_dir = find_dir(test_dir, "sub*");
|
|
assert_true(found_dir.contains("subdir"), "find_dir failed");
|
|
print(`✓ find_dir: ${found_dir}`);
|
|
|
|
// Test find_dirs function
|
|
let found_dirs = find_dirs(test_dir, "sub*");
|
|
assert_true(found_dirs.len() == 1, "find_dirs should find 1 directory");
|
|
print(`✓ find_dirs: Found ${found_dirs.len()} directories`);
|
|
|
|
// Test chdir function
|
|
// Save current directory path before changing
|
|
let chdir_result = chdir(test_dir);
|
|
print(`✓ chdir: ${chdir_result}`);
|
|
|
|
// Change back to parent directory
|
|
chdir("..");
|
|
|
|
// Test rsync function (if available)
|
|
let rsync_dir = test_dir + "/rsync_dest";
|
|
mkdir(rsync_dir);
|
|
let rsync_result = rsync(test_dir, rsync_dir);
|
|
print(`✓ rsync: ${rsync_result}`);
|
|
|
|
// Test delete function
|
|
let delete_file_result = delete(test_file);
|
|
assert_true(!exist(test_file), "File deletion failed");
|
|
print(`✓ delete (file): ${delete_file_result}`);
|
|
|
|
// Clean up
|
|
delete(moved_file);
|
|
delete(sub_dir);
|
|
delete(rsync_dir);
|
|
delete(test_dir);
|
|
assert_true(!exist(test_dir), "Directory deletion failed");
|
|
print(`✓ delete (directory): Directory cleaned up`);
|
|
|
|
print("All file system tests completed successfully!");
|