@Override
 @Nullable
 public VcsDescriptor getDescriptor(final String name) {
   if (name == null) return null;
   if (myProject.isDisposed()) return null;
   return AllVcses.getInstance(myProject).getDescriptor(name);
 }
 @Override
 @Nullable
 public AbstractVcs findVcsByName(String name) {
   if (name == null) return null;
   if (myProject.isDisposed()) return null;
   return AllVcses.getInstance(myProject).getByName(name);
 }
  /** call in setUp */
  public DuringChangeListManagerUpdateTestScheme(final Project project, final String tmpDirPath) {
    final MockAbstractVcs vcs = new MockAbstractVcs(project);
    myChangeProvider = new MockDelayingChangeProvider();
    vcs.setChangeProvider(myChangeProvider);

    final File mockVcsRoot = new File(tmpDirPath, "mock");
    mockVcsRoot.mkdir();
    final VirtualFile vRoot = LocalFileSystem.getInstance().refreshAndFindFileByIoFile(mockVcsRoot);

    final ProjectLevelVcsManagerImpl projectLevelVcsManager =
        (ProjectLevelVcsManagerImpl) ProjectLevelVcsManager.getInstance(project);
    projectLevelVcsManager.registerVcs(vcs);
    // projectLevelVcsManager.setDirectoryMapping(mockVcsRoot.getAbsolutePath(), vcs.getName());
    final ArrayList<VcsDirectoryMapping> list =
        new ArrayList<VcsDirectoryMapping>(projectLevelVcsManager.getDirectoryMappings());
    list.add(new VcsDirectoryMapping(vRoot.getPath(), vcs.getName()));
    projectLevelVcsManager.setDirectoryMappings(list);

    AbstractVcs vcsFound = projectLevelVcsManager.findVcsByName(vcs.getName());
    final VirtualFile[] roots = projectLevelVcsManager.getRootsUnderVcs(vcsFound);
    assert roots.length == 1
        : Arrays.asList(roots)
            + "; "
            + vcs.getName()
            + "; "
            + Arrays.toString(AllVcses.getInstance(project).getAll());

    myDirtyScopeManager = VcsDirtyScopeManager.getInstance(project);
    myClManager = ChangeListManager.getInstance(project);
  }
 @Override
 @Nullable
 public AbstractVcs getVcsFor(@NotNull VirtualFile file) {
   final String vcsName = myMappings.getVcsFor(file);
   if (vcsName == null || vcsName.isEmpty()) {
     return null;
   }
   return AllVcses.getInstance(myProject).getByName(vcsName);
 }
 public void unregisterVcs(@NotNull AbstractVcs vcs) {
   if (!ApplicationManager.getApplication().isUnitTestMode()
       && myMappings.haveActiveVcs(vcs.getName())) {
     // unlikely
     LOG.warn(
         "Active vcs '" + vcs.getName() + "' is being unregistered. Remove from mappings first.");
   }
   myMappings.beingUnregistered(vcs.getName());
   AllVcses.getInstance(myProject).unregisterManually(vcs);
 }
  @Override
  protected void tearDown() throws Exception {
    try {
      myTaskManager.setRepositories(Collections.<TaskRepository>emptyList());
      AllVcses.getInstance(getProject()).unregisterManually(myVcs);
    } finally {
      myTaskManager = null;
      myVcs = null;
      myChangeListManager = null;

      super.tearDown();
    }
  }
 public boolean haveVcses() {
   return !AllVcses.getInstance(myProject).isEmpty();
 }
 @Override
 public VcsDescriptor[] getAllVcss() {
   return AllVcses.getInstance(myProject).getAll();
 }
 public void registerVcs(AbstractVcs vcs) {
   AllVcses.getInstance(myProject).registerManually(vcs);
 }
  @Override
  public void setUp() throws Exception {
    super.setUp();

    myVcs = new MockAbstractVcs(getProject());
    AllVcses.getInstance(getProject()).registerManually(myVcs);
    myChangeListManager = (ChangeListManagerImpl) ChangeListManager.getInstance(getProject());

    myTaskManager = (TaskManagerImpl) TaskManager.getManager(getProject());

    ProjectLevelVcsManager.getInstance(getProject()).setDirectoryMapping("", myVcs.getName());
    ProjectLevelVcsManager.getInstance(getProject()).hasActiveVcss();
    myRepository = new TestRepository();
    myRepository.setTasks(
        new Task() {
          @NotNull
          @Override
          public String getId() {
            return "TEST-001";
          }

          @NotNull
          @Override
          public String getSummary() {
            return "Summary";
          }

          @Override
          public String getDescription() {
            return null;
          }

          @NotNull
          @Override
          public Comment[] getComments() {
            return new Comment[0];
          }

          @NotNull
          @Override
          public Icon getIcon() {
            return TasksIcons.Unknown;
          }

          @NotNull
          @Override
          public TaskType getType() {
            return TaskType.BUG;
          }

          @Override
          public Date getUpdated() {
            return null;
          }

          @Override
          public Date getCreated() {
            return null;
          }

          @Override
          public boolean isClosed() {
            return false;
          }

          @Override
          public boolean isIssue() {
            return true;
          }

          @Override
          public String getIssueUrl() {
            return null;
          }

          @Override
          public TaskRepository getRepository() {
            return myRepository;
          }
        });
    myTaskManager.setRepositories(Collections.singletonList(myRepository));
  }