Showing the changes to git-ref/tests (1 of 3 files). Show all
Unified · Split
| @@ -121,13 +121,12 @@ fn loose_iter_with_prefix() -> crate::Result { · 120 unmodified lines | ||
| 121 | 121 | } |
| 122 | 122 | |
| 123 | 123 | #[test] |
| 124 | −fn overlay_iter() { | |
| 124 | +fn overlay_iter() -> crate::Result { | |
| 125 | 125 | use git_ref::mutable::Target::*; |
| 126 | 126 | |
| 127 | − let store = store_at("make_packed_ref_repository_for_overlay.sh").unwrap(); | |
| 127 | + let store = store_at("make_packed_ref_repository_for_overlay.sh")?; | |
| 128 | 128 | let ref_names = store |
| 129 | − .iter(&store.packed().unwrap().expect("packed-refs")) | |
| 130 | − .unwrap() | |
| 129 | + .iter(&store.packed()?.expect("packed-refs"))? | |
| 131 | 130 | .map(|r| { |
| 132 | 131 | r.map(|r| { |
| 133 | 132 | ( |
| @@ -137,8 +136,7 @@ fn overlay_iter() { · 3 unmodified lines | ||
| 137 | 136 | ) |
| 138 | 137 | }) |
| 139 | 138 | }) |
| 140 | − .collect::<Result<Vec<_>, _>>() | |
| 141 | − .unwrap(); | |
| 139 | + .collect::<Result<Vec<_>, _>>()?; | |
| 142 | 140 | let c1 = hex_to_id("134385f6d781b7e97062102c6a483440bfda2a03"); |
| 143 | 141 | let c2 = hex_to_id("9902e3c3e8f0c569b4ab295ddf473e6de763e1e7"); |
| 144 | 142 | assert_eq!( |
| @@ -148,7 +146,7 @@ fn overlay_iter() { · 3 unmodified lines | ||
| 148 | 146 | ("refs/heads/newer-as-loose".into(), Peeled(c2), false), |
| 149 | 147 | ( |
| 150 | 148 | "refs/remotes/origin/HEAD".into(), |
| 151 | − Symbolic("refs/remotes/origin/main".try_into().unwrap()), | |
| 149 | + Symbolic("refs/remotes/origin/main".try_into()?), | |
| 152 | 150 | false |
| 153 | 151 | ), |
| 154 | 152 | ("refs/remotes/origin/main".into(), Peeled(c1), true), |
| @@ -159,4 +157,51 @@ fn overlay_iter() { · 4 unmodified lines | ||
| 159 | 157 | ) |
| 160 | 158 | ] |
| 161 | 159 | ); |
| 160 | + Ok(()) | |
| 161 | +} | |
| 162 | + | |
| 163 | +#[test] | |
| 164 | +fn overlay_iter_with_prefix_wont_allow_absolute_paths() -> crate::Result { | |
| 165 | + let store = store_with_packed_refs()?; | |
| 166 | + #[cfg(not(windows))] | |
| 167 | + let abs_path = "/hello"; | |
| 168 | + #[cfg(windows)] | |
| 169 | + let abs_path = "c:\\hello"; | |
| 170 | + | |
| 171 | + match store.iter_prefixed(&store.packed()?.expect("pacekd-refs"), abs_path) { | |
| 172 | + Ok(_) => unreachable!("absolute paths aren't allowed"), | |
| 173 | + Err(err) => assert_eq!(err.to_string(), "prefix must be a relative path, like 'refs/heads'"), | |
| 174 | + } | |
| 175 | + Ok(()) | |
| 176 | +} | |
| 177 | + | |
| 178 | +#[test] | |
| 179 | +fn overlay_prefixed_iter() { | |
| 180 | + use git_ref::mutable::Target::*; | |
| 181 | + | |
| 182 | + let store = store_at("make_packed_ref_repository_for_overlay.sh").unwrap(); | |
| 183 | + let packed = store.packed().unwrap().expect("packed-refs"); | |
| 184 | + let ref_names = store | |
| 185 | + .iter_prefixed(&packed, "refs/heads") | |
| 186 | + .unwrap() | |
| 187 | + .map(|r| { | |
| 188 | + r.map(|r| { | |
| 189 | + ( | |
| 190 | + r.name().expect("valid names only").into_inner(), | |
| 191 | + r.target(), | |
| 192 | + r.is_packed(), | |
| 193 | + ) | |
| 194 | + }) | |
| 195 | + }) | |
| 196 | + .collect::<Result<Vec<_>, _>>() | |
| 197 | + .unwrap(); | |
| 198 | + let c1 = hex_to_id("134385f6d781b7e97062102c6a483440bfda2a03"); | |
| 199 | + let c2 = hex_to_id("9902e3c3e8f0c569b4ab295ddf473e6de763e1e7"); | |
| 200 | + assert_eq!( | |
| 201 | + ref_names, | |
| 202 | + vec![ | |
| 203 | + (b"refs/heads/main".as_bstr().to_owned(), Peeled(c1), true), | |
| 204 | + ("refs/heads/newer-as-loose".into(), Peeled(c2), false), | |
| 205 | + ] | |
| 206 | + ); | |
| 162 | 207 | } |