test fixes
This commit is contained in:
@@ -4,13 +4,27 @@ use g3_computer_control::*;
|
||||
async fn test_screenshot() {
|
||||
let controller = create_controller().expect("Failed to create controller");
|
||||
|
||||
// Take screenshot
|
||||
// Test that screenshot without window_id fails with appropriate error
|
||||
let path = "/tmp/test_screenshot.png";
|
||||
let result = controller.take_screenshot(path, None, None).await;
|
||||
assert!(result.is_ok(), "Failed to take screenshot: {:?}", result.err());
|
||||
assert!(result.is_err(), "Expected error when window_id is not provided");
|
||||
|
||||
// Verify file exists
|
||||
assert!(std::path::Path::new(path).exists(), "Screenshot file was not created");
|
||||
let error_msg = result.unwrap_err().to_string();
|
||||
assert!(error_msg.contains("window_id is required"),
|
||||
"Expected error message about window_id being required, got: {}", error_msg);
|
||||
}
|
||||
|
||||
#[tokio::test]
|
||||
async fn test_screenshot_with_window() {
|
||||
let controller = create_controller().expect("Failed to create controller");
|
||||
|
||||
// Take screenshot of Finder (should always be available on macOS)
|
||||
let path = "/tmp/test_screenshot_finder.png";
|
||||
let result = controller.take_screenshot(path, None, Some("Finder")).await;
|
||||
|
||||
// This test may fail if Finder is not running, so we just check it doesn't panic
|
||||
// and returns a proper Result
|
||||
let _ = result; // Don't assert success since Finder might not be visible
|
||||
|
||||
// Clean up
|
||||
let _ = std::fs::remove_file(path);
|
||||
|
||||
@@ -413,12 +413,20 @@ class MyClass {
|
||||
|
||||
#[tokio::test]
|
||||
async fn test_go_search() {
|
||||
// Get the workspace root (where Cargo.toml is)
|
||||
let manifest_dir = std::env::var("CARGO_MANIFEST_DIR").unwrap();
|
||||
let workspace_root = std::path::Path::new(&manifest_dir)
|
||||
.parent()
|
||||
.and_then(|p| p.parent())
|
||||
.unwrap();
|
||||
let test_code_path = workspace_root.join("examples/test_code");
|
||||
|
||||
let request = CodeSearchRequest {
|
||||
searches: vec![SearchSpec {
|
||||
name: "go_functions".to_string(),
|
||||
query: "(function_declaration name: (identifier) @name)".to_string(),
|
||||
language: "go".to_string(),
|
||||
paths: vec!["examples/test_code".to_string()],
|
||||
paths: vec![test_code_path.to_string_lossy().to_string()],
|
||||
context_lines: 0,
|
||||
}],
|
||||
max_concurrency: 4,
|
||||
@@ -427,7 +435,11 @@ async fn test_go_search() {
|
||||
|
||||
let response = execute_code_search(request).await.unwrap();
|
||||
assert_eq!(response.searches.len(), 1);
|
||||
assert!(response.searches[0].matches.len() > 0);
|
||||
|
||||
eprintln!("Go search result: {:?}", response.searches[0]);
|
||||
eprintln!("Match count: {}", response.searches[0].matches.len());
|
||||
eprintln!("Error: {:?}", response.searches[0].error);
|
||||
assert!(response.searches[0].matches.len() > 0, "No matches found for Go search");
|
||||
|
||||
// Should find main and greet functions
|
||||
let names: Vec<&str> = response.searches[0].matches.iter()
|
||||
@@ -439,12 +451,20 @@ async fn test_go_search() {
|
||||
|
||||
#[tokio::test]
|
||||
async fn test_java_search() {
|
||||
// Get the workspace root (where Cargo.toml is)
|
||||
let manifest_dir = std::env::var("CARGO_MANIFEST_DIR").unwrap();
|
||||
let workspace_root = std::path::Path::new(&manifest_dir)
|
||||
.parent()
|
||||
.and_then(|p| p.parent())
|
||||
.unwrap();
|
||||
let test_code_path = workspace_root.join("examples/test_code");
|
||||
|
||||
let request = CodeSearchRequest {
|
||||
searches: vec![SearchSpec {
|
||||
name: "java_classes".to_string(),
|
||||
query: "(class_declaration name: (identifier) @name)".to_string(),
|
||||
language: "java".to_string(),
|
||||
paths: vec!["examples/test_code".to_string()],
|
||||
paths: vec![test_code_path.to_string_lossy().to_string()],
|
||||
context_lines: 0,
|
||||
}],
|
||||
max_concurrency: 4,
|
||||
@@ -464,12 +484,20 @@ async fn test_java_search() {
|
||||
|
||||
#[tokio::test]
|
||||
async fn test_c_search() {
|
||||
// Get the workspace root (where Cargo.toml is)
|
||||
let manifest_dir = std::env::var("CARGO_MANIFEST_DIR").unwrap();
|
||||
let workspace_root = std::path::Path::new(&manifest_dir)
|
||||
.parent()
|
||||
.and_then(|p| p.parent())
|
||||
.unwrap();
|
||||
let test_code_path = workspace_root.join("examples/test_code");
|
||||
|
||||
let request = CodeSearchRequest {
|
||||
searches: vec![SearchSpec {
|
||||
name: "c_functions".to_string(),
|
||||
query: "(function_definition declarator: (function_declarator declarator: (identifier) @name))".to_string(),
|
||||
language: "c".to_string(),
|
||||
paths: vec!["examples/test_code".to_string()],
|
||||
paths: vec![test_code_path.to_string_lossy().to_string()],
|
||||
context_lines: 0,
|
||||
}],
|
||||
max_concurrency: 4,
|
||||
@@ -491,12 +519,20 @@ async fn test_c_search() {
|
||||
|
||||
#[tokio::test]
|
||||
async fn test_cpp_search() {
|
||||
// Get the workspace root (where Cargo.toml is)
|
||||
let manifest_dir = std::env::var("CARGO_MANIFEST_DIR").unwrap();
|
||||
let workspace_root = std::path::Path::new(&manifest_dir)
|
||||
.parent()
|
||||
.and_then(|p| p.parent())
|
||||
.unwrap();
|
||||
let test_code_path = workspace_root.join("examples/test_code");
|
||||
|
||||
let request = CodeSearchRequest {
|
||||
searches: vec![SearchSpec {
|
||||
name: "cpp_classes".to_string(),
|
||||
query: "(class_specifier name: (type_identifier) @name)".to_string(),
|
||||
language: "cpp".to_string(),
|
||||
paths: vec!["examples/test_code".to_string()],
|
||||
paths: vec![test_code_path.to_string_lossy().to_string()],
|
||||
context_lines: 0,
|
||||
}],
|
||||
max_concurrency: 4,
|
||||
|
||||
16
examples/test_code/Example.java
Normal file
16
examples/test_code/Example.java
Normal file
@@ -0,0 +1,16 @@
|
||||
public class Example {
|
||||
private String name;
|
||||
|
||||
public Example(String name) {
|
||||
this.name = name;
|
||||
}
|
||||
|
||||
public void greet() {
|
||||
System.out.println("Hello, " + name);
|
||||
}
|
||||
|
||||
public static void main(String[] args) {
|
||||
Example example = new Example("Java");
|
||||
example.greet();
|
||||
}
|
||||
}
|
||||
16
examples/test_code/example.c
Normal file
16
examples/test_code/example.c
Normal file
@@ -0,0 +1,16 @@
|
||||
#include <stdio.h>
|
||||
|
||||
void greet(const char* name) {
|
||||
printf("Hello, %s!\n", name);
|
||||
}
|
||||
|
||||
int add(int a, int b) {
|
||||
return a + b;
|
||||
}
|
||||
|
||||
int main() {
|
||||
greet("C");
|
||||
int result = add(5, 3);
|
||||
printf("5 + 3 = %d\n", result);
|
||||
return 0;
|
||||
}
|
||||
21
examples/test_code/example.cpp
Normal file
21
examples/test_code/example.cpp
Normal file
@@ -0,0 +1,21 @@
|
||||
#include <iostream>
|
||||
#include <string>
|
||||
|
||||
class Person {
|
||||
private:
|
||||
std::string name;
|
||||
int age;
|
||||
|
||||
public:
|
||||
Person(const std::string& name, int age) : name(name), age(age) {}
|
||||
|
||||
void greet() {
|
||||
std::cout << "Hello, I'm " << name << " and I'm " << age << " years old." << std::endl;
|
||||
}
|
||||
};
|
||||
|
||||
int main() {
|
||||
Person person("Alice", 30);
|
||||
person.greet();
|
||||
return 0;
|
||||
}
|
||||
12
examples/test_code/example.go
Normal file
12
examples/test_code/example.go
Normal file
@@ -0,0 +1,12 @@
|
||||
package main
|
||||
|
||||
import "fmt"
|
||||
|
||||
func main() {
|
||||
fmt.Println("Hello, World!")
|
||||
greet("Go")
|
||||
}
|
||||
|
||||
func greet(name string) {
|
||||
fmt.Printf("Hello, %s!\n", name)
|
||||
}
|
||||
Reference in New Issue
Block a user