public void GenerateModel_warns_when_output_encoding() { using var projectDir = new TempDirectory(); var contextTemplate = Path.Combine(projectDir, "CodeTemplates", "EFCore", "DbContext.t4"); Directory.CreateDirectory(Path.GetDirectoryName(contextTemplate)); File.WriteAllText( contextTemplate, @"<#@ output encoding=""us-ascii"" #>"); var reporter = new TestOperationReporter(); var generator = CreateGenerator(reporter); var model = new ModelBuilder() .FinalizeModel(); var result = generator.GenerateModel( model, new() { ContextName = "Context", ConnectionString = @"Name=DefaultConnection", ProjectDir = projectDir }); Assert.Collection( reporter.Messages, x => { Assert.Equal(LogLevel.Warning, x.Level); Assert.Equal(DesignStrings.EncodingIgnored("us-ascii"), x.Message); }); }
private string ProcessTemplate(string inputFile, TextTemplatingCallback handler) { var output = _host.ProcessTemplate( inputFile, File.ReadAllText(inputFile), handler); foreach (CompilerError error in handler.Errors) { var builder = new StringBuilder(); if (!string.IsNullOrEmpty(error.FileName)) { builder.Append(error.FileName); if (error.Line > 0) { builder .Append("(") .Append(error.Line); if (error.Column > 0) { builder .Append(",") .Append(error.Line); } builder.Append(")"); } builder.Append(" : "); } builder .Append(error.IsWarning ? "warning" : "error") .Append(" ") .Append(error.ErrorNumber) .Append(": ") .AppendLine(error.ErrorText); if (error.IsWarning) { _reporter.WriteWarning(builder.ToString()); } else { _reporter.WriteError(builder.ToString()); } } if (handler.OutputEncoding != Encoding.UTF8) { _reporter.WriteWarning(DesignStrings.EncodingIgnored(handler.OutputEncoding.WebName)); } return(output); }