History

[ref #190] fix remaining tests

Sebastian Thiel committed 5 years ago

Commit df21f251 parent 14dff632 files · +28 −31Browse files

Unified · Split

2 files
  1. git-ref/src/raw.rs +28 −29
  2. git-ref/tests/file/reference.rs +0 −2
git-ref/src/raw.rs+28−29
@@ -143,16 +143,16 @@ mod peel { · 142 unmodified lines
143 self.target = Target::Peeled(peeled);143 self.target = Target::Peeled(peeled);
144 Ok(peeled)144 Ok(peeled)
145 }145 }
146 None => match self.target {146 None => {
147 Target::Peeled(peeled) => Ok(peeled),147 if self.target.kind() == crate::Kind::Symbolic {
148 Target::Symbolic(_) => {
149 let mut seen = BTreeSet::new();148 let mut seen = BTreeSet::new();
150 let cursor = &mut *self;149 let cursor = &mut *self;
151 while let Some(next) = cursor.follow_symbolic(store, packed) {150 while let Some(next) = cursor.follow_symbolic(store, packed) {
152 *cursor = next?;151 let next = next?;
153 if seen.contains(&cursor.name) {152 if seen.contains(&next.name) {
154 return Err(peel::to_id::Error::Cycle(store.base.join(cursor.name.to_path())));153 return Err(peel::to_id::Error::Cycle(store.base.join(cursor.name.to_path())));
155 }154 }
155 *cursor = next;
156 seen.insert(cursor.name.clone());156 seen.insert(cursor.name.clone());
157 const MAX_REF_DEPTH: usize = 5;157 const MAX_REF_DEPTH: usize = 5;
158 if seen.len() == MAX_REF_DEPTH {158 if seen.len() == MAX_REF_DEPTH {
@@ -161,31 +161,30 @@ mod peel { · 2 unmodified lines
161 });161 });
162 }162 }
163 }163 }
164 164 };
165 let mut buf = Vec::new();165 let mut buf = Vec::new();
166 let mut oid = self.target.as_id().expect("peeled ref").to_owned();166 let mut oid = self.target.as_id().expect("peeled ref").to_owned();
167 self.target = Target::Peeled(loop {167 self.target = Target::Peeled(loop {
168 let (kind, data) = find(oid, &mut buf)168 let (kind, data) = find(oid, &mut buf)
169 .map_err(|err| Box::new(err) as Box<dyn std::error::Error + Send + Sync + 'static>)?169 .map_err(|err| Box::new(err) as Box<dyn std::error::Error + Send + Sync + 'static>)?
170 .ok_or_else(|| peel::to_id::Error::NotFound {170 .ok_or_else(|| peel::to_id::Error::NotFound {
171 oid,171 oid,
172 name: self.name.0.clone(),172 name: self.name.0.clone(),
173 })?;
174 match kind {
175 git_object::Kind::Tag => {
176 oid = git_object::TagRefIter::from_bytes(data).target_id().ok_or_else(|| {
177 peel::to_id::Error::NotFound {
178 oid,
179 name: self.name.0.clone(),
180 }
173 })?;181 })?;
174 match kind {182 }
175 git_object::Kind::Tag => {183 _ => break oid,
176 oid = git_object::TagRefIter::from_bytes(data).target_id().ok_or_else(|| {184 };
177 peel::to_id::Error::NotFound {185 });
178 oid,186 Ok(self.target.as_id().expect("to be peeled").to_owned())
179 name: self.name.0.clone(),187 }
180 }
181 })?;
182 }
183 _ => break oid,
184 };
185 });
186 Ok(self.target.as_id().expect("to be peeled").to_owned())
187 }
188 },
189 }188 }
190 }189 }
191 190
git-ref/tests/file/reference.rs+0−2
@@ -123,7 +123,6 @@ mod peel { · 122 unmodified lines
123 }123 }
124 124
125 #[test]125 #[test]
126 #[ignore]
127 fn to_id_multi_hop() -> crate::Result {126 fn to_id_multi_hop() -> crate::Result {
128 let store = file::store()?;127 let store = file::store()?;
129 let mut r: Reference = store.find_loose("multi-link")?.into();128 let mut r: Reference = store.find_loose("multi-link")?.into();
@@ -154,7 +153,6 @@ mod peel { · 24 unmodified lines
154 }153 }
155 154
156 #[test]155 #[test]
157 #[ignore]
158 fn to_id_cycle() -> crate::Result {156 fn to_id_cycle() -> crate::Result {
159 let store = file::store()?;157 let store = file::store()?;
160 let mut r: Reference = store.find_loose("loop-a")?.into();158 let mut r: Reference = store.find_loose("loop-a")?.into();