public void ToolFormatConverter_FindsBuiltInConverterEvenIfPluginIsSpecified() { using (var tempDir = new TempDirectory()) { string pluginAssemblyPath = GetCurrentAssemblyPath(); // A minimal valid AndroidStudio output file. string inputFilePath = tempDir.Write( "input.txt", @"<?xml version=""1.0"" encoding=""UTF-8""?><problems></problems>"); string outputFilePath = tempDir.Combine("output.txt"); Action action = () => _converter.ConvertToStandardFormat( ToolFormat.AndroidStudio, inputFilePath, outputFilePath, LoggingOptions.None, pluginAssemblyPath); action.ShouldNotThrow(); } }
public void ToolFormatConverter_TruncatesOutputFileInOverwriteMode() { // Using CPPCheck because its empty file format is the simplest string emptyCppCheckLog = @"<?xml version=""1.0"" encoding=""UTF-8""?> <results version=""2""> <cppcheck version=""1.66""/> <errors /> </results>"; using (var tempDir = new TempDirectory()) { var inputFileName = tempDir.Write("input.xml", emptyCppCheckLog); var expectedOutputFileName = tempDir.Combine("output_expected.xml"); _converter.ConvertToStandardFormat(ToolFormat.CppCheck, inputFileName, expectedOutputFileName); string expectedOutput = File.ReadAllText(expectedOutputFileName, Encoding.UTF8); var actualOutputFileName = tempDir.Write("output_actual.xml", new string('a', expectedOutput.Length + 4096)); _converter.ConvertToStandardFormat(ToolFormat.CppCheck, inputFileName, actualOutputFileName, LoggingOptions.OverwriteExistingOutputFile); string actualOutput = File.ReadAllText(actualOutputFileName, Encoding.UTF8); actualOutput.Should().Be(expectedOutput); } }
public void ToolFormatConverter_FailsIfConverterTypeIsAmbiguousInPluginAssembly() { using (var tempDir = new TempDirectory()) { const string ToolName = "AmbiguousTool"; string pluginAssemblyPath = GetCurrentAssemblyPath(); string inputFilePath = tempDir.Write("input.txt", string.Empty); string outputFilePath = tempDir.Combine("output.txt"); Action action = () => _converter.ConvertToStandardFormat( ToolName, inputFilePath, outputFilePath, LoggingOptions.None, pluginAssemblyPath); action.ShouldThrow <ArgumentException>() .Where(ex => ex.Message.Contains(pluginAssemblyPath) && ex.Message.Contains(ToolName)); } }