public void Given3RuntimeFrameworksItCanGenerateWithoutAssetFile()
        {
            var task = new TestableGenerateRuntimeConfigurationFiles
            {
                BuildEngine            = new MockNeverCacheBuildEngine4(),
                TargetFrameworkMoniker = ".NETCoreApp,Version=v3.0",
                TargetFramework        = "netcoreapp3.0",
                RuntimeConfigPath      = _runtimeConfigPath,
                RuntimeConfigDevPath   = _runtimeConfigDevPath,
                RuntimeFrameworks      = new[]
                {
                    new MockTaskItem(
                        "Microsoft.NETCore.App",
                        new Dictionary <string, string>
                    {
                        { "FrameworkName", "Microsoft.NETCore.App" }, { "Version", "3.1.0" }
                    }
                        ),
                    new MockTaskItem(
                        "Microsoft.WindowsDesktop.App",
                        new Dictionary <string, string>
                    {
                        { "FrameworkName", "Microsoft.WindowsDesktop.App" }, { "Version", "3.1.0" }
                    }
                        ),
                    new MockTaskItem(
                        "Microsoft.AspNetCore.App",
                        new Dictionary <string, string>
                    {
                        { "FrameworkName", "Microsoft.AspNetCore.App" }, { "Version", "3.1.0" }
                    }
                        )
                },
                RollForward = "LatestMinor"
            };

            Action a = () => task.PublicExecuteCore();

            a.ShouldNotThrow();

            File.ReadAllText(_runtimeConfigPath).Should()
            .Be(
                @"{
  ""runtimeOptions"": {
    ""tfm"": ""netcoreapp3.0"",
    ""rollForward"": ""LatestMinor"",
    ""frameworks"": [
      {
        ""name"": ""Microsoft.WindowsDesktop.App"",
        ""version"": ""3.1.0""
      },
      {
        ""name"": ""Microsoft.AspNetCore.App"",
        ""version"": ""3.1.0""
      }
    ]
  }
}",
                "There is no Microsoft.NETCore.App. And it is under frameworkS.");
        }
        public void ItCanGenerateWithoutAssetFile()
        {
            var task = new TestableGenerateRuntimeConfigurationFiles
            {
                BuildEngine            = new MockNeverCacheBuildEngine4(),
                TargetFrameworkMoniker = ".NETCoreApp,Version=v3.0",
                TargetFramework        = "netcoreapp3.0",
                RuntimeConfigPath      = _runtimeConfigPath,
                RuntimeConfigDevPath   = _runtimeConfigDevPath,
                RuntimeFrameworks      = new[]
                {
                    new MockTaskItem(
                        "Microsoft.NETCore.App",
                        new Dictionary <string, string>
                    {
                        { "FrameworkName", "Microsoft.NETCore.App" }, { "Version", "3.0.0-preview1.100" }
                    }
                        )
                },
                RollForward = "LatestMinor"
            };

            Action a = () => task.PublicExecuteCore();

            a.ShouldNotThrow();

            File.ReadAllText(_runtimeConfigPath).Should()
            .Be(
                @"{
  ""runtimeOptions"": {
    ""tfm"": ""netcoreapp3.0"",
    ""rollForward"": ""LatestMinor"",
    ""framework"": {
      ""name"": ""Microsoft.NETCore.App"",
      ""version"": ""3.0.0-preview1.100""
    }
  }
}");
            File.Exists(_runtimeConfigDevPath).Should().BeFalse("No nuget involved, so no extra probing path");
        }
        public void GivenTargetMonikerItGeneratesShortName()
        {
            var task = new TestableGenerateRuntimeConfigurationFiles
            {
                BuildEngine            = new MockNeverCacheBuildEngine4(),
                TargetFrameworkMoniker = ".NETCoreApp,Version=v5.0",
                RuntimeConfigPath      = _runtimeConfigPath,
                RuntimeConfigDevPath   = _runtimeConfigDevPath,
                RuntimeFrameworks      = new[]
                {
                    new MockTaskItem(
                        "Microsoft.NETCore.App",
                        new Dictionary <string, string>
                    {
                        { "FrameworkName", "Microsoft.NETCore.App" }, { "Version", "5.0.0" }
                    }
                        )
                },
                RollForward = "LatestMinor"
            };

            Action a = () => task.PublicExecuteCore();

            a.ShouldNotThrow();

            File.ReadAllText(_runtimeConfigPath).Should()
            .Be(
                @"{
  ""runtimeOptions"": {
    ""tfm"": ""net5.0"",
    ""rollForward"": ""LatestMinor"",
    ""framework"": {
      ""name"": ""Microsoft.NETCore.App"",
      ""version"": ""5.0.0""
    }
  }
}");
        }