public void SimpleScenario()
        {
            var sb = new StringBuilder();
            Trace.Listeners.Clear();
            var logger = new TeamCityLogger();
            Trace.Listeners.Add(new TextWriterTraceListener(new StringWriter(sb)));
            var events = Substitute.For<TestLoggerEvents>();
            logger.Initialize(events, string.Empty);

            events.TestResult +=
                Raise.EventWith(
                    new TestResultEventArgs(
                        new TestResult(new TestCase("Test.FullyQualified.Name", new Uri("logger://TeamCityLogger"),
                            "c:\\TestAssembly1.dll"))));
            events.TestResult +=
                Raise.EventWith(
                    new TestResultEventArgs(
                        new TestResult(new TestCase("Test.FullyQualified.Name2", new Uri("logger://TeamCityLogger"),
                            "c:\\TestAssembly2.dll"))));

            events.TestRunComplete +=
                Raise.EventWith(
                    new TestRunCompleteEventArgs(Substitute.For<ITestRunStatistics>(), false, false, null,
                        new Collection<AttachmentSet>(), TimeSpan.FromSeconds(20)));

            Approvals.Verify(Regex.Replace(Regex.Replace(sb.ToString(), " timestamp='[^']*'", string.Empty), " flowId='[^']*'", string.Empty));
        }
        public void SimpleScenario()
        {
            var sb = new StringBuilder();

            Trace.Listeners.Clear();
            var logger = new TeamCityLogger();

            Trace.Listeners.Add(new TextWriterTraceListener(new StringWriter(sb)));
            var events = Substitute.For <TestLoggerEvents>();

            logger.Initialize(events, string.Empty);

            events.TestResult +=
                Raise.EventWith(
                    new TestResultEventArgs(
                        new TestResult(new TestCase("Test.FullyQualified.Name", new Uri("logger://TeamCityLogger"),
                                                    "c:\\TestAssembly1.dll"))));
            events.TestResult +=
                Raise.EventWith(
                    new TestResultEventArgs(
                        new TestResult(new TestCase("Test.FullyQualified.Name2", new Uri("logger://TeamCityLogger"),
                                                    "c:\\TestAssembly2.dll"))));

            events.TestRunComplete +=
                Raise.EventWith(
                    new TestRunCompleteEventArgs(Substitute.For <ITestRunStatistics>(), false, false, null,
                                                 new Collection <AttachmentSet>(), TimeSpan.FromSeconds(20)));

            Approvals.Verify(Regex.Replace(Regex.Replace(sb.ToString(), " timestamp='[^']*'", string.Empty), " flowId='[^']*'", string.Empty));
        }
Exemplo n.º 3
0
        public static int Main(string[] args)
        {
            var application = new CommandLineApplication();

            application.HelpOption("--help");
            var verbose          = application.Option("--verbose", "Verbose output and assistance", CommandOptionType.NoValue);
            var ruleFile         = application.Option("--rule-file", "Path to NPV.json", CommandOptionType.SingleValue);
            var excludedRules    = application.Option("--excluded-rule", "Rules to exclude. Calculcated after composite rules are evaluated.", CommandOptionType.MultipleValue);
            var signRequest      = application.Option("--sign-request", "Sign request manifest file.", CommandOptionType.SingleValue);
            var packageDirectory = application.Argument("Package directory", "Package directory to scan for nupkgs");

            application.OnExecute(() =>
            {
                var totalTimeStopWatch = Stopwatch.StartNew();
                if (string.IsNullOrEmpty(packageDirectory.Value))
                {
                    application.Error.WriteLine($"Missing required argument {packageDirectory.Name}");
                    application.ShowHelp();
                    return(ReturnBadArgs);
                }

                if (!ruleFile.HasValue())
                {
                    application.Error.WriteAsync($"Missing required option {ruleFile.Template}.");
                    application.ShowHelp();
                    return(ReturnBadArgs);
                }

                var hideInfoLogs = verbose.HasValue();

                IPackageVerifierLogger logger;
                if (!string.IsNullOrEmpty(Environment.GetEnvironmentVariable("TEAMCITY_VERSION")))
                {
                    logger = new TeamCityLogger(hideInfoLogs);
                }
                else
                {
                    logger = new PackageVerifierLogger(hideInfoLogs);
                }

                // TODO: Show extraneous packages, exclusions, etc.
                var ignoreAssistanceMode = verbose.HasValue() ? IgnoreAssistanceMode.ShowAll : IgnoreAssistanceMode.ShowNew;

                var ruleFileContent = File.ReadAllText(ruleFile.Value());
                var packageSets     = JsonConvert.DeserializeObject <IDictionary <string, PackageSet> >(
                    ruleFileContent,
                    new JsonSerializerSettings
                {
                    MissingMemberHandling = MissingMemberHandling.Error
                });


                if (signRequest.HasValue())
                {
                    Console.WriteLine("The --sign-request parameter is obsolete and will be ignored. It will be removed in a future version");
                }

                logger.LogNormal("Read {0} package set(s) from {1}", packageSets.Count, ruleFile.Value());
                var nupkgs = new DirectoryInfo(packageDirectory.Value).EnumerateFiles("*.nupkg", SearchOption.TopDirectoryOnly)
                             .Where(p => !p.Name.EndsWith(".symbols.nupkg"))
                             .ToArray();
                logger.LogNormal("Found {0} packages in {1}", nupkgs.Length, packageDirectory.Value);
                var exitCode = Execute(packageSets, nupkgs, excludedRules.Values, logger, ignoreAssistanceMode);
                totalTimeStopWatch.Stop();
                logger.LogNormal("Total took {0}ms", totalTimeStopWatch.ElapsedMilliseconds);

                return(exitCode);
            });

            return(application.Execute(args));
        }