Beispiel #1
0
        internal static VersionControlServer GetFakeVCServer(List <ChangesetInfo> changeSetHierarchy)
        {
            var server = new ShimVersionControlServer()
            {
                QueryMergesStringVersionSpecStringVersionSpecVersionSpecVersionSpecRecursionType = (sourcePath, sourceVersion, targetPath, targetVersion, versionFrom, versionTo, recursion) =>
                {
                    var mergeIds = from set in changeSetHierarchy
                                   from c in set.Changes
                                   where c.ChangeType.HasFlag(ChangeType.Merge) && c.Path == targetPath &&
                                   c.VersionId == ((ChangesetVersionSpec)versionFrom).ChangesetId
                                   select c.MergeSourcesIds;
                    var flatList = new List <int>();
                    foreach (var list in mergeIds)
                    {
                        flatList = flatList.Union(list).ToList();
                    }
                    return(flatList.ConvertAll(i => (ChangesetMerge) new ShimChangesetMerge()
                    {
                        SourceVersionGet = () => i, TargetVersionGet = () => ((ChangesetVersionSpec)versionFrom).ChangesetId
                    }).ToArray());
                },
                GetChangesetInt32 = (i) => changeSetHierarchy.SingleOrDefault(c => c.Id == i).ToChangeset()
            };

            return(server);
        }
		internal static VersionControlServer GetFakeVCServer(List<ChangesetInfo> changeSetHierarchy)
		{
			var server = new ShimVersionControlServer()
			{
				QueryMergesStringVersionSpecStringVersionSpecVersionSpecVersionSpecRecursionType = (sourcePath, sourceVersion, targetPath, targetVersion, versionFrom, versionTo, recursion) =>
					{
						var mergeIds = from set in changeSetHierarchy
									   from c in set.Changes
									   where c.ChangeType.HasFlag(ChangeType.Merge) && c.Path == targetPath &&
										   c.VersionId == ((ChangesetVersionSpec)versionFrom).ChangesetId
									   select c.MergeSourcesIds;
						var flatList = new List<int>();
						foreach (var list in mergeIds)
						{
							flatList = flatList.Union(list).ToList();
						}
						return flatList.ConvertAll(i => (ChangesetMerge)new ShimChangesetMerge() { SourceVersionGet = () => i, TargetVersionGet = () => ((ChangesetVersionSpec)versionFrom).ChangesetId }).ToArray();
					},
					GetChangesetInt32 = (i) => changeSetHierarchy.SingleOrDefault(c => c.Id == i).ToChangeset()
			};
			return server;
		}
        /// <summary>The setup TFS shim.</summary>
        /// <param name="collectionUrl">The collection URL.</param>
        /// <param name="teamProjectName">The team project name.</param>
        /// <param name="changesetId">The change set id.</param>
        /// <param name="pendingChangeCount">The pending change count.</param>
        private void SetupTfsShim(
            string collectionUrl, string teamProjectName, int changesetId, int pendingChangeCount)
        {
            ShimTfsTeamProjectCollection.ConstructorUri = (@this, value) =>
                {
            // ReSharper disable ObjectCreationAsStatement
                    new ShimTfsTeamProjectCollection(@this) { NameGet = () => collectionUrl };
                    new ShimTfsConnection(@this)
                    {
                        EnsureAuthenticated = () => { },
                        CredentialsGet = () => new System.Net.NetworkCredential("testUser", "pwd", "testDomain")
                    };
            // ReSharper restore ObjectCreationAsStatement
                };

            var workspace = new ShimWorkspace
                {
                    CheckInPendingChangeArrayString = (x, y) => changesetId,
                    Delete = () => true,
                    GetPendingChanges = () => new PendingChange[pendingChangeCount],
                };

            var teamProject = new ShimTeamProject { ServerItemGet = () => string.Format("$/{0}", teamProjectName) };

            var versionControlServer = new ShimVersionControlServer
                {
                    CreateWorkspaceStringStringStringWorkingFolderArray = (a, b, c, d) => workspace,
                    QueryWorkspacesStringStringString = (a, b, c) => new Workspace[0],
                    GetTeamProjectString = a => teamProject,
                    QueryBranchObjectsItemIdentifierRecursionType = (a, b) => new BranchObject[0],
                    SupportedFeaturesGet = () => 8,
                    ServerItemExistsStringItemType = (x, y) => true
                };

            ShimTfsConnection.AllInstances.GetServiceOf1<VersionControlServer>(t => versionControlServer);
        }