You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

UploadPackTest.java 2.7KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990
  1. package org.eclipse.jgit.transport;
  2. import static org.junit.Assert.assertFalse;
  3. import static org.junit.Assert.assertTrue;
  4. import java.util.Collections;
  5. import org.eclipse.jgit.internal.storage.dfs.DfsRepositoryDescription;
  6. import org.eclipse.jgit.internal.storage.dfs.InMemoryRepository;
  7. import org.eclipse.jgit.junit.TestRepository;
  8. import org.eclipse.jgit.lib.NullProgressMonitor;
  9. import org.eclipse.jgit.lib.Repository;
  10. import org.eclipse.jgit.revwalk.RevCommit;
  11. import org.eclipse.jgit.transport.UploadPack.RequestPolicy;
  12. import org.eclipse.jgit.transport.resolver.ServiceNotAuthorizedException;
  13. import org.eclipse.jgit.transport.resolver.ServiceNotEnabledException;
  14. import org.eclipse.jgit.transport.resolver.UploadPackFactory;
  15. import org.junit.After;
  16. import org.junit.Before;
  17. import org.junit.Test;
  18. /**
  19. * Tests for server upload-pack utilities.
  20. */
  21. public class UploadPackTest {
  22. private URIish uri;
  23. private TestProtocol<Object> testProtocol;
  24. private Object ctx = new Object();
  25. private InMemoryRepository server;
  26. private InMemoryRepository client;
  27. private RevCommit commit0;
  28. private RevCommit commit1;
  29. private RevCommit tip;
  30. @Before
  31. public void setUp() throws Exception {
  32. server = newRepo("server");
  33. client = newRepo("client");
  34. TestRepository<InMemoryRepository> remote =
  35. new TestRepository<>(server);
  36. commit0 = remote.commit().message("0").create();
  37. commit1 = remote.commit().message("1").parent(commit0).create();
  38. tip = remote.commit().message("2").parent(commit1).create();
  39. remote.update("master", tip);
  40. }
  41. @After
  42. public void tearDown() {
  43. Transport.unregister(testProtocol);
  44. }
  45. private static InMemoryRepository newRepo(String name) {
  46. return new InMemoryRepository(new DfsRepositoryDescription(name));
  47. }
  48. @Test
  49. public void testFetchParentOfShallowCommit() throws Exception {
  50. testProtocol = new TestProtocol<>(
  51. new UploadPackFactory<Object>() {
  52. @Override
  53. public UploadPack create(Object req, Repository db)
  54. throws ServiceNotEnabledException,
  55. ServiceNotAuthorizedException {
  56. UploadPack up = new UploadPack(db);
  57. up.setRequestPolicy(RequestPolicy.REACHABLE_COMMIT);
  58. // assume client has a shallow commit
  59. up.getRevWalk().assumeShallow(
  60. Collections.singleton(commit1.getId()));
  61. return up;
  62. }
  63. }, null);
  64. uri = testProtocol.register(ctx, server);
  65. assertFalse(client.hasObject(commit0.toObjectId()));
  66. // Fetch of the parent of the shallow commit
  67. try (Transport tn = testProtocol.open(uri, client, "server")) {
  68. tn.fetch(NullProgressMonitor.INSTANCE,
  69. Collections.singletonList(new RefSpec(commit0.name())));
  70. assertTrue(client.hasObject(commit0.toObjectId()));
  71. }
  72. }
  73. }