code: package com.beijunyi.parallelgit.filesystem;
  
  import java.io.IOException;
  import java.net.URI;
  import java.util.Collections;
  
  import com.beijunyi.parallelgit.filesystem.utils.GfsUriBuilder;
  import org.eclipse.jgit.lib.Repository;
  import org.eclipse.jgit.revwalk.RevCommit;
  import org.junit.Test;
  
  import static com.beijunyi.parallelgit.filesystem.GitFileSystemProvider.*;
  import static java.util.Collections.singletonMap;
  import static org.junit.Assert.*;
  
  public class GitFileSystemProviderNewFileSystemTest extends AbstractGitFileSystemTest {
  
    @Test
    public void openNonBareRepositoryFromUri() throws IOException {
      initFileRepository(false);
      URI uri = GfsUriBuilder.prepare()
                  .repository(repoDir)
                  .build();
      try(GitFileSystem gfs = provider.newFileSystem(uri, Collections.<String, Object>emptyMap())) {
        Repository repo = gfs.getRepository();
        assertFalse(repo.isBare());
        assertEquals(repoDir, gfs.getRepository().getWorkTree());
      }
    }
  
    @Test
    public void openBareRepositoryFromUri() throws IOException {
      initFileRepository(true);
      URI uri = GfsUriBuilder.prepare()
                  .repository(repoDir)
                  .build();
      try(GitFileSystem gfs = provider.newFileSystem(uri, Collections.<String, Object>emptyMap())) {
        Repository repo = gfs.getRepository();
        assertTrue(repo.isBare());
        assertEquals(repoDir, repo.getDirectory());
      }
    }
  
    @Test
    public void openWithBranch() throws IOException {
      initFileRepository(true);
      writeToCache("some_file");
      RevCommit commit = commitToBranch("test_branch");
      URI uri = GfsUriBuilder.prepare()
                  .repository(repoDir)
                  .build();
      try(GitFileSystem gfs = provider.newFileSystem(uri, singletonMap(BRANCH, "test_branch"))) {
        assertEquals("test_branch", gfs.getStatusProvider().branch());
  
        RevCommit baseCommit = gfs.getStatusProvider().commit();
        assertNotNull(baseCommit);
        assertEquals(commit, baseCommit);
      }
    }
  
    @Test
    public void openWithRevision() throws IOException {
      initFileRepository(true);
      writeToCache("some_file");
      RevCommit commit = commitToMaster();
      URI uri = GfsUriBuilder.prepare()
                  .repository(repoDir)
                  .build();
      try(GitFileSystem gfs = provider.newFileSystem(uri, singletonMap(COMMIT, commit.name()))) {
        RevCommit baseCommit = gfs.getStatusProvider().commit();
        assertNotNull(baseCommit);
        assertEquals(commit, baseCommit);
      }
    }
  
  }
  