diff --git a/AspNetCoreSdkTests/Template.cs b/AspNetCoreSdkTests/Template.cs deleted file mode 100644 index 2d751fb93c..0000000000 --- a/AspNetCoreSdkTests/Template.cs +++ /dev/null @@ -1,14 +0,0 @@ -namespace AspNetCoreSdkTests -{ - public enum Template - { - Web, - Mvc, - Razor, - Angular, - React, - ReactRedux, - RazorClassLib, - WebApi - } -} diff --git a/AspNetCoreSdkTests/TemplateTests.cs b/AspNetCoreSdkTests/TemplateTests.cs index 3b2840be67..f8dd59c466 100644 --- a/AspNetCoreSdkTests/TemplateTests.cs +++ b/AspNetCoreSdkTests/TemplateTests.cs @@ -1,6 +1,6 @@ -using AspNetCoreSdkTests.Util; +using AspNetCoreSdkTests.Templates; +using AspNetCoreSdkTests.Util; using NUnit.Framework; -using System.Collections.Generic; namespace AspNetCoreSdkTests { @@ -8,37 +8,33 @@ namespace AspNetCoreSdkTests public class TemplateTests { [Test] - [TestCaseSource(typeof(TestData), nameof(TestData.AllTemplates))] - public void Restore(Template template, NuGetConfig nuGetConfig) + public void Restore( + [ValueSource(typeof(TemplateData), nameof(TemplateData.All))] Template template, + [Values] NuGetConfig nuGetConfig) { - IEnumerable objFiles; using (var context = new DotNetContext()) { - context.New(template, restore: false); + context.New(template); context.Restore(nuGetConfig); - objFiles = context.GetObjFiles(); + + CollectionAssert.AreEquivalent(template.ExpectedObjFilesAfterRestore, context.GetObjFiles()); } - - var t = template.ToString().ToLowerInvariant(); - var expectedObjFiles = new[] { - $"{t}.csproj.nuget.cache", - $"{t}.csproj.nuget.g.props", - $"{t}.csproj.nuget.g.targets", - "project.assets.json", - }; - - CollectionAssert.AreEquivalent(expectedObjFiles, objFiles); } - //[Test] - //[TestCaseSource(typeof(TestData), nameof(TestData.AllTemplates))] - //public void Build(Template template, NuGetConfig nuGetConfig) - //{ - // using (var context = new DotNetContext()) - // { - // context.New(template, restore: false); - // context.Restore(nuGetConfig); - // } - //} + [Test] + public void Build( + [ValueSource(typeof(TemplateData), nameof(TemplateData.All))] Template template, + [Values] NuGetConfig nuGetConfig) + { + using (var context = new DotNetContext()) + { + context.New(template); + context.Restore(nuGetConfig); + context.Build(); + + CollectionAssert.AreEquivalent(template.ExpectedObjFilesAfterBuild, context.GetObjFiles()); + CollectionAssert.AreEquivalent(template.ExpectedBinFilesAfterBuild, context.GetBinFiles()); + } + } } } diff --git a/AspNetCoreSdkTests/Templates/ClassLibraryTemplate.cs b/AspNetCoreSdkTests/Templates/ClassLibraryTemplate.cs new file mode 100644 index 0000000000..3a64557f74 --- /dev/null +++ b/AspNetCoreSdkTests/Templates/ClassLibraryTemplate.cs @@ -0,0 +1,34 @@ +using System.Collections.Generic; +using System.IO; +using System.Linq; + +namespace AspNetCoreSdkTests.Templates +{ + public class ClassLibraryTemplate : Template + { + public virtual string OutputPath { get; } = Path.Combine("Debug", "netstandard2.0"); + + public override string Name => "classlib"; + + public override TemplateType Type => TemplateType.ClassLibrary; + + public override IEnumerable ExpectedObjFilesAfterBuild => Enumerable.Concat(base.ExpectedObjFilesAfterBuild, new[] + { + $"{Name}.AssemblyInfo.cs", + $"{Name}.AssemblyInfoInputs.cache", + $"{Name}.assets.cache", + $"{Name}.csproj.CoreCompileInputs.cache", + $"{Name}.csproj.FileListAbsolute.txt", + $"{Name}.csprojAssemblyReference.cache", + $"{Name}.dll", + $"{Name}.pdb", + }.Select(p => Path.Combine(OutputPath, p))); + + public override IEnumerable ExpectedBinFilesAfterBuild => new[] + { + $"{Name}.deps.json", + $"{Name}.dll", + $"{Name}.pdb", + }.Select(p => Path.Combine(OutputPath, p)); + } +} diff --git a/AspNetCoreSdkTests/Templates/ConsoleApplicationTemplate.cs b/AspNetCoreSdkTests/Templates/ConsoleApplicationTemplate.cs new file mode 100644 index 0000000000..0f4a489f26 --- /dev/null +++ b/AspNetCoreSdkTests/Templates/ConsoleApplicationTemplate.cs @@ -0,0 +1,22 @@ +using System; +using System.Collections.Generic; +using System.IO; +using System.Linq; + +namespace AspNetCoreSdkTests.Templates +{ + public class ConsoleApplicationTemplate : ClassLibraryTemplate + { + public override string OutputPath { get; } = Path.Combine("Debug", "netcoreapp2.1"); + + public override string Name => "console"; + + public override TemplateType Type => TemplateType.Application; + + public override IEnumerable ExpectedBinFilesAfterBuild => Enumerable.Concat(base.ExpectedBinFilesAfterBuild, new[] + { + $"{Name}.runtimeconfig.dev.json", + $"{Name}.runtimeconfig.json", + }.Select(p => Path.Combine(OutputPath, p))); + } +} diff --git a/AspNetCoreSdkTests/Templates/Template.cs b/AspNetCoreSdkTests/Templates/Template.cs new file mode 100644 index 0000000000..f3ef37bc6d --- /dev/null +++ b/AspNetCoreSdkTests/Templates/Template.cs @@ -0,0 +1,24 @@ +using System.Collections.Generic; + +namespace AspNetCoreSdkTests.Templates +{ + public abstract class Template + { + public abstract string Name { get; } + public abstract TemplateType Type { get; } + + public virtual IEnumerable ExpectedObjFilesAfterRestore => new[] + { + $"{Name}.csproj.nuget.cache", + $"{Name}.csproj.nuget.g.props", + $"{Name}.csproj.nuget.g.targets", + "project.assets.json", + }; + + public virtual IEnumerable ExpectedObjFilesAfterBuild => ExpectedObjFilesAfterRestore; + + public abstract IEnumerable ExpectedBinFilesAfterBuild { get; } + + public override string ToString() => Name; + } +} diff --git a/AspNetCoreSdkTests/Templates/TemplateData.cs b/AspNetCoreSdkTests/Templates/TemplateData.cs new file mode 100644 index 0000000000..fe37102554 --- /dev/null +++ b/AspNetCoreSdkTests/Templates/TemplateData.cs @@ -0,0 +1,13 @@ +using System.Collections.Generic; + +namespace AspNetCoreSdkTests.Templates +{ + public static class TemplateData + { + public static IEnumerable