diff --git a/.gitignore b/.gitignore index 24c566a59..7e56f9616 100644 --- a/.gitignore +++ b/.gitignore @@ -142,6 +142,8 @@ $tf/ _ReSharper*/ *.[Rr]e[Ss]harper *.DotSettings.user +.idea/ +*.iml # JustCode is a .NET coding add-in .JustCode diff --git a/scripts/dotnet-cli-build/TestTargets.cs b/scripts/dotnet-cli-build/TestTargets.cs index 14a732bae..6a984a698 100644 --- a/scripts/dotnet-cli-build/TestTargets.cs +++ b/scripts/dotnet-cli-build/TestTargets.cs @@ -17,25 +17,26 @@ namespace Microsoft.DotNet.Cli.Build public static readonly string[] TestProjects = new[] { + "ArgumentForwardingTests", "EndToEnd", "dotnet.Tests", - "dotnet-publish.Tests", + "dotnet-build.Tests", "dotnet-compile.Tests", "dotnet-compile.UnitTests", "dotnet-compile-fsc.Tests", - "dotnet-build.Tests", + "dotnet-new.Tests", "dotnet-pack.Tests", "dotnet-projectmodel-server.Tests", + "dotnet-publish.Tests", "dotnet-resgen.Tests", "dotnet-run.Tests", + "dotnet-test.Tests", + "dotnet-test.UnitTests", + "Kestrel.Tests", "Microsoft.DotNet.Cli.Utils.Tests", "Microsoft.DotNet.Compiler.Common.Tests", "Microsoft.DotNet.ProjectModel.Tests", - "Microsoft.Extensions.DependencyModel.Tests", - "ArgumentForwardingTests", - "dotnet-test.UnitTests", - "dotnet-test.Tests", - "Kestrel.Tests" + "Microsoft.Extensions.DependencyModel.Tests" }; public static readonly dynamic[] ConditionalTestAssets = new[] diff --git a/src/dotnet/commands/dotnet-new/CSharp_Console/project.json.pretemplate b/src/dotnet/commands/dotnet-new/CSharp_Console/project.json.pretemplate index 666dee54e..88f99d13e 100644 --- a/src/dotnet/commands/dotnet-new/CSharp_Console/project.json.pretemplate +++ b/src/dotnet/commands/dotnet-new/CSharp_Console/project.json.pretemplate @@ -10,6 +10,8 @@ } }, "frameworks": { - "netcoreapp1.0": {} + "netcoreapp1.0": { + "imports": "dnxcore50" + } } } diff --git a/test/dotnet-new.Tests/GivenThatIWantANewCSApp.cs b/test/dotnet-new.Tests/GivenThatIWantANewCSApp.cs new file mode 100644 index 000000000..089e03208 --- /dev/null +++ b/test/dotnet-new.Tests/GivenThatIWantANewCSApp.cs @@ -0,0 +1,70 @@ +// 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.Collections.Generic; +using System.IO; +using System.Linq; +using Microsoft.DotNet.Tools.Test.Utilities; +using Newtonsoft.Json; +using Newtonsoft.Json.Linq; +using Xunit; +using FluentAssertions; + +namespace Microsoft.DotNet.Tests +{ + public class GivenThatIWantANewCSApp : TestBase + { + [Fact] + public void When_NewtonsoftJson_dependency_added_Then_project_restores_and_runs() + { + var rootPath = Temp.CreateDirectory().Path; + var projectJsonFile = Path.Combine(rootPath, "project.json"); + + new TestCommand("dotnet") { WorkingDirectory = rootPath } + .Execute("new"); + + AddProjectJsonDependency(projectJsonFile, "Newtonsoft.Json", "7.0.1"); + + new TestCommand("dotnet") { WorkingDirectory = rootPath } + .Execute("restore") + .Should().Pass(); + + new TestCommand("dotnet") { WorkingDirectory = rootPath } + .Execute("run") + .Should().Pass(); + } + + private static void AddProjectJsonDependency(string projectJsonPath, string dependencyId, string dependencyVersion) + { + var projectJsonRoot = ReadProject(projectJsonPath); + + var dependenciesNode = projectJsonRoot + .Descendants() + .OfType() + .First(p => p.Name == "dependencies"); + + ((JObject)dependenciesNode.Value).Add(new JProperty(dependencyId, dependencyVersion)); + + WriteProject(projectJsonRoot, projectJsonPath); + } + + private static JObject ReadProject(string projectJsonPath) + { + using (TextReader projectFileReader = File.OpenText(projectJsonPath)) + { + var projectJsonReader = new JsonTextReader(projectFileReader); + + var serializer = new JsonSerializer(); + return serializer.Deserialize(projectJsonReader); + } + } + + private static void WriteProject(JObject projectRoot, string projectJsonPath) + { + string projectJson = JsonConvert.SerializeObject(projectRoot, Formatting.Indented); + + File.WriteAllText(projectJsonPath, projectJson + Environment.NewLine); + } + } +} diff --git a/test/dotnet-new.Tests/project.json b/test/dotnet-new.Tests/project.json new file mode 100644 index 000000000..3b7503209 --- /dev/null +++ b/test/dotnet-new.Tests/project.json @@ -0,0 +1,27 @@ +{ + "version": "1.0.0-*", + "dependencies": { + "Microsoft.NETCore.App": { + "type": "platform", + "version": "1.0.0-rc2-*" + }, + "Microsoft.DotNet.Tools.Tests.Utilities": { + "target": "project" + }, + "Newtonsoft.Json": "7.0.1", + "dotnet": { + "target": "project" + }, + "xunit": "2.1.0", + "dotnet-test-xunit": "1.0.0-dev-140469-38" + }, + "frameworks": { + "netcoreapp1.0": { + "imports": [ + "dnxcore50", + "portable-net45+win8" + ] + } + }, + "testRunner": "xunit" +}