- Added documentation for the Git module's test scripts, including test structure, running instructions, and details of each test. - Added links to Git module tests in the main Rhai documentation. - Improved overall structure and clarity of the Rhai documentation.
77 lines
2.9 KiB
Plaintext
77 lines
2.9 KiB
Plaintext
// 01_git_basic.rhai
|
|
// Tests for basic Git operations in the Git module
|
|
|
|
// Custom assert function
|
|
fn assert_true(condition, message) {
|
|
if !condition {
|
|
print(`ASSERTION FAILED: ${message}`);
|
|
throw message;
|
|
}
|
|
}
|
|
|
|
// Create a temporary directory for Git operations
|
|
let test_dir = "rhai_test_git";
|
|
mkdir(test_dir);
|
|
print(`Created test directory: ${test_dir}`);
|
|
|
|
// Test GitTree constructor
|
|
print("Testing GitTree constructor...");
|
|
let git_tree = git_tree_new(test_dir);
|
|
print("✓ GitTree created successfully");
|
|
|
|
// Test GitTree.list() with empty directory
|
|
print("Testing GitTree.list() with empty directory...");
|
|
let repos = git_tree.list();
|
|
assert_true(repos.len() == 0, "Expected empty list of repositories");
|
|
print(`✓ GitTree.list(): Found ${repos.len()} repositories (expected 0)`);
|
|
|
|
// Test GitTree.find() with empty directory
|
|
print("Testing GitTree.find() with empty directory...");
|
|
let found_repos = git_tree.find("*");
|
|
assert_true(found_repos.len() == 0, "Expected empty list of repositories");
|
|
print(`✓ GitTree.find(): Found ${found_repos.len()} repositories (expected 0)`);
|
|
|
|
// Test GitTree.get() with a URL to clone a repository
|
|
// We'll use a small, public repository for testing
|
|
print("Testing GitTree.get() with URL...");
|
|
let repo_url = "https://github.com/rhaiscript/playground.git";
|
|
let repo = git_tree.get(repo_url);
|
|
print(`✓ GitTree.get(): Repository cloned successfully to ${repo.path()}`);
|
|
|
|
// Test GitRepo.path()
|
|
print("Testing GitRepo.path()...");
|
|
let repo_path = repo.path();
|
|
assert_true(repo_path.contains(test_dir), "Repository path should contain test directory");
|
|
print(`✓ GitRepo.path(): ${repo_path}`);
|
|
|
|
// Test GitRepo.has_changes()
|
|
print("Testing GitRepo.has_changes()...");
|
|
let has_changes = repo.has_changes();
|
|
print(`✓ GitRepo.has_changes(): ${has_changes}`);
|
|
|
|
// Test GitTree.list() after cloning
|
|
print("Testing GitTree.list() after cloning...");
|
|
let repos_after_clone = git_tree.list();
|
|
assert_true(repos_after_clone.len() > 0, "Expected non-empty list of repositories");
|
|
print(`✓ GitTree.list(): Found ${repos_after_clone.len()} repositories`);
|
|
|
|
// Test GitTree.find() after cloning
|
|
print("Testing GitTree.find() after cloning...");
|
|
let found_repos_after_clone = git_tree.find("*");
|
|
assert_true(found_repos_after_clone.len() > 0, "Expected non-empty list of repositories");
|
|
print(`✓ GitTree.find(): Found ${found_repos_after_clone.len()} repositories`);
|
|
|
|
// Test GitTree.get() with a path to an existing repository
|
|
print("Testing GitTree.get() with path...");
|
|
let repo_name = repos_after_clone[0];
|
|
let repo_by_path = git_tree.get(repo_name);
|
|
print(`✓ GitTree.get(): Repository opened successfully from ${repo_by_path.path()}`);
|
|
|
|
// Clean up
|
|
print("Cleaning up...");
|
|
delete(test_dir);
|
|
assert_true(!exist(test_dir), "Directory deletion failed");
|
|
print(`✓ Cleanup: Directory ${test_dir} removed`);
|
|
|
|
print("All basic Git tests completed successfully!");
|