Skip to content

Commit 94faf51

Browse files
committed
Rename prefix test branches
1 parent 3ca6811 commit 94faf51

File tree

9 files changed

+63
-55
lines changed

9 files changed

+63
-55
lines changed
Binary file not shown.
Binary file not shown.

gix-ref/tests/fixtures/make_packed_ref_repository.sh

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -10,9 +10,12 @@ git branch d1
1010
git branch A
1111

1212
mkdir -p .git/refs/remotes/origin
13+
mkdir -p .git/refs/prefix/feature/sub/dir
1314

1415
cp .git/refs/heads/main .git/refs/remotes/origin/
1516
cp .git/refs/heads/main .git/refs/d1
17+
cp .git/refs/heads/main .git/refs/prefix/feature-suffix
18+
cp .git/refs/heads/main .git/refs/prefix/feature/sub/dir/algo
1619

1720
echo "ref: refs/remotes/origin/main" > .git/refs/remotes/origin/HEAD
1821
echo "notahexsha" > .git/refs/broken

gix-ref/tests/fixtures/make_packed_ref_repository_for_overlay.sh

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -10,13 +10,13 @@ git branch A
1010
git tag -m "tag object" tag-object
1111

1212
mkdir -p .git/refs/remotes/origin
13-
mkdir -p .git/refs/heads/sub/dir
13+
mkdir -p .git/refs/prefix/feature/sub/dir
1414

1515
cp .git/refs/heads/main .git/refs/remotes/origin/
16+
cp .git/refs/heads/main .git/refs/prefix/feature-suffix
17+
cp .git/refs/heads/main .git/refs/prefix/feature/sub/dir/algo
1618

1719
echo "ref: refs/remotes/origin/main" > .git/refs/remotes/origin/HEAD
18-
echo "ref: refs/heads/main" > .git/refs/heads-packed
19-
echo "ref: refs/heads/main" > .git/refs/heads/sub/dir/packed
2020

2121
git pack-refs --all --prune
2222

gix-ref/tests/fixtures/make_ref_repository.sh

Lines changed: 3 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -10,9 +10,12 @@ git branch d1
1010
git branch A
1111

1212
mkdir -p .git/refs/remotes/origin
13+
mkdir -p .git/refs/prefix/feature/sub/dir
1314

1415
cp .git/refs/heads/main .git/refs/remotes/origin/
1516
cp .git/refs/heads/main .git/refs/d1
17+
cp .git/refs/heads/main .git/refs/prefix/feature-suffix
18+
cp .git/refs/heads/main .git/refs/prefix/feature/sub/dir/algo
1619

1720
echo "ref: refs/remotes/origin/main" > .git/refs/remotes/origin/HEAD
1821
echo "notahexsha" > .git/refs/broken
@@ -22,12 +25,6 @@ echo "ref: refs/tags/multi-link-target2" > .git/refs/heads/multi-link-target1
2225
echo "ref: refs/remotes/origin/multi-link-target3" > .git/refs/tags/multi-link-target2
2326
git rev-parse HEAD > .git/refs/remotes/origin/multi-link-target3
2427

25-
# Regression test for issue #1934 where prefix refs/m matched refs/heads/main.
26-
mkdir -p .git/refs/heads/sub/dir
27-
echo "ref: refs/remotes/origin/main" > .git/refs/heads-loose
28-
echo "ref: refs/remotes/origin/main" > .git/refs/heads/sub/dir/loose
29-
echo "ref: refs/remotes/origin/main" > .git/refs/remotes/origin/heads
30-
3128
echo "ref: refs/loop-b" > .git/refs/loop-a
3229
echo "ref: refs/loop-a" > .git/refs/loop-b
3330

gix-ref/tests/refs/file/store/iter.rs

