public void ProjectBindingOperation_Commit_LegacyProjectSystem_DoesAddFile() { // Arrange CSharpVBBindingOperation testSubject = this.CreateTestSubject(); this.projectMock.SetCSProjectKind(); PropertyMock prop = CreateRuleSetProperty(this.projectMock, "config1", "MyCustomRuleSet.ruleset"); testSubject.Initialize(); testSubject.Prepare(CancellationToken.None); this.projectSystemHelper.SetIsLegacyProjectSystem(true); // Act using (new AssertIgnoreScope()) // Ignore that the file is not on disk { testSubject.Commit(); } // Assert string projectFile = Path.Combine(Path.GetDirectoryName(this.projectMock.FilePath), Path.GetFileNameWithoutExtension(this.projectMock.FilePath) + ".ruleset"); prop.Value.ToString().Should().Be(Path.GetFileName(projectFile), "Should update the property value"); this.projectMock.Files.ContainsKey(projectFile).Should().BeTrue("Should add the file to the project for the legacy project system"); }
public void ProjectBindingOperation_Prepare_Cancellation() { // Arrange CSharpVBBindingOperation testSubject = this.CreateTestSubject(); this.projectMock.SetCSProjectKind(); PropertyMock prop = CreateRuleSetProperty(this.projectMock, "config1", CSharpVBBindingOperation.DefaultProjectRuleSet); testSubject.Initialize(); using (CancellationTokenSource src = new CancellationTokenSource()) { CancellationToken token = src.Token; src.Cancel(); // Act testSubject.Prepare(token); } // Assert string expectedFile = Path.Combine(Path.GetDirectoryName(this.projectMock.FilePath), Path.GetFileNameWithoutExtension(this.projectMock.FilePath) + ".ruleset"); testSubject.PropertyInformationMap[prop].NewRuleSetFilePath.Should().BeNull("Not expecting the new rule set path to be set when canceled"); prop.Value.ToString().Should().Be(CSharpVBBindingOperation.DefaultProjectRuleSet, "Should not update the property value"); this.projectMock.Files.ContainsKey(expectedFile).Should().BeFalse("Should not be added to the project"); }
public void ProjectBindingOperation_Prepare_SameDefaultRuleSetsInProject() { // Arrange CSharpVBBindingOperation testSubject = this.CreateTestSubject(); this.projectMock.SetVBProjectKind(); PropertyMock firstRuleSet = CreateRuleSetProperty(this.projectMock, "config1", "MyCustomRuleSet.ruleset"); PropertyMock secondRuleSet = CreateRuleSetProperty(this.projectMock, "config2", "MyCustomRuleSet.ruleset"); testSubject.Initialize(); // Act testSubject.Prepare(CancellationToken.None); // Assert string expectedRuleSetFileForPropertiesWithDefaultRuleSets = Path.Combine(Path.GetDirectoryName(this.projectMock.FilePath), Path.GetFileNameWithoutExtension(this.projectMock.FilePath) + ".ruleset"); fileSystem.GetFile(expectedRuleSetFileForPropertiesWithDefaultRuleSets).Should().Be(null); testSubject.PropertyInformationMap[firstRuleSet].NewRuleSetFilePath.Should().Be(expectedRuleSetFileForPropertiesWithDefaultRuleSets, "Expected different rule set path for properties with custom rulesets"); testSubject.PropertyInformationMap[secondRuleSet].NewRuleSetFilePath.Should().Be(expectedRuleSetFileForPropertiesWithDefaultRuleSets, "Expected different rule set path for properties with custom rulesets"); // Act (write pending) this.sccFileSystem.WritePendingNoErrorsExpected(); // Assert that written fileSystem.GetFile(expectedRuleSetFileForPropertiesWithDefaultRuleSets).Should().NotBe(null); }
public void ProjectBindingOperation_Prepare_VariousRuleSetsInProjects() { // Arrange CSharpVBBindingOperation testSubject = this.CreateTestSubject(); this.projectMock.SetVBProjectKind(); PropertyMock customRuleSetProperty1 = CreateRuleSetProperty(this.projectMock, "config1", "Custom.ruleset"); PropertyMock customRuleSetProperty2 = CreateRuleSetProperty(this.projectMock, "config2", "Custom.ruleset"); PropertyMock defaultRuleSetProperty1 = CreateRuleSetProperty(this.projectMock, "config3", CSharpVBBindingOperation.DefaultProjectRuleSet); PropertyMock defaultRuleSetProperty2 = CreateRuleSetProperty(this.projectMock, "config4", CSharpVBBindingOperation.DefaultProjectRuleSet); testSubject.Initialize(); // Act testSubject.Prepare(CancellationToken.None); // Assert string expectedRuleSetFileForPropertiesWithDefaultRuleSets = cSharpVBBindingConfig.RuleSet.Path; fileSystem.GetFile(expectedRuleSetFileForPropertiesWithDefaultRuleSets).Should().NotBe(null); testSubject.PropertyInformationMap[defaultRuleSetProperty1].NewRuleSetFilePath.Should().Be(expectedRuleSetFileForPropertiesWithDefaultRuleSets, "Expected all the properties with default ruleset to have the same new ruleset"); testSubject.PropertyInformationMap[defaultRuleSetProperty2].NewRuleSetFilePath.Should().Be(expectedRuleSetFileForPropertiesWithDefaultRuleSets, "Expected all the properties with default ruleset to have the same new ruleset"); string expectedRulesetFilePath = Path.Combine(Path.GetDirectoryName(this.projectMock.FilePath), Path.GetFileNameWithoutExtension(this.projectMock.FilePath) + ".ruleset"); string expectedRuleSetForConfig1 = Path.ChangeExtension(expectedRulesetFilePath, "config1.ruleset"); testSubject.PropertyInformationMap[customRuleSetProperty1].NewRuleSetFilePath.Should().Be(expectedRuleSetForConfig1, "Expected different rule set path for properties with custom rulesets"); fileSystem.GetFile(expectedRuleSetForConfig1).Should().Be(null); string expectedRuleSetForConfig2 = Path.ChangeExtension(expectedRulesetFilePath, "config2.ruleset"); testSubject.PropertyInformationMap[customRuleSetProperty2].NewRuleSetFilePath.Should().Be(expectedRuleSetForConfig2, "Expected different rule set path for properties with custom rulesets"); fileSystem.GetFile(expectedRuleSetForConfig2).Should().Be(null); // Act (write pending) this.sccFileSystem.WritePendingNoErrorsExpected(); // Assert that written fileSystem.GetFile(expectedRuleSetForConfig1).Should().NotBe(null); fileSystem.GetFile(expectedRuleSetForConfig2).Should().NotBe(null); }
public void ProjectBindingOperation_Initialize_ConfigurationPropertiesWithVariousValues() { // Arrange CSharpVBBindingOperation testSubject = this.CreateTestSubject(); this.projectMock.SetCSProjectKind(); PropertyMock prop1 = CreateRuleSetProperty(this.projectMock, "config1", CSharpVBBindingOperation.DefaultProjectRuleSet); PropertyMock prop2 = CreateRuleSetProperty(this.projectMock, "config2", "NonDefualtRuleSet.ruleset"); // Act testSubject.Initialize(); // Assert testSubject.ProjectFullPath.Should().Be(@"c:\solution\Project\project.proj"); testSubject.ProjectLanguage.Should().Be(Language.CSharp); CollectionAssert.AreEquivalent(new[] { prop1, prop2 }, testSubject.PropertyInformationMap.Keys.ToArray(), "Unexpected properties"); testSubject.PropertyInformationMap[prop1].CurrentRuleSetFilePath.Should().Be(CSharpVBBindingOperation.DefaultProjectRuleSet); testSubject.PropertyInformationMap[prop1].TargetRuleSetFileName.Should().Be("project", "Default ruleset - expected project based name to be generated"); testSubject.PropertyInformationMap[prop2].CurrentRuleSetFilePath.Should().Be("NonDefualtRuleSet.ruleset"); testSubject.PropertyInformationMap[prop2].TargetRuleSetFileName.Should().Be("project.config2", "Non default ruleset - expected configuration based rule set name to be generated"); }
public void ProjectBindingOperation_Initialize_ConfigurationPropertyWithSameNonDefaultValues() { // Arrange CSharpVBBindingOperation testSubject = this.CreateTestSubject(); this.projectMock.SetVBProjectKind(); PropertyMock prop1 = CreateRuleSetProperty(this.projectMock, "config1", "Custom1.ruleset"); PropertyMock prop2 = CreateRuleSetProperty(this.projectMock, "config2", "Custom1.ruleset"); // Act testSubject.Initialize(); // Assert testSubject.ProjectFullPath.Should().Be(@"c:\solution\Project\project.proj"); testSubject.ProjectLanguage.Should().Be(Language.VBNET); CollectionAssert.AreEquivalent(new[] { prop1, prop2 }, testSubject.PropertyInformationMap.Keys.ToArray(), "Unexpected properties"); foreach (var prop in new[] { prop1, prop2 }) { testSubject.PropertyInformationMap[prop].CurrentRuleSetFilePath.Should().Be("Custom1.ruleset"); testSubject.PropertyInformationMap[prop].TargetRuleSetFileName.Should().Be("project"); } }