use super::*; #[test] fn glob_match_basics() { assert!(glob_match("patch_vllm_*.py", "patch_vllm_topk.py")); assert!(glob_match("patch_vllm_*.py", "patch_vllm_a.py")); assert!(!glob_match("patch_vllm_*.py", "other.py")); assert!(glob_match("a?c", "abc")); assert!(!glob_match("a?c", "ac")); assert!(glob_match("x", "x")); assert!(glob_match("*", "anything/at-all")); } #[test] fn parse_versions_env_quotes_are_normalized() { let raw = "A=\"x:tag@sha256:abc\"\nB='y'\nC=z\nE=\"half\nF='weird\"\n"; let pins = parse_versions_env(raw); assert_eq!(pins.get("A"), Some(&"x:tag@sha256:abc".to_string())); assert_eq!(pins.get("B"), Some(&"y".to_string())); assert_eq!(pins.get("C"), Some(&"z".to_string())); assert_eq!(pins.get("E"), Some(&"\"half".to_string())); assert_eq!(pins.get("F"), Some(&"'weird\"".to_string())); } #[test] fn parse_versions_env_skips_comments_and_blanks() { let raw = "# comment\n\nKEY=val\nOTHER=a=b\n SPACED = x \nnoeq\n"; let pins = parse_versions_env(raw); assert_eq!(pins.get("KEY"), Some(&"val".to_string())); assert_eq!(pins.get("OTHER"), Some(&"a=b".to_string())); assert_eq!(pins.get("SPACED"), Some(&"x".to_string())); assert!(!pins.contains_key("noeq")); assert_eq!(pins.len(), 3); } #[test] fn resolve_falls_back_to_bundle_layout() { let base = std::env::temp_dir().join(format!("sm121-resolve-test-{}", std::process::id())); let bundle = base.join("recipes").join("test-resolve-recipe-x"); std::fs::create_dir_all(&bundle).unwrap(); std::fs::write(bundle.join("build.sh"), "").unwrap(); std::fs::write(bundle.join("Dockerfile"), "").unwrap(); let (dir, src) = resolve_build_dir(&base, "test-resolve-recipe-x", "test-resolve-recipe-x", &[]).unwrap(); assert_eq!(src, BuildSource::Bundle); assert_eq!(dir, bundle); let _ = std::fs::remove_dir_all(&base); }