Skip to main content
Glama
8b-is
by 8b-is
test_project_keyword_search.rs1.92 kB
//! Test keyword-based project search functionality use std::path::PathBuf; #[test] fn test_keyword_search_finds_q8_caster() { // This test verifies that keyword search can find projects // Use case: Search for "cast" and "tv" should find q8-caster let test_path = PathBuf::from("/aidata/ayeverse"); if !test_path.exists() { eprintln!("Test path doesn't exist, skipping test"); return; } // Import the ProjectsFormatter use st::formatters::projects::ProjectsFormatter; let formatter = ProjectsFormatter::new(); let projects = formatter .scan_projects(&test_path) .expect("Failed to scan projects"); println!("Found {} total projects", projects.len()); // Filter by keywords: "cast" or "tv" let keywords = vec!["cast".to_string(), "tv".to_string()]; let matching_projects: Vec<_> = projects .iter() .filter(|proj| { let searchable = format!( "{} {} {} {}", proj.name.to_lowercase(), proj.summary.to_lowercase(), proj.dependencies.join(" ").to_lowercase(), proj.path.display().to_string().to_lowercase() ); keywords.iter().any(|kw| searchable.contains(kw)) }) .collect(); println!("\nProjects matching keywords {:?}:", keywords); for proj in &matching_projects { println!(" - {} ({})", proj.name, proj.path.display()); println!(" Summary: {}", proj.summary); } // Verify q8-caster was found let found_q8_caster = matching_projects.iter().any(|p| { p.name.contains("q8-caster") || p.path.display().to_string().contains("q8-caster") }); assert!( found_q8_caster, "Expected to find q8-caster project with keywords 'cast' or 'tv'" ); println!("\n✓ Test passed: Found q8-caster with keyword search!"); }

Latest Blog Posts

MCP directory API

We provide all the information about MCP servers via our MCP API.

curl -X GET 'https://glama.ai/api/mcp/v1/servers/8b-is/smart-tree'

If you have feedback or need assistance with the MCP directory API, please join our Discord server