dotnet-installer/test/dotnet-new.Tests/GivenThatIWantANewApp.cs
Mike Lorbetske decec5f8da First step to ingest template engine (#5065)
* First step to ingest template engine

Please do not merge yet
@piotrp @seancpeters @livarocc

* Localization

* Attempt to get a build going

Rename program.cs to New3Command.cs
Move TableFormatter into its own file
Consume template engine packages version 1.0.0-beta1-20161218-24
Temporarily add MyGet templating feed so that package restore will work

* Update ExtendedCommandParser

Make short form args prefer longer runs of characters in the source
parameter before falling back to p:shortname syntax
Change scoping for a few methods to get rid of inconsistent visiblity
errors

* Fix package installation wildcards

* Cleanup New3Command, fix review issue, bump version, sorting for template list

* Installation, loc fix, help formatting

* Use latest TemplateEngine packages

* New3 unit tests

* Fixed formatting on csproj files

* Add the build steps to add templates to the layout

* Change tests slightly to make comparisons easier

Also fixes the wrong flag getting passed to set language

* Fixes for 127, 128, 130, 131 - help display

* Sync to latest TemplateEngine version

Absorbs new search logic

* All tests passing

Cleaner New3Command
Support for project/item template contexts

* Try to make tests more durable

* Disable test parallelization for dotnet-new tests

* Update web SDK and template engine versions

* Remove AI package feed

* Simplify CLI interface to Template Engine

* Fix host identifier and update to latest packages

* Update template engine & Web SDK versions

* Fix template engine version

* Remove UsingTask and redeclaration of property
2017-01-06 14:48:27 -08:00

69 lines
2.5 KiB
C#

// Copyright (c) .NET Foundation and contributors. All rights reserved.
// Licensed under the MIT license. See LICENSE file in the project root for full license information.
using System;
using System.IO;
using Microsoft.DotNet.Tools.Test.Utilities;
using FluentAssertions;
using Xunit;
namespace Microsoft.DotNet.New.Tests
{
public class GivenThatIWantANewApp : TestBase
{
[Fact]
public void When_dotnet_new_is_invoked_mupliple_times_it_should_fail()
{
var rootPath = TestAssetsManager.CreateTestDirectory().Path;
new TestCommand("dotnet") { WorkingDirectory = rootPath }
.Execute("new");
DateTime expectedState = Directory.GetLastWriteTime(rootPath);
var result = new TestCommand("dotnet") { WorkingDirectory = rootPath }
.ExecuteWithCapturedOutput("new");
DateTime actualState = Directory.GetLastWriteTime(rootPath);
Assert.Equal(expectedState, actualState);
result.Should().Fail()
.And.HaveStdErr();
}
[Fact]
public void RestoreDoesNotUseAnyCliProducedPackagesOnItsTemplates()
{
var cSharpTemplates = new [] { "Console", "Lib", "Web", "Mstest", "XUnittest" };
var rootPath = TestAssetsManager.CreateTestDirectory().Path;
var packagesDirectory = Path.Combine(rootPath, "packages");
foreach (var cSharpTemplate in cSharpTemplates)
{
var projectFolder = Path.Combine(rootPath, cSharpTemplate);
Directory.CreateDirectory(projectFolder);
CreateAndRestoreNewProject(cSharpTemplate, projectFolder, packagesDirectory);
}
Directory.EnumerateFiles(packagesDirectory, $"*.nupkg", SearchOption.AllDirectories)
.Should().NotContain(p => p.Contains("Microsoft.DotNet.Cli.Utils"));
}
private void CreateAndRestoreNewProject(
string projectType,
string projectFolder,
string packagesDirectory)
{
new TestCommand("dotnet") { WorkingDirectory = projectFolder }
.Execute($"new --type {projectType}")
.Should().Pass();
new RestoreCommand()
.WithWorkingDirectory(projectFolder)
.Execute($"--packages {packagesDirectory} /p:SkipInvalidConfigurations=true")
.Should().Pass();
}
}
}