Beispiel #1
0
 /// <summary>The entry point for the SARIF multi utility.</summary>
 /// <param name="args">Arguments passed in from the tool's command line.</param>
 /// <returns>0 on success; nonzero on failure.</returns>
 public static int Main(string[] args)
 {
     return(Parser.Default.ParseArguments <
                ConvertOptions,
                RewriteOptions,
                MergeOptions>(args)
            .MapResult(
                (ConvertOptions convertOptions) => ConvertCommand.Run(convertOptions),
                (RewriteOptions rewriteOptions) => RewriteCommand.Run(rewriteOptions),
                (MergeOptions mergeOptions) => MergeCommand.Run(mergeOptions),
                errs => 1));
 }
Beispiel #2
0
        private static (string transformedContents, int returnCode) RunTransformationCore(
            string logFileContents,
            SarifVersion targetVersion,
            RewriteOptions options = null)
        {
            const string LogFilePath = @"c:\logs\mylog.sarif";

            options ??= new RewriteOptions
            {
                Inline             = true,
                SarifOutputVersion = targetVersion,
                InputFilePath      = LogFilePath
            };

            if (options.SarifOutputVersion == SarifVersion.Unknown)
            {
                options.SarifOutputVersion = targetVersion;
            }

            if (options.InputFilePath == null)
            {
                options.Inline        = true;
                options.InputFilePath = LogFilePath;
            }

            var transformedContents = new StringBuilder();

            transformedContents.Append(logFileContents);

            var mockFileSystem = new Mock <IFileSystem>();

            //  This only works because we're testing "Inline"
            //  TODO: Verify a separate OutputFilePath works as expected
            mockFileSystem.Setup(x => x.FileReadAllText(options.InputFilePath)).Returns(transformedContents.ToString());
            mockFileSystem.Setup(x => x.FileOpenRead(options.InputFilePath)).Returns(() => new MemoryStream(Encoding.UTF8.GetBytes(transformedContents.ToString())));
            mockFileSystem.Setup(x => x.FileCreate(options.InputFilePath)).Returns(() => new MemoryStreamToStringBuilder(transformedContents));
            mockFileSystem.Setup(x => x.FileWriteAllText(options.InputFilePath, It.IsAny <string>())).Callback <string, string>((path, contents) =>
            {
                transformedContents.Clear();
                transformedContents.Append(contents);
            });

            var rewriteCommand = new RewriteCommand(mockFileSystem.Object);

            int returnCode = rewriteCommand.Run(options);

            return(transformedContents.ToString(), returnCode);
        }
Beispiel #3
0
 /// <summary>The entry point for the SARIF multi utility.</summary>
 /// <param name="args">Arguments passed in from the tool's command line.</param>
 /// <returns>0 on success; nonzero on failure.</returns>
 public static int Main(string[] args)
 {
     return(Parser.Default.ParseArguments <
                ConvertOptions,
                RewriteOptions,
                MergeOptions,
                RebaseUriOptions,
                AbsoluteUriOptions,
                BaselineOptions>(args)
            .MapResult(
                (ConvertOptions convertOptions) => ConvertCommand.Run(convertOptions),
                (RewriteOptions rewriteOptions) => RewriteCommand.Run(rewriteOptions),
                (MergeOptions mergeOptions) => MergeCommand.Run(mergeOptions),
                (RebaseUriOptions rebaseOptions) => RebaseUriCommand.Run(rebaseOptions),
                (AbsoluteUriOptions absoluteUriOptions) => AbsoluteUriCommand.Run(absoluteUriOptions),
                (BaselineOptions baselineOptions) => BaselineCommand.Run(baselineOptions),
                errs => 1));
 }
Beispiel #4
0
 /// <summary>The entry point for the SARIF multi utility.</summary>
 /// <param name="args">Arguments passed in from the tool's command line.</param>
 /// <returns>0 on success; nonzero on failure.</returns>
 public static int Main(string[] args)
 {
     return(Parser.Default.ParseArguments <
                ValidateOptions,
                ConvertOptions,
                RewriteOptions,
                TransformOptions,
                MergeOptions,
                RebaseUriOptions,
                AbsoluteUriOptions,
                ResultMatchingOptions>(args)
            .MapResult(
                (ValidateOptions validateOptions) => new ValidateCommand(new FileSystem()).Run(validateOptions),
                (ConvertOptions convertOptions) => ConvertCommand.Run(convertOptions),
                (RewriteOptions rewriteOptions) => RewriteCommand.Run(rewriteOptions),
                (TransformOptions transformOptions) => TransformCommand.Run(transformOptions),
                (MergeOptions mergeOptions) => MergeCommand.Run(mergeOptions),
                (RebaseUriOptions rebaseOptions) => RebaseUriCommand.Run(rebaseOptions),
                (AbsoluteUriOptions absoluteUriOptions) => AbsoluteUriCommand.Run(absoluteUriOptions),
                (ResultMatchingOptions baselineOptions) => ResultMatchingCommand.Run(baselineOptions),
                errs => 1));
 }
        public void RewriteCommand_WhenOutputFormatOptionsAreInconsistent_Fails()
        {
            const string InputFilePath = "AnyFile.sarif";

            var mockFileSystem = new Mock <IFileSystem>();

            mockFileSystem.Setup(_ => _.FileExists(InputFilePath)).Returns(true);

            var options = new RewriteOptions
            {
                InputFilePath = InputFilePath,
                Inline        = true,
                PrettyPrint   = true,
                Minify        = true
            };

            int returnCode = new RewriteCommand(mockFileSystem.Object).Run(options);

            returnCode.Should().Be(1);

            mockFileSystem.Verify(_ => _.FileExists(InputFilePath), Times.Once);
            mockFileSystem.VerifyNoOtherCalls();
        }