View Javadoc
1   /*
2    * Copyright (C) 2019, Google LLC. and others
3    *
4    * This program and the accompanying materials are made available under the
5    * terms of the Eclipse Distribution License v. 1.0 which is available at
6    * https://www.eclipse.org/org/documents/edl-v10.php.
7    *
8    * SPDX-License-Identifier: BSD-3-Clause
9    */
10  
11  package org.eclipse.jgit.transport;
12  
13  import static org.hamcrest.MatcherAssert.assertThat;
14  import static org.hamcrest.Matchers.contains;
15  
16  import java.util.List;
17  import java.util.stream.Collectors;
18  import java.util.stream.Stream;
19  
20  import org.eclipse.jgit.lib.ObjectId;
21  import org.eclipse.jgit.lib.ObjectIdRef.Unpeeled;
22  import org.eclipse.jgit.lib.Ref;
23  import org.eclipse.jgit.lib.Ref.Storage;
24  import org.junit.Test;
25  
26  public class UploadPackRefSortingForReachabilityTest {
27  
28  	@Test
29  	public void sortReferences() {
30  		List<Ref> refs = Stream.of("refs/changes/12/12", "refs/changes/12/1",
31  				"refs/heads/master", "refs/heads/something",
32  				"refs/changes/55/1", "refs/tags/v1.1")
33  				.map(s -> new Unpeeled(Storage.LOOSE, s, ObjectId.zeroId()))
34  				.collect(Collectors.toList());
35  		Stream<Ref> sorted = UploadPack.importantRefsFirst(refs);
36  		List<String> collected = sorted.map(Ref::getName)
37  				.collect(Collectors.toList());
38  		assertThat(collected,
39  				contains("refs/heads/master", "refs/heads/something",
40  						"refs/tags/v1.1", "refs/changes/12/12",
41  						"refs/changes/12/1", "refs/changes/55/1"));
42  	}
43  }