/// <nodoc /> public TestRunner(Action <Diagnostic> diagnosticHandler, bool updateFailedTests) { m_tracingLogger = BuildXL.FrontEnd.Core.Tracing.Logger.CreateLogger(true); m_astLogger = Script.Tracing.Logger.CreateLogger(true); m_schedulerLogger = BuildXL.Scheduler.Tracing.Logger.CreateLogger(true); m_diagnosticHandler = diagnosticHandler; m_updateFailedTests = updateFailedTests; BuildXL.Storage.ContentHashingUtilities.SetDefaultHashType(); }
// Removal public void TestParseQualifier(string qualifierExpression, string expectedQualifier, bool useNamedQualifiers, bool useDefaultQualifier, params string[] expectedErrorContents) { var namedQualifiers = useNamedQualifiers ? new Dictionary <string, IReadOnlyDictionary <string, string> > { { "named", new Dictionary <string, string> { { "n1", "v1" }, { "n2", "v2" } } }, { "Other", new Dictionary <string, string> { { "n1", "o1" } } }, } : null; var defaultQualifier = useDefaultQualifier ? new Dictionary <string, string> { { "d1", "v1" }, { "d2", "v2" }, } : null; var logger = Logger.CreateLogger(true); var loggingContext = new LoggingContext("Test"); IReadOnlyDictionary <string, string> actualQualifier; var result = FrontEndHostController.TryParseQualifiers(logger, loggingContext, qualifierExpression, defaultQualifier, namedQualifiers, out actualQualifier); if (expectedErrorContents == null || expectedErrorContents.Length == 0) { Assert.True(result, "Expected sucessfull parse"); Assert.True(actualQualifier != null, "Expected non null out value"); Assert.Equal(0, logger.CapturedDiagnostics.Count); var actualQualifierPrint = string.Join("+", actualQualifier.Select(kv => $"{kv.Key}-{kv.Value}")); Assert.Equal(expectedQualifier, actualQualifierPrint); } else { Assert.False(result, "Expected failed parse"); Assert.True(actualQualifier == null, "Expected null as out variable"); Assert.Equal(1, logger.CapturedDiagnostics.Count); var errorMessage = logger.CapturedDiagnostics[0].Message; foreach (var expectedErrorContent in expectedErrorContents) { Assert.True(errorMessage.Contains(expectedErrorContent), $"Message:\n{errorMessage}\nDoes not contain:\n{expectedErrorContent}"); } } }
private FrontEndHostController CreateHost() { var factory = new FrontEndFactory(); factory.AddFrontEnd(new DummyFrontEnd1()); factory.TrySeal(new LoggingContext("UnitTest")); var context = BuildXLContext.CreateInstanceForTesting(); var moduleRegistry = new ModuleRegistry(context.SymbolTable); var controller = new FrontEndHostController( factory, new DScriptWorkspaceResolverFactory(), new EvaluationScheduler(degreeOfParallelism: 8), moduleRegistry, new FrontEndStatistics(), Logger.CreateLogger(), collector: null, collectMemoryAsSoonAsPossible: false); var fileSystem = new InMemoryFileSystem(context.PathTable); ((IFrontEndController)controller).InitializeHost( new FrontEndContext(context, new LoggingContext("UnitTest"), fileSystem), new ConfigurationImpl() { FrontEnd = new FrontEndConfiguration() { MaxFrontEndConcurrency = 1, } }); var inMemoryCache = new EngineCache( new InMemoryArtifactContentCache(context), new InMemoryTwoPhaseFingerprintStore()); controller.InitializeInternalForTesting( Task.FromResult(new Possible <EngineCache>(inMemoryCache)), AbsolutePath.Create(context.PathTable, TestOutputDirectory)); return(controller); }
private void TestQualifierConfigValidation( IReadOnlyDictionary <string, string> defaultQualifier, IReadOnlyDictionary <string, IReadOnlyDictionary <string, string> > namedQualifiers, params string[] expectedErrorContents) { var logger = Logger.CreateLogger(true); var loggingContext = new LoggingContext("Test"); var pathTable = new PathTable(); var qualifierTable = new QualifierTable(pathTable.StringTable); var result = FrontEndHostController.ValidateAndRegisterConfigurationQualifiers(logger, loggingContext, qualifierTable, defaultQualifier, namedQualifiers); Assert.False(result, "Expected failed parse"); Assert.Equal(1, logger.CapturedDiagnostics.Count); var errorMessage = logger.CapturedDiagnostics[0].Message; foreach (var expectedErrorContent in expectedErrorContents) { Assert.True(errorMessage.Contains(expectedErrorContent), $"Message:\n{errorMessage}\nDoes not contain:\n{expectedErrorContent}"); } }