diff --git a/XmlSchemaClassGenerator.Tests/Compiler.cs b/XmlSchemaClassGenerator.Tests/Compiler.cs index b86dc4c6..c4b9398b 100644 --- a/XmlSchemaClassGenerator.Tests/Compiler.cs +++ b/XmlSchemaClassGenerator.Tests/Compiler.cs @@ -109,27 +109,7 @@ public static Assembly GenerateFiles(string name, IEnumerable files, Gen public static Assembly CompileFiles(string name, IEnumerable files) { - var trustedAssembliesPaths = ((string)AppContext.GetData("TRUSTED_PLATFORM_ASSEMBLIES")).Split(Path.PathSeparator); - var references = trustedAssembliesPaths - .Where(p => DependencyAssemblies.Contains(Path.GetFileNameWithoutExtension(p))) - .Select(p => MetadataReference.CreateFromFile(p)) - .ToList(); - var syntaxTrees = files.Select(f => CSharpSyntaxTree.ParseText(File.ReadAllText(f))).ToList(); - var compilation = CSharpCompilation.Create(name, syntaxTrees) - .AddReferences(references) - .WithOptions(new CSharpCompilationOptions(OutputKind.DynamicallyLinkedLibrary)); - var result = Compiler.GenerateAssembly(compilation); - - Assert.True(result.Result.Success); - var errors = result.Result.Diagnostics.Where(d => d.Severity == DiagnosticSeverity.Error); - Assert.False(errors.Any(), string.Join("\n", errors.Select(e => e.GetMessage()))); - var warnings = result.Result.Diagnostics.Where(d => d.Severity == DiagnosticSeverity.Warning); - Assert.False(warnings.Any(), string.Join("\n", errors.Select(w => w.GetMessage()))); - Assert.NotNull(result.Assembly); - - Assemblies[name] = result.Assembly; - - return result.Assembly; + return Compile(name, files.Select(f => File.ReadAllText(f)).ToArray()); } private static readonly LanguageVersion MaxLanguageVersion = Enum @@ -137,25 +117,20 @@ public static Assembly CompileFiles(string name, IEnumerable files) .Cast() .Max(); - public static Assembly Compile(string name, string contents, Generator generator) + public static Assembly Compile(string name, params string[] contents) { var trustedAssembliesPaths = ((string)AppContext.GetData("TRUSTED_PLATFORM_ASSEMBLIES")).Split(Path.PathSeparator); var references = trustedAssembliesPaths .Where(p => DependencyAssemblies.Contains(Path.GetFileNameWithoutExtension(p))) .Select(p => MetadataReference.CreateFromFile(p)) .ToList(); - var options = new CSharpParseOptions(kind: SourceCodeKind.Regular, languageVersion: MaxLanguageVersion); - - // Return a syntax tree of our source code - var syntaxTree = CSharpSyntaxTree.ParseText(contents, options); - - var compilation = CSharpCompilation.Create(name, new[] { syntaxTree }) + var syntaxTrees = contents.Select(c => CSharpSyntaxTree.ParseText(c, options)); + var compilation = CSharpCompilation.Create(name, syntaxTrees) .AddReferences(references) .WithOptions(new CSharpCompilationOptions(OutputKind.DynamicallyLinkedLibrary)); var result = Compiler.GenerateAssembly(compilation); - Assert.True(result.Result.Success); var errors = result.Result.Diagnostics.Where(d => d.Severity == DiagnosticSeverity.Error).ToList(); Assert.False(errors.Any(), string.Join("\n", errors.Select(e => e.GetMessage()))); @@ -163,6 +138,8 @@ public static Assembly Compile(string name, string contents, Generator generator Assert.False(warnings.Any(), string.Join("\n", errors.Select(w => w.GetMessage()))); Assert.NotNull(result.Assembly); + Assemblies[name] = result.Assembly; + return result.Assembly; } } diff --git a/XmlSchemaClassGenerator.Tests/XmlTests.cs b/XmlSchemaClassGenerator.Tests/XmlTests.cs index b4224688..6a3b8ac3 100644 --- a/XmlSchemaClassGenerator.Tests/XmlTests.cs +++ b/XmlSchemaClassGenerator.Tests/XmlTests.cs @@ -806,7 +806,7 @@ public void DoNotGenerateIntermediaryClassForArrayElements() var contents = ConvertXml(nameof(ComplexTypeWithAttributeGroupExtension), xsd, generator); var content = Assert.Single(contents); - var assembly = Compiler.Compile(nameof(DoNotGenerateIntermediaryClassForArrayElements), content, generator); + var assembly = Compiler.Compile(nameof(DoNotGenerateIntermediaryClassForArrayElements), content); var fooType = Assert.Single(assembly.DefinedTypes); Assert.NotNull(fooType); @@ -851,7 +851,7 @@ public void GenerateIntermediaryClassForArrayElements() var contents = ConvertXml(nameof(GenerateIntermediaryClassForArrayElements), xsd, generator); var content = Assert.Single(contents); - var assembly = Compiler.Compile(nameof(GenerateIntermediaryClassForArrayElements), content, generator); + var assembly = Compiler.Compile(nameof(GenerateIntermediaryClassForArrayElements), content); Assert.True(assembly.DefinedTypes.Count() == 2); Assert.Single(assembly.DefinedTypes, x => x.FullName == "Test.Foo");