private void AddRoslynMetadata(string baseTempDirectory, PluginBuilder builder, IPackage package) { string sourcesDir = CreateSubDirectory(baseTempDirectory, "src"); this.logger.LogDebug(UIResources.APG_CreatingRoslynSources, sourcesDir); SourceGenerator.CreateSourceFiles(typeof(AnalyzerPluginGenerator).Assembly, RoslynResourcesRoot, sourcesDir, new Dictionary <string, string>()); string[] sourceFiles = Directory.GetFiles(sourcesDir, "*.java", SearchOption.AllDirectories); Debug.Assert(sourceFiles.Any(), "Failed to correctly unpack the Roslyn analyzer specific source files"); foreach (string sourceFile in sourceFiles) { builder.AddSourceFile(sourceFile); } builder.SetSourceCodeTokenReplacement(PackageId_Token, package.Id); builder.SetSourceCodeTokenReplacement(PackageVersion_Token, package.Version.ToString()); builder.SetSourceCodeTokenReplacement(AnalyzerId_Token, package.Id); builder.SetSourceCodeTokenReplacement(RuleNamespace_Token, package.Id); foreach (string extension in Extensions) { builder.AddExtension(extension); } }
[TestMethod] // Second test to check the handling of nesting public void GenerateSource2() { // Arrange string outputDir = Path.Combine(this.TestContext.TestDeploymentDir, this.TestContext.TestName); IDictionary <string, string> replacements = new Dictionary <string, string>(); replacements.Add("[REPLACE1]", "111"); replacements.Add("[REPLACE2]", "222"); // Act SourceGenerator.CreateSourceFiles(this.GetType().Assembly, "SonarQube.Plugins.PluginGeneratorTests.resources.myorg.myapp", outputDir, replacements); // Assert string content; content = TestUtils.AssertFileExists("myappClass2.java", outputDir); Assert.AreEqual("111zzz", content, "Unexpected file content"); AssertExpectedSourceFileCount(1, outputDir); }
private void Build(string jarFilePath) { Assert.IsTrue(File.Exists(jarFilePath), "Jar file does not exist"); // Get the java source files Directory.CreateDirectory(this.tempDir); string srcDir = CreateSubDir(this.tempDir, "src"); string outDir = CreateSubDir(this.tempDir, "out"); string xxxDir = CreateSubDir(this.tempDir, "xxx"); SourceGenerator.CreateSourceFiles(this.GetType().Assembly, "SonarQube.Plugins.IntegrationTests.Roslyn.Resources", srcDir, new Dictionary <string, string>()); JavaCompilationBuilder builder = new JavaCompilationBuilder(this.jdkWrapper); foreach (string source in Directory.GetFiles(srcDir, "*.java", SearchOption.AllDirectories)) { builder.AddSources(source); } // Add the jars required to compile the Java code IEnumerable <string> jarFiles = GetCompileDependencies(); foreach (string jar in jarFiles) { builder.AddClassPath(jar); } bool result = builder.Compile(xxxDir, outDir, logger); if (!result) { Assert.Inconclusive("Test setup error: failed to build the Java inspector"); } this.inspectorClassFilePath = GetPluginInspectorClassFilePath(outDir); }