dotnet / roslyn-sdk

Roslyn-SDK templates and Syntax Visualizer
MIT License
512 stars 257 forks source link

Tests should be allowed to be run with empty TestState.Sources #1121

Open Youssef1313 opened 1 year ago

Youssef1313 commented 1 year ago

Currently this scenario fails with:

Assert.IsTrue failed. expected 'TestState.Sources' to be non-empty

My use case is testing a generator where I only need to supply an additional file. For now, I have to add the following as a workaround:

            TestState =
            {
                Sources =
                {
                    string.Empty,
                }
            }
sharwell commented 1 year ago

We already allow Sources to be empty if the test includes a generated document: https://github.com/dotnet/roslyn-sdk/blob/5f6ffda5efd6198836c038e1ab07cd3b0aba77a7/src/Microsoft.CodeAnalysis.Testing/Microsoft.CodeAnalysis.Analyzer.Testing/AnalyzerTest%601.cs#L190-L194

It might be fine to remove this check. I'm not aware of any case where it's caught a test bug.

Youssef1313 commented 1 year ago

Ah, I was using the generator testing you done somewhere where there is a #define WRITE_EXPECTED that adds (or writes) the generated code to disk.

So, with the first test run there wasn't GeneratedSources. That is probably why I hit this assert.

sharwell commented 1 year ago

That's the same way I've hit this assert 😄