JasperFx / JasperFx.CodeGeneration

Code Generation & Runtime Compilation Chicanery for .Net
MIT License
9 stars 7 forks source link

CodeGeneration not accessible from IWebHostBuilder #5

Open zachsaw-lmg opened 7 months ago

zachsaw-lmg commented 7 months ago

Currently this command expects an IHostBuilder to be passed in for it to build a webhost. However, in integration tests, we typically spin up a webapp via WebApplicationFactory (fixture) to verify the codegen the devs committed in the repo is current and correct.

We do the following currently.

    private void GenerateCode(IServiceProvider services) =>
        new DynamicCodeBuilder(services, services.GetServices<ICodeFileCollection>().ToArray())
            {
                ServiceVariableSource = services.GetService<IServiceVariableSource>()
            }
            .WriteGeneratedCode(file =>
            {
                _fixture.TestOutputHelper?.WriteLine("Wrote generated code file to " + file);
            });

However, this is reaching into undocumented (read: no official doc means potentially unsupported) territory. Would be nice if there's an extension method in a nuget package for this method (and other useful ones in the oakton package) that doesn't require us to use undocumented interfaces.

jeremydmiller commented 6 months ago

@zachsaw-lmg Just saw this today, sorry for the delay. I think I might ask for a PR for this one, but it shouldn't be that bad to do