Add tests for first_keyword and config tweaks
Add tests for FIRST keyword, cover edge cases and tweak config.
This commit is contained in:
parent
51a2141a00
commit
9682676b35
2 changed files with 171 additions and 6 deletions
|
|
@ -149,6 +149,7 @@ User=$CONTAINER_NAME
|
|||
Group=$CONTAINER_NAME
|
||||
ExecStart=$BIN_PATH/forgejo-runner daemon
|
||||
Restart=always
|
||||
RestartSec=5
|
||||
StandardOutput=append:/opt/gbo/logs/output.log
|
||||
StandardError=append:/opt/gbo/logs/error.log
|
||||
|
||||
|
|
|
|||
|
|
@ -9,7 +9,8 @@ pub fn first_keyword(engine: &mut Engine) {
|
|||
let input_str = input_string.to_string();
|
||||
|
||||
// Extract first word by splitting on whitespace
|
||||
let first_word = input_str.split_whitespace()
|
||||
let first_word = input_str
|
||||
.split_whitespace()
|
||||
.next()
|
||||
.unwrap_or("")
|
||||
.to_string();
|
||||
|
|
@ -19,3 +20,166 @@ pub fn first_keyword(engine: &mut Engine) {
|
|||
})
|
||||
.unwrap();
|
||||
}
|
||||
|
||||
#[cfg(test)]
|
||||
mod tests {
|
||||
use super::*;
|
||||
use rhai::{Dynamic, Engine};
|
||||
|
||||
fn setup_engine() -> Engine {
|
||||
let mut engine = Engine::new();
|
||||
first_keyword(&mut engine);
|
||||
engine
|
||||
}
|
||||
|
||||
#[test]
|
||||
fn test_first_keyword_basic() {
|
||||
let engine = setup_engine();
|
||||
|
||||
let result = engine
|
||||
.eval::<String>(
|
||||
r#"
|
||||
FIRST "hello world"
|
||||
"#,
|
||||
)
|
||||
.unwrap();
|
||||
|
||||
assert_eq!(result, "hello");
|
||||
}
|
||||
|
||||
#[test]
|
||||
fn test_first_keyword_single_word() {
|
||||
let engine = setup_engine();
|
||||
|
||||
let result = engine
|
||||
.eval::<String>(
|
||||
r#"
|
||||
FIRST "single"
|
||||
"#,
|
||||
)
|
||||
.unwrap();
|
||||
|
||||
assert_eq!(result, "single");
|
||||
}
|
||||
|
||||
#[test]
|
||||
fn test_first_keyword_multiple_spaces() {
|
||||
let engine = setup_engine();
|
||||
|
||||
let result = engine
|
||||
.eval::<String>(
|
||||
r#"
|
||||
FIRST " leading spaces"
|
||||
"#,
|
||||
)
|
||||
.unwrap();
|
||||
|
||||
assert_eq!(result, "leading");
|
||||
}
|
||||
|
||||
#[test]
|
||||
fn test_first_keyword_empty_string() {
|
||||
let engine = setup_engine();
|
||||
|
||||
let result = engine
|
||||
.eval::<String>(
|
||||
r#"
|
||||
FIRST ""
|
||||
"#,
|
||||
)
|
||||
.unwrap();
|
||||
|
||||
assert_eq!(result, "");
|
||||
}
|
||||
|
||||
#[test]
|
||||
fn test_first_keyword_whitespace_only() {
|
||||
let engine = setup_engine();
|
||||
|
||||
let result = engine
|
||||
.eval::<String>(
|
||||
r#"
|
||||
FIRST " "
|
||||
"#,
|
||||
)
|
||||
.unwrap();
|
||||
|
||||
assert_eq!(result, "");
|
||||
}
|
||||
|
||||
#[test]
|
||||
fn test_first_keyword_with_tabs() {
|
||||
let engine = setup_engine();
|
||||
|
||||
let result = engine
|
||||
.eval::<String>(
|
||||
r#"
|
||||
FIRST " tab separated words"
|
||||
"#,
|
||||
)
|
||||
.unwrap();
|
||||
|
||||
assert_eq!(result, "tab");
|
||||
}
|
||||
|
||||
#[test]
|
||||
fn test_first_keyword_with_variable() {
|
||||
let engine = setup_engine();
|
||||
|
||||
let result = engine
|
||||
.eval::<String>(
|
||||
r#"
|
||||
let text = "variable test";
|
||||
FIRST text
|
||||
"#,
|
||||
)
|
||||
.unwrap();
|
||||
|
||||
assert_eq!(result, "variable");
|
||||
}
|
||||
|
||||
#[test]
|
||||
fn test_first_keyword_with_expression() {
|
||||
let engine = setup_engine();
|
||||
|
||||
let result = engine
|
||||
.eval::<String>(
|
||||
r#"
|
||||
FIRST "one two " + "three four"
|
||||
"#,
|
||||
)
|
||||
.unwrap();
|
||||
|
||||
assert_eq!(result, "one");
|
||||
}
|
||||
|
||||
#[test]
|
||||
fn test_first_keyword_mixed_whitespace() {
|
||||
let engine = setup_engine();
|
||||
|
||||
let result = engine
|
||||
.eval::<String>(
|
||||
r#"
|
||||
FIRST " multiple spaces between words "
|
||||
"#,
|
||||
)
|
||||
.unwrap();
|
||||
|
||||
assert_eq!(result, "multiple");
|
||||
}
|
||||
|
||||
#[test]
|
||||
fn test_first_keyword_special_characters() {
|
||||
let engine = setup_engine();
|
||||
|
||||
let result = engine
|
||||
.eval::<String>(
|
||||
r#"
|
||||
FIRST "hello-world example"
|
||||
"#,
|
||||
)
|
||||
.unwrap();
|
||||
|
||||
assert_eq!(result, "hello-world");
|
||||
}
|
||||
}
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue