示例#1
0
		public void CheckDefaults()
		{
			Mks defalutMks = new Mks();
			Assert.AreEqual(@"si.exe", defalutMks.Executable);
			Assert.AreEqual(8722, defalutMks.Port);
			Assert.AreEqual(true, defalutMks.AutoGetSource);
			Assert.AreEqual(false, defalutMks.CheckpointOnSuccess);
			Assert.AreEqual(false, defalutMks.AutoDisconnect);
		}
示例#2
0
		public void ValuePopulation()
		{
			mks = CreateMks(CreateSourceControlXml(), null, null);

			Assert.AreEqual(@"..\bin\si.exe", mks.Executable);
			Assert.AreEqual(@"hostname", mks.Hostname);
			Assert.AreEqual(8722, mks.Port);
			Assert.AreEqual(@"CCNetUser", mks.User);
			Assert.AreEqual(@"CCNetPassword", mks.Password);
			Assert.AreEqual(sandboxRoot, mks.SandboxRoot);
			Assert.AreEqual(@"myproject.pj", mks.SandboxFile);
			Assert.AreEqual(true, mks.AutoGetSource);
			Assert.AreEqual(true, mks.CheckpointOnSuccess);
			Assert.AreEqual(true, mks.AutoDisconnect);
		}
示例#3
0
		private static Mks CreateMks(string xml, IHistoryParser historyParser, ProcessExecutor executor)
		{
			Mks newMks = new Mks(historyParser, executor);
			NetReflector.Read(xml, newMks);
			return newMks;
		}
示例#4
0
		public void GetModificationsCallsMemberInfoForNonDeletedModifications()
		{
			Modification addedModification = ModificationMother.CreateModification("myFile.file", "MyFolder");
			addedModification.Type = "Added";

			Modification modifiedModification = ModificationMother.CreateModification("myFile.file", "MyFolder");
			modifiedModification.Type = "Modified";

			Modification deletedModification = ModificationMother.CreateModification("myFile.file", "MyFolder");
			deletedModification.Type = "Deleted";

			mksHistoryParserWrapper.ExpectAndReturn("Parse", new Modification[] {addedModification, modifiedModification, deletedModification}, new IsTypeOf(typeof (TextReader)), FROM, TO);
			mksHistoryParserWrapper.ExpectAndReturn("ParseMemberInfoAndAddToModification", null, addedModification, new IsTypeOf(typeof(StringReader)));
			mksHistoryParserWrapper.ExpectAndReturn("ParseMemberInfoAndAddToModification", null, modifiedModification, new IsTypeOf(typeof(StringReader)));
            mksHistoryParserWrapper.ExpectAndReturn("ParseMemberInfoAndAddToModification", null, deletedModification, new IsTypeOf(typeof(StringReader)));
			mockExecutorWrapper.SetupResult("Execute", new ProcessResult("", null, 0, false), new Type[]{typeof (ProcessInfo)});

			mks = CreateMks(CreateSourceControlXml(), mksHistoryParser, mockProcessExecutor);
			Modification[] modifications = mks.GetModifications(IntegrationResultMother.CreateSuccessful(FROM), IntegrationResultMother.CreateSuccessful(TO));
			Assert.AreEqual(3, modifications.Length);
		}
示例#5
0
		public void GetModificationsFiltersByModifiedTimeIfCheckpointOnSuccessIsFalse()
		{
			Modification modificationBeforePreviousIntegration = ModificationMother.CreateModification("ccnet", FROM.AddMinutes(-2));
			Modification modificationInThisIntegration = ModificationMother.CreateModification("ccnet", TO.AddMinutes(-1));
			Modification modificationAfterIntegrationStartTime = ModificationMother.CreateModification("myFile.file", TO.AddMinutes(1));

			Modification[] integrationModifications = new Modification[] {modificationBeforePreviousIntegration, modificationInThisIntegration, modificationAfterIntegrationStartTime};
			mksHistoryParserWrapper.ExpectAndReturn("Parse", integrationModifications, new IsTypeOf(typeof (TextReader)), FROM, TO);
			mksHistoryParserWrapper.ExpectAndReturn("ParseMemberInfoAndAddToModification", null, modificationBeforePreviousIntegration, new IsTypeOf(typeof(StringReader)));
			mksHistoryParserWrapper.ExpectAndReturn("ParseMemberInfoAndAddToModification", null, modificationInThisIntegration, new IsTypeOf(typeof(StringReader)));
			mksHistoryParserWrapper.ExpectAndReturn("ParseMemberInfoAndAddToModification", null, modificationAfterIntegrationStartTime, new IsTypeOf(typeof(StringReader)));
			mockExecutorWrapper.SetupResult("Execute", new ProcessResult("", null, 0, false), new Type[]{typeof (ProcessInfo)});

			mks = CreateMks(CreateSourceControlXml(), mksHistoryParser, mockProcessExecutor);
			mks.CheckpointOnSuccess = false;
			Modification[] modifications = mks.GetModifications(IntegrationResultMother.CreateSuccessful(FROM), IntegrationResultMother.CreateSuccessful(TO));
			Assert.AreEqual(1, modifications.Length);
		}
示例#6
0
		public void GetModificationsForModificationInRootFolder()
		{
			sandboxRoot = TempFileUtil.GetTempPath("MksSandBox");
			
			Modification addedModification = ModificationMother.CreateModification("myFile.file", null);
			addedModification.Type = "Added";

			mksHistoryParserWrapper.ExpectAndReturn("Parse", new Modification[] {addedModification}, new IsTypeOf(typeof (TextReader)), FROM, TO);
			mksHistoryParserWrapper.ExpectAndReturn("ParseMemberInfoAndAddToModification", new Modification[] {addedModification}, new IsTypeOf(typeof (Modification)), new IsTypeOf(typeof (StringReader)));
			mockExecutorWrapper.ExpectAndReturn("Execute", new ProcessResult("", null, 0, false), new IsTypeOf(typeof (ProcessInfo)));

			string expectedCommand = string.Format(@"memberinfo --xmlapi --user=CCNetUser --password=CCNetPassword --quiet {0}", 
                GeneratePath(@"{0}\myFile.file", sandboxRoot));
			ProcessInfo expectedProcessInfo = ExpectedProcessInfo(expectedCommand);
			mockExecutorWrapper.ExpectAndReturn("Execute", new ProcessResult(null, null, 0, false), expectedProcessInfo);

			string expectedDisconnectCommand = string.Format(@"disconnect --user=CCNetUser --password=CCNetPassword --quiet --forceConfirm=yes");
			ProcessInfo expectedDisconnectProcessInfo = ExpectedProcessInfo(expectedDisconnectCommand);
			mockExecutorWrapper.ExpectAndReturn("Execute", new ProcessResult(null, null, 0, false), expectedDisconnectProcessInfo);
			
			mks = CreateMks(CreateSourceControlXml(), mksHistoryParser, mockProcessExecutor);
			Modification[] modifications = mks.GetModifications(IntegrationResultMother.CreateSuccessful(FROM), IntegrationResultMother.CreateSuccessful(TO));
			Assert.AreEqual(1, modifications.Length);
		}
示例#7
0
		public void GetModificationsCallsParseOnHistoryParser()
		{
			mksHistoryParserWrapper.ExpectAndReturn("Parse", new Modification[0], new IsTypeOf(typeof (TextReader)), FROM, TO);
			mksHistoryParserWrapper.ExpectNoCall("ParseMemberInfoAndAddToModification", new Type[] {(typeof (Modification)), typeof (StringReader)});
			
            ProcessInfo expectedProcessInfo = ExpectedProcessInfo(string.Format(@"viewsandbox --nopersist --filter=changed:all --xmlapi -R -S {0} --user=CCNetUser --password=CCNetPassword --quiet", 
                GeneratePath(@"{0}\myproject.pj", sandboxRoot)));
			mockExecutorWrapper.ExpectAndReturn("Execute", new ProcessResult(null, null, 0, false), expectedProcessInfo);
			
			string expectedDisconnectCommand = string.Format(@"disconnect --user=CCNetUser --password=CCNetPassword --quiet --forceConfirm=yes");
			ProcessInfo expectedDisconnectProcessInfo = ExpectedProcessInfo(expectedDisconnectCommand);
			mockExecutorWrapper.ExpectAndReturn("Execute", new ProcessResult(null, null, 0, false), expectedDisconnectProcessInfo);
			
			mks = CreateMks(CreateSourceControlXml(), mksHistoryParser, mockProcessExecutor);
			Modification[] modifications = mks.GetModifications(IntegrationResultMother.CreateSuccessful(FROM), IntegrationResultMother.CreateSuccessful(TO));
			Assert.AreEqual(0, modifications.Length);
		}
