public void RenameDeleteMergeTest2() { MigrationItemStrings sourceFolder = new MigrationItemStrings(m_source.Name + "folder/", m_source.Name + "renamed-folder/", TestEnvironment, true); m_file = new MigrationItemStrings(sourceFolder.Name + "file.txt", sourceFolder.NewName + "file.txt", TestEnvironment, true); MigrationItemStrings file2 = new MigrationItemStrings(sourceFolder.Name + "file2.txt", sourceFolder.NewName + "file2.txt", TestEnvironment, true); MigrationItemStrings sourceFolder2 = new MigrationItemStrings(m_source.Name + "folder2/", m_source.Name + "renamed-folder2/", TestEnvironment, true); int changesetId = SourceAdapter.AddFile(m_file.LocalPath); SourceAdapter.AddFile(file2.LocalPath); SourceAdapter.AddFolder(sourceFolder2.LocalPath); SourceAdapter.BranchItem(m_source, m_target); PendRenameDelete(sourceFolder, m_file); SourceWorkspace.PendRename(sourceFolder2.LocalPath, sourceFolder2.NewLocalPath); CheckinMergeResolve(changesetId); if (TestEnvironment.SourceEndPoint.IsTfsAdapter && TestEnvironment.SourceEndPoint.AdapterType >= AdapterType.TFS2010VC) { Run(); Assert.IsTrue(VerifyContents()); } else { RunAndValidate(); } }
private void RenameMergeRenameScenario(bool includeEdit) { // Add a file MigrationItemStrings sourceFolder = new MigrationItemStrings(m_source.Name + "folder/", null, TestEnvironment, true); m_file = new MigrationItemStrings(sourceFolder.Name + "file1.txt", null, TestEnvironment, true); SourceAdapter.AddFile(m_file.LocalPath); // Branch the containing folder int changesetId = SourceAdapter.BranchItem(m_source, m_target); // Rename the file and check it in MigrationItemStrings rename1 = new MigrationItemStrings(sourceFolder.Name + "file1.txt", sourceFolder.Name + "file2.txt", TestEnvironment, true); SourceWorkspace.PendRename(rename1.LocalPath, rename1.NewLocalPath); // Checkin the rename & pend a merge CheckinMergeResolve(changesetId); MigrationItemStrings targetFolder = new MigrationItemStrings(m_target.Name + "folder/", null, TestEnvironment, true); MigrationItemStrings rename2 = new MigrationItemStrings(targetFolder.Name + "file2.txt", targetFolder.Name + "file3.txt", TestEnvironment, true); SourceWorkspace.PendRename(rename2.LocalPath, rename2.NewLocalPath); if (includeEdit) { SourceAdapter.EditFile(rename2.NewLocalPath); } RunAndValidate(); VerifyNoExtraMergeCandidates(); }
public void RenameEditUndeleteMergeTest() { int changesetId = AddBranch(); MergeDeletePendUndelete(m_file, changesetId); SourceWorkspace.PendRename(m_file.ServerPath, m_file.NewServerPath); SourceAdapter.EditFile(m_file.NewLocalPath); SourceWorkspace.Merge(m_source.LocalPath, m_target.LocalPath, VersionSpec.ParseSingleSpec(changesetId.ToString(), Environment.UserName), VersionSpec.Latest, LockLevel.None, RecursionType.Full, MergeOptions.None); resolveConflictAcceptThiers(); if (TestEnvironment.SourceEndPoint.IsTfsAdapter && TestEnvironment.SourceEndPoint.AdapterType >= AdapterType.TFS2010VC) { Run(); Assert.IsTrue(VerifyContents()); } else { RunAndValidate(); } }
public void RenameMergeTest() { MigrationItemStrings file1 = new MigrationItemStrings(source.Name + "file1.txt", source.Name + "renamed-file1.txt", TestEnvironment, true); SourceAdapter.AddFile(file1.LocalPath); MigrationItemStrings file2 = new MigrationItemStrings(source.Name + "file2.txt", source.Name + "renamed-file2.txt", TestEnvironment, true); SourceAdapter.AddFile(file2.LocalPath); int changesetId = AddBranch(); SourceAdapter.RenameItem(file.ServerPath, file.NewServerPath, AddComment); SourceAdapter.RenameItem(file1.ServerPath, file1.NewServerPath, AddComment); SourceAdapter.RenameItem(file2.ServerPath, file2.NewServerPath, AddComment); SourceWorkspace.Merge(source.LocalPath, target.LocalPath, VersionSpec.ParseSingleSpec(changesetId.ToString(), Environment.UserName), VersionSpec.Latest, LockLevel.None, RecursionType.Full, MergeOptions.ForceMerge); Conflict[] conflicts = SourceWorkspace.QueryConflicts(new string[] { "$/" }, true); foreach (Conflict conflict in conflicts) { conflict.Resolution = Resolution.AcceptTheirs; SourceWorkspace.ResolveConflict(conflict); } RunAndValidate(); }
public void RenameWithSourceNotMappedTest() { MigrationItemStrings folder = new MigrationItemStrings("rename-from", "rename-to", TestEnvironment, true); MigrationItemStrings file = new MigrationItemStrings("rename-from/fld/file.txt", "rename-to/fld/file.txt", TestEnvironment, true); // Add the child item SourceAdapter.AddFile(file.LocalPath); MappingPair mapping = new MappingPair(TestEnvironment.FirstSourceServerPath + SrcPathSeparator + "rename-from", TestEnvironment.FirstTargetServerPath + TarPathSeparator + "rename-from", true); // cloaked TestEnvironment.AddMapping(mapping); SourceWorkspace.Get(VersionSpec.Latest, GetOptions.Overwrite); SourceWorkspace.PendRename(folder.ServerPath, folder.NewServerPath); SourceAdapter.EditFile(file.NewLocalPath); Run(); VerifyHistory(3, 0); // Resolve "Branch source path not found conflict" using "$/" scope. ConflictResolver conflictManager = new ConflictResolver(Configuration); List <RTConflict> conflicts = conflictManager.GetConflicts(); Assert.AreEqual(1, conflicts.Count, "There should be only 1 conflict"); conflictManager.TryResolveConflict(conflicts[0], new VCChangeToAddOnBranchSourceNotMappedAction(), "$/"); // Add on branch source not found RunAndValidate(true, true); }
public void RenameUndeleteMergeTest() { int changesetId = AddBranch(); PendUndeleteRename(file); SourceWorkspace.Merge(source.LocalPath, target.LocalPath, VersionSpec.ParseSingleSpec(changesetId.ToString(), Environment.UserName), VersionSpec.Latest, LockLevel.None, RecursionType.Full, MergeOptions.None); CheckinMergeResolve(changesetId); if (TestEnvironment.SourceTFSVersion == TFSVersionEnum.TFS2010) { Run(); // 1 extra merge item on source side is expected in dev10 VerifyHistory(1, 1); //Changeset targetChangeset = diff.TargetChanges[0]; //Changeset sourceChangeset = diff.SourceChanges[0]; //diff.ChangesetDiff(ref targetChangeset, ref sourceChangeset); //Assert.AreEqual(1, sourceChangeset.Changes.Length); //Assert.AreEqual(ChangeType.Merge, sourceChangeset.Changes[0].ChangeType); //Assert.AreEqual(0, targetChangeset.Changes.Length); // verify content matches Assert.IsTrue(VerifyContents()); } else { RunAndValidate(); } }
public void ThreeWayCyclicRenameTest() { MigrationItemStrings folder1 = new MigrationItemStrings("folder1/", null, TestEnvironment, true); MigrationItemStrings folder2 = new MigrationItemStrings("folder2/", null, TestEnvironment, true); MigrationItemStrings folder3 = new MigrationItemStrings("folder3/", null, TestEnvironment, true); MigrationItemStrings temp = new MigrationItemStrings("temp/", null, TestEnvironment, true); MigrationItemStrings file1 = new MigrationItemStrings("folder1/file1.txt", null, TestEnvironment, true); MigrationItemStrings file2 = new MigrationItemStrings("folder2/file2.txt", null, TestEnvironment, true); MigrationItemStrings file3 = new MigrationItemStrings("folder3/file3.txt", null, TestEnvironment, true); SourceAdapter.AddFolder(folder1.LocalPath); SourceAdapter.AddFolder(folder2.LocalPath); SourceAdapter.AddFolder(folder3.LocalPath); SourceAdapter.AddFile(file1.LocalPath); SourceAdapter.AddFile(file2.LocalPath); SourceAdapter.AddFile(file3.LocalPath); // Create a cyclic rename of the three folders SourceWorkspace.Get(VersionSpec.Latest, GetOptions.Overwrite); SourceWorkspace.PendRename(folder3.ServerPath, temp.ServerPath); SourceWorkspace.PendRename(folder2.ServerPath, folder3.ServerPath); SourceWorkspace.PendRename(folder1.ServerPath, folder2.ServerPath); SourceWorkspace.PendRename(temp.ServerPath, folder1.ServerPath); SourceWorkspace.CheckIn(SourceWorkspace.GetPendingChanges(), RenameComment); RunAndValidate(); }
private void EditUndelete(MigrationItemStrings file) { SourceAdapter.AddFile(file.LocalPath); PendUndelete(file); TestUtils.EditRandomFile(file.LocalPath); SourceWorkspace.PendEdit(file.LocalPath); }
private void PendUndelete(string serverPath, int deleteChangeSetId) { Item item = SourceTfsClient.GetChangeset(deleteChangeSetId).Changes[0].Item; SourceWorkspace.Get(); SourceWorkspace.PendUndelete(serverPath, item.DeletionId); }
public void StartsWithMappingsTest() { MigrationItemStrings fileOutSideMapping = new MigrationItemStrings("source-integration/file.txt", null, TestEnvironment, true); MigrationItemStrings fileUnderMapping = new MigrationItemStrings("source/file.txt", null, TestEnvironment, true); TestUtils.CreateRandomFile(fileOutSideMapping.LocalPath, 10); TestUtils.CreateRandomFile(fileUnderMapping.LocalPath, 10); string mergeComment = "Migration test merge"; SourceWorkspace.PendAdd(fileOutSideMapping.LocalPath); SourceWorkspace.PendAdd(fileUnderMapping.LocalPath); SourceWorkspace.CheckIn(SourceWorkspace.GetPendingChanges(), mergeComment); MappingPair mapping = new MappingPair(TestEnvironment.FirstSourceServerPath + SrcPathSeparator + "source", TestEnvironment.FirstTargetServerPath + TarPathSeparator + "source", false); MappingPair mapping2 = new MappingPair(TestEnvironment.FirstSourceServerPath + SrcPathSeparator + "source-integration", TestEnvironment.FirstTargetServerPath + TarPathSeparator + "source-integration", false); TestEnvironment.Mappings.Clear(); TestEnvironment.AddMapping(mapping); TestEnvironment.AddMapping(mapping2); RunAndValidate(); }
public void MergeMovesTest() { MigrationItemStrings branch = new MigrationItemStrings("source/", "target/", TestEnvironment, true); MigrationItemStrings file = new MigrationItemStrings("source/file.txt", "source/sub/file.txt", TestEnvironment, true); MigrationItemStrings file2 = new MigrationItemStrings("source/file2.txt", "source/sub/file2.txt", TestEnvironment, true); SourceAdapter.AddFile(file.LocalPath); SourceAdapter.AddFile(file2.LocalPath); int branchChangeset = SourceAdapter.BranchItem(branch.ServerPath, branch.NewServerPath); SourceAdapter.EditFile(file.LocalPath); SourceAdapter.EditFile(file.LocalPath); SourceAdapter.EditFile(m_extraFile.LocalPath); SourceAdapter.RenameItem(file.ServerPath, file.NewServerPath); SourceAdapter.RenameItem(file2.ServerPath, file2.NewServerPath); SourceWorkspace.Merge(branch.ServerPath, branch.NewServerPath, VersionSpec.ParseSingleSpec(branchChangeset.ToString(), Environment.UserName), VersionSpec.Latest, LockLevel.None, RecursionType.Full, MergeOptions.None); ResolveConflicts(Resolution.AcceptTheirs); SourceWorkspace.CheckIn(SourceWorkspace.GetPendingChanges(), MergeComment); RunAndValidate(); }
protected void BranchCyclicalRenameTest() { MigrationItemStrings branch = new MigrationItemStrings("source/", "target/", TestEnvironment, true); MigrationItemStrings folder1 = new MigrationItemStrings("source/folder1/", null, TestEnvironment, true); MigrationItemStrings folder2 = new MigrationItemStrings("source/folder2/", null, TestEnvironment, true); MigrationItemStrings temp = new MigrationItemStrings("source/temp/", null, TestEnvironment, true); MigrationItemStrings file1 = new MigrationItemStrings("source/folder1/file1.txt", null, TestEnvironment, true); MigrationItemStrings file2 = new MigrationItemStrings("source/folder2/file2.txt", null, TestEnvironment, true); SourceAdapter.AddFolder(folder1.LocalPath); SourceAdapter.AddFolder(folder2.LocalPath); SourceAdapter.AddFile(file1.LocalPath); SourceAdapter.AddFile(file2.LocalPath); SourceAdapter.EditFile(m_extraFile.LocalPath); SourceWorkspace.PendRename(folder1.ServerPath, temp.ServerPath); SourceWorkspace.PendRename(folder2.ServerPath, folder1.ServerPath); SourceWorkspace.PendRename(temp.ServerPath, folder2.ServerPath); SourceWorkspace.CheckIn(SourceWorkspace.GetPendingChanges(), RenameComment); SourceAdapter.BranchItem(branch.ServerPath, branch.NewServerPath); RunAndValidate(); }
private void PendRenameEdit(MigrationItemStrings file) { TestUtils.EditRandomFile(file.LocalPath); SourceWorkspace.PendEdit(file.LocalPath); SourceWorkspace.PendRename(file.LocalPath, file.NewLocalPath); }
public void RenameDeleteMergeTest2() { MigrationItemStrings sourceFolder = new MigrationItemStrings(source.Name + "folder/", source.Name + "renamed-folder/", TestEnvironment, true); file = new MigrationItemStrings(sourceFolder.Name + "file.txt", sourceFolder.NewName + "file.txt", TestEnvironment, true); MigrationItemStrings file2 = new MigrationItemStrings(sourceFolder.Name + "file2.txt", sourceFolder.NewName + "file2.txt", TestEnvironment, true); MigrationItemStrings sourceFolder2 = new MigrationItemStrings(source.Name + "folder2/", source.Name + "renamed-folder2/", TestEnvironment, true); int changesetId = SourceAdapter.AddFile(file.LocalPath); SourceAdapter.AddFile(file2.LocalPath); SourceAdapter.AddFolder(sourceFolder2.LocalPath); SourceAdapter.BranchItem(source.ServerPath, target.ServerPath); PendRenameDelete(sourceFolder, file); SourceWorkspace.PendRename(sourceFolder2.LocalPath, sourceFolder2.NewLocalPath); CheckinMergeResolve(changesetId); if (TestEnvironment.SourceTFSVersion == TFSVersionEnum.TFS2010) { Run(); Assert.IsTrue(VerifyContents()); } else { RunAndValidate(); } }
public void RenameEditUndeleteTest() { file = new MigrationItemStrings("file.txt", "newFile.txt", TestEnvironment, true); EditUndelete(file); SourceWorkspace.PendRename(file.LocalPath, file.NewLocalPath); RunAndValidate(); }
/// <summary> /// Resolve all merge conflicts with the specified resolution so that it may be checked in /// </summary> /// <param name="resolution">resolution to use</param> protected void ResolveConflicts(Resolution resolution) { Conflict[] conflicts = SourceWorkspace.QueryConflicts(new string[] { "$/" }, true); foreach (Conflict conflict in conflicts) { conflict.Resolution = resolution; SourceWorkspace.ResolveConflict(conflict); } }
private void resolveConflictAcceptThiers() { Conflict[] conflicts = SourceWorkspace.QueryConflicts(new string[] { "$/" }, true); foreach (Conflict c in conflicts) { c.Resolution = Resolution.AcceptTheirs; SourceWorkspace.ResolveConflict(c); } }
private void CheckinMergeResolve(int changesetId) { SourceWorkspace.CheckIn(SourceWorkspace.GetPendingChanges(), MultiActionComment); SourceWorkspace.Merge(source.LocalPath, target.LocalPath, VersionSpec.ParseSingleSpec(changesetId.ToString(), Environment.UserName), VersionSpec.Latest, LockLevel.None, RecursionType.Full, MergeOptions.None); resolveConflictAcceptThiers(); }
public void BranchMergeTest() { file = new MigrationItemStrings(source.Name + "file.txt", target.Name + "file.txt", TestEnvironment, true); SourceAdapter.AddFile(file.LocalPath); SourceWorkspace.Merge(file.ServerPath, file.NewServerPath, VersionSpec.Latest, VersionSpec.Latest); RunAndValidate(); }
/// <summary> /// Perform a merge specifying the start and end changeset /// </summary> /// <param name="branch">The source server pah is the server namd the target path is the NewServerPath</param> /// <param name="mergeFrom">changeset to start merge from</param> /// <param name="mergeTo">changeset to merge up to</param> private void MergeTfsItem(MigrationItemStrings branch, int mergeFrom, int mergeTo) { string mergeComment = "Migration test merge"; SourceWorkspace.Merge(branch.ServerPath, branch.NewServerPath, VersionSpec.ParseSingleSpec(mergeFrom.ToString(), Environment.UserName), VersionSpec.ParseSingleSpec(mergeTo.ToString(), Environment.UserName), LockLevel.None, RecursionType.Full, MergeOptions.None); SourceWorkspace.CheckIn(SourceWorkspace.GetPendingChanges(), mergeComment); }
public void MergeDeleteTest() { int changesetId = AddBranch(); SourceAdapter.DeleteItem(file.ServerPath); SourceWorkspace.Merge(source.LocalPath, target.LocalPath, VersionSpec.ParseSingleSpec(changesetId.ToString(), Environment.UserName), VersionSpec.Latest, LockLevel.None, RecursionType.Full, MergeOptions.ForceMerge); RunAndValidate(); }
public void RecursiveBranchDeleteTest() { file = new MigrationItemStrings(source.Name + "file.txt", target.Name + "file.txt", TestEnvironment, true); SourceAdapter.AddFile(file.LocalPath); SourceWorkspace.PendBranch(source.ServerPath, target.ServerPath, VersionSpec.Latest); SourceAdapter.DeleteItem(target.ServerPath); RunAndValidate(); }
public void BranchMergeDeleteTest() { file = new MigrationItemStrings(source.Name + "file.txt", target.Name + "file.txt", TestEnvironment, true); SourceAdapter.AddFile(file.LocalPath); SourceWorkspace.Merge(source.ServerPath, target.ServerPath, VersionSpec.Latest, VersionSpec.Latest, LockLevel.None, RecursionType.Full, MergeOptions.None); int mergeChangeset = SourceAdapter.DeleteItem(file.NewLocalPath); RunAndValidate(); }
public void MergeTwoCyclicRenamesTest() { MigrationItemStrings branch = new MigrationItemStrings("source/", "target/", TestEnvironment, true); MigrationItemStrings folder1 = new MigrationItemStrings("source/folder1/", null, TestEnvironment, true); MigrationItemStrings folder2 = new MigrationItemStrings("source/folder2/", null, TestEnvironment, true); MigrationItemStrings folder3 = new MigrationItemStrings("source/folder3/", null, TestEnvironment, true); MigrationItemStrings temp = new MigrationItemStrings("source/temp/", null, TestEnvironment, true); MigrationItemStrings file1 = new MigrationItemStrings("source/folder1/file1.txt", null, TestEnvironment, true); MigrationItemStrings file2 = new MigrationItemStrings("source/folder1/file2.txt", null, TestEnvironment, true); MigrationItemStrings tempFile = new MigrationItemStrings("source/folder1/tempFile.txt", null, TestEnvironment, true); SourceAdapter.AddFolder(folder1.LocalPath); SourceAdapter.AddFolder(folder2.LocalPath); SourceAdapter.AddFolder(folder3.LocalPath); SourceAdapter.AddFile(file1.LocalPath); SourceAdapter.AddFile(file2.LocalPath); int branchChangeset = SourceAdapter.BranchItem(branch); // Create a cyclic rename of two files SourceWorkspace.PendRename(file1.ServerPath, tempFile.ServerPath); SourceWorkspace.PendRename(file2.ServerPath, file1.ServerPath); SourceWorkspace.PendRename(tempFile.ServerPath, file2.ServerPath); // Create a three-way cyclic rename of the parent folder with two other folders SourceWorkspace.PendRename(folder1.ServerPath, temp.ServerPath); SourceWorkspace.PendRename(folder2.ServerPath, folder1.ServerPath); SourceWorkspace.PendRename(folder3.ServerPath, folder2.ServerPath); SourceWorkspace.PendRename(temp.ServerPath, folder3.ServerPath); SourceWorkspace.CheckIn(SourceWorkspace.GetPendingChanges(), RenameComment); SourceWorkspace.Merge(branch.ServerPath, branch.NewServerPath, VersionSpec.ParseSingleSpec(branchChangeset.ToString(), Environment.UserName), VersionSpec.Latest, LockLevel.None, RecursionType.Full, MergeOptions.AlwaysAcceptMine); SourceWorkspace.CheckIn(SourceWorkspace.GetPendingChanges(), MergeComment); Run(); if (TestEnvironment.SourceEndPoint.AdapterType == AdapterType.TFS2008VC) { VerifyHistory(0, 0); // For orcas, there should be no difference. } else { VerifyHistory(1, 1); // Need more comparison here. // On dev 10 server, rename becomes sourceDelete+targetbranch. So the rename-from-name will exist in the original place as a deleted item. // The merge will then merge the item as a Merge|Delete. We will skip the change in this case. } }
public void BranchEditTest() { file = new MigrationItemStrings(source.Name + "file.txt", target.Name + "file.txt", TestEnvironment, true); SourceAdapter.AddFile(file.LocalPath); SourceWorkspace.PendBranch(source.ServerPath, target.ServerPath, VersionSpec.Latest); TestUtils.EditRandomFile(file.NewLocalPath); SourceWorkspace.PendEdit(file.NewLocalPath); RunAndValidate(); }
private void PendMergeUndelete(MigrationItemStrings item, int changesetId) { MergeDeletePendUndelete(item, changesetId); SourceWorkspace.CheckIn(SourceWorkspace.GetPendingChanges(), MultiActionComment); SourceWorkspace.Merge(m_source.LocalPath, m_target.LocalPath, VersionSpec.ParseSingleSpec(changesetId.ToString(), Environment.UserName), VersionSpec.Latest, LockLevel.None, RecursionType.Full, MergeOptions.None); resolveConflictAcceptThiers(); }
public void AddSourceRename() { MigrationItemStrings file = new MigrationItemStrings("file.txt", "file-renamed.txt", TestEnvironment, true); SourceAdapter.AddFile(file.LocalPath); SourceWorkspace.Get(); SourceWorkspace.PendRename(file.ServerPath, file.NewServerPath); TestUtils.CreateRandomFile(file.LocalPath, 10); SourceWorkspace.PendAdd(file.LocalPath); SourceWorkspace.CheckIn(SourceWorkspace.GetPendingChanges(), "AddSourceRename"); RunAndValidate(); }
public void MergeEditTest() { int changesetId = AddBranch(); SourceAdapter.EditFile(m_file.LocalPath); SourceWorkspace.Merge(m_source.LocalPath, m_target.LocalPath, VersionSpec.ParseSingleSpec(changesetId.ToString(), Environment.UserName), VersionSpec.Latest, LockLevel.None, RecursionType.Full, MergeOptions.None); RunAndValidate(); }
protected void RenameParentDeleteChildScenario(bool useSource) { MigrationItemStrings file1 = new MigrationItemStrings("folder1/file1.txt", "folder2/file1.txt", TestEnvironment, useSource); MigrationItemStrings file2 = new MigrationItemStrings("folder1/file2.txt", "folder2/file2.txt", TestEnvironment, useSource); MigrationItemStrings folder1 = new MigrationItemStrings("folder1/", "folder2/", TestEnvironment, useSource); SourceAdapter.AddFile(file1.LocalPath); SourceAdapter.AddFile(file2.LocalPath); SourceWorkspace.PendRename(folder1.ServerPath, folder1.NewServerPath); SourceWorkspace.PendDelete(file1.NewServerPath); SourceWorkspace.CheckIn(SourceWorkspace.GetPendingChanges(), MultiActionComment); }
public void RenameCaseAddSubitemTest() { MigrationItemStrings folder = new MigrationItemStrings("FOLDER", "folder", TestEnvironment, true); MigrationItemStrings file = new MigrationItemStrings("folder/file.txt", null, TestEnvironment, true); SourceAdapter.AddFolder(folder.LocalPath); SourceWorkspace.Get(VersionSpec.Latest, GetOptions.Overwrite); SourceWorkspace.PendRename(folder.ServerPath, folder.NewServerPath); SourceAdapter.AddFile(file.LocalPath); RunAndValidate(); }