public void Exe_PreProcFails()
        {
            // Arrange
            BootstrapperTestUtils.EnsureDefaultPropertiesFileDoesNotExist();

            using (InitializeNonTeamBuildEnvironment(RootDir))
            {
                MockProcessors(false, true);

                // Act
                var logger = CheckExecutionFails(AnalysisPhase.PreProcessing, true,
                                                 null,
                                                 "/install:true", // this argument should just pass through
                                                 "/d:sonar.verbose=true",
                                                 "/d:sonar.host.url=http://host:9",
                                                 "/d:another.key=will be ignored");

                // Assert
                logger.AssertWarningsLogged(0);
                logger.AssertVerbosity(LoggerVerbosity.Debug);

                AssertPreProcessorArgs("/install:true",
                                       "/d:sonar.verbose=true",
                                       "/d:sonar.host.url=http://host:9",
                                       "/d:another.key=will be ignored");

                AssertPostProcessorNotCalled();
            }
        }
Ejemplo n.º 2
0
 public void Initialize()
 {
     // The project setup means the default properties file will automatically
     // be copied alongside the product binaries.st of these tests assume
     // the default properties file does not exist so we'll ensure it doesn't.
     // Any tests that do require default properties file should re-create it
     // with known content.
     BootstrapperTestUtils.EnsureDefaultPropertiesFileDoesNotExist();
 }
        public void Exe_PreProcSucceeds()
        {
            // Arrange
            BootstrapperTestUtils.EnsureDefaultPropertiesFileDoesNotExist();

            using (InitializeNonTeamBuildEnvironment(RootDir))
            {
                // Act
                var logger = CheckExecutionSucceeds(AnalysisPhase.PreProcessing, false, null, "/d:sonar.host.url=http://anotherHost");

                // Assert
                logger.AssertWarningsLogged(0);
                logger.AssertVerbosity(VerbosityCalculator.DefaultLoggingVerbosity);

                AssertPreProcessorArgs("/d:sonar.host.url=http://anotherHost");
            }
        }
        public void CopyDlls_WhenFileExistAndAreLockedButDifferentVersion_Fails()
        {
            // Arrange
            BootstrapperTestUtils.EnsureDefaultPropertiesFileDoesNotExist();

            using (InitializeNonTeamBuildEnvironment(RootDir))
            {
                Directory.CreateDirectory(Path.Combine(TempDir, "bin"));
                var file1 = File.Create(Path.Combine(TempDir, "bin", "SonarScanner.MSBuild.Common.dll"));
                var file2 = File.Create(Path.Combine(TempDir, "bin", "SonarScanner.MSBuild.Tasks.dll"));

                int callCount = 0;
                Func <string, Version> getAssemblyVersion = _ =>
                {
                    if (callCount == 0)
                    {
                        callCount++;
                        return(new Version("1.0"));
                    }

                    return(new Version("2.0"));
                };

                // Act
                var logger = CheckExecutionFails(AnalysisPhase.PreProcessing, false, getAssemblyVersion, "/d:sonar.host.url=http://anotherHost");

                // Assert
                File.Exists(Path.Combine(TempDir, "bin", "SonarScanner.MSBuild.Common.dll")).Should().BeTrue();
                File.Exists(Path.Combine(TempDir, "bin", "SonarScanner.MSBuild.Tasks.dll")).Should().BeTrue();

                logger.DebugMessages.Should().HaveCount(3);
                logger.DebugMessages[0].Should().Match("Cannot delete directory: '*\\.sonarqube\\bin' because The process cannot access the file 'SonarScanner.MSBuild.Common.dll' because it is being used by another process..");
                logger.DebugMessages[1].Should().Match("Cannot delete file: '*\\.sonarqube\\bin\\SonarScanner.MSBuild.Common.dll' because The process cannot access the file 'SonarScanner.MSBuild.Common.dll' because it is being used by another process..");
                logger.DebugMessages[2].Should().Match("Cannot delete file: '*\\.sonarqube\\bin\\SonarScanner.MSBuild.Tasks.dll' because The process cannot access the file 'SonarScanner.MSBuild.Tasks.dll' because it is being used by another process..");

                logger.AssertErrorLogged(@"Cannot copy a different version of the SonarScanner for MSBuild assemblies because they are used by a running MSBuild/.Net Core process. To resolve this problem try one of the following:
- Analyze this project using the same version of SonarScanner for MSBuild
- Build your project with the '/nr:false' switch");

                // Do not close before to ensure the file is locked
                file1.Close();
                file2.Close();
            }
        }
        public void CopyDlls_WhenFileExistButAreNotLocked_FilesAreCopied()
        {
            // Arrange
            BootstrapperTestUtils.EnsureDefaultPropertiesFileDoesNotExist();

            using (InitializeNonTeamBuildEnvironment(RootDir))
            {
                Directory.CreateDirectory(Path.Combine(TempDir, "bin"));
                File.Create(Path.Combine(TempDir, "bin", "SonarScanner.MSBuild.Common.dll")).Close();
                File.Create(Path.Combine(TempDir, "bin", "SonarScanner.MSBuild.Tasks.dll")).Close();

                // Act
                CheckExecutionSucceeds(AnalysisPhase.PreProcessing, false, null, "/d:sonar.host.url=http://anotherHost");

                // Assert
                File.Exists(Path.Combine(TempDir, "bin", "SonarScanner.MSBuild.Common.dll")).Should().BeTrue();
                File.Exists(Path.Combine(TempDir, "bin", "SonarScanner.MSBuild.Tasks.dll")).Should().BeTrue();
            }
        }
        public void Exe_PreProcCleansTemp()
        {
            // Arrange
            BootstrapperTestUtils.EnsureDefaultPropertiesFileDoesNotExist();

            using (InitializeNonTeamBuildEnvironment(RootDir))
            {
                // Create dummy file in Temp
                var filePath = Path.Combine(TempDir, "myfile");
                Directory.CreateDirectory(TempDir);
                var stream = File.Create(filePath);
                stream.Close();
                File.Exists(filePath).Should().BeTrue();

                // Act
                CheckExecutionSucceeds(AnalysisPhase.PreProcessing, false, null, "/d:sonar.host.url=http://anotherHost");

                // Assert
                File.Exists(filePath).Should().BeFalse();
            }
        }
        public void CopyDlls_WhenFileExistAndAreLockedButSameVersion_DoNothing()
        {
            // Arrange
            BootstrapperTestUtils.EnsureDefaultPropertiesFileDoesNotExist();

            using (InitializeNonTeamBuildEnvironment(RootDir))
            {
                Directory.CreateDirectory(Path.Combine(TempDir, "bin"));
                var file1 = File.Create(Path.Combine(TempDir, "bin", "SonarScanner.MSBuild.Common.dll"));
                var file2 = File.Create(Path.Combine(TempDir, "bin", "SonarScanner.MSBuild.Tasks.dll"));

                // Act
                CheckExecutionSucceeds(AnalysisPhase.PreProcessing, false, _ => new Version(), "/d:sonar.host.url=http://anotherHost");

                // Assert
                File.Exists(Path.Combine(TempDir, "bin", "SonarScanner.MSBuild.Common.dll")).Should().BeTrue();
                File.Exists(Path.Combine(TempDir, "bin", "SonarScanner.MSBuild.Tasks.dll")).Should().BeTrue();

                // Do not close before to ensure the file is locked
                file1.Close();
                file2.Close();
            }
        }