示例#8
0
		public void CheckpointSourceOnUnSuccessfulBuild()
		{
			string expectedDisconnectCommand = string.Format(@"disconnect --user=CCNetUser --password=CCNetPassword --quiet --forceConfirm=yes");
			ProcessInfo expectedDisconnectProcessInfo = ExpectedProcessInfo(expectedDisconnectCommand);
			mockExecutorWrapper.ExpectAndReturn("Execute", new ProcessResult(null, null, 0, false), expectedDisconnectProcessInfo);
			
			mockIntegrationResult.ExpectAndReturn("Succeeded", false);
			mockIntegrationResult.ExpectNoCall("Label", typeof (string));
			
			mks = CreateMks(CreateSourceControlXml(), mockHistoryParser, mockProcessExecutor);
			mks.LabelSourceControl(integrationResult);
		}
示例#9
0
		public void CheckpointSourceOnSuccessfulBuild()
		{
            string path = GeneratePath(@"{0}\myproject.pj", sandboxRoot);
			string expectedCommand = string.Format(@"checkpoint -d ""Cruise Control.Net Build - 20"" -L ""Build - 20"" -R -S {0} --user=CCNetUser --password=CCNetPassword --quiet", path);
			ProcessInfo expectedProcessInfo = ExpectedProcessInfo(expectedCommand);
			mockExecutorWrapper.ExpectAndReturn("Execute", new ProcessResult(null, null, 0, false), expectedProcessInfo);
			
			string expectedDisconnectCommand = string.Format(@"disconnect --user=CCNetUser --password=CCNetPassword --quiet --forceConfirm=yes");
			ProcessInfo expectedDisconnectProcessInfo = ExpectedProcessInfo(expectedDisconnectCommand);
			mockExecutorWrapper.ExpectAndReturn("Execute", new ProcessResult(null, null, 0, false), expectedDisconnectProcessInfo);
			
			mockIntegrationResult.ExpectAndReturn("Succeeded", true);
			mockIntegrationResult.ExpectAndReturn("Label", "20");
			
			mks = CreateMks(CreateSourceControlXml(), mockHistoryParser, mockProcessExecutor);
			mks.LabelSourceControl(integrationResult);
		}
示例#10
0
		public void GetSourceWithSpacesInSandbox()
		{
			sandboxRoot = TempFileUtil.GetTempPath("Mks Sand Box");
            string expectedResyncCommand = string.Format(@"resync --overwriteChanged --restoreTimestamp --forceConfirm=yes --includeDropped -R -S ""{0}\myproject.pj"" --user=CCNetUser --password=CCNetPassword --quiet", sandboxRoot);
			mockExecutorWrapper.ExpectAndReturn("Execute", new ProcessResult(null, null, 0, false), ExpectedProcessInfo(expectedResyncCommand));
			
			string expectedAttribCommand = string.Format(@"-R /s ""{0}\*""", sandboxRoot);
			mockExecutorWrapper.ExpectAndReturn("Execute", new ProcessResult(null, null, 0, false), ExpectedProcessInfo("attrib", expectedAttribCommand));
			
			string expectedDisconnectCommand = string.Format(@"disconnect --user=CCNetUser --password=CCNetPassword --quiet --forceConfirm=yes");
			ProcessInfo expectedDisconnectProcessInfo = ExpectedProcessInfo(expectedDisconnectCommand);
			mockExecutorWrapper.ExpectAndReturn("Execute", new ProcessResult(null, null, 0, false), expectedDisconnectProcessInfo);
			
			mks = CreateMks(CreateSourceControlXml(), mockHistoryParser, mockProcessExecutor);
            mks.GetSource(new IntegrationResult());
		}