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 | #[test] | 123 | #[test] |
| 124 | fn overlay_iter() { | 124 | fn overlay_iter() -> crate::Result { |
| 125 | use git_ref::mutable::Target::*; | 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 | let ref_names = store | 128 | let ref_names = store |
| 129 | .iter(&store.packed().unwrap().expect("packed-refs")) | 129 | .iter(&store.packed()?.expect("packed-refs"))? |
| 130 | .unwrap() | ||
| 131 | .map(|r| { | 130 | .map(|r| { |
| 132 | r.map(|r| { | 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<_>, _>>() | 139 | .collect::<Result<Vec<_>, _>>()?; |
| 141 | .unwrap(); | ||
| 142 | let c1 = hex_to_id("134385f6d781b7e97062102c6a483440bfda2a03"); | 140 | let c1 = hex_to_id("134385f6d781b7e97062102c6a483440bfda2a03"); |
| 143 | let c2 = hex_to_id("9902e3c3e8f0c569b4ab295ddf473e6de763e1e7"); | 141 | let c2 = hex_to_id("9902e3c3e8f0c569b4ab295ddf473e6de763e1e7"); |
| 144 | assert_eq!( | 142 | assert_eq!( |
| @@ -148,7 +146,7 @@ fn overlay_iter() { · 3 unmodified lines | |||
| 148 | ("refs/heads/newer-as-loose".into(), Peeled(c2), false), | 146 | ("refs/heads/newer-as-loose".into(), Peeled(c2), false), |
| 149 | ( | 147 | ( |
| 150 | "refs/remotes/origin/HEAD".into(), | 148 | "refs/remotes/origin/HEAD".into(), |
| 151 | Symbolic("refs/remotes/origin/main".try_into().unwrap()), | 149 | Symbolic("refs/remotes/origin/main".try_into()?), |
| 152 | false | 150 | false |
| 153 | ), | 151 | ), |
| 154 | ("refs/remotes/origin/main".into(), Peeled(c1), true), | 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 | } |