6ba581fc17
Rather than keep a map that will have to be constantly updated every time a new argument gets added to a compiler, the 'additionalArguments' option will allow users to directly add arguments to the underlying compiler.
54 lines
1.7 KiB
C#
54 lines
1.7 KiB
C#
// 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.Collections.Generic;
|
|
using System.CommandLine;
|
|
using Microsoft.DotNet.ProjectModel;
|
|
using Microsoft.DotNet.Tools.Test.Utilities;
|
|
using Xunit;
|
|
|
|
namespace Microsoft.DotNet.Cli.Compiler.Common
|
|
{
|
|
public class Tests : TestBase
|
|
{
|
|
private static void EqualAfterDeserialize(IEnumerable<string> args, CommonCompilerOptions original)
|
|
{
|
|
CommonCompilerOptions newOptions = null;
|
|
|
|
ArgumentSyntax.Parse(args, syntax =>
|
|
{
|
|
newOptions = CommonCompilerOptionsExtensions.Parse(syntax);
|
|
});
|
|
|
|
Assert.Equal(original, newOptions);
|
|
|
|
}
|
|
|
|
[Fact]
|
|
public void SimpleSerialize()
|
|
{
|
|
var options = new CommonCompilerOptions();
|
|
options.AdditionalArguments = new[] { "-highentropyva+" };
|
|
|
|
var args = options.SerializeToArgs();
|
|
Assert.Equal(new [] { "--additional-argument:-highentropyva+" }, args);
|
|
|
|
EqualAfterDeserialize(args, options);
|
|
}
|
|
|
|
[Fact]
|
|
public void WithSpaces()
|
|
{
|
|
var options = new CommonCompilerOptions();
|
|
options.AdditionalArguments = new[] { "-highentropyva+", "-addmodule:\"path with spaces\";\"after semicolon\"" };
|
|
|
|
var args = options.SerializeToArgs();
|
|
Assert.Equal(new [] {
|
|
"--additional-argument:-highentropyva+",
|
|
"--additional-argument:-addmodule:\"path with spaces\";\"after semicolon\""
|
|
}, args);
|
|
|
|
EqualAfterDeserialize(args, options);
|
|
}
|
|
}
|
|
}
|