Skip to content

Commit

Permalink
added test showing the bug: dotnet#4988
Browse files Browse the repository at this point in the history
  • Loading branch information
vlada-shubina committed Jul 19, 2022
1 parent ad5a6fc commit 94045e7
Show file tree
Hide file tree
Showing 2 changed files with 108 additions and 1 deletion.
Original file line number Diff line number Diff line change
Expand Up @@ -1532,7 +1532,32 @@ public void VerifyConditionAtEnd()
IProcessor processor = SetupCStyleNoCommentsProcessor(vc);

//Changes should be made
bool changed = processor.Run(input, output, 28);
bool changed = processor.Run(input, output, 50);
Verify(Encoding.UTF8, output, changed, value, expected);
}

#pragma warning disable xUnit1004 // Test methods should not be skipped
[Fact(Skip = "https://github.com/dotnet/templating/issues/4988")]
#pragma warning restore xUnit1004 // Test methods should not be skipped
public void VerifyXMLConditionAtEnd()
{
string value = @"Hello
<!--#if (B)
bar
#endif -->
";
string expected = @"Hello
";

byte[] valueBytes = Encoding.UTF8.GetBytes(value);
MemoryStream input = new MemoryStream(valueBytes);
MemoryStream output = new MemoryStream();

VariableCollection vc = new VariableCollection();
IProcessor processor = SetupXmlStyleProcessor(vc);

//Changes should be made
bool changed = processor.Run(input, output, 50);
Verify(Encoding.UTF8, output, changed, value, expected);
}

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -10,6 +10,7 @@
using System.Threading;
using System.Threading.Tasks;
using FakeItEasy;
using Microsoft.Extensions.Logging;
using Microsoft.TemplateEngine.Abstractions;
using Microsoft.TemplateEngine.Abstractions.Components;
using Microsoft.TemplateEngine.Abstractions.Mount;
Expand All @@ -20,6 +21,7 @@
using Newtonsoft.Json;
using Newtonsoft.Json.Linq;
using Xunit;
using Xunit.Abstractions;
using static Microsoft.TemplateEngine.Orchestrator.RunnableProjects.RunnableProjectGenerator;

namespace Microsoft.TemplateEngine.Orchestrator.RunnableProjects.UnitTests
Expand Down Expand Up @@ -579,5 +581,85 @@ public async void CreateAsyncTest_MultiChoiceParamJoining()
string resultContent = environment.Host.FileSystem.ReadAllText(Path.Combine(targetDir, "sourcFile"));
Assert.Equal(expectedSnippet, resultContent);
}

[Fact]
public async void XMLCondiitonFailure()
{
//
// Template content preparation
//

var templateConfig = new
{
identity = "test.template",
symbols = new
{
A = new
{
type = "parameter",
dataType = "bool",
defaultValue = "false"
},
B = new
{
type = "parameter",
dataType = "bool",
defaultValue = "false"
},
}
};

string sourceSnippet = @"
<!--#if (A) -->
<!-- comment foo -->
foo
<!--#endif -->
<!--#if (B)
<!-- comment bar -- >
bar
#endif -->
";

string expectedSnippet = @"
<!-- comment foo -->
foo
";

IDictionary<string, string?> templateSourceFiles = new Dictionary<string, string?>();
// template.json
templateSourceFiles.Add(TestFileSystemHelper.DefaultConfigRelativePath, JsonConvert.SerializeObject(templateConfig, Formatting.Indented));

//content
templateSourceFiles.Add("sourceFile.md", sourceSnippet);

//
// Dependencies preparation and mounting
//
IEngineEnvironmentSettings settings = _environmentSettingsHelper.CreateEnvironment(virtualize: true);
string sourceBasePath = FileSystemHelpers.GetNewVirtualizedPath(settings);
string targetDir = FileSystemHelpers.GetNewVirtualizedPath(settings);

TestFileSystemHelper.WriteTemplateSource(settings, sourceBasePath, templateSourceFiles);
IMountPoint? sourceMountPoint = TestFileSystemHelper.CreateMountPoint(settings, sourceBasePath);
RunnableProjectGenerator rpg = new RunnableProjectGenerator();
SimpleConfigModel configModel = SimpleConfigModel.FromJObject(JObject.FromObject(templateConfig));
IRunnableProjectConfig runnableConfig = new RunnableProjectConfig(settings, rpg, configModel, sourceMountPoint.FileInfo(TestFileSystemHelper.DefaultConfigRelativePath));
IParameterSet parameters = new ParameterSet(runnableConfig);
parameters.TryGetParameterDefinition("A", out ITemplateParameter aParam);
parameters.ResolvedValues[aParam] = true;
IDirectory sourceDir = sourceMountPoint!.DirectoryInfo("/")!;

//
// Running the actual scenario: template files processing and generating output (including macros processing)
//
await rpg.CreateAsync(settings, runnableConfig, sourceDir, parameters, targetDir, CancellationToken.None);

//
// Veryfying the outputs
//

string resultContent = settings.Host.FileSystem.ReadAllText(Path.Combine(targetDir, "sourceFile.md"));
Assert.Equal(expectedSnippet, resultContent);
}
}
}

0 comments on commit 94045e7

Please sign in to comment.