Unit test added and Red

This commit is contained in:
Piotr Puszkiewicz 2016-04-17 01:42:36 -07:00
parent b682ab1d4f
commit d45032c9d7
4 changed files with 108 additions and 7 deletions

2
.gitignore vendored
View file

@ -142,6 +142,8 @@ $tf/
_ReSharper*/
*.[Rr]e[Ss]harper
*.DotSettings.user
.idea/
*.iml
# JustCode is a .NET coding add-in
.JustCode

View file

@ -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[]

View file

@ -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<JProperty>()
.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<JObject>(projectJsonReader);
}
}
private static void WriteProject(JObject projectRoot, string projectJsonPath)
{
string projectJson = JsonConvert.SerializeObject(projectRoot, Formatting.Indented);
File.WriteAllText(projectJsonPath, projectJson + Environment.NewLine);
}
}
}

View file

@ -0,0 +1,28 @@
{
"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": [
"netstandardapp1.5",
"dnxcore50",
"portable-net45+win8"
]
}
},
"testRunner": "xunit"
}