public void ProjectBindingOperation_QueueWriteProjectLevelRuleSet_NewBinding() { // Arrange CSharpVBBindingOperation testSubject = this.CreateTestSubject(); const string ruleSetFileName = "Happy"; const string projectFullPath = @"X:\SolutionDir\ProjectDir\My Project.proj"; const string solutionRuleSetPath = @"X:\SolutionDir\RuleSets\sonar1.ruleset"; string expectedSolutionRuleSetInclude = PathHelper.CalculateRelativePath(projectFullPath, solutionRuleSetPath); VsRuleSet expectedRuleSet = TestRuleSetHelper.CreateTestRuleSet ( numRules: 0, includes: new[] { expectedSolutionRuleSetInclude, "MyCustomRuleSet.ruleset" } ); var csharpVbConfig = CreateCSharpVbBindingConfig(solutionRuleSetPath, ValidCoreRuleSet); // Act string actualPath = testSubject.QueueWriteProjectLevelRuleSet(projectFullPath, ruleSetFileName, csharpVbConfig, "MyCustomRuleSet.ruleset"); // Assert this.ruleSetFS.AssertRuleSetNotExists(actualPath); actualPath.Should().NotBe(solutionRuleSetPath, "Expecting a new rule set to be created once pending were written"); // Act (write pending) this.sccFileSystem.WritePendingNoErrorsExpected(); // Assert this.ruleSetFS.AssertRuleSetsAreEqual(actualPath, expectedRuleSet); }
public void ProjectBindingOperation_QueueWriteProjectLevelRuleSet_ProjectHasExistingRuleSet_RelativePathRuleSetIsFound_ButNotUnderTheSProject() { // Arrange CSharpVBBindingOperation testSubject = this.CreateTestSubject(); const string ruleSetName = "Happy"; const string projectFullPath = @"X:\SolutionDir\ProjectDir\My Project.proj"; const string solutionRuleSetPath = @"X:\SolutionDir\RuleSets\sonar1.ruleset"; const string existingProjectRuleSetPath = @"x:\SolutionDir\myexistingproject.ruleset"; this.ruleSetFS.RegisterRuleSet(new VsRuleSet("NotOurRuleSet") { FilePath = existingProjectRuleSetPath }); this.ruleSetFS.RegisterRuleSet(new VsRuleSet("SolutionRuleSet") { FilePath = solutionRuleSetPath }); string relativePathToExistingProjectRuleSet = PathHelper.CalculateRelativePath(existingProjectRuleSetPath, projectFullPath); VsRuleSet expectedRuleSet = TestRuleSetHelper.CreateTestRuleSet ( numRules: 0, includes: new[] { relativePathToExistingProjectRuleSet, // The project exists, but not ours so we should keep it as it was previously specified PathHelper.CalculateRelativePath(projectFullPath, solutionRuleSetPath) } ); var csharpVbConfig = CreateCSharpVbBindingConfig(solutionRuleSetPath, ValidCoreRuleSet); // Act string actualPath = testSubject.QueueWriteProjectLevelRuleSet(projectFullPath, ruleSetName, csharpVbConfig, relativePathToExistingProjectRuleSet); // Assert this.ruleSetFS.AssertRuleSetNotExists(actualPath); actualPath.Should().NotBe(existingProjectRuleSetPath, "Expecting a new rule set to be created once written pending"); // Act (write pending) this.sccFileSystem.WritePendingNoErrorsExpected(); // Assert this.ruleSetFS.AssertRuleSetsAreEqual(actualPath, expectedRuleSet); }
public void ProjectBindingOperation_QueueWriteProjectLevelRuleSet_ProjectHasExistingRuleSet_AbsolutePathRuleSetIsFound_UnderTheProject() { // Arrange CSharpVBBindingOperation testSubject = this.CreateTestSubject(); const string ruleSetName = "Happy"; const string projectFullPath = @"X:\SolutionDir\ProjectDir\My Project.proj"; const string solutionRuleSetPath = @"X:\SolutionDir\RuleSets\sonar1.ruleset"; const string existingProjectRuleSetPath = @"X:\SolutionDir\ProjectDir\ExistingRuleSet.ruleset"; VsRuleSet existingRuleSet = TestRuleSetHelper.CreateTestRuleSet ( numRules: 0, includes: new[] { solutionRuleSetPath } ); existingRuleSet.FilePath = existingProjectRuleSetPath; this.ruleSetFS.RegisterRuleSet(existingRuleSet); this.ruleSetFS.RegisterRuleSet(new VsRuleSet("SolutionRuleSet") { FilePath = solutionRuleSetPath }); string newSolutionRuleSetPath = Path.Combine(Path.GetDirectoryName(solutionRuleSetPath), "sonar2.ruleset"); string newSolutionRuleSetInclude = PathHelper.CalculateRelativePath(projectFullPath, newSolutionRuleSetPath); VsRuleSet expectedRuleSet = TestRuleSetHelper.CreateTestRuleSet ( numRules: 0, includes: new[] { newSolutionRuleSetInclude } ); var csharpVbConfig = CreateCSharpVbBindingConfig(newSolutionRuleSetPath, ValidCoreRuleSet); // Act string actualPath = testSubject.QueueWriteProjectLevelRuleSet(projectFullPath, ruleSetName, csharpVbConfig, existingProjectRuleSetPath); // Assert this.ruleSetFS.AssertRuleSetsAreEqual(actualPath, expectedRuleSet); actualPath.Should().Be(existingProjectRuleSetPath, "Expecting the rule set to be updated"); }
public void ProjectBindingOperation_QueueWriteProjectLevelRuleSet_ProjectHasExistingRuleSet_RuleSetIsNotFound() { // Arrange CSharpVBBindingOperation testSubject = this.CreateTestSubject(); const string projectName = "My Project"; const string ruleSetFileName = "Happy"; const string solutionRoot = @"X:\SolutionDir"; string projectRoot = Path.Combine(solutionRoot, "ProjectDir"); string projectFullPath = Path.Combine(projectRoot, $"{projectName}.proj"); string currentNonExistingRuleSet = "my-non-existingproject.ruleset"; string newSolutionRuleSetPath = Path.Combine(solutionRoot, "RuleSets", "sonar2.ruleset"); string newSolutionRuleSetInclude = PathHelper.CalculateRelativePath(projectFullPath, newSolutionRuleSetPath); VsRuleSet expectedRuleSet = TestRuleSetHelper.CreateTestRuleSet ( numRules: 0, includes: new[] { currentNonExistingRuleSet, newSolutionRuleSetInclude } ); var csharpVbConfig = CreateCSharpVbBindingConfig(newSolutionRuleSetPath, ValidCoreRuleSet); // Act string actualPath = testSubject.QueueWriteProjectLevelRuleSet(projectFullPath, ruleSetFileName, csharpVbConfig, currentNonExistingRuleSet); // Assert this.ruleSetFS.AssertRuleSetNotExists(actualPath); actualPath.Should().NotBe(currentNonExistingRuleSet, "Expecting a new rule set to be created once written pending"); // Act (write pending) this.sccFileSystem.WritePendingNoErrorsExpected(); // Assert this.ruleSetFS.AssertRuleSetsAreEqual(actualPath, expectedRuleSet); }