diff --git a/eng/Packages.props b/eng/Packages.props
index 6f62f23d4dfb..b7bb286c4347 100644
--- a/eng/Packages.props
+++ b/eng/Packages.props
@@ -7,6 +7,7 @@
+
diff --git a/eng/Signing.props b/eng/Signing.props
index fa6b2f9fd55c..ca1613286414 100644
--- a/eng/Signing.props
+++ b/eng/Signing.props
@@ -94,6 +94,7 @@
+
diff --git a/eng/dependabot/Packages.props b/eng/dependabot/Packages.props
index e5a597a4eea3..bd9b09009f44 100644
--- a/eng/dependabot/Packages.props
+++ b/eng/dependabot/Packages.props
@@ -8,6 +8,7 @@
+
diff --git a/test/Microsoft.TemplateEngine.Cli.UnitTests/AliasAssignmentTests.cs b/test/Microsoft.TemplateEngine.Cli.UnitTests/AliasAssignmentTests.cs
index 00b23735bb85..786a78525ae4 100644
--- a/test/Microsoft.TemplateEngine.Cli.UnitTests/AliasAssignmentTests.cs
+++ b/test/Microsoft.TemplateEngine.Cli.UnitTests/AliasAssignmentTests.cs
@@ -13,6 +13,7 @@
namespace Microsoft.TemplateEngine.Cli.UnitTests
{
+ [TestClass]
public class AliasAssignmentTests
{
private static HashSet InitiallyTakenAliases
@@ -46,7 +47,7 @@ private static HashSet InitiallyTakenAliases
}
// also asserts that "--param:" is used if is taken
- [Fact(DisplayName = nameof(LongNameOverrideTakesPrecendence))]
+ [TestMethod]
public void LongNameOverrideTakesPrecendence()
{
IReadOnlyList paramList = new List()
@@ -61,10 +62,10 @@ public void LongNameOverrideTakesPrecendence()
Assert.Contains("-f", result["foo"].Aliases);
Assert.Contains("--foo", result["bar"].Aliases);
Assert.Contains("-fo", result["bar"].Aliases); // the short name is based on the long name override if it exists
- Assert.DoesNotContain(result, r => r.Value.Errors.Any());
+ Assert.IsFalse(result.Any(r => r.Value.Errors.Any()));
}
- [Fact(DisplayName = nameof(ShortNameOverrideTakesPrecedence))]
+ [TestMethod]
public void ShortNameOverrideTakesPrecedence()
{
IReadOnlyList paramList = new List()
@@ -79,10 +80,10 @@ public void ShortNameOverrideTakesPrecedence()
Assert.Contains("-fo", result["foo"].Aliases);
Assert.Contains("--bar", result["bar"].Aliases);
Assert.Contains("-f", result["bar"].Aliases);
- Assert.DoesNotContain(result, r => r.Value.Errors.Any());
+ Assert.IsFalse(result.Any(r => r.Value.Errors.Any()));
}
- [Fact(DisplayName = nameof(ShortNameExcludedWithEmptyStringOverride))]
+ [TestMethod]
public void ShortNameExcludedWithEmptyStringOverride()
{
IReadOnlyList paramList = new List()
@@ -96,11 +97,11 @@ public void ShortNameExcludedWithEmptyStringOverride()
Assert.Contains("--foo", result["foo"].Aliases);
Assert.Contains("-f", result["foo"].Aliases);
Assert.Contains("--bar", result["bar"].Aliases);
- Assert.Single(result["bar"].Aliases);
- Assert.DoesNotContain(result, r => r.Value.Errors.Any());
+ Assert.HasCount(1, result["bar"].Aliases);
+ Assert.IsFalse(result.Any(r => r.Value.Errors.Any()));
}
- [Fact(DisplayName = nameof(ParameterNameCannotContainColon))]
+ [TestMethod]
public void ParameterNameCannotContainColon()
{
IReadOnlyList paramList = new List()
@@ -109,12 +110,12 @@ public void ParameterNameCannotContainColon()
};
var result = AliasAssignmentCoordinator.AssignAliasesForParameter(paramList, InitiallyTakenAliases).ToDictionary(r => r.Parameter.Name, r => r);
- Assert.Empty(result["foo:bar"].Aliases);
- Assert.Single(result["foo:bar"].Errors);
+ Assert.IsFalse(result["foo:bar"].Aliases.Any());
+ Assert.HasCount(1, result["foo:bar"].Errors);
Assert.Contains("Parameter name 'foo:bar' contains colon, which is forbidden.", result["foo:bar"].Errors);
}
- [Fact(DisplayName = nameof(ShortNameGetPrependedPColonIfNeeded))]
+ [TestMethod]
public void ShortNameGetPrependedPColonIfNeeded()
{
IReadOnlyList paramList = new List()
@@ -129,10 +130,10 @@ public void ShortNameGetPrependedPColonIfNeeded()
Assert.Contains("-f", result["bar"].Aliases);
Assert.Contains("--f", result["f"].Aliases);
Assert.Contains("-p:f", result["f"].Aliases);
- Assert.DoesNotContain(result, r => r.Value.Errors.Any());
+ Assert.IsFalse(result.Any(r => r.Value.Errors.Any()));
}
- [Fact]
+ [TestMethod]
public void ShortNameGenerationShouldNotProduceDuplicates()
{
List paramList = new();
@@ -147,7 +148,7 @@ public void ShortNameGenerationShouldNotProduceDuplicates()
.BeFalse("Duplicate option aliases should not be generated.");
}
- [Fact]
+ [TestMethod]
public void ShortNameSkippedAfter4Reps()
{
List paramList = new();
@@ -169,7 +170,7 @@ public void ShortNameSkippedAfter4Reps()
}
// This reflects the MVC 2.0 tempalte as of May 24, 2017
- [Fact(DisplayName = nameof(CheckAliasAssignmentsMvc20))]
+ [TestMethod]
public void CheckAliasAssignmentsMvc20()
{
IReadOnlyList paramList = new List()
@@ -201,7 +202,7 @@ public void CheckAliasAssignmentsMvc20()
Assert.Contains("-au", result["auth"].Aliases);
Assert.Contains("--auth", result["auth"].Aliases);
- Assert.Single(result["AAdB2CInstance"].Aliases);
+ Assert.HasCount(1, result["AAdB2CInstance"].Aliases);
Assert.Contains("--aad-b2c-instance", result["AAdB2CInstance"].Aliases);
Assert.Contains("-ssp", result["SignUpSignInPolicyId"].Aliases);
Assert.Contains("--susi-policy-id", result["SignUpSignInPolicyId"].Aliases);
@@ -209,15 +210,15 @@ public void CheckAliasAssignmentsMvc20()
Assert.Contains("--reset-password-policy-id", result["ResetPasswordPolicyId"].Aliases);
Assert.Contains("-ep", result["EditProfilePolicyId"].Aliases);
Assert.Contains("--edit-profile-policy-id", result["EditProfilePolicyId"].Aliases);
- Assert.Single(result["AADInstance"].Aliases);
+ Assert.HasCount(1, result["AADInstance"].Aliases);
Assert.Contains("--aad-instance", result["AADInstance"].Aliases);
- Assert.Single(result["ClientId"].Aliases);
+ Assert.HasCount(1, result["ClientId"].Aliases);
Assert.Contains("--client-id", result["ClientId"].Aliases);
- Assert.Single(result["Domain"].Aliases);
+ Assert.HasCount(1, result["Domain"].Aliases);
Assert.Contains("--domain", result["Domain"].Aliases);
- Assert.Single(result["TenantId"].Aliases);
+ Assert.HasCount(1, result["TenantId"].Aliases);
Assert.Contains("--tenant-id", result["TenantId"].Aliases);
- Assert.Single(result["CallbackPath"].Aliases);
+ Assert.HasCount(1, result["CallbackPath"].Aliases);
Assert.Contains("--callback-path", result["CallbackPath"].Aliases);
Assert.Contains("-r", result["OrgReadAccess"].Aliases);
Assert.Contains("--org-read-access", result["OrgReadAccess"].Aliases);
@@ -233,21 +234,21 @@ public void CheckAliasAssignmentsMvc20()
Assert.Contains("--IISExpressPort", result["IISExpressPort"].Aliases);
Assert.Contains("-uld", result["UseLocalDB"].Aliases);
Assert.Contains("--use-local-db", result["UseLocalDB"].Aliases);
- Assert.Single(result["TargetFrameworkOverride"].Aliases);
+ Assert.HasCount(1, result["TargetFrameworkOverride"].Aliases);
Assert.Contains("--target-framework-override", result["TargetFrameworkOverride"].Aliases);
Assert.Contains("-f", result["Framework"].Aliases);
Assert.Contains("--framework", result["Framework"].Aliases);
Assert.Contains("-nt", result["NoTools"].Aliases);
Assert.Contains("--no-tools", result["NoTools"].Aliases);
- Assert.Single(result["skipRestore"].Aliases);
+ Assert.HasCount(1, result["skipRestore"].Aliases);
Assert.Contains("--no-restore", result["skipRestore"].Aliases);
- Assert.DoesNotContain(result, r => r.Value.Errors.Any());
+ Assert.IsFalse(result.Any(r => r.Value.Errors.Any()));
}
- [Theory]
- [InlineData("package", "--param:package")]
- [InlineData("u", "-p:u")]
- [InlineData("notreserved", "--notreserved")]
+ [TestMethod]
+ [DataRow("package", "--param:package")]
+ [DataRow("u", "-p:u")]
+ [DataRow("notreserved", "--notreserved")]
public void CanAssignAliasForParameterWithReservedAlias(string parameterName, string expectedContainedAlias)
{
string command = "foo";
@@ -266,13 +267,13 @@ public void CanAssignAliasForParameterWithReservedAlias(string parameterName, st
.FromTemplateList(CliTemplateInfo.FromTemplateInfo(templates, A.Fake()))
.Single();
var templateCommands = InstantiateCommand.GetTemplateCommand(args, settings, A.Fake(), templateGroup);
- Assert.Single(templateCommands);
+ Assert.HasCount(1, templateCommands);
var templateOption = templateCommands.Single().TemplateOptions[parameterName];
Assert.Contains(expectedContainedAlias, templateOption.Aliases);
}
- [Theory]
- [MemberData(nameof(GetTemplateData))]
+ [TestMethod]
+ [DynamicData(nameof(GetTemplateData))]
public void CanOverrideAliasesForParameterWithHostData(string hostJsonData, string expectedJsonResult)
{
var hostData = new HostSpecificTemplateData(string.IsNullOrEmpty(hostJsonData) ? null : JsonNode.Parse(hostJsonData)?.AsObject());
@@ -294,7 +295,7 @@ public void CanOverrideAliasesForParameterWithHostData(string hostJsonData, stri
ParseResult parseResult = myCommand.Parse(" new foo");
InstantiateCommandArgs args = InstantiateCommandArgs.FromNewCommandArgs(new NewCommandArgs(myCommand, parseResult));
var templateCommands = InstantiateCommand.GetTemplateCommand(args, settings, templatePackageManager, templateGroup);
- Assert.Single(templateCommands);
+ Assert.HasCount(1, templateCommands);
foreach (var expectedResult in expectedResults)
{
var expectedArr = expectedResult.Value!.AsArray();
@@ -302,17 +303,17 @@ public void CanOverrideAliasesForParameterWithHostData(string hostJsonData, stri
var expectedShortAlias = expectedArr[1]?.GetValue();
var expectedIsHidden = expectedArr[2]?.GetValue() ?? false;
var templateOptions = templateCommands.Single().TemplateOptions;
- Assert.NotNull(templateOptions);
+ Assert.IsNotNull(templateOptions);
Assert.Contains(expectedResult.Key, templateOptions.Keys);
var templateOption = templateOptions[expectedResult.Key];
- Assert.NotNull(templateOption);
- Assert.True(templateOption.Aliases.Count > 0);
+ Assert.IsNotNull(templateOption);
+ Assert.IsTrue(templateOption.Aliases.Count > 0);
var longAlias = templateOption.Aliases.ElementAt(0);
var shortAlias = templateOption.Aliases.Count > 1 ? templateOption.Aliases.ElementAt(1) : null;
var isHidden = templateOption.Option.Hidden;
- Assert.Equal(expectedLongAlias, longAlias);
- Assert.Equal(expectedShortAlias, shortAlias);
- Assert.Equal(expectedIsHidden, isHidden);
+ Assert.AreEqual(expectedLongAlias, longAlias);
+ Assert.AreEqual(expectedShortAlias, shortAlias);
+ Assert.AreEqual(expectedIsHidden, isHidden);
}
}
diff --git a/test/Microsoft.TemplateEngine.Cli.UnitTests/AllComponents.cs b/test/Microsoft.TemplateEngine.Cli.UnitTests/AllComponents.cs
index f9a7ac710bf8..61a69bac0f4d 100644
--- a/test/Microsoft.TemplateEngine.Cli.UnitTests/AllComponents.cs
+++ b/test/Microsoft.TemplateEngine.Cli.UnitTests/AllComponents.cs
@@ -1,13 +1,14 @@
-// Licensed to the .NET Foundation under one or more agreements.
+// Licensed to the .NET Foundation under one or more agreements.
// The .NET Foundation licenses this file to you under the MIT license.
using Microsoft.TemplateEngine.TestHelper;
namespace Microsoft.TemplateEngine.Cli.UnitTests
{
+ [TestClass]
public class AllComponents
{
- [Fact]
+ [TestMethod]
public void TestAllComponents()
{
var assemblyCatalog = new AssemblyComponentCatalog(new[] { typeof(Components).Assembly });
@@ -15,7 +16,7 @@ public void TestAllComponents()
var expectedTypeNames = assemblyCatalog.Select(pair => pair.Item1.FullName + ";" + pair.Item2.GetType().FullName).OrderBy(name => name);
var actualTypeNames = Components.AllComponents.Select(t => t.Type.FullName + ";" + t.Instance.GetType().FullName).OrderBy(name => name);
- Assert.Equal(expectedTypeNames, actualTypeNames);
+ Assert.AreSequenceEqual(expectedTypeNames, actualTypeNames);
}
}
}
diff --git a/test/Microsoft.TemplateEngine.Cli.UnitTests/BaseTest.cs b/test/Microsoft.TemplateEngine.Cli.UnitTests/BaseTest.cs
index 316b2c11e55f..440fc415ec7f 100644
--- a/test/Microsoft.TemplateEngine.Cli.UnitTests/BaseTest.cs
+++ b/test/Microsoft.TemplateEngine.Cli.UnitTests/BaseTest.cs
@@ -3,7 +3,7 @@
namespace Microsoft.TemplateEngine.Cli.UnitTests
{
- public abstract class BaseTest
+ public abstract class BaseTest : VerifyBase
{
///
/// Gets a path to the folder with dotnet new test assets.
diff --git a/test/Microsoft.TemplateEngine.Cli.UnitTests/GlobalUsings.cs b/test/Microsoft.TemplateEngine.Cli.UnitTests/GlobalUsings.cs
new file mode 100644
index 000000000000..08ace8decf52
--- /dev/null
+++ b/test/Microsoft.TemplateEngine.Cli.UnitTests/GlobalUsings.cs
@@ -0,0 +1,24 @@
+// Licensed to the .NET Foundation under one or more agreements.
+// The .NET Foundation licenses this file to you under the MIT license.
+
+// Microsoft.TemplateEngine.TestHelper still references xunit.v3.extensibility.core
+// (it is consumed by other in-tree xUnit projects and is not part of this migration).
+// EnvironmentSettingsHelper's constructor takes an Xunit.Sdk.IMessageSink. We surface
+// it here with a short alias so the tests below can construct a no-op sink without
+// pulling in xUnit's global usings (which would conflict with MSTest's Assert).
+global using IMessageSink = Xunit.Sdk.IMessageSink;
+global using IMessageSinkMessage = Xunit.Sdk.IMessageSinkMessage;
+
+// Verify.MSTest's VerifyBase is used by snapshot test classes (HelpTests,
+// TabCompletionTests via BaseTest).
+global using VerifyMSTest;
+
+// The xUnit-only Directory.Build.targets adds these as global usings for VSTest
+// projects. MSTest.Sdk projects do not get them automatically.
+global using Microsoft.NET.TestFramework;
+global using Microsoft.NET.TestFramework.Utilities;
+
+// Some test methods (e.g. in InstantiateTests) take parameters of internal types
+// from Microsoft.TemplateEngine.Cli. Discover them via DiscoverInternals to keep
+// the existing method accessibility.
+[assembly: Microsoft.VisualStudio.TestTools.UnitTesting.DiscoverInternals]
diff --git a/test/Microsoft.TemplateEngine.Cli.UnitTests/HostDataLoaderTests.cs b/test/Microsoft.TemplateEngine.Cli.UnitTests/HostDataLoaderTests.cs
index 4403ed4e04a2..0728c31fd50d 100644
--- a/test/Microsoft.TemplateEngine.Cli.UnitTests/HostDataLoaderTests.cs
+++ b/test/Microsoft.TemplateEngine.Cli.UnitTests/HostDataLoaderTests.cs
@@ -1,4 +1,4 @@
-// Licensed to the .NET Foundation under one or more agreements.
+// Licensed to the .NET Foundation under one or more agreements.
// The .NET Foundation licenses this file to you under the MIT license.
using FakeItEasy;
@@ -11,22 +11,38 @@
namespace Microsoft.TemplateEngine.Cli.UnitTests
{
- public class HostDataLoaderTests : IClassFixture
+ [TestClass]
+ public class HostDataLoaderTests
{
- private readonly EnvironmentSettingsHelper _environmentSettingsHelper;
+ // MSTest has no IClassFixture equivalent; a lazily-initialized static helper
+ // mirrors the per-class lifetime that xUnit's IClassFixture provides.
+ private static readonly Lazy s_environmentSettingsHelper =
+ new(() => new EnvironmentSettingsHelper(NullMessageSink.Instance));
- public HostDataLoaderTests(EnvironmentSettingsHelper environmentSettingsHelper)
+ private EnvironmentSettingsHelper _environmentSettingsHelper = null!;
+
+ [TestInitialize]
+ public void TestInitialize()
{
- _environmentSettingsHelper = environmentSettingsHelper;
+ _environmentSettingsHelper = s_environmentSettingsHelper.Value;
+ }
+
+ [ClassCleanup]
+ public static void ClassCleanup()
+ {
+ if (s_environmentSettingsHelper.IsValueCreated)
+ {
+ s_environmentSettingsHelper.Value.Dispose();
+ }
}
- [Fact]
+ [TestMethod]
public void CanLoadHostDataFile()
{
IEngineEnvironmentSettings engineEnvironmentSettings = _environmentSettingsHelper.CreateEnvironment(virtualize: true);
HostSpecificDataLoader hostSpecificDataLoader = new(engineEnvironmentSettings);
- Assert.True(engineEnvironmentSettings.TryGetMountPoint(Directory.GetCurrentDirectory(), out IMountPoint? mountPoint));
- Assert.NotNull(mountPoint);
+ Assert.IsTrue(engineEnvironmentSettings.TryGetMountPoint(Directory.GetCurrentDirectory(), out IMountPoint? mountPoint));
+ Assert.IsNotNull(mountPoint);
IFile? dataFile = mountPoint!.FileInfo("/Resources/dotnetcli.host.json");
ITemplateInfo template = A.Fake();
@@ -34,31 +50,31 @@ public void CanLoadHostDataFile()
A.CallTo(() => template.HostConfigPlace).Returns("/Resources/dotnetcli.host.json");
HostSpecificTemplateData data = hostSpecificDataLoader.ReadHostSpecificTemplateData(template);
- Assert.NotNull(data);
+ Assert.IsNotNull(data);
- Assert.False(data.IsHidden);
- Assert.Equal(2, data.UsageExamples?.Count);
- Assert.NotNull(data.UsageExamples);
+ Assert.IsFalse(data.IsHidden);
+ Assert.AreEqual(2, data.UsageExamples?.Count);
+ Assert.IsNotNull(data.UsageExamples);
Assert.Contains("--framework netcoreapp3.1 --langVersion '9.0'", data.UsageExamples);
- Assert.Equal(4, data.SymbolInfo?.Count);
+ Assert.AreEqual(4, data.SymbolInfo?.Count);
Assert.Contains("TargetFrameworkOverride", data.HiddenParameterNames);
Assert.Contains("Framework", data.ParametersToAlwaysShow);
- Assert.True(data.LongNameOverrides.ContainsKey("skipRestore"));
- Assert.Equal("no-restore", data.LongNameOverrides["skipRestore"]);
- Assert.True(data.ShortNameOverrides.ContainsKey("skipRestore"));
- Assert.Equal("", data.ShortNameOverrides["skipRestore"]);
- Assert.Equal("no-restore", data.DisplayNameForParameter("skipRestore"));
+ Assert.IsTrue(data.LongNameOverrides.ContainsKey("skipRestore"));
+ Assert.AreEqual("no-restore", data.LongNameOverrides["skipRestore"]);
+ Assert.IsTrue(data.ShortNameOverrides.ContainsKey("skipRestore"));
+ Assert.AreEqual("", data.ShortNameOverrides["skipRestore"]);
+ Assert.AreEqual("no-restore", data.DisplayNameForParameter("skipRestore"));
}
- [Fact]
+ [TestMethod]
public void CanReadHostDataFromITemplateInfo()
{
IEngineEnvironmentSettings engineEnvironmentSettings = _environmentSettingsHelper.CreateEnvironment(virtualize: true);
HostSpecificDataLoader hostSpecificDataLoader = new(engineEnvironmentSettings);
- Assert.True(engineEnvironmentSettings.TryGetMountPoint(Directory.GetCurrentDirectory(), out IMountPoint? mountPoint));
- Assert.NotNull(mountPoint);
+ Assert.IsTrue(engineEnvironmentSettings.TryGetMountPoint(Directory.GetCurrentDirectory(), out IMountPoint? mountPoint));
+ Assert.IsNotNull(mountPoint);
IFile? dataFile = mountPoint!.FileInfo("/Resources/dotnetcli.host.json");
- Assert.NotNull(dataFile);
+ Assert.IsNotNull(dataFile);
using Stream s = dataFile.OpenRead();
using TextReader tr = new StreamReader(s, Encoding.UTF8, true);
@@ -67,23 +83,23 @@ public void CanReadHostDataFromITemplateInfo()
A.CallTo(() => ((ITemplateInfoHostJsonCache)template).HostData).Returns(json);
HostSpecificTemplateData data = hostSpecificDataLoader.ReadHostSpecificTemplateData(template);
- Assert.NotNull(data);
+ Assert.IsNotNull(data);
- Assert.False(data.IsHidden);
- Assert.Equal(2, data.UsageExamples?.Count);
- Assert.NotNull(data.UsageExamples);
+ Assert.IsFalse(data.IsHidden);
+ Assert.AreEqual(2, data.UsageExamples?.Count);
+ Assert.IsNotNull(data.UsageExamples);
Assert.Contains("--framework netcoreapp3.1 --langVersion '9.0'", data.UsageExamples);
- Assert.Equal(4, data.SymbolInfo?.Count);
+ Assert.AreEqual(4, data.SymbolInfo?.Count);
Assert.Contains("TargetFrameworkOverride", data.HiddenParameterNames);
Assert.Contains("Framework", data.ParametersToAlwaysShow);
- Assert.True(data.LongNameOverrides.ContainsKey("skipRestore"));
- Assert.Equal("no-restore", data.LongNameOverrides["skipRestore"]);
- Assert.True(data.ShortNameOverrides.ContainsKey("skipRestore"));
- Assert.Equal("", data.ShortNameOverrides["skipRestore"]);
- Assert.Equal("no-restore", data.DisplayNameForParameter("skipRestore"));
+ Assert.IsTrue(data.LongNameOverrides.ContainsKey("skipRestore"));
+ Assert.AreEqual("no-restore", data.LongNameOverrides["skipRestore"]);
+ Assert.IsTrue(data.ShortNameOverrides.ContainsKey("skipRestore"));
+ Assert.AreEqual("", data.ShortNameOverrides["skipRestore"]);
+ Assert.AreEqual("no-restore", data.DisplayNameForParameter("skipRestore"));
}
- [Fact]
+ [TestMethod]
public void ReturnDefaultForInvalidEntry()
{
IEngineEnvironmentSettings engineEnvironmentSettings = _environmentSettingsHelper.CreateEnvironment(virtualize: true);
@@ -93,11 +109,11 @@ public void ReturnDefaultForInvalidEntry()
A.CallTo(() => ((ITemplateInfoHostJsonCache)template).HostData).Returns(null);
HostSpecificTemplateData data = hostSpecificDataLoader.ReadHostSpecificTemplateData(template);
- Assert.NotNull(data);
- Assert.Equal(HostSpecificTemplateData.Default, data);
+ Assert.IsNotNull(data);
+ Assert.AreEqual(HostSpecificTemplateData.Default, data);
}
- [Fact]
+ [TestMethod]
public void ReturnDefaultForInvalidFile()
{
IEngineEnvironmentSettings engineEnvironmentSettings = _environmentSettingsHelper.CreateEnvironment(virtualize: true);
@@ -108,11 +124,11 @@ public void ReturnDefaultForInvalidFile()
A.CallTo(() => template.HostConfigPlace).Returns("unknown");
HostSpecificTemplateData data = hostSpecificDataLoader.ReadHostSpecificTemplateData(template);
- Assert.NotNull(data);
- Assert.Equal(HostSpecificTemplateData.Default, data);
+ Assert.IsNotNull(data);
+ Assert.AreEqual(HostSpecificTemplateData.Default, data);
}
- [Fact]
+ [TestMethod]
public void CanSerializeData()
{
var usageExamples = new[] { "example1" };
@@ -147,15 +163,15 @@ public void CanSerializeData()
var data = new HostSpecificTemplateData(symbolInfo, usageExamples, isHidden: true);
var serialized = JsonSerializer.SerializeToNode(data)!.AsObject();
- Assert.NotNull(serialized);
- Assert.Equal(3, serialized.Count);
+ Assert.IsNotNull(serialized);
+ Assert.AreEqual(3, serialized.Count);
Assert.Contains("UsageExamples", serialized.Select(p => p.Key));
Assert.Contains("SymbolInfo", serialized.Select(p => p.Key));
Assert.Contains("IsHidden", serialized.Select(p => p.Key));
}
- [Fact]
+ [TestMethod]
public void CanSerializeData_SkipsEmpty()
{
var usageExamples = Array.Empty();
@@ -190,18 +206,18 @@ public void CanSerializeData_SkipsEmpty()
var data = new HostSpecificTemplateData(symbolInfo, usageExamples, isHidden: false);
var serialized = JsonSerializer.SerializeToNode(data)!.AsObject();
- Assert.NotNull(serialized);
- Assert.Single(serialized);
+ Assert.IsNotNull(serialized);
+ Assert.HasCount(1, serialized);
Assert.Contains("SymbolInfo", serialized.Select(p => p.Key));
var symbolInfoObj = serialized["SymbolInfo"]!.AsObject();
- Assert.NotNull(symbolInfoObj);
+ Assert.IsNotNull(symbolInfoObj);
//empty values should stay when deserializing symbol info
- Assert.Equal(3, symbolInfoObj["param1"]!.AsObject().Count);
- Assert.Equal("", symbolInfoObj["param2"]!["longName"]!.GetValue());
- Assert.Equal(3, symbolInfoObj["param2"]!.AsObject().Count);
- Assert.Single(symbolInfoObj["param3"]!.AsObject());
+ Assert.AreEqual(3, symbolInfoObj["param1"]!.AsObject().Count);
+ Assert.AreEqual("", symbolInfoObj["param2"]!["longName"]!.GetValue());
+ Assert.AreEqual(3, symbolInfoObj["param2"]!.AsObject().Count);
+ Assert.HasCount(1, symbolInfoObj["param3"]!.AsObject());
Assert.DoesNotContain("IsHidden", serialized.Select(p => p.Key));
Assert.DoesNotContain("UsageExamples", serialized.Select(p => p.Key));
diff --git a/test/Microsoft.TemplateEngine.Cli.UnitTests/JExtensionsTests.cs b/test/Microsoft.TemplateEngine.Cli.UnitTests/JExtensionsTests.cs
index 9dc32256cfd2..e3e8801a59d4 100644
--- a/test/Microsoft.TemplateEngine.Cli.UnitTests/JExtensionsTests.cs
+++ b/test/Microsoft.TemplateEngine.Cli.UnitTests/JExtensionsTests.cs
@@ -7,9 +7,10 @@
namespace Microsoft.TemplateEngine.Cli.UnitTests;
+[TestClass]
public class JExtensionsTests
{
- [Fact]
+ [TestMethod]
public void ToInt32ParsesStringPropertyValues()
{
JsonObject json = JsonNode.Parse("""
diff --git a/test/Microsoft.TemplateEngine.Cli.UnitTests/Microsoft.TemplateEngine.Cli.UnitTests.csproj b/test/Microsoft.TemplateEngine.Cli.UnitTests/Microsoft.TemplateEngine.Cli.UnitTests.csproj
index 386ce0a9a8d9..1188c6ada429 100644
--- a/test/Microsoft.TemplateEngine.Cli.UnitTests/Microsoft.TemplateEngine.Cli.UnitTests.csproj
+++ b/test/Microsoft.TemplateEngine.Cli.UnitTests/Microsoft.TemplateEngine.Cli.UnitTests.csproj
@@ -1,10 +1,9 @@
-
+
$(SdkTargetFramework)
- Exe
+ true
enable
MicrosoftAspNetCore
- true
true
@@ -16,7 +15,7 @@
-
+
diff --git a/test/Microsoft.TemplateEngine.Cli.UnitTests/NullMessageSink.cs b/test/Microsoft.TemplateEngine.Cli.UnitTests/NullMessageSink.cs
new file mode 100644
index 000000000000..802db3a1334a
--- /dev/null
+++ b/test/Microsoft.TemplateEngine.Cli.UnitTests/NullMessageSink.cs
@@ -0,0 +1,20 @@
+// Licensed to the .NET Foundation under one or more agreements.
+// The .NET Foundation licenses this file to you under the MIT license.
+
+namespace Microsoft.TemplateEngine.Cli.UnitTests;
+
+///
+/// A no-op used to satisfy
+/// 's constructor
+/// in an MSTest context (no xUnit runner is present to provide one).
+///
+internal sealed class NullMessageSink : IMessageSink
+{
+ public static readonly IMessageSink Instance = new NullMessageSink();
+
+ private NullMessageSink()
+ {
+ }
+
+ public bool OnMessage(IMessageSinkMessage message) => true;
+}
diff --git a/test/Microsoft.TemplateEngine.Cli.UnitTests/ParserTests/HelpTests.Resolution.cs b/test/Microsoft.TemplateEngine.Cli.UnitTests/ParserTests/HelpTests.Resolution.cs
index d77739fb14bc..6b8a71cbd606 100644
--- a/test/Microsoft.TemplateEngine.Cli.UnitTests/ParserTests/HelpTests.Resolution.cs
+++ b/test/Microsoft.TemplateEngine.Cli.UnitTests/ParserTests/HelpTests.Resolution.cs
@@ -13,7 +13,7 @@ namespace Microsoft.TemplateEngine.Cli.UnitTests.ParserTests
{
public partial class HelpTests
{
- [Fact]
+ [TestMethod]
public void UniqueNameMatchesCorrectly()
{
IReadOnlyList templatesToSearch = new List()
@@ -29,13 +29,13 @@ public void UniqueNameMatchesCorrectly()
ParseResult parseResult = myCommand.Parse($" new console2");
var args = InstantiateCommandArgs.FromNewCommandArgs(new NewCommandArgs(myCommand, parseResult));
IEnumerable matchingTemplates = InstantiateCommand.GetMatchingTemplates(args, settings, A.Fake(), templateGroup);
- Assert.Single(matchingTemplates);
+ Assert.HasCount(1, matchingTemplates);
BufferedReporter reporter = new();
- Assert.True(InstantiateCommand.VerifyMatchingTemplates(settings, matchingTemplates, reporter, out _));
- Assert.Empty(reporter.Lines);
+ Assert.IsTrue(InstantiateCommand.VerifyMatchingTemplates(settings, matchingTemplates, reporter, out _));
+ Assert.IsFalse(reporter.Lines.Any());
}
- [Fact]
+ [TestMethod]
public Task FailedToResolveTemplate_WhenMultipleLanguagesAreFound()
{
IReadOnlyList templatesToSearch = new List()
@@ -54,14 +54,14 @@ public Task FailedToResolveTemplate_WhenMultipleLanguagesAreFound()
ParseResult parseResult = myCommand.Parse($" new console");
var args = InstantiateCommandArgs.FromNewCommandArgs(new NewCommandArgs(myCommand, parseResult));
IEnumerable matchingTemplates = InstantiateCommand.GetMatchingTemplates(args, settings, A.Fake(), templateGroup);
- Assert.Equal(3, matchingTemplates.Count());
+ Assert.HasCount(3, matchingTemplates);
StringWriter output = new();
BufferedReporter reporter = new();
- Assert.False(InstantiateCommand.VerifyMatchingTemplates(settings, matchingTemplates, reporter, out _));
+ Assert.IsFalse(InstantiateCommand.VerifyMatchingTemplates(settings, matchingTemplates, reporter, out _));
return Verify(string.Join(Environment.NewLine, reporter.Lines));
}
- [Fact]
+ [TestMethod]
public void DefaultLanguageDisambiguates()
{
List templatesToSearch = new()
@@ -84,15 +84,15 @@ public void DefaultLanguageDisambiguates()
ParseResult parseResult = myCommand.Parse($" new console");
var args = InstantiateCommandArgs.FromNewCommandArgs(new NewCommandArgs(myCommand, parseResult));
IEnumerable matchingTemplates = InstantiateCommand.GetMatchingTemplates(args, settings, A.Fake(), templateGroup);
- Assert.Equal(2, matchingTemplates.Count());
+ Assert.HasCount(2, matchingTemplates);
BufferedReporter reporter = new();
- Assert.True(InstantiateCommand.VerifyMatchingTemplates(settings, matchingTemplates, reporter, out IEnumerable? filtered));
- Assert.Equal(1, filtered?.Count());
- Assert.Equal("Console.App.L1", filtered?.Single().Template.Identity);
- Assert.Empty(reporter.Lines);
+ Assert.IsTrue(InstantiateCommand.VerifyMatchingTemplates(settings, matchingTemplates, reporter, out IEnumerable? filtered));
+ Assert.HasCount(1, filtered!);
+ Assert.AreEqual("Console.App.L1", filtered?.Single().Template.Identity);
+ Assert.IsFalse(reporter.Lines.Any());
}
- [Fact]
+ [TestMethod]
public void InputLanguageIsPreferredOverDefault()
{
List templatesToSearch = new()
@@ -114,15 +114,15 @@ public void InputLanguageIsPreferredOverDefault()
ParseResult parseResult = myCommand.Parse($"new console --language L2");
var args = InstantiateCommandArgs.FromNewCommandArgs(new NewCommandArgs(myCommand, parseResult));
IEnumerable matchingTemplates = InstantiateCommand.GetMatchingTemplates(args, settings, A.Fake(), templateGroup);
- Assert.Single(matchingTemplates);
+ Assert.HasCount(1, matchingTemplates);
BufferedReporter reporter = new();
- Assert.True(InstantiateCommand.VerifyMatchingTemplates(settings, matchingTemplates, reporter, out IEnumerable? filtered));
- Assert.Equal(1, filtered?.Count());
- Assert.Equal("Console.App.L2", filtered?.Single().Template.Identity);
- Assert.Empty(reporter.Lines);
+ Assert.IsTrue(InstantiateCommand.VerifyMatchingTemplates(settings, matchingTemplates, reporter, out IEnumerable? filtered));
+ Assert.HasCount(1, filtered!);
+ Assert.AreEqual("Console.App.L2", filtered?.Single().Template.Identity);
+ Assert.IsFalse(reporter.Lines.Any());
}
- [Fact]
+ [TestMethod]
public void TemplatesAreSameLanguage()
{
List templatesToSearch = new()
@@ -140,14 +140,14 @@ public void TemplatesAreSameLanguage()
ParseResult parseResult = myCommand.Parse($"new console");
var args = InstantiateCommandArgs.FromNewCommandArgs(new NewCommandArgs(myCommand, parseResult));
IEnumerable matchingTemplates = InstantiateCommand.GetMatchingTemplates(args, settings, A.Fake(), templateGroup);
- Assert.Equal(3, matchingTemplates.Count());
+ Assert.HasCount(3, matchingTemplates);
BufferedReporter reporter = new();
- Assert.True(InstantiateCommand.VerifyMatchingTemplates(settings, matchingTemplates, reporter, out IEnumerable? filtered));
- Assert.Equal(3, filtered?.Count());
- Assert.Empty(reporter.Lines);
+ Assert.IsTrue(InstantiateCommand.VerifyMatchingTemplates(settings, matchingTemplates, reporter, out IEnumerable? filtered));
+ Assert.HasCount(3, filtered!);
+ Assert.IsFalse(reporter.Lines.Any());
}
- [Fact]
+ [TestMethod]
public void HasLanguageMismatch()
{
List templatesToSearch = new()
@@ -167,10 +167,10 @@ public void HasLanguageMismatch()
ParseResult parseResult = myCommand.Parse($"new console --language L2");
var args = InstantiateCommandArgs.FromNewCommandArgs(new NewCommandArgs(myCommand, parseResult));
IEnumerable matchingTemplates = InstantiateCommand.GetMatchingTemplates(args, settings, A.Fake(), templateGroup);
- Assert.Empty(matchingTemplates);
+ Assert.IsFalse(matchingTemplates.Any());
}
- [Fact]
+ [TestMethod]
public void HasTypeMismatch()
{
List templatesToSearch = new()
@@ -190,10 +190,10 @@ public void HasTypeMismatch()
ParseResult parseResult = myCommand.Parse($"new console --type item");
var args = InstantiateCommandArgs.FromNewCommandArgs(new NewCommandArgs(myCommand, parseResult));
IEnumerable matchingTemplates = InstantiateCommand.GetMatchingTemplates(args, settings, A.Fake(), templateGroup);
- Assert.Empty(matchingTemplates);
+ Assert.IsFalse(matchingTemplates.Any());
}
- [Fact]
+ [TestMethod]
public void HasBaselineMismatch()
{
List templatesToSearch = new()
@@ -213,10 +213,10 @@ public void HasBaselineMismatch()
ParseResult parseResult = myCommand.Parse($"new console --baseline core");
var args = InstantiateCommandArgs.FromNewCommandArgs(new NewCommandArgs(myCommand, parseResult));
IEnumerable matchingTemplates = InstantiateCommand.GetMatchingTemplates(args, settings, A.Fake(), templateGroup);
- Assert.Empty(matchingTemplates);
+ Assert.IsFalse(matchingTemplates.Any());
}
- [Fact]
+ [TestMethod]
public void HasMultipleMismatches()
{
List templatesToSearch = new()
@@ -236,10 +236,10 @@ public void HasMultipleMismatches()
ParseResult parseResult = myCommand.Parse($"new console --language L2 --type item --baseline core");
var args = InstantiateCommandArgs.FromNewCommandArgs(new NewCommandArgs(myCommand, parseResult));
IEnumerable matchingTemplates = InstantiateCommand.GetMatchingTemplates(args, settings, A.Fake(), templateGroup);
- Assert.Empty(matchingTemplates);
+ Assert.IsFalse(matchingTemplates.Any());
}
- [Fact]
+ [TestMethod]
public void HasTypeMismatch_HasGroupLanguageMatch()
{
List templatesToSearch = new()
@@ -264,10 +264,10 @@ public void HasTypeMismatch_HasGroupLanguageMatch()
ParseResult parseResult = myCommand.Parse($"new console --language L2 --type item");
var args = InstantiateCommandArgs.FromNewCommandArgs(new NewCommandArgs(myCommand, parseResult));
IEnumerable matchingTemplates = InstantiateCommand.GetMatchingTemplates(args, settings, A.Fake(), templateGroup);
- Assert.Empty(matchingTemplates);
+ Assert.IsFalse(matchingTemplates.Any());
}
- [Fact]
+ [TestMethod]
public void OtherParameterMatch_Text()
{
List templatesToSearch = new()
@@ -299,10 +299,10 @@ public void OtherParameterMatch_Text()
ParseResult parseResult = myCommand.Parse($"new console --langVersion ver");
var args = InstantiateCommandArgs.FromNewCommandArgs(new NewCommandArgs(myCommand, parseResult));
IEnumerable matchingTemplates = InstantiateCommand.GetMatchingTemplates(args, settings, A.Fake(), templateGroup);
- Assert.Single(matchingTemplates);
+ Assert.HasCount(1, matchingTemplates);
}
- [Fact]
+ [TestMethod]
public void OtherParameterMatch_Choice()
{
List templatesToSearch = new()
@@ -334,11 +334,11 @@ public void OtherParameterMatch_Choice()
ParseResult parseResult = myCommand.Parse($"new console --framework netcoreapp1.0");
var args = InstantiateCommandArgs.FromNewCommandArgs(new NewCommandArgs(myCommand, parseResult));
IEnumerable matchingTemplates = InstantiateCommand.GetMatchingTemplates(args, settings, A.Fake(), templateGroup);
- Assert.Single(matchingTemplates);
+ Assert.HasCount(1, matchingTemplates);
}
- [Fact]
+ [TestMethod]
public void OtherParameterDoesNotExist()
{
List templatesToSearch = new()
@@ -370,7 +370,7 @@ public void OtherParameterDoesNotExist()
ParseResult parseResult = myCommand.Parse($"new console --do-not-exist");
var args = InstantiateCommandArgs.FromNewCommandArgs(new NewCommandArgs(myCommand, parseResult));
IEnumerable matchingTemplates = InstantiateCommand.GetMatchingTemplates(args, settings, A.Fake(), templateGroup);
- Assert.Empty(matchingTemplates);
+ Assert.IsFalse(matchingTemplates.Any());
}
}
}
diff --git a/test/Microsoft.TemplateEngine.Cli.UnitTests/ParserTests/HelpTests.cs b/test/Microsoft.TemplateEngine.Cli.UnitTests/ParserTests/HelpTests.cs
index ca297a70b6a3..b41149119844 100644
--- a/test/Microsoft.TemplateEngine.Cli.UnitTests/ParserTests/HelpTests.cs
+++ b/test/Microsoft.TemplateEngine.Cli.UnitTests/ParserTests/HelpTests.cs
@@ -1,4 +1,4 @@
-// Licensed to the .NET Foundation under one or more agreements.
+// Licensed to the .NET Foundation under one or more agreements.
// The .NET Foundation licenses this file to you under the MIT license.
using System.CommandLine;
@@ -12,33 +12,34 @@
namespace Microsoft.TemplateEngine.Cli.UnitTests.ParserTests
{
- public partial class HelpTests
+ [TestClass]
+ public partial class HelpTests : VerifyBase
{
- [Theory]
+ [TestMethod]
#pragma warning disable SA1117 // Parameters should be on same line or separate lines
- [InlineData("Template Name", "Language", "Me", "Template Description",
+ [DataRow("Template Name", "Language", "Me", "Template Description",
@"Template Name (Language)
Author: Me
Description: Template Description
")]
- [InlineData("Template Name", null, "Me", "Template Description",
+ [DataRow("Template Name", null, "Me", "Template Description",
@"Template Name
Author: Me
Description: Template Description
")]
- [InlineData("Template Name", "Language", null, "Template Description",
+ [DataRow("Template Name", "Language", null, "Template Description",
@"Template Name (Language)
Description: Template Description
")]
- [InlineData("Template Name", "Language", "Me", null,
+ [DataRow("Template Name", "Language", "Me", null,
@"Template Name (Language)
Author: Me
")]
- [InlineData("Template Name", null, null, null,
+ [DataRow("Template Name", null, null, null,
@"Template Name
")]
@@ -60,10 +61,10 @@ public void CanShowTemplateDescription(string name, string? language, string? au
CliTemplateInfo cliTemplateInfo = new(templateInfo, HostSpecificTemplateData.Default);
StringWriter sw = new();
InstantiateCommand.ShowTemplateDetailHeaders(cliTemplateInfo, sw);
- Assert.Equal(expected, sw.ToString());
+ Assert.AreEqual(expected, sw.ToString());
}
- [Fact]
+ [TestMethod]
public void CanShowUsage()
{
ICliTemplateEngineHost host = CliTestHostFactory.GetVirtualHost();
@@ -73,10 +74,10 @@ public void CanShowUsage()
HelpContext helpContext = new(new HelpBuilder(), myCommand, sw);
InstantiateCommand.ShowUsage(myCommand, new[] { "short-name" }, helpContext);
- Assert.Equal($"Usage:{Environment.NewLine} new short-name [options] [template options]{Environment.NewLine}{Environment.NewLine}", sw.ToString());
+ Assert.AreEqual($"Usage:{Environment.NewLine} new short-name [options] [template options]{Environment.NewLine}{Environment.NewLine}", sw.ToString());
}
- [Fact]
+ [TestMethod]
public void CanShowUsage_ForMultipleShortNames()
{
ICliTemplateEngineHost host = CliTestHostFactory.GetVirtualHost();
@@ -86,10 +87,10 @@ public void CanShowUsage_ForMultipleShortNames()
HelpContext helpContext = new(new HelpBuilder(), myCommand, sw);
InstantiateCommand.ShowUsage(myCommand, new[] { "short-name1", "short-name2" }, helpContext);
- Assert.Equal($"Usage:{Environment.NewLine} new short-name1 [options] [template options]{Environment.NewLine} new short-name2 [options] [template options]{Environment.NewLine}{Environment.NewLine}", sw.ToString());
+ Assert.AreEqual($"Usage:{Environment.NewLine} new short-name1 [options] [template options]{Environment.NewLine} new short-name2 [options] [template options]{Environment.NewLine}{Environment.NewLine}", sw.ToString());
}
- [Fact]
+ [TestMethod]
public Task CanShowCommandOptions_Basic()
{
var template = new MockTemplateInfo("foo", identity: "foo.1", groupIdentity: "foo.group");
@@ -112,7 +113,7 @@ public Task CanShowCommandOptions_Basic()
return Verify(sw.ToString());
}
- [Fact]
+ [TestMethod]
public Task CanShowCommandOptions_Language()
{
MockTemplateInfo template = new MockTemplateInfo("foo", identity: "foo.1", groupIdentity: "foo.group").WithTag("language", "MyLang");
@@ -135,7 +136,7 @@ public Task CanShowCommandOptions_Language()
return Verify(sw.ToString());
}
- [Fact]
+ [TestMethod]
public Task CanShowCommandOptions_Type()
{
MockTemplateInfo template = new MockTemplateInfo("foo", identity: "foo.1", groupIdentity: "foo.group").WithTag("type", "MyType");
@@ -158,7 +159,7 @@ public Task CanShowCommandOptions_Type()
return Verify(sw.ToString());
}
- [Fact]
+ [TestMethod]
public void CanShowCommandOptions_NoOptions()
{
MockTemplateInfo template = new MockTemplateInfo("foo", identity: "foo.1", groupIdentity: "foo.group").WithTag("type", "MyType");
@@ -178,10 +179,10 @@ public void CanShowCommandOptions_NoOptions()
HelpContext helpContext = new(new HelpBuilder(), myCommand, sw);
InstantiateCommand.ShowTemplateSpecificOptions(new[] { templateCommand }, helpContext);
- Assert.Equal($"Template options:{Environment.NewLine} (No options){Environment.NewLine}", sw.ToString());
+ Assert.AreEqual($"Template options:{Environment.NewLine} (No options){Environment.NewLine}", sw.ToString());
}
- [Fact]
+ [TestMethod]
public Task CanShowTemplateOptions_SingleTemplate_Choice()
{
MockTemplateInfo template = new MockTemplateInfo("foo", identity: "foo.1", groupIdentity: "foo.group")
@@ -205,7 +206,7 @@ public Task CanShowTemplateOptions_SingleTemplate_Choice()
return Verify(sw.ToString());
}
- [Fact]
+ [TestMethod]
public Task CanShowTemplateOptions_MultipleTemplate_CombinedChoice()
{
MockTemplateInfo template1 = new MockTemplateInfo("foo", identity: "foo.1", groupIdentity: "foo.group", precedence: 0)
@@ -232,7 +233,7 @@ public Task CanShowTemplateOptions_MultipleTemplate_CombinedChoice()
return Verify(sw.ToString());
}
- [Fact]
+ [TestMethod]
public Task CanShowTemplateOptions_SingleTemplate_NonChoice()
{
MockTemplateInfo template = new MockTemplateInfo("foo", identity: "foo.1", groupIdentity: "foo.group")
@@ -256,7 +257,7 @@ public Task CanShowTemplateOptions_SingleTemplate_NonChoice()
return Verify(sw.ToString());
}
- [Fact]
+ [TestMethod]
public Task CanShowTemplateOptions_MultipleTemplate_MultipleParams()
{
MockTemplateInfo template1 = new MockTemplateInfo("foo", identity: "foo.1", groupIdentity: "foo.group", precedence: 0)
@@ -285,7 +286,7 @@ public Task CanShowTemplateOptions_MultipleTemplate_MultipleParams()
return Verify(sw.ToString());
}
- [Fact]
+ [TestMethod]
public Task CanShowTemplateOptions_SingleTemplate_Choice_Required()
{
MockTemplateInfo template = new MockTemplateInfo("foo", identity: "foo.1", groupIdentity: "foo.group")
@@ -309,7 +310,7 @@ public Task CanShowTemplateOptions_SingleTemplate_Choice_Required()
return Verify(sw.ToString());
}
- [Fact]
+ [TestMethod]
public void CanShowTemplateOptions_RequiredIsNotShownWhenDefaultValueIsGiven()
{
MockTemplateInfo template = new MockTemplateInfo("foo", identity: "foo.1", groupIdentity: "foo.group")
@@ -333,7 +334,7 @@ public void CanShowTemplateOptions_RequiredIsNotShownWhenDefaultValueIsGiven()
Assert.DoesNotContain("(REQUIRED)", sw.ToString());
}
- [Fact]
+ [TestMethod]
public Task CanShowHintsForOtherTemplates()
{
MockTemplateInfo template1 = new MockTemplateInfo("foo", identity: "foo.1", groupIdentity: "foo.group").WithTag("language", "Lang1").WithTag("type", "project");
@@ -355,7 +356,7 @@ public Task CanShowHintsForOtherTemplates()
return Verify(sw.ToString());
}
- [Fact]
+ [TestMethod]
public Task CanShowTemplateOptions_SingleTemplate_Choice_ShortenedUsage_FirstTwoValuesFit()
{
MockTemplateInfo template = new MockTemplateInfo("foo", identity: "foo.1", groupIdentity: "foo.group")
@@ -379,7 +380,7 @@ public Task CanShowTemplateOptions_SingleTemplate_Choice_ShortenedUsage_FirstTwo
return Verify(sw.ToString());
}
- [Fact]
+ [TestMethod]
public Task CanShowTemplateOptions_SingleTemplate_Choice_ShortenedUsage()
{
MockTemplateInfo template = new MockTemplateInfo("foo", identity: "foo.1", groupIdentity: "foo.group")
@@ -403,7 +404,7 @@ public Task CanShowTemplateOptions_SingleTemplate_Choice_ShortenedUsage()
return Verify(sw.ToString());
}
- [Fact]
+ [TestMethod]
public Task DoesNotCombineParametersWhenAliasesAreDifferent()
{
MockTemplateInfo template1 = new MockTemplateInfo("foo", identity: "foo.1", groupIdentity: "foo.group")
@@ -446,7 +447,7 @@ public Task DoesNotCombineParametersWhenAliasesAreDifferent()
return Verify(sw.ToString());
}
- [Fact]
+ [TestMethod]
public Task CanShowTemplateOptions_RequiredParam()
{
MockTemplateInfo template = new MockTemplateInfo("foo", identity: "foo.1", groupIdentity: "foo.group")
diff --git a/test/Microsoft.TemplateEngine.Cli.UnitTests/ParserTests/InstallTests.cs b/test/Microsoft.TemplateEngine.Cli.UnitTests/ParserTests/InstallTests.cs
index 268f682babdb..72fd3aec3545 100644
--- a/test/Microsoft.TemplateEngine.Cli.UnitTests/ParserTests/InstallTests.cs
+++ b/test/Microsoft.TemplateEngine.Cli.UnitTests/ParserTests/InstallTests.cs
@@ -1,4 +1,4 @@
-// Licensed to the .NET Foundation under one or more agreements.
+// Licensed to the .NET Foundation under one or more agreements.
// The .NET Foundation licenses this file to you under the MIT license.
using System.CommandLine;
@@ -7,11 +7,12 @@
namespace Microsoft.TemplateEngine.Cli.UnitTests.ParserTests
{
+ [TestClass]
public class InstallTests : BaseTest
{
- [Theory]
- [InlineData("--add-source")]
- [InlineData("--nuget-source")]
+ [TestMethod]
+ [DataRow("--add-source")]
+ [DataRow("--nuget-source")]
public void Install_CanParseAddSourceOption(string optionName)
{
ICliTemplateEngineHost host = CliTestHostFactory.GetVirtualHost(additionalComponents: BuiltInTemplatePackagesProviderFactory.GetComponents(RepoTemplatePackages));
@@ -20,14 +21,14 @@ public void Install_CanParseAddSourceOption(string optionName)
ParseResult parseResult = myCommand.Parse($"new install source {optionName} my-custom-source");
InstallCommandArgs args = new((InstallCommand)parseResult.CommandResult.Command, parseResult);
- Assert.NotNull(args.AdditionalSources);
- Assert.Single(args.AdditionalSources);
+ Assert.IsNotNull(args.AdditionalSources);
+ Assert.HasCount(1, args.AdditionalSources);
Assert.Contains("my-custom-source", args.AdditionalSources);
- Assert.Single(args.TemplatePackages);
+ Assert.HasCount(1, args.TemplatePackages);
Assert.Contains("source", args.TemplatePackages);
}
- [Fact]
+ [TestMethod]
public void Install_Error_NoArguments()
{
ICliTemplateEngineHost host = CliTestHostFactory.GetVirtualHost(additionalComponents: BuiltInTemplatePackagesProviderFactory.GetComponents(RepoTemplatePackages));
@@ -35,13 +36,13 @@ public void Install_Error_NoArguments()
ParseResult parseResult = myCommand.Parse($"new install");
- Assert.True(parseResult.Errors.Any());
- Assert.Contains(parseResult.Errors, error => error.Message.Contains("Required argument") && error.Message.Contains("missing"));
+ Assert.IsTrue(parseResult.Errors.Any());
+ Assert.IsTrue(parseResult.Errors.Any(error => error.Message.Contains("Required argument") && error.Message.Contains("missing")));
Assert.Throws(() => new InstallCommandArgs((InstallCommand)parseResult.CommandResult.Command, parseResult));
}
- [Fact]
+ [TestMethod]
public void Install_Legacy_Error_NoArguments()
{
ICliTemplateEngineHost host = CliTestHostFactory.GetVirtualHost(additionalComponents: BuiltInTemplatePackagesProviderFactory.GetComponents(RepoTemplatePackages));
@@ -49,15 +50,15 @@ public void Install_Legacy_Error_NoArguments()
ParseResult parseResult = myCommand.Parse($"new --install --interactive");
- Assert.True(parseResult.Errors.Any());
- Assert.Contains(parseResult.Errors, error => error.Message.Contains("Required argument") && error.Message.Contains("missing"));
+ Assert.IsTrue(parseResult.Errors.Any());
+ Assert.IsTrue(parseResult.Errors.Any(error => error.Message.Contains("Required argument") && error.Message.Contains("missing")));
Assert.Throws(() => new InstallCommandArgs((LegacyInstallCommand)parseResult.CommandResult.Command, parseResult));
}
- [Theory]
- [InlineData("new install source --add-source my-custom-source1 my-custom-source2")]
- [InlineData("new install source --add-source my-custom-source1 --add-source my-custom-source2")]
+ [TestMethod]
+ [DataRow("new install source --add-source my-custom-source1 my-custom-source2")]
+ [DataRow("new install source --add-source my-custom-source1 --add-source my-custom-source2")]
public void Install_CanParseAddSourceOption_MultipleEntries(string testCase)
{
ICliTemplateEngineHost host = CliTestHostFactory.GetVirtualHost(additionalComponents: BuiltInTemplatePackagesProviderFactory.GetComponents(RepoTemplatePackages));
@@ -65,15 +66,15 @@ public void Install_CanParseAddSourceOption_MultipleEntries(string testCase)
ParseResult parseResult = myCommand.Parse(testCase);
InstallCommandArgs args = new((InstallCommand)parseResult.CommandResult.Command, parseResult);
- Assert.NotNull(args.AdditionalSources);
- Assert.Equal(2, args.AdditionalSources.Count);
+ Assert.IsNotNull(args.AdditionalSources);
+ Assert.AreEqual(2, args.AdditionalSources.Count);
Assert.Contains("my-custom-source1", args.AdditionalSources);
Assert.Contains("my-custom-source2", args.AdditionalSources);
- Assert.Single(args.TemplatePackages);
+ Assert.HasCount(1, args.TemplatePackages);
Assert.Contains("source", args.TemplatePackages);
}
- [Fact]
+ [TestMethod]
public void Install_CanParseInteractiveOption()
{
ICliTemplateEngineHost host = CliTestHostFactory.GetVirtualHost(additionalComponents: BuiltInTemplatePackagesProviderFactory.GetComponents(RepoTemplatePackages));
@@ -82,19 +83,19 @@ public void Install_CanParseInteractiveOption()
ParseResult parseResult = myCommand.Parse($"new install source --interactive");
InstallCommandArgs args = new((InstallCommand)parseResult.CommandResult.Command, parseResult);
- Assert.True(args.Interactive);
- Assert.Single(args.TemplatePackages);
+ Assert.IsTrue(args.Interactive);
+ Assert.HasCount(1, args.TemplatePackages);
Assert.Contains("source", args.TemplatePackages);
parseResult = myCommand.Parse($"new install source");
args = new InstallCommandArgs((InstallCommand)parseResult.CommandResult.Command, parseResult);
- Assert.False(args.Interactive);
- Assert.Single(args.TemplatePackages);
+ Assert.IsFalse(args.Interactive);
+ Assert.HasCount(1, args.TemplatePackages);
Assert.Contains("source", args.TemplatePackages);
}
- [Fact]
+ [TestMethod]
public void Install_CanParseForceOption()
{
ICliTemplateEngineHost host = CliTestHostFactory.GetVirtualHost(additionalComponents: BuiltInTemplatePackagesProviderFactory.GetComponents(RepoTemplatePackages));
@@ -103,19 +104,19 @@ public void Install_CanParseForceOption()
ParseResult parseResult = myCommand.Parse($"new install source --force");
InstallCommandArgs args = new((InstallCommand)parseResult.CommandResult.Command, parseResult);
- Assert.True(args.Force);
- Assert.Single(args.TemplatePackages);
+ Assert.IsTrue(args.Force);
+ Assert.HasCount(1, args.TemplatePackages);
Assert.Contains("source", args.TemplatePackages);
parseResult = myCommand.Parse($"new install source");
args = new InstallCommandArgs((InstallCommand)parseResult.CommandResult.Command, parseResult);
- Assert.False(args.Force);
- Assert.Single(args.TemplatePackages);
+ Assert.IsFalse(args.Force);
+ Assert.HasCount(1, args.TemplatePackages);
Assert.Contains("source", args.TemplatePackages);
}
- [Fact]
+ [TestMethod]
public void Install_CanParseMultipleArgs()
{
ICliTemplateEngineHost host = CliTestHostFactory.GetVirtualHost(additionalComponents: BuiltInTemplatePackagesProviderFactory.GetComponents(RepoTemplatePackages));
@@ -124,15 +125,15 @@ public void Install_CanParseMultipleArgs()
ParseResult parseResult = myCommand.Parse($"new install source1 source2");
InstallCommandArgs args = new((InstallCommand)parseResult.CommandResult.Command, parseResult);
- Assert.Equal(2, args.TemplatePackages.Count);
+ Assert.AreEqual(2, args.TemplatePackages.Count);
Assert.Contains("source1", args.TemplatePackages);
Assert.Contains("source2", args.TemplatePackages);
}
- [Theory]
- [InlineData("new --install source --add-source my-custom-source")]
- [InlineData("new --install source --nuget-source my-custom-source")]
- [InlineData("new --nuget-source my-custom-source --install source")]
+ [TestMethod]
+ [DataRow("new --install source --add-source my-custom-source")]
+ [DataRow("new --install source --nuget-source my-custom-source")]
+ [DataRow("new --nuget-source my-custom-source --install source")]
public void Install_Legacy_CanParseAddSourceOption(string testCase)
{
ICliTemplateEngineHost host = CliTestHostFactory.GetVirtualHost(additionalComponents: BuiltInTemplatePackagesProviderFactory.GetComponents(RepoTemplatePackages));
@@ -141,16 +142,16 @@ public void Install_Legacy_CanParseAddSourceOption(string testCase)
ParseResult parseResult = myCommand.Parse(testCase);
InstallCommandArgs args = new((LegacyInstallCommand)parseResult.CommandResult.Command, parseResult);
- Assert.NotNull(args.AdditionalSources);
- Assert.Single(args.AdditionalSources);
+ Assert.IsNotNull(args.AdditionalSources);
+ Assert.HasCount(1, args.AdditionalSources);
Assert.Contains("my-custom-source", args.AdditionalSources);
- Assert.Single(args.TemplatePackages);
+ Assert.HasCount(1, args.TemplatePackages);
Assert.Contains("source", args.TemplatePackages);
}
- [Theory]
- [InlineData("new --install source --interactive")]
- [InlineData("new --interactive --install source")]
+ [TestMethod]
+ [DataRow("new --install source --interactive")]
+ [DataRow("new --interactive --install source")]
public void Install_Legacy_CanParseInteractiveOption(string testCase)
{
ICliTemplateEngineHost host = CliTestHostFactory.GetVirtualHost(additionalComponents: BuiltInTemplatePackagesProviderFactory.GetComponents(RepoTemplatePackages));
@@ -159,14 +160,14 @@ public void Install_Legacy_CanParseInteractiveOption(string testCase)
ParseResult parseResult = myCommand.Parse(testCase);
InstallCommandArgs args = new((LegacyInstallCommand)parseResult.CommandResult.Command, parseResult);
- Assert.True(args.Interactive);
- Assert.Single(args.TemplatePackages);
+ Assert.IsTrue(args.Interactive);
+ Assert.HasCount(1, args.TemplatePackages);
Assert.Contains("source", args.TemplatePackages);
}
- [Theory]
- [InlineData("new --install source1 --install source2")]
- [InlineData("new --install source1 source2")]
+ [TestMethod]
+ [DataRow("new --install source1 --install source2")]
+ [DataRow("new --install source1 source2")]
public void Install_Legacy_CanParseMultipleArgs(string testCase)
{
ICliTemplateEngineHost host = CliTestHostFactory.GetVirtualHost(additionalComponents: BuiltInTemplatePackagesProviderFactory.GetComponents(RepoTemplatePackages));
@@ -175,15 +176,15 @@ public void Install_Legacy_CanParseMultipleArgs(string testCase)
ParseResult parseResult = myCommand.Parse(testCase);
InstallCommandArgs args = new((LegacyInstallCommand)parseResult.CommandResult.Command, parseResult);
- Assert.Equal(2, args.TemplatePackages.Count);
+ Assert.AreEqual(2, args.TemplatePackages.Count);
Assert.Contains("source1", args.TemplatePackages);
Assert.Contains("source2", args.TemplatePackages);
}
- [Theory]
- [InlineData("new --install source --add-source my-custom-source1 --add-source my-custom-source2")]
- [InlineData("new --add-source my-custom-source1 --add-source my-custom-source2 --install source")]
- [InlineData("new --add-source my-custom-source1 --install source --add-source my-custom-source2")]
+ [TestMethod]
+ [DataRow("new --install source --add-source my-custom-source1 --add-source my-custom-source2")]
+ [DataRow("new --add-source my-custom-source1 --add-source my-custom-source2 --install source")]
+ [DataRow("new --add-source my-custom-source1 --install source --add-source my-custom-source2")]
public void Install_Legacy_CanParseAddSourceOption_MultipleEntries(string testCase)
{
ICliTemplateEngineHost host = CliTestHostFactory.GetVirtualHost(additionalComponents: BuiltInTemplatePackagesProviderFactory.GetComponents(RepoTemplatePackages));
@@ -191,21 +192,21 @@ public void Install_Legacy_CanParseAddSourceOption_MultipleEntries(string testCa
ParseResult parseResult = myCommand.Parse(testCase);
InstallCommandArgs args = new((LegacyInstallCommand)parseResult.CommandResult.Command, parseResult);
- Assert.NotNull(args.AdditionalSources);
- Assert.Equal(2, args.AdditionalSources.Count);
+ Assert.IsNotNull(args.AdditionalSources);
+ Assert.AreEqual(2, args.AdditionalSources.Count);
Assert.Contains("my-custom-source1", args.AdditionalSources);
Assert.Contains("my-custom-source2", args.AdditionalSources);
- Assert.Single(args.TemplatePackages);
+ Assert.HasCount(1, args.TemplatePackages);
Assert.Contains("source", args.TemplatePackages);
}
- [Theory]
- [InlineData("new --add-source my-custom-source install source", "'--add-source','my-custom-source'")]
- [InlineData("new --interactive install source", "'--interactive'")]
- [InlineData("new --language F# --install source", "'--language','F#'")]
- [InlineData("new --language F# install source", "'--language','F#'")]
- [InlineData("new source1 source2 source3 --install source", "'source1'|'source2','source3'")]
- [InlineData("new source1 --install source", "'source1'")]
+ [TestMethod]
+ [DataRow("new --add-source my-custom-source install source", "'--add-source','my-custom-source'")]
+ [DataRow("new --interactive install source", "'--interactive'")]
+ [DataRow("new --language F# --install source", "'--language','F#'")]
+ [DataRow("new --language F# install source", "'--language','F#'")]
+ [DataRow("new source1 source2 source3 --install source", "'source1'|'source2','source3'")]
+ [DataRow("new source1 --install source", "'source1'")]
public void Install_CanReturnParseError(string command, string expectedInvalidTokens)
{
ICliTemplateEngineHost host = CliTestHostFactory.GetVirtualHost(additionalComponents: BuiltInTemplatePackagesProviderFactory.GetComponents(RepoTemplatePackages));
@@ -216,15 +217,15 @@ public void Install_CanReturnParseError(string command, string expectedInvalidTo
string[] expectedInvalidTokenSets = expectedInvalidTokens.Split("|");
- Assert.NotEmpty(parseResult.Errors);
- Assert.Equal(expectedInvalidTokenSets.Length, parseResult.Errors.Count);
+ Assert.IsTrue(parseResult.Errors.Any());
+ Assert.AreEqual(expectedInvalidTokenSets.Length, parseResult.Errors.Count);
foreach (string tokenSet in expectedInvalidTokenSets)
{
- Assert.True(errorMessages.Contains($"Unrecognized command or argument(s): {tokenSet}.") || errorMessages.Contains($"Unrecognized command or argument {tokenSet}."));
+ Assert.IsTrue(errorMessages.Contains($"Unrecognized command or argument(s): {tokenSet}.") || errorMessages.Contains($"Unrecognized command or argument {tokenSet}."));
}
}
- [Fact]
+ [TestMethod]
public void CommandExampleCanShowParentCommandsBeyondNew()
{
ICliTemplateEngineHost host = CliTestHostFactory.GetVirtualHost(additionalComponents: BuiltInTemplatePackagesProviderFactory.GetComponents(RepoTemplatePackages));
@@ -235,7 +236,7 @@ public void CommandExampleCanShowParentCommandsBeyondNew()
};
ParseResult parseResult = rootCommand.Parse("dotnet new install source");
- Assert.Equal("dotnet new install my-source", Example.For(parseResult).WithSubcommand().WithArguments("my-source"));
+ Assert.AreEqual("dotnet new install my-source", Example.For(parseResult).WithSubcommand().WithArguments("my-source"));
}
}
}
diff --git a/test/Microsoft.TemplateEngine.Cli.UnitTests/ParserTests/InstantiateTests.NoMatchHandling.cs b/test/Microsoft.TemplateEngine.Cli.UnitTests/ParserTests/InstantiateTests.NoMatchHandling.cs
index 753ea92bb18d..16493e1edeb7 100644
--- a/test/Microsoft.TemplateEngine.Cli.UnitTests/ParserTests/InstantiateTests.NoMatchHandling.cs
+++ b/test/Microsoft.TemplateEngine.Cli.UnitTests/ParserTests/InstantiateTests.NoMatchHandling.cs
@@ -1,4 +1,4 @@
-// Licensed to the .NET Foundation under one or more agreements.
+// Licensed to the .NET Foundation under one or more agreements.
// The .NET Foundation licenses this file to you under the MIT license.
using System.CommandLine;
@@ -280,8 +280,8 @@ public static IEnumerable