Example #1
0
        public void EnsureOptions_ConfiguresDefaultCompilationOptions()
        {
            // Arrange
            var hostingEnvironment = Mock.Of <IWebHostEnvironment>(h => h.EnvironmentName == "Development");
            var compiler           = new PublicCSharpCompiler(ReferenceManager, hostingEnvironment);

            // Act & Assert
            var compilationOptions = compiler.CSharpCompilationOptions;

            Assert.False(compilationOptions.AllowUnsafe);
            Assert.Equal(ReportDiagnostic.Default, compilationOptions.GeneralDiagnosticOption);
            Assert.Equal(OptimizationLevel.Debug, compilationOptions.OptimizationLevel);
            Assert.Collection(compilationOptions.SpecificDiagnosticOptions.OrderBy(d => d.Key),
                              item => {
                Assert.Equal("CS1701", item.Key);
                Assert.Equal(ReportDiagnostic.Suppress, item.Value);
            },
                              item => {
                Assert.Equal("CS1702", item.Key);
                Assert.Equal(ReportDiagnostic.Suppress, item.Value);
            },
                              item => {
                Assert.Equal("CS1705", item.Key);
                Assert.Equal(ReportDiagnostic.Suppress, item.Value);
            });
        }
        private static TestRazorViewCompiler GetViewCompiler(
            TestFileProvider fileProvider = null,
            PublicRazorReferenceManager referenceManager    = null,
            IList <CompiledViewDescriptor> precompiledViews = null,
            PublicCSharpCompiler csharpCompiler             = null)
        {
            fileProvider = fileProvider ?? new TestFileProvider();
            var options = Options.Create(new MvcRazorRuntimeCompilationOptions {
                FileProviders = { fileProvider }
            });
            var compilationFileProvider = new PublicRuntimeCompilationFileProvider(options);


            referenceManager = referenceManager ?? CreateReferenceManager();
            precompiledViews = precompiledViews ?? Array.Empty <CompiledViewDescriptor>();

            var hostingEnvironment = Mock.Of <IWebHostEnvironment>(e => e.ContentRootPath == "BasePath");
            var fileSystem         = new PublicFileProviderRazorProjectFileSystem(compilationFileProvider);
            var projectEngine      = RazorProjectEngine.Create(RazorConfiguration.Default, fileSystem, builder => {
                RazorExtensions.Register(builder);
            });

            csharpCompiler = csharpCompiler ?? new PublicCSharpCompiler(referenceManager, hostingEnvironment);

            return(new TestRazorViewCompiler(
                       projectEngine,
                       csharpCompiler,
                       precompiledViews));
        }
Example #3
0
        public void GetCompilationOptions_ReturnsDefaultOptionsIfApplicationDoesNotHaveDependencyContext()
        {
            // Arrange
            var hostingEnvironment = Mock.Of <IWebHostEnvironment>();
            var compiler           = new PublicCSharpCompiler(ReferenceManager, hostingEnvironment);

            // Act
            var options = compiler.GetDependencyContextCompilationOptions();

            // Assert
            Assert.Same(DependencyContextCompilationOptions.Default, options);
        }
Example #4
0
        public void GetCompilationOptions_ReturnsDefaultOptionsIfApplicationNameIsNullOrEmpty(string name)
        {
            // Arrange
            var hostingEnvironment = Mock.Of <IWebHostEnvironment>(e => e.ApplicationName == name);
            var compiler           = new PublicCSharpCompiler(ReferenceManager, hostingEnvironment);

            // Act
            var options = compiler.GetDependencyContextCompilationOptions();

            // Assert
            Assert.Same(DependencyContextCompilationOptions.Default, options);
        }
Example #5
0
        public void EnsureOptions_ConfiguresDefaultParseOptions()
        {
            // Arrange
            var hostingEnvironment = Mock.Of <IWebHostEnvironment>(h => h.EnvironmentName == "Development");
            var compiler           = new PublicCSharpCompiler(ReferenceManager, hostingEnvironment);

            // Act & Assert
            var parseOptions = compiler.ParseOptions;

            Assert.Equal(LanguageVersion.CSharp8, parseOptions.LanguageVersion);
            Assert.Equal(new[] { "DEBUG" }, parseOptions.PreprocessorSymbolNames);
        }
Example #6
0
        public void EnsureOptions_SetsPreprocessorSymbols(string environment, string expectedConfiguration)
        {
            // Arrange
            var options            = new RazorViewEngineOptions();
            var hostingEnvironment = new Mock <IWebHostEnvironment>();

            hostingEnvironment.SetupGet(e => e.EnvironmentName)
            .Returns(environment);
            var compiler = new PublicCSharpCompiler(ReferenceManager, hostingEnvironment.Object);

            // Act & Assert
            var parseOptions = compiler.ParseOptions;

            Assert.Equal(new[] { expectedConfiguration }, parseOptions.PreprocessorSymbolNames);
        }
Example #7
0
        public void Constructor_SetsOptimizationLevelBasedOnEnvironment(
            string environment,
            OptimizationLevel expected)
        {
            // Arrange
            var options            = new RazorViewEngineOptions();
            var hostingEnvironment = new Mock <IWebHostEnvironment>();

            hostingEnvironment.SetupGet(e => e.EnvironmentName)
            .Returns(environment);
            var compiler = new PublicCSharpCompiler(ReferenceManager, hostingEnvironment.Object);

            // Act & Assert
            var compilationOptions = compiler.CSharpCompilationOptions;

            Assert.Equal(expected, compilationOptions.OptimizationLevel);
        }
 public TestRazorViewCompiler(
     RazorProjectEngine projectEngine,
     PublicCSharpCompiler csharpCompiler,
     IList <CompiledViewDescriptor> precompiledViews,
     Func <string, CompiledViewDescriptor> compile = null)
     : base(new Dictionary <string, RazorProjectEngine> {
     { "default", projectEngine }
 }, csharpCompiler, precompiledViews, NullLogger.Instance)
 {
     Compile = compile;
     if (Compile == null)
     {
         Compile = path => new CompiledViewDescriptor {
             RelativePath = path,
             Item         = CreateForView(path),
         };
     }
 }