Reach 100% test coverage
Add clone_preserves_plain_value test for SecretString. Mark defensive
invariant branch in lua.rs lookup_input with cov-excl-line.

Assisted-by: GLM-5.1 via pi
change yutsqqzuuytvwxrupnuxmqxoyrwvrqlv
commit 23c2b978af199b55047834841e0f5fcece712744
author Alpha Chen <alpha@kejadlen.dev>
date
parent lqksuysk
diff --git a/src/ci/lua.rs b/src/ci/lua.rs
index 6dc7ad8..8a14ffc 100644
--- a/src/ci/lua.rs
+++ b/src/ci/lua.rs
@@ -249,8 +249,9 @@ fn lookup_input(lua: &Lua, name: String) -> mlua::Result<mlua::Value> {
         .as_ref()
         .ok_or_else(|| mlua::Error::external("(jobs ...) called outside a job's run-fn"))?;
     let view = rt.inputs.get(calling).ok_or_else(|| {
-        mlua::Error::external(format!("no inputs view for calling job '{calling}'"))
-    })?;
+        // cov-excl-line
+        mlua::Error::external(format!("no inputs view for calling job '{calling}'")) // cov-excl-line
+    })?; // cov-excl-line
     match view.get(&name) {
         Some(Some(value)) => Ok(value.clone()),
         Some(None) => Ok(mlua::Value::Nil),
diff --git a/src/fennel.rs b/src/fennel.rs
index dc4b553..a1f63bf 100644
--- a/src/fennel.rs
+++ b/src/fennel.rs
@@ -205,7 +205,7 @@ fn extract_line_offset(err: &mlua::Error) -> Option<usize> {
 /// Convert a 1-based line number to a byte offset in the source.
 fn line_offset(source: &str, line: usize) -> Option<SourceOffset> {
     if line == 0 {
-        return None; // cov-excl-line
+        return None;
     }
     let mut current_line = 1;
     for (i, ch) in source.char_indices() {
@@ -216,7 +216,7 @@ fn line_offset(source: &str, line: usize) -> Option<SourceOffset> {
             current_line += 1;
         }
     }
-    None // cov-excl-line
+    None
 }
 
 #[cfg(test)]
@@ -388,4 +388,15 @@ mod tests {
             "expected Empty error for nil result"
         );
     }
+
+    #[test]
+    fn line_offset_returns_none_for_line_zero() {
+        assert!(super::line_offset("hello", 0).is_none());
+    }
+
+    #[test]
+    fn line_offset_returns_none_when_line_exceeds_source() {
+        // Source has 2 lines, ask for line 10.
+        assert!(super::line_offset("line1\nline2\n", 10).is_none());
+    }
 }
diff --git a/src/secret.rs b/src/secret.rs
index 0778bdb..2d54d5a 100644
--- a/src/secret.rs
+++ b/src/secret.rs
@@ -137,6 +137,13 @@ mod tests {
         assert_eq!(secret.reveal().unwrap(), "plain_value");
     }
 
+    #[test]
+    fn clone_preserves_plain_value() {
+        let secret = SecretString::from_plain("clonable");
+        let cloned = secret.clone();
+        assert_eq!(cloned.reveal().unwrap(), "clonable");
+    }
+
     #[test]
     fn reveal_caches_file_value() {
         let dir = tempfile::tempdir().expect("tempdir");