- Remove unused thiserror dependency from Cargo.toml - Remove unused imports (Text, Tabs, Widget, Event, KeyCode, KeyEventKind) from tui/mod.rs - Remove unused imports (File, Write) from export/mod.rs - Remove unused pub use ComplexityDistribution from core/analyzer.rs
114 lines
2.9 KiB
Rust
114 lines
2.9 KiB
Rust
use std::path::PathBuf;
|
|
|
|
use techdebt_tracker_cli::core::language::{Language, LanguageParser};
|
|
use techdebt_tracker_cli::models::{Config, PatternConfig, Priority};
|
|
|
|
#[test]
|
|
fn test_language_from_path_js() {
|
|
let path = PathBuf::from("test.js");
|
|
assert_eq!(Language::from_path(&path), Some(Language::JavaScript));
|
|
}
|
|
|
|
#[test]
|
|
fn test_language_from_path_ts() {
|
|
let path = PathBuf::from("test.ts");
|
|
assert_eq!(Language::from_path(&path), Some(Language::TypeScript));
|
|
}
|
|
|
|
#[test]
|
|
fn test_language_from_path_py() {
|
|
let path = PathBuf::from("test.py");
|
|
assert_eq!(Language::from_path(&path), Some(Language::Python));
|
|
}
|
|
|
|
#[test]
|
|
fn test_language_from_path_rs() {
|
|
let path = PathBuf::from("test.rs");
|
|
assert_eq!(Language::from_path(&path), Some(Language::Rust));
|
|
}
|
|
|
|
#[test]
|
|
fn test_language_from_path_unknown() {
|
|
let path = PathBuf::from("test.xyz");
|
|
assert_eq!(Language::from_path(&path), None);
|
|
}
|
|
|
|
#[test]
|
|
fn test_language_single_line_comment() {
|
|
assert_eq!(Language::JavaScript.single_line_comment(), Some("//"));
|
|
assert_eq!(Language::Python.single_line_comment(), Some("#"));
|
|
assert_eq!(Language::Rust.single_line_comment(), Some("//"));
|
|
assert_eq!(Language::Unknown.single_line_comment(), None);
|
|
}
|
|
|
|
#[test]
|
|
fn test_language_as_str() {
|
|
assert_eq!(Language::JavaScript.as_str(), "JavaScript");
|
|
assert_eq!(Language::Python.as_str(), "Python");
|
|
assert_eq!(Language::Rust.as_str(), "Rust");
|
|
}
|
|
|
|
#[test]
|
|
fn test_javascript_comment_parsing() {
|
|
let content = r#"
|
|
function test() {
|
|
// TODO: Implement this
|
|
return true;
|
|
}
|
|
"#;
|
|
|
|
let parser = LanguageParser::new(Language::JavaScript);
|
|
let patterns = vec![PatternConfig {
|
|
keyword: "TODO".to_string(),
|
|
priority: Priority::Medium,
|
|
regex: false,
|
|
}];
|
|
|
|
let items = parser.parse(content, &PathBuf::from("test.js"), &patterns).unwrap();
|
|
|
|
assert!(!items.is_empty());
|
|
assert!(items.iter().any(|i| i.keyword == "TODO"));
|
|
}
|
|
|
|
#[test]
|
|
fn test_python_comment_parsing() {
|
|
let content = r#"
|
|
def test():
|
|
# FIXME: This is broken
|
|
return True
|
|
"#;
|
|
|
|
let parser = LanguageParser::new(Language::Python);
|
|
let patterns = vec![PatternConfig {
|
|
keyword: "FIXME".to_string(),
|
|
priority: Priority::Critical,
|
|
regex: false,
|
|
}];
|
|
|
|
let items = parser.parse(content, &PathBuf::from("test.py"), &patterns).unwrap();
|
|
|
|
assert!(!items.is_empty());
|
|
assert!(items.iter().any(|i| i.keyword == "FIXME"));
|
|
}
|
|
|
|
#[test]
|
|
fn test_multiline_comment_parsing() {
|
|
let content = r#"
|
|
/*
|
|
* TODO: Multi-line comment
|
|
* Need to fix this later
|
|
*/
|
|
"#;
|
|
|
|
let parser = LanguageParser::new(Language::JavaScript);
|
|
let patterns = vec![PatternConfig {
|
|
keyword: "TODO".to_string(),
|
|
priority: Priority::Medium,
|
|
regex: false,
|
|
}];
|
|
|
|
let items = parser.parse(content, &PathBuf::from("test.js"), &patterns).unwrap();
|
|
|
|
assert!(!items.is_empty());
|
|
}
|