From a7d594049b04ddccbec0695c543ae23fd5e78190 Mon Sep 17 00:00:00 2001 From: PiotrP Date: Wed, 10 Aug 2016 11:55:56 -0700 Subject: [PATCH] Remove dotnet-build.tests This capability is being replaced by MSBuild, and the project.json tests are very long running. --- Documentation/developer-guide.md | 2 +- Microsoft.DotNet.Cli.sln | 19 - .../BuildInvalidArgumentsTests.cs | 55 --- test/dotnet-build.Tests/BuildOutputTests.cs | 387 ------------------ test/dotnet-build.Tests/BuildPortableTests.cs | 99 ----- .../BuildProjectToProjectTests.cs | 187 --------- .../BuildStandAloneTests.cs | 87 ---- test/dotnet-build.Tests/BuildWarningsTests.cs | 27 -- .../GivenDotnetBuildBuildsProjects.cs | 119 ------ .../dotnet-build.Tests/IncrementalTestBase.cs | 138 ------- test/dotnet-build.Tests/IncrementalTests.cs | 267 ------------ ...crementalTestsOnCultureSpecificResource.cs | 36 -- .../IncrementalTestsOnResources.cs | 34 -- .../IncrementalTestsTransitiveRuntime.cs | 48 --- .../IncrementalTestsVersionSuffix.cs | 29 -- .../ProjectNameArgumentTests.cs | 135 ------ .../dotnet-build.Tests/WrappedProjectTests.cs | 36 -- .../dotnet-build.Tests.xproj | 21 - test/dotnet-build.Tests/project.json | 28 -- 19 files changed, 1 insertion(+), 1753 deletions(-) delete mode 100644 test/dotnet-build.Tests/BuildInvalidArgumentsTests.cs delete mode 100644 test/dotnet-build.Tests/BuildOutputTests.cs delete mode 100644 test/dotnet-build.Tests/BuildPortableTests.cs delete mode 100644 test/dotnet-build.Tests/BuildProjectToProjectTests.cs delete mode 100644 test/dotnet-build.Tests/BuildStandAloneTests.cs delete mode 100644 test/dotnet-build.Tests/BuildWarningsTests.cs delete mode 100644 test/dotnet-build.Tests/GivenDotnetBuildBuildsProjects.cs delete mode 100644 test/dotnet-build.Tests/IncrementalTestBase.cs delete mode 100644 test/dotnet-build.Tests/IncrementalTests.cs delete mode 100644 test/dotnet-build.Tests/IncrementalTestsOnCultureSpecificResource.cs delete mode 100644 test/dotnet-build.Tests/IncrementalTestsOnResources.cs delete mode 100644 test/dotnet-build.Tests/IncrementalTestsTransitiveRuntime.cs delete mode 100644 test/dotnet-build.Tests/IncrementalTestsVersionSuffix.cs delete mode 100644 test/dotnet-build.Tests/ProjectNameArgumentTests.cs delete mode 100644 test/dotnet-build.Tests/WrappedProjectTests.cs delete mode 100644 test/dotnet-build.Tests/dotnet-build.Tests.xproj delete mode 100644 test/dotnet-build.Tests/project.json diff --git a/Documentation/developer-guide.md b/Documentation/developer-guide.md index 18cb44890..f4337b540 100644 --- a/Documentation/developer-guide.md +++ b/Documentation/developer-guide.md @@ -53,7 +53,7 @@ For E2E and functional tests, they all depend on the binaries located under `art 1. `cd src\dotnet\` 2. `dotnet build` 3. `cp bin\debug\netstandardapp1.5\dotnet.dll artifacts\rid\stage2` -4. `cd ..\..\test\dotnet-build.Tests` +4. `cd ..\..\test\dotnet.Tests` 5. `dotnet test` ##Adding a Command diff --git a/Microsoft.DotNet.Cli.sln b/Microsoft.DotNet.Cli.sln index cf45fe99e..1954dd288 100644 --- a/Microsoft.DotNet.Cli.sln +++ b/Microsoft.DotNet.Cli.sln @@ -32,8 +32,6 @@ Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "TestProjects", "TestProject EndProject Project("{8BB2217D-0F2D-49D1-97BC-3654ED321F3B}") = "dotnet", "src\dotnet\dotnet.xproj", "{60CF7E6C-D6C8-439D-B7B7-D8A27E29BE2C}" EndProject -Project("{8BB2217D-0F2D-49D1-97BC-3654ED321F3B}") = "dotnet-build.Tests", "test\dotnet-build.Tests\dotnet-build.Tests.xproj", "{833FFEE1-7EED-4F51-8DFD-946D48833333}" -EndProject Project("{8BB2217D-0F2D-49D1-97BC-3654ED321F3B}") = "dotnet-compile.Tests", "test\dotnet-compile.Tests\dotnet-compile.Tests.xproj", "{833FFEE1-7EED-4F51-8DFD-946D48893D6E}" EndProject Project("{8BB2217D-0F2D-49D1-97BC-3654ED321F3B}") = "dotnet-publish.Tests", "test\dotnet-publish.Tests\dotnet-publish.Tests.xproj", "{386D412C-003C-47B1-8258-0E35865CB7C4}" @@ -302,22 +300,6 @@ Global {60CF7E6C-D6C8-439D-B7B7-D8A27E29BE2C}.RelWithDebInfo|Any CPU.Build.0 = Release|Any CPU {60CF7E6C-D6C8-439D-B7B7-D8A27E29BE2C}.RelWithDebInfo|x64.ActiveCfg = Release|Any CPU {60CF7E6C-D6C8-439D-B7B7-D8A27E29BE2C}.RelWithDebInfo|x64.Build.0 = Release|Any CPU - {833FFEE1-7EED-4F51-8DFD-946D48833333}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {833FFEE1-7EED-4F51-8DFD-946D48833333}.Debug|Any CPU.Build.0 = Debug|Any CPU - {833FFEE1-7EED-4F51-8DFD-946D48833333}.Debug|x64.ActiveCfg = Debug|Any CPU - {833FFEE1-7EED-4F51-8DFD-946D48833333}.Debug|x64.Build.0 = Debug|Any CPU - {833FFEE1-7EED-4F51-8DFD-946D48833333}.MinSizeRel|Any CPU.ActiveCfg = Debug|Any CPU - {833FFEE1-7EED-4F51-8DFD-946D48833333}.MinSizeRel|Any CPU.Build.0 = Debug|Any CPU - {833FFEE1-7EED-4F51-8DFD-946D48833333}.MinSizeRel|x64.ActiveCfg = Debug|Any CPU - {833FFEE1-7EED-4F51-8DFD-946D48833333}.MinSizeRel|x64.Build.0 = Debug|Any CPU - {833FFEE1-7EED-4F51-8DFD-946D48833333}.Release|Any CPU.ActiveCfg = Release|Any CPU - {833FFEE1-7EED-4F51-8DFD-946D48833333}.Release|Any CPU.Build.0 = Release|Any CPU - {833FFEE1-7EED-4F51-8DFD-946D48833333}.Release|x64.ActiveCfg = Release|Any CPU - {833FFEE1-7EED-4F51-8DFD-946D48833333}.Release|x64.Build.0 = Release|Any CPU - {833FFEE1-7EED-4F51-8DFD-946D48833333}.RelWithDebInfo|Any CPU.ActiveCfg = Release|Any CPU - {833FFEE1-7EED-4F51-8DFD-946D48833333}.RelWithDebInfo|Any CPU.Build.0 = Release|Any CPU - {833FFEE1-7EED-4F51-8DFD-946D48833333}.RelWithDebInfo|x64.ActiveCfg = Release|Any CPU - {833FFEE1-7EED-4F51-8DFD-946D48833333}.RelWithDebInfo|x64.Build.0 = Release|Any CPU {833FFEE1-7EED-4F51-8DFD-946D48893D6E}.Debug|Any CPU.ActiveCfg = Debug|Any CPU {833FFEE1-7EED-4F51-8DFD-946D48893D6E}.Debug|Any CPU.Build.0 = Debug|Any CPU {833FFEE1-7EED-4F51-8DFD-946D48893D6E}.Debug|x64.ActiveCfg = Debug|Any CPU @@ -956,7 +938,6 @@ Global {65741CB1-8AEE-4C66-8198-10A7EA0E4258} = {17735A9D-BFD9-4585-A7CB-3208CA6EA8A7} {713CBFBB-5392-438D-B766-A9A585EF1BB8} = {17735A9D-BFD9-4585-A7CB-3208CA6EA8A7} {60CF7E6C-D6C8-439D-B7B7-D8A27E29BE2C} = {ED2FE3E2-F7E7-4389-8231-B65123F2076F} - {833FFEE1-7EED-4F51-8DFD-946D48833333} = {17735A9D-BFD9-4585-A7CB-3208CA6EA8A7} {833FFEE1-7EED-4F51-8DFD-946D48893D6E} = {17735A9D-BFD9-4585-A7CB-3208CA6EA8A7} {386D412C-003C-47B1-8258-0E35865CB7C4} = {17735A9D-BFD9-4585-A7CB-3208CA6EA8A7} {D521DD9F-0614-4929-93B4-D8FA5682C174} = {ED2FE3E2-F7E7-4389-8231-B65123F2076F} diff --git a/test/dotnet-build.Tests/BuildInvalidArgumentsTests.cs b/test/dotnet-build.Tests/BuildInvalidArgumentsTests.cs deleted file mode 100644 index bb32eb447..000000000 --- a/test/dotnet-build.Tests/BuildInvalidArgumentsTests.cs +++ /dev/null @@ -1,55 +0,0 @@ -using System.IO; -using Microsoft.DotNet.Tools.Test.Utilities; -using Xunit; - -namespace Microsoft.DotNet.Tools.Builder.Tests -{ - public class BuildInvalidArgumentsTests : TestBase - { - [Fact] - public void ErrorOccursWhenBuildingPortableProjectToSpecificOutputPathWithoutSpecifyingFramework() - { - var testInstance = TestAssetsManager.CreateTestInstance("PortableTests") - .WithLockFiles(); - - var result = new BuildCommand( - projectPath: Path.Combine(testInstance.TestRoot, "PortableApp"), - output: Path.Combine(testInstance.TestRoot, "out")) - .ExecuteWithCapturedOutput(); - - result.Should().Fail(); - result.Should().HaveStdErrContaining("When the '--output' option is provided, the '--framework' option must also be provided."); - } - - [Fact] - public void ErrorOccursWhenBuildingPortableProjectAndSpecifyingFrameworkThatProjectDoesNotSupport() - { - var testInstance = TestAssetsManager.CreateTestInstance("PortableTests") - .WithLockFiles(); - - var result = new BuildCommand( - projectPath: Path.Combine(testInstance.TestRoot, "PortableApp"), - output: Path.Combine(testInstance.TestRoot, "out"), - framework: "sl40") - .ExecuteWithCapturedOutput(); - - result.Should().Fail(); - result.Should().HaveStdErrMatching("Project '.*?' does not support framework: Silverlight,Version=v4\\.0\\."); - } - - [Fact] - public void ErrorOccursWhenBuildingStandaloneProjectToSpecificOutputPathWithoutSpecifyingFramework() - { - var testInstance = TestAssetsManager.CreateTestInstance("PortableTests") - .WithLockFiles(); - - var result = new BuildCommand( - projectPath: Path.Combine(testInstance.TestRoot, "StandaloneApp"), - output: Path.Combine(testInstance.TestRoot, "out")) - .ExecuteWithCapturedOutput(); - - result.Should().Fail(); - result.Should().HaveStdErrContaining("When the '--output' option is provided, the '--framework' option must also be provided."); - } - } -} diff --git a/test/dotnet-build.Tests/BuildOutputTests.cs b/test/dotnet-build.Tests/BuildOutputTests.cs deleted file mode 100644 index 71139968e..000000000 --- a/test/dotnet-build.Tests/BuildOutputTests.cs +++ /dev/null @@ -1,387 +0,0 @@ -// 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 System.Linq; -using System.Runtime.InteropServices; -using FluentAssertions; -using Microsoft.DotNet.InternalAbstractions; -using Microsoft.DotNet.ProjectModel; -using Microsoft.DotNet.Tools.Test.Utilities; -using Newtonsoft.Json.Linq; -using NuGet.Frameworks; -using Xunit; - -namespace Microsoft.DotNet.Tools.Builder.Tests -{ - public class BuildOutputTests : TestBase - { - private string _testProjectsRoot; - private string _runtime; - private DirectoryInfo _rootDirInfo; - private DirectoryInfo _testAppDirDirInfo; - private DirectoryInfo _testLibDirInfo; - - private readonly string[] _runtimeFiles = - { - "TestApp" + FileNameSuffixes.DotNet.DynamicLib, - "TestApp" + FileNameSuffixes.DotNet.ProgramDatabase, - "TestApp" + FileNameSuffixes.CurrentPlatform.Exe, - "TestApp" + FileNameSuffixes.DepsJson, - "TestApp" + FileNameSuffixes.RuntimeConfigJson, - "TestLibrary" + FileNameSuffixes.DotNet.DynamicLib, - "TestLibrary" + FileNameSuffixes.DotNet.ProgramDatabase - }; - - private readonly string[] _runtimeExcludeFiles = - { - "TestLibrary" + FileNameSuffixes.RuntimeConfigJson, - "TestLibrary" + FileNameSuffixes.RuntimeConfigDevJson - }; - - private readonly string[] _appCompileFiles = - { - "TestApp" + FileNameSuffixes.DotNet.DynamicLib, - "TestApp" + FileNameSuffixes.DotNet.ProgramDatabase - }; - - private readonly string[] _libCompileFiles = - { - "TestLibrary" + FileNameSuffixes.DotNet.DynamicLib, - "TestLibrary" + FileNameSuffixes.DotNet.ProgramDatabase - }; - - private readonly string[] _libCompileExcludeFiles = - { - "TestLibrary" + FileNameSuffixes.RuntimeConfigJson, - "TestLibrary" + FileNameSuffixes.RuntimeConfigDevJson - }; - - - private void GetProjectInfo(string testRoot) - { - _testProjectsRoot = testRoot; - _rootDirInfo = new DirectoryInfo(_testProjectsRoot); - _testAppDirDirInfo = new DirectoryInfo(Path.Combine(_testProjectsRoot, "TestApp")); - _testLibDirInfo = new DirectoryInfo(Path.Combine(_testProjectsRoot, "TestLibrary")); - - var contexts = ProjectContext.CreateContextForEachFramework( - _testAppDirDirInfo.FullName, - null, - RuntimeEnvironmentRidExtensions.GetAllCandidateRuntimeIdentifiers()); - _runtime = contexts.FirstOrDefault(c => !string.IsNullOrEmpty(c.RuntimeIdentifier))?.RuntimeIdentifier; - } - - private string FormatPath(string input, string framework, string runtime) - { - return input.Replace("{fw}", framework).Replace("{rid}", runtime); - } - - [Theory] - // global.json exists - [InlineData("1", true, null, null, "TestLibrary/bin/Debug/{fw}", "TestApp/bin/Debug/{fw}", "TestApp/bin/Debug/{fw}/{rid}")] - [InlineData("2", true, "out", null, "TestLibrary/bin/Debug/{fw}", "TestApp/bin/Debug/{fw}", "out")] - [InlineData("3", true, null, "build", "build/TestLibrary/bin/Debug/{fw}", "build/TestApp/bin/Debug/{fw}", "build/TestApp/bin/Debug/{fw}/{rid}")] - [InlineData("4", true, "out", "build", "build/TestLibrary/bin/Debug/{fw}", "build/TestApp/bin/Debug/{fw}", "out")] - //no global.json - //[InlineData(false, null, null, "TestLibrary/bin/debug/{fw}", "TestApp/bin/debug/{fw}", "TestApp/bin/debug/{fw}/{rid}")] - //[InlineData(false, "out", null, "TestLibrary/bin/debug/{fw}", "TestApp/bin/debug/{fw}", "out")] - //[InlineData(false, null, "build", "build/TestLibrary/bin/debug/{fw}", "build/TestApp/bin/debug/{fw}", "build/TestApp/bin/debug/{fw}/{rid}")] - //[InlineData(false, "out", "build", "build/TestLibrary/bin/debug/{fw}", "build/TestApp/bin/debug/{fw}", "out")] - public void AppDefaultPaths(string testIdentifer, bool global, string outputValue, string baseValue, string expectedLibCompile, string expectedAppCompile, string expectedAppRuntime) - { - var testInstance = TestAssetsManager.CreateTestInstance("TestAppWithLibrary", identifier: testIdentifer) - .WithLockFiles(); - GetProjectInfo(testInstance.TestRoot); - - new BuildCommand(GetProjectPath(_testAppDirDirInfo), - output: outputValue != null ? Path.Combine(_testProjectsRoot, outputValue) : string.Empty, - buildBasePath: baseValue != null ? Path.Combine(_testProjectsRoot, baseValue) : string.Empty, - framework: DefaultFramework) - .ExecuteWithCapturedOutput().Should().Pass(); - - var libdebug = _rootDirInfo.Sub(FormatPath(expectedLibCompile, DefaultLibraryFramework, _runtime)); - var appdebug = _rootDirInfo.Sub(FormatPath(expectedAppCompile, DefaultFramework, _runtime)); - var appruntime = _rootDirInfo.Sub(FormatPath(expectedAppRuntime, DefaultFramework, _runtime)); - - libdebug.Should().Exist() - .And.HaveFiles(_libCompileFiles) - .And.NotHaveFiles(_libCompileExcludeFiles); - appdebug.Should().Exist().And.HaveFiles(_appCompileFiles); - appruntime.Should().Exist() - .And.HaveFiles(_runtimeFiles) - .And.NotHaveFiles(_runtimeExcludeFiles); - } - - [Theory] - [InlineData("1", true, null, null, "TestLibrary/bin/Debug/{fw}", "TestLibrary/bin/Debug/{fw}/{rid}")] - [InlineData("2", true, "out", null, "TestLibrary/bin/Debug/{fw}", "out")] - [InlineData("3", true, null, "build", "build/TestLibrary/bin/Debug/{fw}", "build/TestLibrary/bin/Debug/{fw}/{rid}")] - [InlineData("4", true, "out", "build", "build/TestLibrary/bin/Debug/{fw}", "out")] - public void LibDefaultPaths(string testIdentifer, bool global, string outputValue, string baseValue, string expectedLibCompile, string expectedLibOutput) - { - var testInstance = TestAssetsManager.CreateTestInstance("TestAppWithLibrary", identifier: testIdentifer) - .WithLockFiles(); - GetProjectInfo(testInstance.TestRoot); - - new BuildCommand(GetProjectPath(_testLibDirInfo), - output: outputValue != null ? Path.Combine(_testProjectsRoot, outputValue) : string.Empty, - buildBasePath: baseValue != null ? Path.Combine(_testProjectsRoot, baseValue) : string.Empty, - framework: DefaultLibraryFramework) - .ExecuteWithCapturedOutput().Should().Pass(); - - var libdebug = _rootDirInfo.Sub(FormatPath(expectedLibCompile, DefaultLibraryFramework, _runtime)); - - libdebug.Should().Exist() - .And.HaveFiles(_libCompileFiles) - .And.NotHaveFiles(_libCompileExcludeFiles); - } - - [Fact] - public void SettingVersionInEnvironment_ShouldStampAssemblyInfoInOutputAssembly() - { - var testInstance = TestAssetsManager.CreateTestInstance("TestLibraryWithConfiguration") - .WithLockFiles(); - - var cmd = new BuildCommand(Path.Combine(testInstance.TestRoot, Project.FileName), framework: DefaultLibraryFramework); - cmd.Environment["DOTNET_BUILD_VERSION"] = "85"; - cmd.Environment["DOTNET_ASSEMBLY_FILE_VERSION"] = "345"; - cmd.ExecuteWithCapturedOutput().Should().Pass(); - - var output = Path.Combine(testInstance.TestRoot, "bin", "Debug", DefaultLibraryFramework, "TestLibraryWithConfiguration.dll"); - var informationalVersion = PeReaderUtils.GetAssemblyAttributeValue(output, "AssemblyInformationalVersionAttribute"); - var fileVersion = PeReaderUtils.GetAssemblyAttributeValue(output, "AssemblyFileVersionAttribute"); - - informationalVersion.Should().NotBeNull(); - informationalVersion.Should().BeEquivalentTo("1.0.0-85"); - - fileVersion.Should().NotBeNull(); - fileVersion.Should().BeEquivalentTo("1.0.0.345"); - } - - [Fact] - public void SettingVersionSuffixFlag_ShouldStampAssemblyInfoInOutputAssembly() - { - var testInstance = TestAssetsManager.CreateTestInstance("TestLibraryWithConfiguration") - .WithLockFiles(); - - var cmd = new BuildCommand(Path.Combine(testInstance.TestRoot, Project.FileName), framework: DefaultLibraryFramework, versionSuffix: "85"); - cmd.ExecuteWithCapturedOutput().Should().Pass(); - - var output = Path.Combine(testInstance.TestRoot, "bin", "Debug", DefaultLibraryFramework, "TestLibraryWithConfiguration.dll"); - var informationalVersion = PeReaderUtils.GetAssemblyAttributeValue(output, "AssemblyInformationalVersionAttribute"); - - informationalVersion.Should().NotBeNull(); - informationalVersion.Should().BeEquivalentTo("1.0.0-85"); - } - - [Fact] - public void BuildGlobbingMakesAllRunnable() - { - var testInstance = TestAssetsManager.CreateTestInstance("AppWithAppDependency") - .WithLockFiles(); - - var cmd = new BuildCommand(string.Format("*{0}project.json", Path.DirectorySeparatorChar), skipLoadProject: true) - .WithWorkingDirectory(testInstance.TestRoot) - .Execute() - .Should() - .Pass(); - - foreach (var project in new [] { "TestApp1", "TestApp2" }) - { - new DirectoryInfo(Path.Combine(testInstance.TestRoot, project, "bin", "Debug", DefaultFramework)) - .Should().HaveFile($"{project}.deps.json"); - } - } - - [Theory] - // [InlineData("net20", false, true)] - // [InlineData("net40", true, true)] - // [InlineData("net461", true, true)] - [InlineData("netstandard1.5", true, false)] - public void MultipleFrameworks_ShouldHaveValidTargetFrameworkAttribute(string frameworkName, bool shouldHaveTargetFrameworkAttribute, bool windowsOnly) - { - var framework = NuGetFramework.Parse(frameworkName); - - var testInstance = TestAssetsManager.CreateTestInstance("TestLibraryWithMultipleFrameworks") - .WithLockFiles(); - - var cmd = new BuildCommand(Path.Combine(testInstance.TestRoot, Project.FileName), framework: framework.GetShortFolderName()); - - if (windowsOnly && !RuntimeInformation.IsOSPlatform(OSPlatform.Windows)) - { - // on non-windows platforms, desktop frameworks will not build - cmd.ExecuteWithCapturedOutput().Should().Fail(); - } - else - { - cmd.ExecuteWithCapturedOutput().Should().Pass(); - - var output = Path.Combine(testInstance.TestRoot, "bin", "Debug", framework.GetShortFolderName(), "TestLibraryWithMultipleFrameworks.dll"); - var targetFramework = PeReaderUtils.GetAssemblyAttributeValue(output, "TargetFrameworkAttribute"); - - if (shouldHaveTargetFrameworkAttribute) - { - targetFramework.Should().NotBeNull(); - targetFramework.Should().BeEquivalentTo(framework.DotNetFrameworkName); - } - else - { - targetFramework.Should().BeNull(); - } - } - } - - [Fact] - public void UnresolvedReferenceCausesBuildToFailAndNotProduceOutput() - { - var testAssetsManager = GetTestGroupTestAssetsManager("NonRestoredTestProjects"); - var testInstance = testAssetsManager.CreateTestInstance("TestProjectWithUnresolvedDependency") - .WithLockFiles(); - - var restoreResult = new RestoreCommand() { WorkingDirectory = testInstance.TestRoot } - .ExecuteWithCapturedOutput() - .Should().Fail(); - - new DirectoryInfo(testInstance.TestRoot) - .Should().HaveFile("project.lock.json"); - - var buildCmd = new BuildCommand(testInstance.TestRoot); - var buildResult = buildCmd.ExecuteWithCapturedOutput(); - buildResult.Should().Fail(); - - buildResult.StdErr.Should().Contain("The dependency ThisIsNotARealDependencyAndIfSomeoneGoesAndAddsAProjectWithThisNameIWillFindThemAndPunishThem could not be resolved."); - - var outputDir = new DirectoryInfo(Path.Combine(testInstance.TestRoot, "bin", "Debug", "netcoreapp1.0")); - outputDir.GetFiles().Length.Should().Be(0); - } - - [Fact] - public void PackageReferenceWithResourcesTest() - { - var testInstance = TestAssetsManager.CreateTestInstance("ResourcesTests") - .WithLockFiles(); - - var projectRoot = Path.Combine(testInstance.TestRoot, "TestApp"); - - var cmd = new BuildCommand(projectRoot); - var result = cmd.Execute(); - result.Should().Pass(); - - var outputDir = new DirectoryInfo(Path.Combine(projectRoot, "bin", "Debug", "netcoreapp1.0")); - - outputDir.Should().HaveFile("TestLibraryWithResources.dll"); - outputDir.Sub("fr").Should().HaveFile("TestLibraryWithResources.resources.dll"); - - var depsJson = JObject.Parse(File.ReadAllText(Path.Combine(outputDir.FullName, $"{Path.GetFileNameWithoutExtension(cmd.GetOutputExecutableName())}.deps.json"))); - - foreach (var library in new[] { Tuple.Create("Microsoft.Data.OData", "5.6.4"), Tuple.Create("TestLibraryWithResources", "1.0.0") }) - { - var resources = depsJson - ["targets"] - [".NETCoreApp,Version=v1.0"] - [library.Item1.ToLowerInvariant() + "/" + library.Item2.ToLowerInvariant()] - ["resources"]; - - resources.Should().NotBeNull(); - - foreach (var item in resources.Children()) - { - var locale = item.Value["locale"]; - locale.Should().NotBeNull(); - - item.Name.Should().EndWith($"{locale}/{library.Item1}.resources.dll"); - } - } - } - - [Fact] - public void ResourceTest() - { - var testInstance = TestAssetsManager.CreateTestInstance("TestAppWithLibrary") - .WithLockFiles(); - GetProjectInfo(testInstance.TestRoot); - - var names = new[] - { - "uk-UA", - "en", - "en-US" - }; - foreach (var folder in new[] { _testAppDirDirInfo, _testLibDirInfo }) - { - foreach (var name in names) - { - var resourceFile = Path.Combine(folder.FullName, $"Resource.{name}.resx"); - File.WriteAllText(resourceFile, ""); - } - } - - new BuildCommand(GetProjectPath(_testAppDirDirInfo), framework: DefaultFramework) - .ExecuteWithCapturedOutput().Should().Pass(); - - var libdebug = _testLibDirInfo.Sub("bin/Debug").Sub(DefaultLibraryFramework); - var appdebug = _testAppDirDirInfo.Sub("bin/Debug").Sub(DefaultFramework); - var appruntime = appdebug.Sub(_runtime); - - foreach (var name in names) - { - libdebug.Sub(name).Should().Exist().And.HaveFile("TestLibrary.resources.dll"); - appdebug.Sub(name).Should().Exist().And.HaveFile("TestApp.resources.dll"); - appruntime.Sub(name).Should().Exist().And.HaveFiles(new[] { "TestLibrary.resources.dll", "TestApp.resources.dll" }); - } - - } - - [Fact] - private void StandaloneApp_WithoutCoreClrDll_Fails() - { - // Convert a Portable App to Standalone to simulate the customer scenario - var testInstance = TestAssetsManager.CreateTestInstance("DependencyChangeTest") - .WithLockFiles(); - - // Convert the portable test project to standalone by removing "type": "platform" and adding rids - var originalTestProject = Path.Combine(testInstance.TestRoot, "PortableApp_Standalone", "project.json"); - var modifiedTestProject = Path.Combine(testInstance.TestRoot, "PortableApp_Standalone", "project.json.modified"); - - // Simulate a user editting the project.json - File.Delete(originalTestProject); - File.Copy(modifiedTestProject, originalTestProject); - - var buildResult = new BuildCommand(originalTestProject, framework: DefaultFramework) - .ExecuteWithCapturedOutput(); - - buildResult.Should().Fail(); - - buildResult.StdErr.Should().Contain("Can not find runtime target for framework '.NETCoreApp,Version=v1.0' compatible with one of the target runtimes"); - buildResult.StdErr.Should().Contain("The project has not been restored or restore failed - run `dotnet restore`"); - } - - [Fact] - private void App_WithSelfReferencingDependency_FailsBuild() - { - var testAssetsManager = GetTestGroupTestAssetsManager("NonRestoredTestProjects"); - var testInstance = testAssetsManager.CreateTestInstance("TestProjectWithSelfReferencingDependency") - .WithLockFiles(); - - var restoreResult = new RestoreCommand() { WorkingDirectory = testInstance.TestRoot }.ExecuteWithCapturedOutput(); - restoreResult.Should().Fail(); - restoreResult.StdOut.Should().Contain("error: Cycle detected"); - } - - private void CopyProjectToTempDir(string projectDir, TempDirectory tempDir) - { - // copy all the files to temp dir - foreach (var file in Directory.EnumerateFiles(projectDir)) - { - tempDir.CopyFile(file); - } - } - - private string GetProjectPath(DirectoryInfo projectDir) - { - return Path.Combine(projectDir.FullName, "project.json"); - } - } -} diff --git a/test/dotnet-build.Tests/BuildPortableTests.cs b/test/dotnet-build.Tests/BuildPortableTests.cs deleted file mode 100644 index 76f782799..000000000 --- a/test/dotnet-build.Tests/BuildPortableTests.cs +++ /dev/null @@ -1,99 +0,0 @@ -using System.IO; -using Microsoft.DotNet.Tools.Test.Utilities; -using Xunit; -using Microsoft.DotNet.TestFramework; -using Newtonsoft.Json.Linq; -using FluentAssertions; - -namespace Microsoft.DotNet.Tools.Builder.Tests -{ - public class BuildPortableTests : TestBase - { - [Fact] - public void BuildingAPortableProjectProducesDepsJsonFile() - { - var testInstance = TestAssetsManager.CreateTestInstance("PortableTests").WithLockFiles(); - - var netcoreAppOutput = Build(testInstance); - - netcoreAppOutput.Should().Exist().And.HaveFile("PortableApp.deps.json"); - } - - [Fact] - public void BuildingAPortableProjectProducesADllFile() - { - var testInstance = TestAssetsManager.CreateTestInstance("PortableTests").WithLockFiles(); - - var netcoreAppOutput = Build(testInstance); - - netcoreAppOutput.Should().Exist().And.HaveFile("PortableApp.dll"); - } - - [Fact] - public void BuildingAPortableProjectProducesAPdbFile() - { - var testInstance = TestAssetsManager.CreateTestInstance("PortableTests").WithLockFiles(); - - var netcoreAppOutput = Build(testInstance); - - netcoreAppOutput.Should().Exist().And.HaveFile("PortableApp.pdb"); - } - - [Fact] - public void BuildingAPortableProjectProducesARuntimeConfigJsonFile() - { - var testInstance = TestAssetsManager.CreateTestInstance("PortableTests").WithLockFiles(); - - var netcoreAppOutput = Build(testInstance); - - netcoreAppOutput.Should().Exist().And.HaveFile("PortableApp.runtimeconfig.json"); - } - - [Fact] - public void RuntimeOptionsGetsCopiedToRuntimeConfigJsonForAPortableApp() - { - var testInstance = TestAssetsManager.CreateTestInstance("PortableTests") - .WithLockFiles(); - - var netcoreAppOutput = Build(testInstance); - - var runtimeConfigJsonPath = Path.Combine(netcoreAppOutput.FullName, "PortableApp.runtimeconfig.json"); - - using (var stream = new FileStream(runtimeConfigJsonPath, FileMode.Open, FileAccess.Read, FileShare.Read)) - { - var reader = new StreamReader(stream); - - var rawProject = JObject.Parse(reader.ReadToEnd()); - var runtimeOptions = rawProject["runtimeOptions"]; - - runtimeOptions["somethingString"].Value().Should().Be("anything"); - runtimeOptions["somethingBoolean"].Value().Should().BeTrue(); - runtimeOptions["someArray"].ToObject().Should().Contain("one", "two"); - runtimeOptions["someObject"].Value()["someProperty"].Value().Should().Be("someValue"); - } - } - - [Fact] - public void BuildingAPortableProjectProducesARuntimeConfigDevJsonFile() - { - var testInstance = TestAssetsManager.CreateTestInstance("PortableTests").WithLockFiles(); - - var netcoreAppOutput = Build(testInstance); - - netcoreAppOutput.Should().Exist().And.HaveFile("PortableApp.runtimeconfig.dev.json"); - } - - private DirectoryInfo Build(TestInstance testInstance) - { - var result = new BuildCommand( - projectPath: Path.Combine(testInstance.TestRoot, "PortableApp")) - .ExecuteWithCapturedOutput(); - - result.Should().Pass(); - - var outputBase = new DirectoryInfo(Path.Combine(testInstance.TestRoot, "PortableApp", "bin", "Debug")); - - return outputBase.Sub("netcoreapp1.0"); - } - } -} diff --git a/test/dotnet-build.Tests/BuildProjectToProjectTests.cs b/test/dotnet-build.Tests/BuildProjectToProjectTests.cs deleted file mode 100644 index 97ec5f9c7..000000000 --- a/test/dotnet-build.Tests/BuildProjectToProjectTests.cs +++ /dev/null @@ -1,187 +0,0 @@ -// 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 FluentAssertions; -using Microsoft.DotNet.Cli.Utils; -using Microsoft.DotNet.Tools.Test.Utilities; -using Xunit; -using System.Runtime.InteropServices; - -namespace Microsoft.DotNet.Tools.Builder.Tests -{ - public class ProjectToProjectDependenciesIncrementalTest : IncrementalTestBase - { - private readonly string[] _projects = new[] { "L0", "L11", "L12", "L21", "L22" }; - private readonly string _appProject = "L0"; - - - private string MainProjectExe - { - get - { - return MainProject + (RuntimeInformation.IsOSPlatform(OSPlatform.Windows) ? ".exe" : ""); - } - } - - public ProjectToProjectDependenciesIncrementalTest() - { - MainProject = "L0"; - ExpectedOutput = "L0 L11 L12 L22 L21 L12 L22 " + Environment.NewLine; - - } - - [Theory] - [InlineData("1", "L0", new[] { "L0" })] - [InlineData("2", "L11", new[] { "L0", "L11" })] - [InlineData("3", "L12", new[] { "L0", "L11", "L12" })] - [InlineData("4", "L22", new[] { "L0", "L11", "L12", "L22" })] - [InlineData("5", "L21", new[] { "L0", "L11", "L21" })] - public void TestIncrementalBuildOfDependencyGraph(string testIdentifer, string projectToTouch, string[] expectedRebuiltProjects) - { - var testInstance = TestAssetsManager.CreateTestInstance("TestProjectToProjectDependencies", identifier: testIdentifer) - .WithLockFiles() - .WithBuildArtifacts(); - - TestProjectRoot = testInstance.TestRoot; - - // second build; nothing changed; no project required compilation - var result2 = BuildProject(); - AssertRebuilt(result2, Array.Empty()); - - //modify the source code of a project - TouchSourcesOfProject(projectToTouch); - - // third build; all projects on the paths from touched project to root project need to be rebuilt - var result3 = BuildProject(); - AssertRebuilt(result3, expectedRebuiltProjects); - } - - [Fact] - public void TestNoDependencyFlag() - { - var testInstance = TestAssetsManager.CreateTestInstance("TestProjectToProjectDependencies") - .WithLockFiles() - .WithBuildArtifacts(); - - TestProjectRoot = testInstance.TestRoot; - - var dependencies = new[] { "L11", "L12", "L21", "L22" }; - - // modify the source code of a leaf dependency - TouchSourcesOfProject("L22"); - - // second build with no dependencies and no incremental; only the root rebuilds - var result2 = BuildProject(noDependencies: true, noIncremental: true); - result2.Should().HaveStdOutMatching("Compiling.*L0.*"); - - AssertResultDoesNotContainStrings(result2, dependencies); - - // third build with no dependencies but incremental; nothing rebuilds - var result3 = BuildProject(noDependencies: true); - result3.Should().HaveSkippedProjectCompilation("L0", _appFrameworkFullName); - AssertResultDoesNotContainStrings(result3, dependencies); - } - - [Fact] - public void TestNoDependenciesDependencyRebuild() - { - var testInstance = TestAssetsManager.CreateTestInstance("TestProjectToProjectDependencies") - .WithLockFiles() - .WithBuildArtifacts(); - - TestProjectRoot = testInstance.TestRoot; - - // modify the source code of a leaf dependency - TouchSourcesOfProject("L11"); - - // second build with no dependencies, rebuilding leaf - var result2 = new BuildCommand(GetProjectDirectory("L11"), noDependencies: true, framework: DefaultLibraryFramework).ExecuteWithCapturedOutput(); - result2.Should().HaveStdOutMatching("Compiling.*L11.*"); - - // third build with no dependencies but incremental; root project should rebuild - var result3 = BuildProject(noDependencies: true); - result3.Should().HaveCompiledProject("L0", _appFrameworkFullName); - } - - private static void AssertResultDoesNotContainStrings(CommandResult commandResult, string[] strings) - { - foreach (var s in strings) - { - commandResult.StdOut.Should().NotContain(s); - } - } - - // compute A - B - private T[] SetDifference(T[] A, T[] B) - { - var setA = new HashSet(A); - setA.ExceptWith(B); - return setA.ToArray(); - } - - private void AssertRebuilt(CommandResult buildResult, string[] expectedRebuilt) - { - foreach (var rebuiltProject in expectedRebuilt) - { - string frameworkFullName = null; - - if (TestProjectIsApp(rebuiltProject)) - { - buildResult - .Should() - .HaveCompiledProject(rebuiltProject, frameworkFullName: _appFrameworkFullName); - } - else - { - buildResult - .Should() - .HaveCompiledProject(rebuiltProject, _libraryFrameworkFullName); - } - } - - foreach (var skippedProject in SetDifference(_projects, expectedRebuilt)) - { - if (TestProjectIsApp(skippedProject)) - { - buildResult.Should().HaveSkippedProjectCompilation(skippedProject, _appFrameworkFullName); - } - else - { - buildResult.Should().HaveSkippedProjectCompilation(skippedProject, _libraryFrameworkFullName); - } - } - } - - private bool TestProjectIsApp(string testproject) - { - return testproject.Equals(_appProject, StringComparison.OrdinalIgnoreCase); - } - - protected override string GetProjectDirectory(string projectName) - { - return Path.Combine(TestProjectRoot, "src", projectName); - } - - protected override string GetOutputDir() - { - return ""; - } - - protected override string GetOutputExePath() - { - var outputExe = Directory.GetFiles(TestProjectRoot, MainProjectExe, SearchOption.AllDirectories) - .FirstOrDefault(); - - if (string.IsNullOrEmpty(outputExe)) - { - throw new FileNotFoundException($"Unable to find {outputExe} in {TestProjectRoot} or its subdirectories"); - } - - return Path.GetDirectoryName(outputExe); - } - } -} \ No newline at end of file diff --git a/test/dotnet-build.Tests/BuildStandAloneTests.cs b/test/dotnet-build.Tests/BuildStandAloneTests.cs deleted file mode 100644 index 042ee8d77..000000000 --- a/test/dotnet-build.Tests/BuildStandAloneTests.cs +++ /dev/null @@ -1,87 +0,0 @@ -// 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.IO; -using System.Linq; -using FluentAssertions; -using Microsoft.DotNet.InternalAbstractions; -using Microsoft.DotNet.ProjectModel; -using Microsoft.DotNet.TestFramework; -using Microsoft.DotNet.Tools.Test.Utilities; -using Newtonsoft.Json.Linq; -using Xunit; - -namespace Microsoft.DotNet.Tools.Builder.Tests -{ - public class BuildStandAloneTests : TestBase - { - [Fact] - public void BuildingAStandAloneProjectProducesARuntimeConfigDevJsonFile() - { - var testInstance = TestAssetsManager.CreateTestInstance("PortableTests") - .WithLockFiles(); - - var netstandardappOutput = Build(testInstance); - - netstandardappOutput.Should().Exist().And.HaveFile("StandaloneApp.runtimeconfig.dev.json"); - } - - [Fact] - public void BuildingAStandAloneProjectProducesARuntimeConfigJsonFile() - { - var testInstance = TestAssetsManager.CreateTestInstance("PortableTests") - .WithLockFiles(); - - var netstandardappOutput = Build(testInstance); - - netstandardappOutput.Should().Exist().And.HaveFile("StandaloneApp.runtimeconfig.json"); - } - - [Fact] - public void RuntimeOptionsGetsCopiedToRuntimeConfigJsonForAStandaloneApp() - { - var testInstance = TestAssetsManager.CreateTestInstance("PortableTests") - .WithLockFiles(); - - var netstandardappOutput = Build(testInstance); - - var runtimeConfigJsonPath = Path.Combine(netstandardappOutput.FullName, "StandaloneApp.runtimeconfig.json"); - - using (var stream = new FileStream(runtimeConfigJsonPath, FileMode.Open, FileAccess.Read, FileShare.Read)) - { - var reader = new StreamReader(stream); - - var rawProject = JObject.Parse(reader.ReadToEnd()); - var runtimeOptions = rawProject["runtimeOptions"]; - - runtimeOptions["somethingString"].Value().Should().Be("anything"); - runtimeOptions["somethingBoolean"].Value().Should().BeTrue(); - runtimeOptions["someArray"].ToObject().Should().Contain("one", "two"); - runtimeOptions["someObject"].Value()["someProperty"].Value().Should().Be("someValue"); - } - } - - public DirectoryInfo Build(TestInstance testInstance) - { - var projectPath = Path.Combine(testInstance.TestRoot, "StandaloneApp"); - - var result = new BuildCommand( - projectPath: projectPath) - .ExecuteWithCapturedOutput(); - - var contexts = ProjectContext.CreateContextForEachFramework( - projectPath, - null, - RuntimeEnvironmentRidExtensions.GetAllCandidateRuntimeIdentifiers()); - - var runtime = contexts.FirstOrDefault(c => !string.IsNullOrEmpty(c.RuntimeIdentifier))?.RuntimeIdentifier; - - result.Should().Pass(); - - var outputBase = new DirectoryInfo( - Path.Combine(testInstance.TestRoot, "StandaloneApp", "bin", "Debug", "netcoreapp1.0")); - - return outputBase.Sub(runtime); - } - } -} diff --git a/test/dotnet-build.Tests/BuildWarningsTests.cs b/test/dotnet-build.Tests/BuildWarningsTests.cs deleted file mode 100644 index e4f50f10e..000000000 --- a/test/dotnet-build.Tests/BuildWarningsTests.cs +++ /dev/null @@ -1,27 +0,0 @@ -// 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 FluentAssertions; -using Microsoft.DotNet.Tools.Test.Utilities; -using Xunit; - -namespace Microsoft.DotNet.Tools.Builder.Tests -{ - public class BuildWarningsTests : TestBase - { - [Fact] - public void HavingDeprecatedProjectFileProducesWarning() - { - var testInstance = TestAssetsManager.CreateTestInstance("TestLibraryWithDeprecatedProjectFile").WithLockFiles(); - - new BuildCommand(testInstance.TestRoot) - .ExecuteWithCapturedOutput() - .Should() - .Pass() - .And - .HaveStdErrContaining("DOTNET1015: The 'compilationOptions' option is deprecated. Use 'buildOptions' instead.") - .And - .HaveStdErrContaining("DOTNET1015: The 'packInclude' option is deprecated. Use 'files' in 'packOptions' instead."); - } - } -} diff --git a/test/dotnet-build.Tests/GivenDotnetBuildBuildsProjects.cs b/test/dotnet-build.Tests/GivenDotnetBuildBuildsProjects.cs deleted file mode 100644 index ea537a75e..000000000 --- a/test/dotnet-build.Tests/GivenDotnetBuildBuildsProjects.cs +++ /dev/null @@ -1,119 +0,0 @@ -// 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 FluentAssertions; -using Microsoft.DotNet.Tools.Test.Utilities; -using Xunit; - -namespace Microsoft.DotNet.Tools.Builder.Tests -{ - public class GivenDotnetBuildBuildsProjects : TestBase - { - [Fact] - public void It_builds_projects_with_Unicode_in_path() - { - var testInstance = TestAssetsManager - .CreateTestInstance("TestAppWithUnicodéPath") - .WithLockFiles(); - - var testProjectDirectory = testInstance.TestRoot; - - var buildCommand = new BuildCommand(""); - buildCommand.WorkingDirectory = testProjectDirectory; - - buildCommand.ExecuteWithCapturedOutput() - .Should() - .Pass(); - } - - [Fact] - public void It_builds_projects_with_Unicode_in_path_project_path_passed() - { - var testInstance = TestAssetsManager - .CreateTestInstance("TestAppWithUnicodéPath") - .WithLockFiles(); - - var testProject = Path.Combine(testInstance.TestRoot, "project.json"); - - new BuildCommand(testProject) - .ExecuteWithCapturedOutput() - .Should() - .Pass(); - } - - [Fact] - public void It_builds_projects_with_ruleset_relative_path() - { - var testInstance = TestAssetsManager - .CreateTestInstance("TestRuleSet") - .WithLockFiles(); - - new BuildCommand(Path.Combine("TestLibraryWithRuleSet", "project.json"), skipLoadProject: true) - .WithWorkingDirectory(testInstance.TestRoot) - .ExecuteWithCapturedOutput() - .Should() - .Pass() - .And - .HaveStdErrContaining("CA1001") - .And - .HaveStdErrContaining("CA2213") - .And - .NotHaveStdErrContaining("CA1018"); // this violation is hidden in the ruleset - } - - [Fact] - public void It_builds_projects_with_a_local_project_json_path() - { - var testInstance = TestAssetsManager - .CreateTestInstance("TestAppSimple") - .WithLockFiles(); - - new BuildCommand("project.json") - .WithWorkingDirectory(testInstance.TestRoot) - .ExecuteWithCapturedOutput() - .Should() - .Pass(); - } - - [Fact] - public void It_builds_projects_with_xmlDoc_and_spaces_in_the_path() - { - var testInstance = TestAssetsManager - .CreateTestInstance("TestLibraryWithXmlDoc", identifier: "With Space") - .WithLockFiles(); - - testInstance.TestRoot.Should().Contain(" "); - - var output = new DirectoryInfo(Path.Combine(testInstance.TestRoot, "output")); - - new BuildCommand("", output: output.FullName, framework: DefaultLibraryFramework) - .WithWorkingDirectory(testInstance.TestRoot) - .ExecuteWithCapturedOutput() - .Should() - .Pass(); - - output.Should().HaveFiles(new[] - { - "TestLibraryWithXmlDoc.dll", - "TestLibraryWithXmlDoc.xml" - }); - } - - [WindowsOnlyFact] - public void It_builds_projects_targeting_net46_and_Roslyn() - { - var testInstance = TestAssetsManager - .CreateTestInstance("AppWithNet46AndRoslyn") - .WithLockFiles(); - - var testProject = Path.Combine(testInstance.TestRoot, "project.json"); - - new BuildCommand(testProject) - .Execute() - .Should() - .Pass(); - } - } -} diff --git a/test/dotnet-build.Tests/IncrementalTestBase.cs b/test/dotnet-build.Tests/IncrementalTestBase.cs deleted file mode 100644 index 58293e342..000000000 --- a/test/dotnet-build.Tests/IncrementalTestBase.cs +++ /dev/null @@ -1,138 +0,0 @@ -// 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.Cli.Utils; -using Microsoft.DotNet.Tools.Test.Utilities; - -namespace Microsoft.DotNet.Tools.Builder.Tests -{ - public class IncrementalTestBase : TestBase - { - protected readonly string _libraryFrameworkFullName = ".NETStandard,Version=v1.5"; - protected readonly string _appFrameworkFullName = ".NETCoreApp,Version=v1.0"; - - protected virtual string MainProject - { - get; set; - } - - protected virtual string ExpectedOutput - { - get; set; - } - - protected virtual string TestProjectRoot - { - get; set; - } - - protected IncrementalTestBase() - { - - } - - - public IncrementalTestBase(string testProjectsRoot, string mainProject, string expectedOutput) - { - MainProject = mainProject; - ExpectedOutput = expectedOutput; - TestProjectRoot = testProjectsRoot; - } - - protected void TouchSourcesOfProject() - { - TouchSourcesOfProject(MainProject); - } - - protected void TouchSourcesOfProject(string projectToTouch) - { - foreach (var sourceFile in GetSourceFilesForProject(projectToTouch)) - { - TouchFile(sourceFile); - } - } - - protected static void TouchFile(string file) - { - File.SetLastWriteTimeUtc(file, DateTime.UtcNow); - } - - protected CommandResult BuildProject(bool noDependencies = false, bool noIncremental = false, bool expectBuildFailure = false) - { - var mainProjectFile = GetProjectFile(MainProject); - return BuildProject(mainProjectFile, noDependencies, noIncremental, expectBuildFailure); - } - - protected CommandResult BuildProject(string projectFile, bool noDependencies = false, bool noIncremental = false, bool expectBuildFailure = false) - { - var buildCommand = new BuildCommand(projectFile, output: GetOutputDir(), framework: "netcoreapp1.0", noIncremental: noIncremental, noDependencies : noDependencies); - var result = buildCommand.ExecuteWithCapturedOutput(); - - if (!expectBuildFailure) - { - result.Should().Pass(); - TestOutputExecutable(GetOutputExePath(), buildCommand.GetOutputExecutableName(), ExpectedOutput); - } - else - { - result.Should().Fail(); - } - - return result; - } - - protected virtual string GetOutputExePath() - { - return GetBinRoot(); - } - - protected virtual string GetOutputDir() - { - return GetBinRoot(); - } - - protected string GetBinRoot() - { - return Path.Combine(TestProjectRoot, "bin"); - } - - protected virtual string GetProjectDirectory(string projectName) - { - return Path.Combine(TestProjectRoot); - } - - protected string GetProjectFile(string projectName) - { - return Path.Combine(GetProjectDirectory(projectName), "project.json"); - } - - private string GetOutputFileForProject(string projectName) - { - return Path.Combine(GetCompilationOutputPath(), projectName + ".dll"); - } - - private IEnumerable GetSourceFilesForProject(string projectName) - { - return Directory.EnumerateFiles(GetProjectDirectory(projectName)). - Where(f => f.EndsWith(".cs")); - } - - protected string GetCompilationOutputPath() - { - var executablePath = Path.Combine(GetBinRoot(), "Debug", "netcoreapp1.0"); - - return executablePath; - } - - protected string GetIntermediaryOutputPath() - { - var executablePath = Path.Combine(TestProjectRoot, "obj", "Debug", "netcoreapp1.0"); - - return executablePath; - } - } -} diff --git a/test/dotnet-build.Tests/IncrementalTests.cs b/test/dotnet-build.Tests/IncrementalTests.cs deleted file mode 100644 index be04e0436..000000000 --- a/test/dotnet-build.Tests/IncrementalTests.cs +++ /dev/null @@ -1,267 +0,0 @@ -// 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 System.Linq; -using FluentAssertions; -using Microsoft.DotNet.Cli.Utils; -using Microsoft.DotNet.Tools.Test.Utilities; -using Xunit; -using Microsoft.DotNet.TestFramework; -using System.Diagnostics; - -namespace Microsoft.DotNet.Tools.Builder.Tests -{ - public class IncrementalTests : IncrementalTestBase - { - public IncrementalTests() - { - MainProject = "TestSimpleIncrementalApp"; - ExpectedOutput = "Hello World!" + Environment.NewLine; - } - - private TestInstance _testInstance; - - private void CreateTestInstance() - { - _testInstance = TestAssetsManager.CreateTestInstance("TestSimpleIncrementalApp") - .WithLockFiles(); - TestProjectRoot = _testInstance.TestRoot; - } - - [Fact] - public void TestNoIncrementalFlag() - { - CreateTestInstance(); - - var buildResult = BuildProject(); - buildResult.Should().HaveCompiledProject(MainProject, _appFrameworkFullName); - - buildResult = BuildProject(noIncremental: true); - buildResult.Should().HaveCompiledProject(MainProject, _appFrameworkFullName); - Assert.Contains("[Forced Unsafe]", buildResult.StdOut); - } - - [Fact] - public void TestRebuildMissingPdb() - { - CreateTestInstance(); - TestDeleteOutputWithExtension("pdb"); - } - - [Fact] - public void TestRebuildMissingDll() - { - CreateTestInstance(); - TestDeleteOutputWithExtension("dll"); - } - - [Fact] - public void TestRebuildMissingXml() - { - CreateTestInstance(); - TestDeleteOutputWithExtension("xml"); - } - - [Fact] - public void TestNoLockFile() - { - CreateTestInstance(); - var buildResult = BuildProject(); - buildResult.Should().HaveCompiledProject(MainProject, _appFrameworkFullName); - - var lockFile = Path.Combine(TestProjectRoot, "project.lock.json"); - Assert.True(File.Exists(lockFile)); - - File.Delete(lockFile); - Assert.False(File.Exists(lockFile)); - - buildResult = BuildProject(expectBuildFailure: true); - Assert.Contains("does not have a lock file", buildResult.StdErr); - Assert.Contains("dotnet restore", buildResult.StdErr); - } - - [Fact] - public void TestModifiedVersionFile() - { - CreateTestInstance(); - BuildProject().Should().HaveCompiledProject(MainProject, _appFrameworkFullName); - - // change version file - var versionFile = Path.Combine(GetIntermediaryOutputPath(), ".SDKVersion"); - File.Exists(versionFile).Should().BeTrue(); - File.AppendAllText(versionFile, "text"); - - // assert rebuilt - BuildProject().Should().HaveCompiledProject(MainProject, _appFrameworkFullName); - } - - [Fact] - public void TestNoVersionFile() - { - CreateTestInstance(); - BuildProject().Should().HaveCompiledProject(MainProject, _appFrameworkFullName); - - // delete version file - var versionFile = Path.Combine(GetIntermediaryOutputPath(), ".SDKVersion"); - File.Exists(versionFile).Should().BeTrue(); - File.Delete(versionFile); - File.Exists(versionFile).Should().BeFalse(); - - // assert build skipped due to no version file - BuildProject().Should().HaveSkippedProjectCompilation(MainProject, _appFrameworkFullName); - - // the version file should have been regenerated during the build, even if compilation got skipped - File.Exists(versionFile).Should().BeTrue(); - } - - [Fact] - public void TestRebuildDeletedSource() - { - CreateTestInstance(); - BuildProject().Should().HaveCompiledProject(MainProject, _appFrameworkFullName); - - var sourceFile = Path.Combine(GetProjectDirectory(MainProject), "Program2.cs"); - File.Delete(sourceFile); - Assert.False(File.Exists(sourceFile)); - - // second build; should get rebuilt since we deleted a source file - BuildProject().Should().HaveCompiledProject(MainProject, _appFrameworkFullName); - - // third build; incremental cache should have been regenerated and project skipped - BuildProject().Should().HaveSkippedProjectCompilation(MainProject, _appFrameworkFullName); - } - - [Fact] - public void TestRebuildRenamedSource() - { - CreateTestInstance(); - var buildResult = BuildProject(); - buildResult.Should().HaveCompiledProject(MainProject, _appFrameworkFullName); - - var sourceFile = Path.Combine(GetProjectDirectory(MainProject), "Program2.cs"); - var destinationFile = Path.Combine(Path.GetDirectoryName(sourceFile), "ProgramNew.cs"); - File.Move(sourceFile, destinationFile); - Assert.False(File.Exists(sourceFile)); - Assert.True(File.Exists(destinationFile)); - - // second build; should get rebuilt since we renamed a source file - buildResult = BuildProject(); - buildResult.Should().HaveCompiledProject(MainProject, _appFrameworkFullName); - - // third build; incremental cache should have been regenerated and project skipped - BuildProject().Should().HaveSkippedProjectCompilation(MainProject, _appFrameworkFullName); - } - - [Fact] - public void TestRebuildDeletedSourceAfterCliChanged() - { - CreateTestInstance(); - BuildProject().Should().HaveCompiledProject(MainProject, _appFrameworkFullName); - - // change version file - var versionFile = Path.Combine(GetIntermediaryOutputPath(), ".SDKVersion"); - File.Exists(versionFile).Should().BeTrue(); - File.AppendAllText(versionFile, "text"); - - // delete a source file - var sourceFile = Path.Combine(GetProjectDirectory(MainProject), "Program2.cs"); - File.Delete(sourceFile); - Assert.False(File.Exists(sourceFile)); - - // should get rebuilt since we changed version file and deleted source file - BuildProject().Should().HaveCompiledProject(MainProject, _appFrameworkFullName); - - // third build; incremental cache should have been regenerated and project skipped - BuildProject().Should().HaveSkippedProjectCompilation(MainProject, _appFrameworkFullName); - } - - [Fact] - public void TestRebuildChangedLockFile() - { - CreateTestInstance(); - var buildResult = BuildProject(); - buildResult.Should().HaveCompiledProject(MainProject, _appFrameworkFullName); - - var lockFile = Path.Combine(TestProjectRoot, "project.lock.json"); - TouchFile(lockFile); - - buildResult = BuildProject(); - buildResult.Should().HaveCompiledProject(MainProject, _appFrameworkFullName); - } - - [Fact] - public void TestRebuildChangedProjectFile() - { - CreateTestInstance(); - var buildResult = BuildProject(); - buildResult.Should().HaveCompiledProject(MainProject, _appFrameworkFullName); - - TouchFile(GetProjectFile(MainProject)); - - buildResult = BuildProject(); - buildResult.Should().HaveCompiledProject(MainProject, _appFrameworkFullName); - } - - // regression for https://github.com/dotnet/cli/issues/965 - [Fact] - public void TestInputWithSameTimeAsOutputCausesProjectToCompile() - { - CreateTestInstance(); - var buildResult = BuildProject(); - buildResult.Should().HaveCompiledProject(MainProject, _appFrameworkFullName); - - var outputTimestamp = SetAllOutputItemsToSameTime(); - - // set an input to have the same last write time as an output item - // this should trigger recompilation to account for file systems with second timestamp granularity - // (an input file that changed within the same second as the previous outputs should trigger a rebuild) - File.SetLastWriteTime(GetProjectFile(MainProject), outputTimestamp); - - buildResult = BuildProject(); - buildResult.Should().HaveCompiledProject(MainProject, _appFrameworkFullName); - } - - private DateTime SetAllOutputItemsToSameTime() - { - var now = DateTime.Now; - foreach (var f in Directory.EnumerateFiles(GetCompilationOutputPath())) - { - File.SetLastWriteTime(f, now); - } - return now; - } - - private void TestDeleteOutputWithExtension(string extension) - { - - var buildResult = BuildProject(); - buildResult.Should().HaveCompiledProject(MainProject, _appFrameworkFullName); - - Reporter.Verbose.WriteLine($"Files in {GetBinRoot()}"); - foreach (var file in Directory.EnumerateFiles(GetBinRoot())) - { - Reporter.Verbose.Write($"\t {file}"); - } - - // delete output files with extensions - foreach (var outputFile in Directory.EnumerateFiles(GetBinRoot()).Where(f => - { - var fileName = Path.GetFileName(f); - return fileName.StartsWith(MainProject, StringComparison.OrdinalIgnoreCase) && - fileName.EndsWith(extension, StringComparison.OrdinalIgnoreCase); - })) - { - Reporter.Output.WriteLine($"Deleted {outputFile}"); - - File.Delete(outputFile); - Assert.False(File.Exists(outputFile)); - } - - // second build; should get rebuilt since we deleted an output item - buildResult = BuildProject(); - buildResult.Should().HaveCompiledProject(MainProject, _appFrameworkFullName); - } - } -} \ No newline at end of file diff --git a/test/dotnet-build.Tests/IncrementalTestsOnCultureSpecificResource.cs b/test/dotnet-build.Tests/IncrementalTestsOnCultureSpecificResource.cs deleted file mode 100644 index 5b1dc1ffb..000000000 --- a/test/dotnet-build.Tests/IncrementalTestsOnCultureSpecificResource.cs +++ /dev/null @@ -1,36 +0,0 @@ -// 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 Xunit; - -namespace Microsoft.DotNet.Tools.Builder.Tests -{ - public class IncrementalTestsOnCultureSpecificResource : IncrementalTestBase - { - public IncrementalTestsOnCultureSpecificResource() - { - MainProject = "TestProjectWithCultureSpecificResource"; - ExpectedOutput = "Hello World!" + Environment.NewLine + "Bonjour!" + Environment.NewLine; - } - - // Sridhar-MS - temporarily disable the test and investigate why it is failing in CI machine. - // [Fact] - public void TestRebuildSkipsCompilationOnNonCultureResource() - { - var testInstance = TestAssetsManager.CreateTestInstance("TestProjectWithCultureSpecificResource") - .WithLockFiles(); - - TestProjectRoot = testInstance.TestRoot; - - var buildResult = BuildProject(); - buildResult.Should().HaveCompiledProject(MainProject, _appFrameworkFullName); - - buildResult = BuildProject(); - - buildResult.Should().HaveSkippedProjectCompilation(MainProject, _appFrameworkFullName); - } - } -} diff --git a/test/dotnet-build.Tests/IncrementalTestsOnResources.cs b/test/dotnet-build.Tests/IncrementalTestsOnResources.cs deleted file mode 100644 index 815a2d6c6..000000000 --- a/test/dotnet-build.Tests/IncrementalTestsOnResources.cs +++ /dev/null @@ -1,34 +0,0 @@ -// 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 Xunit; - -namespace Microsoft.DotNet.Tools.Builder.Tests -{ - public class IncrementalTestsOnResources : IncrementalTestBase - { - public IncrementalTestsOnResources() - { - MainProject = "TestProjectWithResource"; - ExpectedOutput = "Hello World!" + Environment.NewLine; - } - - [Fact] - public void TestRebuildSkipsCompilationOnNonCultureResource() - { - var testInstance = TestAssetsManager.CreateTestInstance("TestProjectWithResource") - .WithLockFiles(); - - TestProjectRoot = testInstance.TestRoot; - - var buildResult = BuildProject(); - buildResult.Should().HaveCompiledProject(MainProject, _appFrameworkFullName); - - buildResult = BuildProject(); - buildResult.Should().HaveSkippedProjectCompilation(MainProject, _appFrameworkFullName); - } - } -} diff --git a/test/dotnet-build.Tests/IncrementalTestsTransitiveRuntime.cs b/test/dotnet-build.Tests/IncrementalTestsTransitiveRuntime.cs deleted file mode 100644 index 9d2e82125..000000000 --- a/test/dotnet-build.Tests/IncrementalTestsTransitiveRuntime.cs +++ /dev/null @@ -1,48 +0,0 @@ -// 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 Xunit; - -namespace Microsoft.DotNet.Tools.Builder.Tests -{ - public class IncrementalTestsTransitiveRuntime : IncrementalTestBase - { - private const string TestLibraryWithAppDependency = "TestLibraryWithAppDependency"; - private const string LibraryProject = "TestLibrary"; - private const string AppProject = "TestApp"; - - public IncrementalTestsTransitiveRuntime() - { - MainProject = "TestLibrary2"; - ExpectedOutput = "This string came from the test library!" + Environment.NewLine; - } - - [Fact] - public void TestSkipsRebuildWithTransitiveExeDependency() - { - var testInstance = TestAssetsManager.CreateTestInstance("TestAppWithTransitiveAppDependency") - .WithLockFiles(); - TestProjectRoot = testInstance.TestRoot; - var buildResult = BuildProject(); - buildResult.Should().HaveCompiledProject(MainProject, _appFrameworkFullName); - buildResult.Should().HaveCompiledProject(TestLibraryWithAppDependency, _appFrameworkFullName); - buildResult.Should().HaveCompiledProject(AppProject, _appFrameworkFullName); - buildResult.Should().HaveCompiledProject(LibraryProject, _appFrameworkFullName); - - buildResult = BuildProject(); - - buildResult.Should().HaveSkippedProjectCompilation(MainProject, _appFrameworkFullName); - buildResult.Should().HaveSkippedProjectCompilation(TestLibraryWithAppDependency, _appFrameworkFullName); - buildResult.Should().HaveSkippedProjectCompilation(AppProject, _appFrameworkFullName); - buildResult.Should().HaveSkippedProjectCompilation(LibraryProject, _appFrameworkFullName); - } - - protected override string GetProjectDirectory(string projectName) - { - return Path.Combine(TestProjectRoot, projectName); - } - } -} \ No newline at end of file diff --git a/test/dotnet-build.Tests/IncrementalTestsVersionSuffix.cs b/test/dotnet-build.Tests/IncrementalTestsVersionSuffix.cs deleted file mode 100644 index 024a62760..000000000 --- a/test/dotnet-build.Tests/IncrementalTestsVersionSuffix.cs +++ /dev/null @@ -1,29 +0,0 @@ -using Microsoft.DotNet.Tools.Test.Utilities; -using Xunit; - -namespace Microsoft.DotNet.Tools.Builder.Tests -{ - public class IncrementalTestsVersionSuffix : IncrementalTestBase - { - [Fact] - public void TestRebuildWhenVersionSuffixChanged() - { - var testInstance = TestAssetsManager.CreateTestInstance("TestSimpleIncrementalApp") - .WithLockFiles(); - - // Build with Version Suffix 1 - var command = new BuildCommand(testInstance.TestRoot, versionSuffix: "1"); - var result = command.ExecuteWithCapturedOutput(); - - // Verify the result - result.Should().HaveCompiledProject("TestSimpleIncrementalApp", ".NETCoreApp,Version=v1.0"); - - // Build with Version Suffix 2 - command = new BuildCommand(testInstance.TestRoot, versionSuffix: "2"); - result = command.ExecuteWithCapturedOutput(); - - // Verify the result - result.Should().HaveCompiledProject("TestSimpleIncrementalApp", ".NETCoreApp,Version=v1.0"); - } - } -} diff --git a/test/dotnet-build.Tests/ProjectNameArgumentTests.cs b/test/dotnet-build.Tests/ProjectNameArgumentTests.cs deleted file mode 100644 index c46ee18f3..000000000 --- a/test/dotnet-build.Tests/ProjectNameArgumentTests.cs +++ /dev/null @@ -1,135 +0,0 @@ -using System; -using System.IO; -using System.Collections.Generic; -using System.Linq; -using System.Runtime.CompilerServices; -using System.Threading.Tasks; -using Microsoft.DotNet.TestFramework; -using Microsoft.DotNet.Tools.Test.Utilities; -using Xunit; -using FluentAssertions; -using NuGet.Frameworks; - -namespace Microsoft.DotNet.Tools.Builder.Tests -{ - public class ProjectNameArgumentTests : TestBase - { - private TestInstance _testInstance; - - [Fact] - public void TestProjectDirectoryPath() - { - Test(new[] { Path.Combine("src", "L21") }, new[] { "L21" }); - } - - [Fact] - public void TestProjectFile() - { - Test(new[] { Path.Combine("src", "L21", "project.json") }, new[] { "L21" }); - } - - [Fact] - public void TestMultipleProjectDirectories() - { - Test(new[] - { - Path.Combine("src", "L21"), - Path.Combine("src", "L11") - }, - new[] { "L21", "L11" }); - } - - [Fact] - public void TestMultipleProjectFiles() - { - Test(new[] - { - Path.Combine("src", "L21", "project.json"), - Path.Combine("src", "L11", "project.json"), - }, - new[] { "L21", "L11" }); - } - - [Fact] - public void TestGlobbing() - { - Test(new[] - { - Path.Combine("src", "**", "project.json") - }, - new[] { "L21", "L11", "L12" }); - } - - [Fact] - public void TestMultipleGlobbing() - { - Test(new[] - { - Path.Combine("src", "L1*", "project.json"), - Path.Combine("src", "L2*", "project.json") - }, - new[] { "L11", "L12", "L21", "L22" }); - } - - [Fact] - public void TestFailsWhenNoGlobbingNoMatch() - { - Test(new[] - { - Path.Combine("src", "L33*", "project.json") - }, - null); - } - - [Fact] - public void TestFailsFileDoedNotExist() - { - Test(new[] - { - Path.Combine("src", "L33", "project.json") - }, - null); - } - - [Fact] - public void TestFindsProjectJsonInCurrentDirectoryWithNoArguments() - { - Test(new string[] { }, new[] { "L21" }, workingDirectory: Path.Combine("src", "L21")); - } - - [Fact] - public void TestFailsIfNoProjectJsonInCurrentDirectoryWithNoArguments() - { - Test(new string[] { }, null, workingDirectory: "src"); - } - - private void Test(IEnumerable inputs, IEnumerable expectedProjects, string workingDirectory = null, [CallerMemberName] string testName = null) - { - var instance = TestAssetsManager.CreateTestInstance("TestProjectToProjectDependencies", testName) - .WithLockFiles() - .WithBuildArtifacts(); - string args = string.Join(" ", inputs); - - workingDirectory = workingDirectory != null - ? Path.Combine(instance.TestRoot, workingDirectory) - : instance.TestRoot; - - var result = new TestCommand("dotnet") - { - WorkingDirectory = Path.Combine(workingDirectory) - }.ExecuteWithCapturedOutput("--verbose build --no-dependencies " + args); - if (expectedProjects != null) - { - result.Should().Pass(); - foreach (var expectedProject in expectedProjects) - { - result.Should().HaveSkippedProjectCompilation(expectedProject, NuGetFramework.Parse("netstandard1.5").DotNetFrameworkName); - } - } - else - { - result.Should().Fail(); - } - } - } -} diff --git a/test/dotnet-build.Tests/WrappedProjectTests.cs b/test/dotnet-build.Tests/WrappedProjectTests.cs deleted file mode 100644 index 73f8ee102..000000000 --- a/test/dotnet-build.Tests/WrappedProjectTests.cs +++ /dev/null @@ -1,36 +0,0 @@ -using System; -using System.IO; -using System.Collections.Generic; -using System.Linq; -using System.Threading.Tasks; -using Microsoft.DotNet.Cli.Utils; -using Microsoft.DotNet.Tools.Test.Utilities; -using FluentAssertions; -using Xunit; - -namespace Microsoft.DotNet.Tools.Builder.Tests -{ - public class WrappedProjectTests: TestBase - { - [Fact] - public void WrappedProjectFilesResolvedCorrectly() - { - var testInstance = TestAssetsManager.CreateTestInstance("TestAppWithWrapperProjectDependency") - .WithBuildArtifacts() - .WithLockFiles(); - - var root = testInstance.TestRoot; - - // run compile - var outputDir = Path.Combine(root, "bin"); - var testProject = ProjectUtils.GetProjectJson(root, "TestApp"); - var buildCommand = new BuildCommand(testProject, output: outputDir, framework: DefaultFramework); - var result = buildCommand.ExecuteWithCapturedOutput(); - result.Should().Pass(); - - new DirectoryInfo(outputDir).Should() - .HaveFiles(new [] { "TestLibrary.dll", "TestLibrary.pdb" }); - } - - } -} diff --git a/test/dotnet-build.Tests/dotnet-build.Tests.xproj b/test/dotnet-build.Tests/dotnet-build.Tests.xproj deleted file mode 100644 index b23863bda..000000000 --- a/test/dotnet-build.Tests/dotnet-build.Tests.xproj +++ /dev/null @@ -1,21 +0,0 @@ - - - - 14.0.23107 - $(MSBuildExtensionsPath32)\Microsoft\VisualStudio\v$(VisualStudioVersion) - - - - 833ffee1-7eed-4f51-8dfd-946d48833333 - Microsoft.DotNet.Tools.Builder.Tests - ..\..\artifacts\obj\$(MSBuildProjectName) - ..\..\artifacts\bin - - - 2.0 - - - - - - \ No newline at end of file diff --git a/test/dotnet-build.Tests/project.json b/test/dotnet-build.Tests/project.json deleted file mode 100644 index 7da2ca9b7..000000000 --- a/test/dotnet-build.Tests/project.json +++ /dev/null @@ -1,28 +0,0 @@ -{ - "version": "1.0.0-*", - "dependencies": { - "Microsoft.NETCore.App": { - "type": "platform", - "version": "1.0.0" - }, - "System.Runtime.Serialization.Primitives": "4.1.1", - "Microsoft.DotNet.Tools.Tests.Utilities": { - "target": "project" - }, - "Microsoft.DotNet.Cli.Utils": { - "target": "project" - }, - "Newtonsoft.Json": "9.0.1", - "xunit": "2.1.0", - "dotnet-test-xunit": "1.0.0-rc2-192208-24" - }, - "frameworks": { - "netcoreapp1.0": { - "imports": [ - "dotnet5.4", - "portable-net451+win8" - ] - } - }, - "testRunner": "xunit" -}