Lines changed: 51 additions & 43 deletions
Original file line numberDiff line numberDiff line change
@@ -255,7 +255,7 @@ fn no_packed_available_thus_no_iteration_possible() -> crate::Result {
255255
#[test]
256256
fn packed_file_iter() -> crate::Result {
257257
let store = store_with_packed_refs()?;
258-
assert_eq!(store.open_packed_buffer()?.expect("pack available").iter()?.count(), 9);
258+
assert_eq!(store.open_packed_buffer()?.expect("pack available").iter()?.count(), 11);
259259
Ok(())
260260
}
261261

@@ -264,7 +264,7 @@ fn loose_iter_with_broken_refs() -> crate::Result {
264264
let store = store()?;
265265

266266
let mut actual: Vec<_> = store.loose_iter()?.collect();
267-
assert_eq!(actual.len(), 19);
267+
assert_eq!(actual.len(), 18);
268268
actual.sort_by_key(Result::is_err);
269269
let first_error = actual
270270
.iter()
@@ -273,7 +273,7 @@ fn loose_iter_with_broken_refs() -> crate::Result {
273273
.expect("there is an error");
274274

275275
assert_eq!(
276-
first_error, 18,
276+
first_error, 17,
277277
"there is exactly one invalid item, and it didn't abort the iterator most importantly"
278278
);
279279
#[cfg(not(windows))]
@@ -293,18 +293,17 @@ fn loose_iter_with_broken_refs() -> crate::Result {
293293
ref_paths,
294294
vec![
295295
"d1",
296-
"heads-loose",
297296
"heads/A",
298297
"heads/d1",
299298
"heads/dt1",
300299
"heads/main",
301300
"heads/multi-link-target1",
302-
"heads/sub/dir/loose",
303301
"loop-a",
304302
"loop-b",
305303
"multi-link",
304+
"prefix/feature-suffix",
305+
"prefix/feature/sub/dir/algo",
306306
"remotes/origin/HEAD",
307-
"remotes/origin/heads",
308307
"remotes/origin/main",
309308
"remotes/origin/multi-link-target3",
310309
"tags/dt1",
@@ -355,7 +354,6 @@ fn loose_iter_with_prefix() -> crate::Result {
355354
"refs/heads/dt1",
356355
"refs/heads/main",
357356
"refs/heads/multi-link-target1",
358-
"refs/heads/sub/dir/loose",
359357
]
360358
.into_iter()
361359
.map(String::from)
@@ -381,13 +379,11 @@ fn loose_iter_with_partial_prefix_dir() -> crate::Result {
381379
assert_eq!(
382380
actual,
383381
vec![
384-
"refs/heads-loose",
385382
"refs/heads/A",
386383
"refs/heads/d1",
387384
"refs/heads/dt1",
388385
"refs/heads/main",
389386
"refs/heads/multi-link-target1",
390-
"refs/heads/sub/dir/loose",
391387
]
392388
.into_iter()
393389
.map(String::from)
@@ -435,14 +431,11 @@ fn overlay_iter() -> crate::Result {
435431
assert_eq!(
436432
ref_names,
437433
vec![
438-
("refs/heads-packed".into(), Symbolic("refs/heads/main".try_into()?),),
439434
(b"refs/heads/A".as_bstr().to_owned(), Object(c1)),
440435
(b"refs/heads/main".into(), Object(c1)),
441436
("refs/heads/newer-as-loose".into(), Object(c2)),
442-
(
443-
"refs/heads/sub/dir/packed".into(),
444-
Symbolic("refs/heads/main".try_into()?),
445-
),
437+
("refs/prefix/feature-suffix".into(), Object(c1)),
438+
("refs/prefix/feature/sub/dir/algo".into(), Object(c1)),
446439
(
447440
"refs/remotes/origin/HEAD".into(),
448441
Symbolic("refs/remotes/origin/main".try_into()?),
@@ -558,7 +551,6 @@ fn overlay_iter_with_prefix_wont_allow_absolute_paths() -> crate::Result {
558551

559552
#[test]
560553
fn overlay_prefixed_iter() -> crate::Result {
561-
// Test 'refs/heads/' with slash.
562554
use gix_ref::Target::*;
563555

564556
let store = store_at("make_packed_ref_repository_for_overlay.sh")?;
@@ -575,58 +567,74 @@ fn overlay_prefixed_iter() -> crate::Result {
575567
(b"refs/heads/A".as_bstr().to_owned(), Object(c1)),
576568
(b"refs/heads/main".into(), Object(c1)),
577569
("refs/heads/newer-as-loose".into(), Object(c2)),
578-
(
579-
b"refs/heads/sub/dir/packed".into(),
580-
Symbolic("refs/heads/main".try_into()?)
581-
),
582570
]
583571
);
584572
Ok(())
585573
}
586574

587575
#[test]
588-
fn overlay_partial_prefix_dir_iter() -> crate::Result {
589-
// Test 'refs/heads/' without slash.
576+
fn overlay_partial_prefix_iter() -> crate::Result {
590577
use gix_ref::Target::*;
591578

592579
let store = store_at("make_packed_ref_repository_for_overlay.sh")?;
593580
let ref_names = store
594581
.iter()?
595-
.prefixed(b"refs/heads".as_bstr().into())?
582+
.prefixed(b"refs/heads/m".as_bstr().into())? // 'm' is partial
596583
.map(|r| r.map(|r| (r.name.as_bstr().to_owned(), r.target)))
597584
.collect::<Result<Vec<_>, _>>()?;
598585
let c1 = hex_to_id("134385f6d781b7e97062102c6a483440bfda2a03");
599-
let c2 = hex_to_id("9902e3c3e8f0c569b4ab295ddf473e6de763e1e7");
600-
assert_eq!(
601-
ref_names,
602-
vec![
603-
(
604-
b"refs/heads-packed".as_bstr().to_owned(),
605-
Symbolic("refs/heads/main".try_into()?)
606-
),
607-
(b"refs/heads/A".as_bstr().to_owned(), Object(c1)),
608-
(b"refs/heads/main".into(), Object(c1)),
609-
("refs/heads/newer-as-loose".into(), Object(c2)),
610-
(
611-
b"refs/heads/sub/dir/packed".into(),
612-
Symbolic("refs/heads/main".try_into()?)
613-
),
614-
]
615-
);
586+
assert_eq!(ref_names, vec![(b"refs/heads/main".as_bstr().to_owned(), Object(c1)),]);
616587
Ok(())
617588
}
618589

619590
#[test]
620-
fn overlay_partial_prefix_iter() -> crate::Result {
591+
/// The prefix `refs/d` should match `refs/d1` but not `refs/heads/d1`.
592+
fn overlay_partial_prefix_iter_reproduce_1934() -> crate::Result {
621593
use gix_ref::Target::*;
622594

623-
let store = store_at("make_packed_ref_repository_for_overlay.sh")?;
595+
let store = store_at("make_ref_repository.sh")?;
596+
let c1 = hex_to_id("134385f6d781b7e97062102c6a483440bfda2a03");
597+
624598
let ref_names = store
625599
.iter()?
626-
.prefixed(b"refs/heads/m".as_bstr().into())? // 'm' is partial
600+
.prefixed(b"refs/d".as_bstr().into())?
627601
.map(|r| r.map(|r| (r.name.as_bstr().to_owned(), r.target)))
628602
.collect::<Result<Vec<_>, _>>()?;
603+
// Should not match `refs/heads/d1`.
604+
assert_eq!(ref_names, vec![("refs/d1".into(), Object(c1)),]);
605+
Ok(())
606+
}
607+
608+
#[test]
609+
fn overlay_partial_prefix_iter_when_prefix_is_dir() -> crate::Result {
610+
// Test 'refs/prefix/' with and without trailing slash.
611+
use gix_ref::Target::*;
612+
613+
let store = store_at("make_packed_ref_repository_for_overlay.sh")?;
629614
let c1 = hex_to_id("134385f6d781b7e97062102c6a483440bfda2a03");
630-
assert_eq!(ref_names, vec![(b"refs/heads/main".as_bstr().to_owned(), Object(c1)),]);
615+
616+
let ref_names = store
617+
.iter()?
618+
.prefixed(b"refs/prefix/feature".as_bstr().into())?
619+
.map(|r| r.map(|r| (r.name.as_bstr().to_owned(), r.target)))
620+
.collect::<Result<Vec<_>, _>>()?;
621+
assert_eq!(
622+
ref_names,
623+
vec![
624+
("refs/prefix/feature-suffix".into(), Object(c1)),
625+
("refs/prefix/feature/sub/dir/algo".into(), Object(c1)),
626+
]
627+
);
628+
629+
let ref_names = store
630+
.iter()?
631+
.prefixed(b"refs/prefix/feature/".as_bstr().into())?
632+
.map(|r| r.map(|r| (r.name.as_bstr().to_owned(), r.target)))
633+
.collect::<Result<Vec<_>, _>>()?;
634+
assert_eq!(
635+
ref_names,
636+
vec![("refs/prefix/feature/sub/dir/algo".into(), Object(c1)),]
637+
);
638+
631639
Ok(())
632640
}

gix-ref/tests/refs/file/transaction/prepare_and_commit/create_or_update/mod.rs

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -791,7 +791,7 @@ fn packed_refs_creation_with_packed_refs_mode_prune_removes_original_loose_refs(
791791

792792
assert_eq!(
793793
edits.len(),
794-
9,
794+
11,
795795
"there are a certain amount of loose refs that are packed"
796796
);
797797

@@ -843,7 +843,7 @@ fn packed_refs_creation_with_packed_refs_mode_leave_keeps_original_loose_refs()
843843
.commit(committer().to_ref())?;
844844
assert_eq!(
845845
edits.len(),
846-
4,
846+
2,
847847
"it claims to have performed all desired operations, even though some don't make it into the pack as 'side-car'"
848848
);
849849

gix-ref/tests/refs/packed/iter.rs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -18,7 +18,7 @@ fn packed_refs_with_header() -> crate::Result {
1818
let dir = gix_testtools::scripted_fixture_read_only_standalone("make_packed_ref_repository.sh")?;
1919
let buf = std::fs::read(dir.join(".git").join("packed-refs"))?;
2020
let iter = packed::Iter::new(&buf)?;
21-
assert_eq!(iter.count(), 9, "it finds the right amount of items");
21+
assert_eq!(iter.count(), 11, "it finds the right amount of items");
2222
Ok(())
2323
}
2424

0 commit comments

Comments
 (0)