Skip to content
代码片段 群组 项目
ApplicationWithParseErrorsTest_Desktop.cs 2.3 KB
更新 更旧
  • 了解如何忽略特定修订
  • Doug Bunting's avatar
    Doug Bunting 已提交
    // Copyright (c) .NET Foundation. All rights reserved.
    
    // Licensed under the Apache License, Version 2.0. See License.txt in the project root for license information.
    
    using System;
    using System.IO;
    using System.Linq;
    
    using System.Threading.Tasks;
    
    using Microsoft.AspNetCore.Testing.xunit;
    
    using Microsoft.Extensions.Logging.Testing;
    using Xunit;
    
    
    Pranav K's avatar
    Pranav K 已提交
    namespace FunctionalTests
    
        [OSSkipCondition(OperatingSystems.Linux)]
        [OSSkipCondition(OperatingSystems.MacOSX)]
        public class ApplicationWithParseErrorsTest_Desktop
            : IClassFixture<DesktopApplicationTestFixture<ApplicationWithParseErrors.Startup>>
    
            public ApplicationWithParseErrorsTest_Desktop(DesktopApplicationTestFixture<ApplicationWithParseErrors.Startup> fixture)
            {
                Fixture = fixture;
            }
    
            public ApplicationTestFixture Fixture { get; }
    
    Doug Bunting's avatar
    Doug Bunting 已提交
            [ConditionalFact(Skip = "Flaky test in many build configurations.See issue #277.")]
    
            public async Task PublishingPrintsParseErrors()
    
                var indexPath = Path.Combine(Fixture.TestProjectDirectory, "Views", "Home", "Index.cshtml");
                var viewImportsPath = Path.Combine(Fixture.TestProjectDirectory, "Views", "Home", "About.cshtml");
    
                var expectedErrors = new[]
                {
                    indexPath + " (0): The code block is missing a closing \"}\" character.  Make sure you have a matching \"}\" character for all the \"{\" characters within this block, and that none of the \"}\" characters are being interpreted as markup.",
                    viewImportsPath + " (1): A space or line break was encountered after the \"@\" character.  Only valid identifiers, keywords, comments, \"(\" and \"{\" are valid at the start of a code block and they must occur immediately following \"@\" with no space in between.",
    
                };
    
                var testSink = new TestSink();
                var loggerFactory = new TestLoggerFactory(testSink, enabled: true);
    
    
                // Act
                await Assert.ThrowsAsync<Exception>(() => Fixture.CreateDeploymentAsync(loggerFactory));
    
                // Assert
                var logs = testSink.Writes.Select(w => w.State.ToString().Trim()).ToList();
                foreach (var expectedError in expectedErrors)
                {
                    Assert.Contains(logs, log => log.Contains(expectedError));