| @@ -91,10 +91,12 @@ fn try_parse_opts(spec: &str, options: Options) -> Result<Recorder, spec::parse: · 90 unmodified lines |
| 91 | 91 | fn empty_specs_are_valid() { |
| 92 | 92 | // they should of course be invalid for the delegate. CLIs may pre-process the input as well if they wish |
| 93 | 93 | // but git itself doesn't do that. |
| 94 | | − for spec in ["", " ", "\n\t"] { |
| 94 | + for spec in [" ", "\n\t"] { |
| 95 | 95 | let rec = parse(spec); |
| 96 | 96 | assert_eq!(rec.calls, 1); |
| 97 | 97 | } |
| 98 | + let rec = parse(""); |
| 99 | + assert_eq!(rec.calls, 0, "but we do not bother to call the delegate with nothing"); |
| 98 | 100 | } |
| 99 | 101 | |
| 100 | 102 | #[test] |
| @@ -227,7 +229,7 @@ mod range { · 126 unmodified lines |
| 227 | 229 | .unwrap_err(); |
| 228 | 230 | assert!( |
| 229 | 231 | matches!(err, spec::parse::Error::Delegate), |
| 230 | | − "Delegates can refuse spec kind changes to abort parsing early" |
| 232 | + "Delegates can refuse spec kind changes to abort parsing early in case they want single-specs only" |
| 231 | 233 | ); |
| 232 | 234 | } |
| 233 | 235 | |
| @@ -236,6 +238,8 @@ mod range { · 2 unmodified lines |
| 236 | 238 | let rec = parse("^HEAD"); |
| 237 | 239 | assert_eq!(rec.kind.unwrap(), spec::Kind::Range); |
| 238 | 240 | assert_eq!(rec.resolve_ref_input.unwrap(), "HEAD"); |
| 241 | + assert_eq!(rec.prefix, None); |
| 242 | + assert_eq!(rec.calls, 2); |
| 239 | 243 | } |
| 240 | 244 | |
| 241 | 245 | #[test] |
| @@ -243,6 +247,8 @@ mod range { · 1 unmodified line |
| 243 | 247 | let rec = parse("HEAD.."); |
| 244 | 248 | assert_eq!(rec.kind.unwrap(), spec::Kind::Range); |
| 245 | 249 | assert_eq!(rec.resolve_ref_input.unwrap(), "HEAD"); |
| 250 | + assert_eq!(rec.prefix, None); |
| 251 | + assert_eq!(rec.calls, 2); |
| 246 | 252 | } |
| 247 | 253 | |
| 248 | 254 | #[test] |
| @@ -250,6 +256,8 @@ mod range { · 1 unmodified line |
| 250 | 256 | let rec = parse("HEAD..."); |
| 251 | 257 | assert_eq!(rec.kind.unwrap(), spec::Kind::MergeBase); |
| 252 | 258 | assert_eq!(rec.resolve_ref_input.unwrap(), "HEAD"); |
| 259 | + assert_eq!(rec.prefix, None); |
| 260 | + assert_eq!(rec.calls, 2); |
| 253 | 261 | } |
| 254 | 262 | |
| 255 | 263 | #[test] |
| @@ -258,6 +266,13 @@ mod range { · 2 unmodified lines |
| 258 | 266 | assert_eq!(rec.kind.unwrap(), spec::Kind::MergeBase); |
| 259 | 267 | assert_eq!(rec.resolve_ref_input.unwrap(), "HEAD"); |
| 260 | 268 | assert_eq!(rec.resolve_ref_input2.unwrap(), "HEAD"); |
| 269 | + assert_eq!(rec.calls, 3); |
| 270 | + |
| 271 | + let rec = parse("r1...abcd"); |
| 272 | + assert_eq!(rec.kind.unwrap(), spec::Kind::MergeBase); |
| 273 | + assert_eq!(rec.resolve_ref_input.unwrap(), "r1"); |
| 274 | + assert_eq!(rec.prefix, prefix("abcd").into()); |
| 275 | + assert_eq!(rec.calls, 3); |
| 261 | 276 | } |
| 262 | 277 | |
| 263 | 278 | #[test] |
| @@ -266,5 +281,28 @@ mod range { · 2 unmodified lines |
| 266 | 281 | assert_eq!(rec.kind.unwrap(), spec::Kind::Range); |
| 267 | 282 | assert_eq!(rec.resolve_ref_input.unwrap(), "HEAD"); |
| 268 | 283 | assert_eq!(rec.resolve_ref_input2.unwrap(), "HEAD"); |
| 284 | + assert_eq!(rec.calls, 3); |
| 285 | + |
| 286 | + let rec = parse("r1..r2"); |
| 287 | + assert_eq!(rec.kind.unwrap(), spec::Kind::Range); |
| 288 | + assert_eq!(rec.resolve_ref_input.unwrap(), "r1"); |
| 289 | + assert_eq!(rec.resolve_ref_input2.unwrap(), "r2"); |
| 290 | + assert_eq!(rec.calls, 3); |
| 291 | + |
| 292 | + let rec = parse("abcd..1234"); |
| 293 | + assert_eq!(rec.kind.unwrap(), spec::Kind::Range); |
| 294 | + assert_eq!(rec.prefix, prefix("abcd").into()); |
| 295 | + assert_eq!(rec.prefix2, prefix("1234").into()); |
| 296 | + assert_eq!(rec.calls, 3); |
| 297 | + |
| 298 | + let rec = parse("r1..abcd"); |
| 299 | + assert_eq!(rec.kind.unwrap(), spec::Kind::Range); |
| 300 | + assert_eq!(rec.resolve_ref_input.unwrap(), "r1"); |
| 301 | + assert_eq!(rec.prefix, prefix("abcd").into()); |
| 302 | + assert_eq!(rec.calls, 3); |
| 303 | + } |
| 304 | + |
| 305 | + fn prefix(hex: &str) -> git_hash::Prefix { |
| 306 | + git_hash::Prefix::from_hex(hex).unwrap() |
| 269 | 307 | } |
| 270 | 308 | } |