#![cfg_attr(coverage_nightly, coverage(off))]
use crate::{ContentCache, MetadataCache, S3Client, TemplateServer, TemplateServerTrait};
use std::sync::Arc;
use tokio::sync::RwLock;
mod code_smell_comprehensive_tests;
mod clap_command_structure_tests;
mod clap_argument_parsing_tests;
mod clap_env_var_tests;
mod project_meta_integration_test;
mod kaizen_test_optimizations;
mod kaizen_reliability_patterns;
mod gitignore_respect_tests;
mod metric_accuracy_suite;
mod test_include_patterns;
mod cli_basic_tests;
mod cli_coverage_boost;
mod coverage_boost_services1;
mod coverage_boost_services2;
mod coverage_boost_services3;
mod coverage_boost_services4;
mod coverage_boost_complexity;
mod coverage_boost_enhanced_reporting;
mod coverage_boost_defect_analyzers;
mod coverage_boost_unified_ast;
mod coverage_boost_error;
mod coverage_boost_error2;
mod coverage_boost_onboarding;
mod coverage_boost_performance;
mod coverage_boost_perfection_score;
mod coverage_boost_churn;
mod coverage_boost_file_health;
mod coverage_boost_lint_hotspot;
mod coverage_boost_quality_gate;
#[cfg(feature = "demo")]
mod coverage_boost_demo;
mod coverage_boost_mermaid;
mod coverage_boost_enhanced_reporting2;
mod coverage_boost_qdd;
mod coverage_boost_coverage_improvement;
mod coverage_boost_dead_code;
mod coverage_boost_comprehensive;
mod coverage_boost_enforce;
mod coverage_boost_unified_ast2;
mod coverage_boost_unified_ast3;
mod coverage_boost_maintenance;
mod coverage_boost_refactor;
mod coverage_boost_normalized_score;
mod coverage_boost_defect_report;
mod coverage_boost_tdg;
mod coverage_boost_debug_analysis;
mod coverage_boost_brick_score;
mod coverage_boost_ml_quality;
mod coverage_boost_metric_trends;
mod coverage_boost_ranking;
mod coverage_boost_polyglot;
mod coverage_boost_big_o;
mod coverage_boost_tdg_calculator;
mod coverage_boost_defect_report_svc;
mod coverage_boost_language_analyzer;
mod coverage_boost_defect_report_svc2;
mod coverage_boost_coverage_improvement2;
mod coverage_boost_enhanced_reporting3;
mod coverage_boost_falsification;
mod coverage_boost_analyzer_formatting;
mod coverage_boost_check_handlers;
mod coverage_boost_lint_hotspot_handlers;
mod coverage_boost_ticket_handlers;
mod coverage_boost_dead_code_pure;
mod coverage_boost_configuration_service;
mod coverage_boost_dag_builder;
mod coverage_boost_signal_collector;
mod coverage_boost_doc_validator;
#[cfg(feature = "mutation-testing")]
mod coverage_boost_mutation;
mod coverage_boost_comply_cb_detect;
mod coverage_boost_provability_handler;
mod coverage_boost_proof_annotations_handler;
mod coverage_boost_analyze_defects_handler;
mod coverage_boost_chunker;
mod coverage_boost_ast_strategies;
mod coverage_boost_similarity;
mod coverage_boost_facades;
mod coverage_boost_language_analyzer2;
mod coverage_boost_cli_enums;
#[cfg(feature = "unified-protocol")]
mod protocol_service_tests;
mod diagnose_tests;
#[tokio::test]
async fn test_template_server_new() {
let server = TemplateServer::new().await;
assert!(server.is_ok());
let server = server.unwrap();
assert_eq!(server.bucket_name, "dummy");
}
#[tokio::test]
async fn test_template_server_trait_implementation() {
let server = TemplateServer::new().await.unwrap();
let renderer = server.get_renderer();
assert!(std::ptr::eq(renderer, &server.renderer));
assert!(server.get_metadata_cache().is_some());
assert!(server.get_content_cache().is_some());
assert!(server.get_s3_client().is_some());
assert_eq!(server.get_bucket_name(), Some("dummy"));
}
#[tokio::test]
async fn test_template_server_deprecated_methods() {
let server = TemplateServer::new().await.unwrap();
let result = server.get_template_metadata("test").await;
assert!(result.is_err());
assert!(result.unwrap_err().to_string().contains("deprecated"));
let result = server.get_template_content("test").await;
assert!(result.is_err());
assert!(result.unwrap_err().to_string().contains("deprecated"));
let result = TemplateServerTrait::list_templates(&server, "test").await;
assert!(result.is_err());
assert!(result.unwrap_err().to_string().contains("deprecated"));
}
#[tokio::test]
async fn test_warm_cache() {
let server = TemplateServer::new().await.unwrap();
let result = server.warm_cache().await;
assert!(result.is_ok());
}
#[tokio::test]
async fn test_template_server_cache_initialization() {
let server = TemplateServer::new().await.unwrap();
let metadata_cache = server.metadata_cache.read().await;
assert_eq!(metadata_cache.len(), 0);
drop(metadata_cache);
let content_cache = server.content_cache.read().await;
assert_eq!(content_cache.len(), 0);
}
#[tokio::test]
async fn test_template_server_cache_sizes() {
let server = TemplateServer::new().await.unwrap();
let metadata_cache = server.metadata_cache.read().await;
assert!(metadata_cache.cap().get() >= 512);
drop(metadata_cache);
let content_cache = server.content_cache.read().await;
assert!(content_cache.cap().get() >= 1024);
}
#[tokio::test]
async fn test_warm_cache_templates() {
let server = TemplateServer::new().await.unwrap();
let result = server.warm_cache().await;
assert!(result.is_ok());
let metadata_cache = server.metadata_cache.read().await;
assert_eq!(metadata_cache.len(), 0);
}
#[tokio::test]
async fn test_template_server_trait_via_methods() {
let server = TemplateServer::new().await.unwrap();
let result = TemplateServerTrait::get_template_metadata(&server, "test").await;
assert!(result.is_err());
let result = TemplateServerTrait::get_template_content(&server, "test").await;
assert!(result.is_err());
let _ = TemplateServerTrait::get_renderer(&server);
let _ = TemplateServerTrait::get_metadata_cache(&server);
let _ = TemplateServerTrait::get_content_cache(&server);
let _ = TemplateServerTrait::get_s3_client(&server);
let _ = TemplateServerTrait::get_bucket_name(&server);
}
#[test]
fn test_type_aliases() {
use lru::LruCache;
use std::num::NonZeroUsize;
let metadata_cache: MetadataCache =
Arc::new(RwLock::new(LruCache::new(NonZeroUsize::new(10).unwrap())));
let content_cache: ContentCache =
Arc::new(RwLock::new(LruCache::new(NonZeroUsize::new(10).unwrap())));
assert!(Arc::strong_count(&metadata_cache) == 1);
assert!(Arc::strong_count(&content_cache) == 1);
}
#[test]
fn test_s3_client_instantiation() {
let _client = S3Client;
}
#[tokio::test]
async fn test_run_mcp_server_basic() {
use crate::run_mcp_server;
use crate::stateless_server::StatelessTemplateServer;
use std::sync::Arc;
let server = Arc::new(StatelessTemplateServer::new().unwrap());
std::thread::spawn(move || {
let _result = tokio::runtime::Runtime::new()
.unwrap()
.block_on(run_mcp_server(server));
});
tokio::time::sleep(tokio::time::Duration::from_millis(100)).await;
}
#[test]
fn test_public_exports() {
use crate::{ParameterSpec, ParameterType, TemplateError};
let _param_type = ParameterType::String;
let _param_spec = ParameterSpec {
name: "test".to_string(),
description: "test".to_string(),
param_type: ParameterType::String,
required: true,
default_value: None,
validation_pattern: None,
};
let _error = TemplateError::InvalidUri {
uri: "test".to_string(),
};
}
mod additional_coverage;
mod cache;