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
143143 self.target = Target::Peeled(peeled);
144144 Ok(peeled)
145145 }
146− None => match self.target {
147− Target::Peeled(peeled) => Ok(peeled),
148− Target::Symbolic(_) => {
146+ None => {
147+ if self.target.kind() == crate::Kind::Symbolic {
149148 let mut seen = BTreeSet::new();
150149 let cursor = &mut *self;
151150 while let Some(next) = cursor.follow_symbolic(store, packed) {
152− *cursor = next?;
153− if seen.contains(&cursor.name) {
151+ let next = next?;
152+ if seen.contains(&next.name) {
154153 return Err(peel::to_id::Error::Cycle(store.base.join(cursor.name.to_path())));
155154 }
155+ *cursor = next;
156156 seen.insert(cursor.name.clone());
157157 const MAX_REF_DEPTH: usize = 5;
158158 if seen.len() == MAX_REF_DEPTH {
@@ -161,31 +161,30 @@ mod peel { · 2 unmodified lines
161161 });
162162 }
163163 }
164−
165− let mut buf = Vec::new();
166− let mut oid = self.target.as_id().expect("peeled ref").to_owned();
167− self.target = Target::Peeled(loop {
168− let (kind, data) = find(oid, &mut buf)
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 {
171− oid,
172− name: self.name.0.clone(),
164+ };
165+ let mut buf = Vec::new();
166+ let mut oid = self.target.as_id().expect("peeled ref").to_owned();
167+ self.target = Target::Peeled(loop {
168+ let (kind, data) = find(oid, &mut buf)
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 {
171+ oid,
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+ }
173181 })?;
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− }
181− })?;
182− }
183− _ => break oid,
184− };
185− });
186− Ok(self.target.as_id().expect("to be peeled").to_owned())
187− }
188− },
182+ }
183+ _ => break oid,
184+ };
185+ });
186+ Ok(self.target.as_id().expect("to be peeled").to_owned())
187+ }
189188 }
190189 }
191190
git-ref/tests/file/reference.rs+0−2
@@ -123,7 +123,6 @@ mod peel { · 122 unmodified lines
123123 }
124124
125125 #[test]
126− #[ignore]
127126 fn to_id_multi_hop() -> crate::Result {
128127 let store = file::store()?;
129128 let mut r: Reference = store.find_loose("multi-link")?.into();
@@ -154,7 +153,6 @@ mod peel { · 24 unmodified lines
154153 }
155154
156155 #[test]
157− #[ignore]
158156 fn to_id_cycle() -> crate::Result {
159157 let store = file::store()?;
160158 let mut r: Reference = store.find_loose("loop-a")?.into();