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_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_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_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); }