mirror of
https://github.com/Tyrrrz/CliFx.git
synced 2025-10-25 15:19:17 +00:00
Use raw string literals
This commit is contained in:
@@ -13,11 +13,13 @@ public class CommandMustBeAnnotatedAnalyzerSpecs
|
||||
{
|
||||
// Arrange
|
||||
// language=cs
|
||||
const string code = @"
|
||||
const string code =
|
||||
"""
|
||||
public class MyCommand : ICommand
|
||||
{
|
||||
public ValueTask ExecuteAsync(IConsole console) => default;
|
||||
}";
|
||||
}
|
||||
""";
|
||||
|
||||
// Act & assert
|
||||
Analyzer.Should().ProduceDiagnostics(code);
|
||||
@@ -28,12 +30,14 @@ public class MyCommand : ICommand
|
||||
{
|
||||
// Arrange
|
||||
// language=cs
|
||||
const string code = @"
|
||||
const string code =
|
||||
"""
|
||||
[Command]
|
||||
public abstract class MyCommand : ICommand
|
||||
{
|
||||
public ValueTask ExecuteAsync(IConsole console) => default;
|
||||
}";
|
||||
}
|
||||
""";
|
||||
|
||||
// Act & assert
|
||||
Analyzer.Should().NotProduceDiagnostics(code);
|
||||
@@ -44,11 +48,13 @@ public abstract class MyCommand : ICommand
|
||||
{
|
||||
// Arrange
|
||||
// language=cs
|
||||
const string code = @"
|
||||
const string code =
|
||||
"""
|
||||
public abstract class MyCommand : ICommand
|
||||
{
|
||||
public ValueTask ExecuteAsync(IConsole console) => default;
|
||||
}";
|
||||
}
|
||||
""";
|
||||
|
||||
// Act & assert
|
||||
Analyzer.Should().NotProduceDiagnostics(code);
|
||||
@@ -59,11 +65,13 @@ public abstract class MyCommand : ICommand
|
||||
{
|
||||
// Arrange
|
||||
// language=cs
|
||||
const string code = @"
|
||||
const string code =
|
||||
"""
|
||||
public class Foo
|
||||
{
|
||||
public int Bar { get; set; } = 5;
|
||||
}";
|
||||
}
|
||||
""";
|
||||
|
||||
// Act & assert
|
||||
Analyzer.Should().NotProduceDiagnostics(code);
|
||||
|
||||
@@ -13,12 +13,14 @@ public class CommandMustImplementInterfaceAnalyzerSpecs
|
||||
{
|
||||
// Arrange
|
||||
// language=cs
|
||||
const string code = @"
|
||||
const string code =
|
||||
"""
|
||||
[Command]
|
||||
public class MyCommand
|
||||
{
|
||||
public ValueTask ExecuteAsync(IConsole console) => default;
|
||||
}";
|
||||
}
|
||||
""";
|
||||
|
||||
// Act & assert
|
||||
Analyzer.Should().ProduceDiagnostics(code);
|
||||
@@ -29,12 +31,14 @@ public class MyCommand
|
||||
{
|
||||
// Arrange
|
||||
// language=cs
|
||||
const string code = @"
|
||||
const string code =
|
||||
"""
|
||||
[Command]
|
||||
public class MyCommand : ICommand
|
||||
{
|
||||
public ValueTask ExecuteAsync(IConsole console) => default;
|
||||
}";
|
||||
}
|
||||
""";
|
||||
|
||||
// Act & assert
|
||||
Analyzer.Should().NotProduceDiagnostics(code);
|
||||
@@ -45,11 +49,13 @@ public class MyCommand : ICommand
|
||||
{
|
||||
// Arrange
|
||||
// language=cs
|
||||
const string code = @"
|
||||
const string code =
|
||||
"""
|
||||
public class Foo
|
||||
{
|
||||
public int Bar { get; set; } = 5;
|
||||
}";
|
||||
}
|
||||
""";
|
||||
|
||||
// Act & assert
|
||||
Analyzer.Should().NotProduceDiagnostics(code);
|
||||
|
||||
@@ -13,12 +13,14 @@ public class OptionMustBeInsideCommandAnalyzerSpecs
|
||||
{
|
||||
// Arrange
|
||||
// language=cs
|
||||
const string code = @"
|
||||
const string code =
|
||||
"""
|
||||
public class MyClass
|
||||
{
|
||||
[CommandOption(""foo"")]
|
||||
[CommandOption("foo")]
|
||||
public string Foo { get; set; }
|
||||
}";
|
||||
}
|
||||
""";
|
||||
|
||||
// Act & assert
|
||||
Analyzer.Should().ProduceDiagnostics(code);
|
||||
@@ -29,15 +31,17 @@ public class MyClass
|
||||
{
|
||||
// Arrange
|
||||
// language=cs
|
||||
const string code = @"
|
||||
const string code =
|
||||
"""
|
||||
[Command]
|
||||
public class MyCommand : ICommand
|
||||
{
|
||||
[CommandOption(""foo"")]
|
||||
[CommandOption("foo")]
|
||||
public string Foo { get; set; }
|
||||
|
||||
public ValueTask ExecuteAsync(IConsole console) => default;
|
||||
}";
|
||||
}
|
||||
""";
|
||||
|
||||
// Act & assert
|
||||
Analyzer.Should().NotProduceDiagnostics(code);
|
||||
@@ -48,12 +52,14 @@ public class MyCommand : ICommand
|
||||
{
|
||||
// Arrange
|
||||
// language=cs
|
||||
const string code = @"
|
||||
const string code =
|
||||
"""
|
||||
public abstract class MyCommand
|
||||
{
|
||||
[CommandOption(""foo"")]
|
||||
[CommandOption("foo")]
|
||||
public string Foo { get; set; }
|
||||
}";
|
||||
}
|
||||
""";
|
||||
|
||||
// Act & assert
|
||||
Analyzer.Should().NotProduceDiagnostics(code);
|
||||
@@ -64,14 +70,16 @@ public abstract class MyCommand
|
||||
{
|
||||
// Arrange
|
||||
// language=cs
|
||||
const string code = @"
|
||||
const string code =
|
||||
"""
|
||||
[Command]
|
||||
public class MyCommand : ICommand
|
||||
{
|
||||
public string Foo { get; set; }
|
||||
|
||||
public ValueTask ExecuteAsync(IConsole console) => default;
|
||||
}";
|
||||
}
|
||||
""";
|
||||
|
||||
// Act & assert
|
||||
Analyzer.Should().NotProduceDiagnostics(code);
|
||||
|
||||
@@ -13,7 +13,8 @@ public class OptionMustHaveNameOrShortNameAnalyzerSpecs
|
||||
{
|
||||
// Arrange
|
||||
// language=cs
|
||||
const string code = @"
|
||||
const string code =
|
||||
"""
|
||||
[Command]
|
||||
public class MyCommand : ICommand
|
||||
{
|
||||
@@ -21,7 +22,8 @@ public class MyCommand : ICommand
|
||||
public string Foo { get; set; }
|
||||
|
||||
public ValueTask ExecuteAsync(IConsole console) => default;
|
||||
}";
|
||||
}
|
||||
""";
|
||||
|
||||
// Act & assert
|
||||
Analyzer.Should().ProduceDiagnostics(code);
|
||||
@@ -32,15 +34,17 @@ public class MyCommand : ICommand
|
||||
{
|
||||
// Arrange
|
||||
// language=cs
|
||||
const string code = @"
|
||||
const string code =
|
||||
"""
|
||||
[Command]
|
||||
public class MyCommand : ICommand
|
||||
{
|
||||
[CommandOption(""foo"")]
|
||||
[CommandOption("foo")]
|
||||
public string Foo { get; set; }
|
||||
|
||||
public ValueTask ExecuteAsync(IConsole console) => default;
|
||||
}";
|
||||
}
|
||||
""";
|
||||
|
||||
// Act & assert
|
||||
Analyzer.Should().NotProduceDiagnostics(code);
|
||||
@@ -51,7 +55,8 @@ public class MyCommand : ICommand
|
||||
{
|
||||
// Arrange
|
||||
// language=cs
|
||||
const string code = @"
|
||||
const string code =
|
||||
"""
|
||||
[Command]
|
||||
public class MyCommand : ICommand
|
||||
{
|
||||
@@ -59,7 +64,8 @@ public class MyCommand : ICommand
|
||||
public string Foo { get; set; }
|
||||
|
||||
public ValueTask ExecuteAsync(IConsole console) => default;
|
||||
}";
|
||||
}
|
||||
""";
|
||||
|
||||
// Act & assert
|
||||
Analyzer.Should().NotProduceDiagnostics(code);
|
||||
@@ -70,14 +76,16 @@ public class MyCommand : ICommand
|
||||
{
|
||||
// Arrange
|
||||
// language=cs
|
||||
const string code = @"
|
||||
const string code =
|
||||
"""
|
||||
[Command]
|
||||
public class MyCommand : ICommand
|
||||
{
|
||||
public string Foo { get; set; }
|
||||
|
||||
public ValueTask ExecuteAsync(IConsole console) => default;
|
||||
}";
|
||||
}
|
||||
""";
|
||||
|
||||
// Act & assert
|
||||
Analyzer.Should().NotProduceDiagnostics(code);
|
||||
|
||||
@@ -13,18 +13,20 @@ public class OptionMustHaveUniqueNameAnalyzerSpecs
|
||||
{
|
||||
// Arrange
|
||||
// language=cs
|
||||
const string code = @"
|
||||
const string code =
|
||||
"""
|
||||
[Command]
|
||||
public class MyCommand : ICommand
|
||||
{
|
||||
[CommandOption(""foo"")]
|
||||
[CommandOption("foo")]
|
||||
public string Foo { get; set; }
|
||||
|
||||
[CommandOption(""foo"")]
|
||||
[CommandOption("foo")]
|
||||
public string Bar { get; set; }
|
||||
|
||||
public ValueTask ExecuteAsync(IConsole console) => default;
|
||||
}";
|
||||
}
|
||||
""";
|
||||
|
||||
// Act & assert
|
||||
Analyzer.Should().ProduceDiagnostics(code);
|
||||
@@ -35,18 +37,20 @@ public class MyCommand : ICommand
|
||||
{
|
||||
// Arrange
|
||||
// language=cs
|
||||
const string code = @"
|
||||
const string code =
|
||||
"""
|
||||
[Command]
|
||||
public class MyCommand : ICommand
|
||||
{
|
||||
[CommandOption(""foo"")]
|
||||
[CommandOption("foo")]
|
||||
public string Foo { get; set; }
|
||||
|
||||
[CommandOption(""bar"")]
|
||||
[CommandOption("bar")]
|
||||
public string Bar { get; set; }
|
||||
|
||||
public ValueTask ExecuteAsync(IConsole console) => default;
|
||||
}";
|
||||
}
|
||||
""";
|
||||
|
||||
// Act & assert
|
||||
Analyzer.Should().NotProduceDiagnostics(code);
|
||||
@@ -57,7 +61,8 @@ public class MyCommand : ICommand
|
||||
{
|
||||
// Arrange
|
||||
// language=cs
|
||||
const string code = @"
|
||||
const string code =
|
||||
"""
|
||||
[Command]
|
||||
public class MyCommand : ICommand
|
||||
{
|
||||
@@ -65,7 +70,8 @@ public class MyCommand : ICommand
|
||||
public string Foo { get; set; }
|
||||
|
||||
public ValueTask ExecuteAsync(IConsole console) => default;
|
||||
}";
|
||||
}
|
||||
""";
|
||||
|
||||
// Act & assert
|
||||
Analyzer.Should().NotProduceDiagnostics(code);
|
||||
@@ -76,14 +82,16 @@ public class MyCommand : ICommand
|
||||
{
|
||||
// Arrange
|
||||
// language=cs
|
||||
const string code = @"
|
||||
const string code =
|
||||
"""
|
||||
[Command]
|
||||
public class MyCommand : ICommand
|
||||
{
|
||||
public string Foo { get; set; }
|
||||
|
||||
public ValueTask ExecuteAsync(IConsole console) => default;
|
||||
}";
|
||||
}
|
||||
""";
|
||||
|
||||
// Act & assert
|
||||
Analyzer.Should().NotProduceDiagnostics(code);
|
||||
|
||||
@@ -13,7 +13,8 @@ public class OptionMustHaveUniqueShortNameAnalyzerSpecs
|
||||
{
|
||||
// Arrange
|
||||
// language=cs
|
||||
const string code = @"
|
||||
const string code =
|
||||
"""
|
||||
[Command]
|
||||
public class MyCommand : ICommand
|
||||
{
|
||||
@@ -24,7 +25,8 @@ public class MyCommand : ICommand
|
||||
public string Bar { get; set; }
|
||||
|
||||
public ValueTask ExecuteAsync(IConsole console) => default;
|
||||
}";
|
||||
}
|
||||
""";
|
||||
|
||||
// Act & assert
|
||||
Analyzer.Should().ProduceDiagnostics(code);
|
||||
@@ -35,7 +37,8 @@ public class MyCommand : ICommand
|
||||
{
|
||||
// Arrange
|
||||
// language=cs
|
||||
const string code = @"
|
||||
const string code =
|
||||
"""
|
||||
[Command]
|
||||
public class MyCommand : ICommand
|
||||
{
|
||||
@@ -46,7 +49,8 @@ public class MyCommand : ICommand
|
||||
public string Bar { get; set; }
|
||||
|
||||
public ValueTask ExecuteAsync(IConsole console) => default;
|
||||
}";
|
||||
}
|
||||
""";
|
||||
|
||||
// Act & assert
|
||||
Analyzer.Should().NotProduceDiagnostics(code);
|
||||
@@ -57,7 +61,8 @@ public class MyCommand : ICommand
|
||||
{
|
||||
// Arrange
|
||||
// language=cs
|
||||
const string code = @"
|
||||
const string code =
|
||||
"""
|
||||
[Command]
|
||||
public class MyCommand : ICommand
|
||||
{
|
||||
@@ -68,7 +73,8 @@ public class MyCommand : ICommand
|
||||
public string Bar { get; set; }
|
||||
|
||||
public ValueTask ExecuteAsync(IConsole console) => default;
|
||||
}";
|
||||
}
|
||||
""";
|
||||
|
||||
// Act & assert
|
||||
Analyzer.Should().NotProduceDiagnostics(code);
|
||||
@@ -79,15 +85,17 @@ public class MyCommand : ICommand
|
||||
{
|
||||
// Arrange
|
||||
// language=cs
|
||||
const string code = @"
|
||||
const string code =
|
||||
"""
|
||||
[Command]
|
||||
public class MyCommand : ICommand
|
||||
{
|
||||
[CommandOption(""foo"")]
|
||||
[CommandOption("foo")]
|
||||
public string Foo { get; set; }
|
||||
|
||||
public ValueTask ExecuteAsync(IConsole console) => default;
|
||||
}";
|
||||
}
|
||||
""";
|
||||
|
||||
// Act & assert
|
||||
Analyzer.Should().NotProduceDiagnostics(code);
|
||||
@@ -98,14 +106,16 @@ public class MyCommand : ICommand
|
||||
{
|
||||
// Arrange
|
||||
// language=cs
|
||||
const string code = @"
|
||||
const string code =
|
||||
"""
|
||||
[Command]
|
||||
public class MyCommand : ICommand
|
||||
{
|
||||
public string Foo { get; set; }
|
||||
|
||||
public ValueTask ExecuteAsync(IConsole console) => default;
|
||||
}";
|
||||
}
|
||||
""";
|
||||
|
||||
// Act & assert
|
||||
Analyzer.Should().NotProduceDiagnostics(code);
|
||||
|
||||
@@ -13,7 +13,8 @@ public class OptionMustHaveValidConverterAnalyzerSpecs
|
||||
{
|
||||
// Arrange
|
||||
// language=cs
|
||||
const string code = @"
|
||||
const string code =
|
||||
"""
|
||||
public class MyConverter
|
||||
{
|
||||
public string Convert(string rawValue) => rawValue;
|
||||
@@ -22,11 +23,12 @@ public class MyConverter
|
||||
[Command]
|
||||
public class MyCommand : ICommand
|
||||
{
|
||||
[CommandOption(""foo"", Converter = typeof(MyConverter))]
|
||||
[CommandOption("foo", Converter = typeof(MyConverter))]
|
||||
public string Foo { get; set; }
|
||||
|
||||
public ValueTask ExecuteAsync(IConsole console) => default;
|
||||
}";
|
||||
}
|
||||
""";
|
||||
|
||||
// Act & assert
|
||||
Analyzer.Should().ProduceDiagnostics(code);
|
||||
@@ -37,7 +39,8 @@ public class MyCommand : ICommand
|
||||
{
|
||||
// Arrange
|
||||
// language=cs
|
||||
const string code = @"
|
||||
const string code =
|
||||
"""
|
||||
public class MyConverter : BindingConverter<int>
|
||||
{
|
||||
public override int Convert(string rawValue) => 42;
|
||||
@@ -46,11 +49,12 @@ public class MyConverter : BindingConverter<int>
|
||||
[Command]
|
||||
public class MyCommand : ICommand
|
||||
{
|
||||
[CommandOption(""foo"", Converter = typeof(MyConverter))]
|
||||
[CommandOption("foo", Converter = typeof(MyConverter))]
|
||||
public string Foo { get; set; }
|
||||
|
||||
public ValueTask ExecuteAsync(IConsole console) => default;
|
||||
}";
|
||||
}
|
||||
""";
|
||||
|
||||
// Act & assert
|
||||
Analyzer.Should().ProduceDiagnostics(code);
|
||||
@@ -61,7 +65,8 @@ public class MyCommand : ICommand
|
||||
{
|
||||
// Arrange
|
||||
// language=cs
|
||||
const string code = @"
|
||||
const string code =
|
||||
"""
|
||||
public class MyConverter : BindingConverter<string>
|
||||
{
|
||||
public override string Convert(string rawValue) => rawValue;
|
||||
@@ -70,11 +75,12 @@ public class MyConverter : BindingConverter<string>
|
||||
[Command]
|
||||
public class MyCommand : ICommand
|
||||
{
|
||||
[CommandOption(""foo"", Converter = typeof(MyConverter))]
|
||||
[CommandOption("foo", Converter = typeof(MyConverter))]
|
||||
public string Foo { get; set; }
|
||||
|
||||
public ValueTask ExecuteAsync(IConsole console) => default;
|
||||
}";
|
||||
}
|
||||
""";
|
||||
|
||||
// Act & assert
|
||||
Analyzer.Should().NotProduceDiagnostics(code);
|
||||
@@ -85,7 +91,8 @@ public class MyCommand : ICommand
|
||||
{
|
||||
// Arrange
|
||||
// language=cs
|
||||
const string code = @"
|
||||
const string code =
|
||||
"""
|
||||
public class MyConverter : BindingConverter<int>
|
||||
{
|
||||
public override int Convert(string rawValue) => 42;
|
||||
@@ -94,11 +101,12 @@ public class MyConverter : BindingConverter<int>
|
||||
[Command]
|
||||
public class MyCommand : ICommand
|
||||
{
|
||||
[CommandOption(""foo"", Converter = typeof(MyConverter))]
|
||||
[CommandOption("foo", Converter = typeof(MyConverter))]
|
||||
public int? Foo { get; set; }
|
||||
|
||||
public ValueTask ExecuteAsync(IConsole console) => default;
|
||||
}";
|
||||
}
|
||||
""";
|
||||
|
||||
// Act & assert
|
||||
Analyzer.Should().NotProduceDiagnostics(code);
|
||||
@@ -109,7 +117,8 @@ public class MyCommand : ICommand
|
||||
{
|
||||
// Arrange
|
||||
// language=cs
|
||||
const string code = @"
|
||||
const string code =
|
||||
"""
|
||||
public class MyConverter : BindingConverter<string>
|
||||
{
|
||||
public override string Convert(string rawValue) => rawValue;
|
||||
@@ -118,11 +127,12 @@ public class MyConverter : BindingConverter<string>
|
||||
[Command]
|
||||
public class MyCommand : ICommand
|
||||
{
|
||||
[CommandOption(""foo"", Converter = typeof(MyConverter))]
|
||||
[CommandOption("foo", Converter = typeof(MyConverter))]
|
||||
public IReadOnlyList<string> Foo { get; set; }
|
||||
|
||||
public ValueTask ExecuteAsync(IConsole console) => default;
|
||||
}";
|
||||
}
|
||||
""";
|
||||
|
||||
// Act & assert
|
||||
Analyzer.Should().NotProduceDiagnostics(code);
|
||||
@@ -133,15 +143,17 @@ public class MyCommand : ICommand
|
||||
{
|
||||
// Arrange
|
||||
// language=cs
|
||||
const string code = @"
|
||||
const string code =
|
||||
"""
|
||||
[Command]
|
||||
public class MyCommand : ICommand
|
||||
{
|
||||
[CommandOption(""foo"")]
|
||||
[CommandOption("foo")]
|
||||
public string Foo { get; set; }
|
||||
|
||||
public ValueTask ExecuteAsync(IConsole console) => default;
|
||||
}";
|
||||
}
|
||||
""";
|
||||
|
||||
// Act & assert
|
||||
Analyzer.Should().NotProduceDiagnostics(code);
|
||||
@@ -152,14 +164,16 @@ public class MyCommand : ICommand
|
||||
{
|
||||
// Arrange
|
||||
// language=cs
|
||||
const string code = @"
|
||||
const string code =
|
||||
"""
|
||||
[Command]
|
||||
public class MyCommand : ICommand
|
||||
{
|
||||
public string Foo { get; set; }
|
||||
|
||||
public ValueTask ExecuteAsync(IConsole console) => default;
|
||||
}";
|
||||
}
|
||||
""";
|
||||
|
||||
// Act & assert
|
||||
Analyzer.Should().NotProduceDiagnostics(code);
|
||||
|
||||
@@ -13,15 +13,17 @@ public class OptionMustHaveValidNameAnalyzerSpecs
|
||||
{
|
||||
// Arrange
|
||||
// language=cs
|
||||
const string code = @"
|
||||
const string code =
|
||||
"""
|
||||
[Command]
|
||||
public class MyCommand : ICommand
|
||||
{
|
||||
[CommandOption(""f"")]
|
||||
[CommandOption("f")]
|
||||
public string Foo { get; set; }
|
||||
|
||||
public ValueTask ExecuteAsync(IConsole console) => default;
|
||||
}";
|
||||
}
|
||||
""";
|
||||
|
||||
// Act & assert
|
||||
Analyzer.Should().ProduceDiagnostics(code);
|
||||
@@ -32,15 +34,17 @@ public class MyCommand : ICommand
|
||||
{
|
||||
// Arrange
|
||||
// language=cs
|
||||
const string code = @"
|
||||
const string code =
|
||||
"""
|
||||
[Command]
|
||||
public class MyCommand : ICommand
|
||||
{
|
||||
[CommandOption(""1foo"")]
|
||||
[CommandOption("1foo")]
|
||||
public string Foo { get; set; }
|
||||
|
||||
public ValueTask ExecuteAsync(IConsole console) => default;
|
||||
}";
|
||||
}
|
||||
""";
|
||||
|
||||
// Act & assert
|
||||
Analyzer.Should().ProduceDiagnostics(code);
|
||||
@@ -51,15 +55,17 @@ public class MyCommand : ICommand
|
||||
{
|
||||
// Arrange
|
||||
// language=cs
|
||||
const string code = @"
|
||||
const string code =
|
||||
"""
|
||||
[Command]
|
||||
public class MyCommand : ICommand
|
||||
{
|
||||
[CommandOption(""foo"")]
|
||||
[CommandOption("foo")]
|
||||
public string Foo { get; set; }
|
||||
|
||||
public ValueTask ExecuteAsync(IConsole console) => default;
|
||||
}";
|
||||
}
|
||||
""";
|
||||
|
||||
// Act & assert
|
||||
Analyzer.Should().NotProduceDiagnostics(code);
|
||||
@@ -70,7 +76,8 @@ public class MyCommand : ICommand
|
||||
{
|
||||
// Arrange
|
||||
// language=cs
|
||||
const string code = @"
|
||||
const string code =
|
||||
"""
|
||||
[Command]
|
||||
public class MyCommand : ICommand
|
||||
{
|
||||
@@ -78,7 +85,8 @@ public class MyCommand : ICommand
|
||||
public string Foo { get; set; }
|
||||
|
||||
public ValueTask ExecuteAsync(IConsole console) => default;
|
||||
}";
|
||||
}
|
||||
""";
|
||||
|
||||
// Act & assert
|
||||
Analyzer.Should().NotProduceDiagnostics(code);
|
||||
@@ -89,14 +97,16 @@ public class MyCommand : ICommand
|
||||
{
|
||||
// Arrange
|
||||
// language=cs
|
||||
const string code = @"
|
||||
const string code =
|
||||
"""
|
||||
[Command]
|
||||
public class MyCommand : ICommand
|
||||
{
|
||||
public string Foo { get; set; }
|
||||
|
||||
public ValueTask ExecuteAsync(IConsole console) => default;
|
||||
}";
|
||||
}
|
||||
""";
|
||||
|
||||
// Act & assert
|
||||
Analyzer.Should().NotProduceDiagnostics(code);
|
||||
|
||||
@@ -13,7 +13,8 @@ public class OptionMustHaveValidShortNameAnalyzerSpecs
|
||||
{
|
||||
// Arrange
|
||||
// language=cs
|
||||
const string code = @"
|
||||
const string code =
|
||||
"""
|
||||
[Command]
|
||||
public class MyCommand : ICommand
|
||||
{
|
||||
@@ -21,7 +22,8 @@ public class MyCommand : ICommand
|
||||
public string Foo { get; set; }
|
||||
|
||||
public ValueTask ExecuteAsync(IConsole console) => default;
|
||||
}";
|
||||
}
|
||||
""";
|
||||
|
||||
// Act & assert
|
||||
Analyzer.Should().ProduceDiagnostics(code);
|
||||
@@ -32,7 +34,8 @@ public class MyCommand : ICommand
|
||||
{
|
||||
// Arrange
|
||||
// language=cs
|
||||
const string code = @"
|
||||
const string code =
|
||||
"""
|
||||
[Command]
|
||||
public class MyCommand : ICommand
|
||||
{
|
||||
@@ -40,7 +43,8 @@ public class MyCommand : ICommand
|
||||
public string Foo { get; set; }
|
||||
|
||||
public ValueTask ExecuteAsync(IConsole console) => default;
|
||||
}";
|
||||
}
|
||||
""";
|
||||
|
||||
// Act & assert
|
||||
Analyzer.Should().NotProduceDiagnostics(code);
|
||||
@@ -51,15 +55,17 @@ public class MyCommand : ICommand
|
||||
{
|
||||
// Arrange
|
||||
// language=cs
|
||||
const string code = @"
|
||||
const string code =
|
||||
"""
|
||||
[Command]
|
||||
public class MyCommand : ICommand
|
||||
{
|
||||
[CommandOption(""foo"")]
|
||||
[CommandOption("foo")]
|
||||
public string Foo { get; set; }
|
||||
|
||||
public ValueTask ExecuteAsync(IConsole console) => default;
|
||||
}";
|
||||
}
|
||||
""";
|
||||
|
||||
// Act & assert
|
||||
Analyzer.Should().NotProduceDiagnostics(code);
|
||||
@@ -70,14 +76,16 @@ public class MyCommand : ICommand
|
||||
{
|
||||
// Arrange
|
||||
// language=cs
|
||||
const string code = @"
|
||||
const string code =
|
||||
"""
|
||||
[Command]
|
||||
public class MyCommand : ICommand
|
||||
{
|
||||
public string Foo { get; set; }
|
||||
|
||||
public ValueTask ExecuteAsync(IConsole console) => default;
|
||||
}";
|
||||
}
|
||||
""";
|
||||
|
||||
// Act & assert
|
||||
Analyzer.Should().NotProduceDiagnostics(code);
|
||||
|
||||
@@ -13,7 +13,8 @@ public class OptionMustHaveValidValidatorsAnalyzerSpecs
|
||||
{
|
||||
// Arrange
|
||||
// language=cs
|
||||
const string code = @"
|
||||
const string code =
|
||||
"""
|
||||
public class MyValidator
|
||||
{
|
||||
public void Validate(string value) {}
|
||||
@@ -22,11 +23,12 @@ public class MyValidator
|
||||
[Command]
|
||||
public class MyCommand : ICommand
|
||||
{
|
||||
[CommandOption(""foo"", Validators = new[] {typeof(MyValidator)})]
|
||||
[CommandOption("foo", Validators = new[] {typeof(MyValidator)})]
|
||||
public string Foo { get; set; }
|
||||
|
||||
public ValueTask ExecuteAsync(IConsole console) => default;
|
||||
}";
|
||||
}
|
||||
""";
|
||||
|
||||
// Act & assert
|
||||
Analyzer.Should().ProduceDiagnostics(code);
|
||||
@@ -37,7 +39,8 @@ public class MyCommand : ICommand
|
||||
{
|
||||
// Arrange
|
||||
// language=cs
|
||||
const string code = @"
|
||||
const string code =
|
||||
"""
|
||||
public class MyValidator : BindingValidator<int>
|
||||
{
|
||||
public override BindingValidationError Validate(int value) => Ok();
|
||||
@@ -46,11 +49,12 @@ public class MyValidator : BindingValidator<int>
|
||||
[Command]
|
||||
public class MyCommand : ICommand
|
||||
{
|
||||
[CommandOption(""foo"", Validators = new[] {typeof(MyValidator)})]
|
||||
[CommandOption("foo", Validators = new[] {typeof(MyValidator)})]
|
||||
public string Foo { get; set; }
|
||||
|
||||
public ValueTask ExecuteAsync(IConsole console) => default;
|
||||
}";
|
||||
}
|
||||
""";
|
||||
|
||||
// Act & assert
|
||||
Analyzer.Should().ProduceDiagnostics(code);
|
||||
@@ -61,7 +65,8 @@ public class MyCommand : ICommand
|
||||
{
|
||||
// Arrange
|
||||
// language=cs
|
||||
const string code = @"
|
||||
const string code =
|
||||
"""
|
||||
public class MyValidator : BindingValidator<string>
|
||||
{
|
||||
public override BindingValidationError Validate(string value) => Ok();
|
||||
@@ -70,11 +75,12 @@ public class MyValidator : BindingValidator<string>
|
||||
[Command]
|
||||
public class MyCommand : ICommand
|
||||
{
|
||||
[CommandOption(""foo"", Validators = new[] {typeof(MyValidator)})]
|
||||
[CommandOption("foo", Validators = new[] {typeof(MyValidator)})]
|
||||
public string Foo { get; set; }
|
||||
|
||||
public ValueTask ExecuteAsync(IConsole console) => default;
|
||||
}";
|
||||
}
|
||||
""";
|
||||
|
||||
// Act & assert
|
||||
Analyzer.Should().NotProduceDiagnostics(code);
|
||||
@@ -85,15 +91,17 @@ public class MyCommand : ICommand
|
||||
{
|
||||
// Arrange
|
||||
// language=cs
|
||||
const string code = @"
|
||||
const string code =
|
||||
"""
|
||||
[Command]
|
||||
public class MyCommand : ICommand
|
||||
{
|
||||
[CommandOption(""foo"")]
|
||||
[CommandOption("foo")]
|
||||
public string Foo { get; set; }
|
||||
|
||||
public ValueTask ExecuteAsync(IConsole console) => default;
|
||||
}";
|
||||
}
|
||||
""";
|
||||
|
||||
// Act & assert
|
||||
Analyzer.Should().NotProduceDiagnostics(code);
|
||||
@@ -104,14 +112,16 @@ public class MyCommand : ICommand
|
||||
{
|
||||
// Arrange
|
||||
// language=cs
|
||||
const string code = @"
|
||||
const string code =
|
||||
"""
|
||||
[Command]
|
||||
public class MyCommand : ICommand
|
||||
{
|
||||
public string Foo { get; set; }
|
||||
|
||||
public ValueTask ExecuteAsync(IConsole console) => default;
|
||||
}";
|
||||
}
|
||||
""";
|
||||
|
||||
// Act & assert
|
||||
Analyzer.Should().NotProduceDiagnostics(code);
|
||||
|
||||
@@ -13,12 +13,14 @@ public class ParameterMustBeInsideCommandAnalyzerSpecs
|
||||
{
|
||||
// Arrange
|
||||
// language=cs
|
||||
const string code = @"
|
||||
const string code =
|
||||
"""
|
||||
public class MyClass
|
||||
{
|
||||
[CommandParameter(0)]
|
||||
public string Foo { get; set; }
|
||||
}";
|
||||
}
|
||||
""";
|
||||
|
||||
// Act & assert
|
||||
Analyzer.Should().ProduceDiagnostics(code);
|
||||
@@ -29,7 +31,8 @@ public class MyClass
|
||||
{
|
||||
// Arrange
|
||||
// language=cs
|
||||
const string code = @"
|
||||
const string code =
|
||||
"""
|
||||
[Command]
|
||||
public class MyCommand : ICommand
|
||||
{
|
||||
@@ -37,7 +40,8 @@ public class MyCommand : ICommand
|
||||
public string Foo { get; set; }
|
||||
|
||||
public ValueTask ExecuteAsync(IConsole console) => default;
|
||||
}";
|
||||
}
|
||||
""";
|
||||
|
||||
// Act & assert
|
||||
Analyzer.Should().NotProduceDiagnostics(code);
|
||||
@@ -48,12 +52,14 @@ public class MyCommand : ICommand
|
||||
{
|
||||
// Arrange
|
||||
// language=cs
|
||||
const string code = @"
|
||||
const string code =
|
||||
"""
|
||||
public abstract class MyCommand
|
||||
{
|
||||
[CommandParameter(0)]
|
||||
public string Foo { get; set; }
|
||||
}";
|
||||
}
|
||||
""";
|
||||
|
||||
// Act & assert
|
||||
Analyzer.Should().NotProduceDiagnostics(code);
|
||||
@@ -64,14 +70,16 @@ public abstract class MyCommand
|
||||
{
|
||||
// Arrange
|
||||
// language=cs
|
||||
const string code = @"
|
||||
const string code =
|
||||
"""
|
||||
[Command]
|
||||
public class MyCommand : ICommand
|
||||
{
|
||||
public string Foo { get; set; }
|
||||
|
||||
public ValueTask ExecuteAsync(IConsole console) => default;
|
||||
}";
|
||||
}
|
||||
""";
|
||||
|
||||
// Act & assert
|
||||
Analyzer.Should().NotProduceDiagnostics(code);
|
||||
|
||||
@@ -13,18 +13,20 @@ public class ParameterMustBeLastIfNonRequiredAnalyzerSpecs
|
||||
{
|
||||
// Arrange
|
||||
// language=cs
|
||||
const string code = @"
|
||||
const string code =
|
||||
"""
|
||||
[Command]
|
||||
public class MyCommand : ICommand
|
||||
{
|
||||
[CommandParameter(0, Name = ""foo"", IsRequired = false)]
|
||||
[CommandParameter(0, Name = "foo", IsRequired = false)]
|
||||
public string Foo { get; set; }
|
||||
|
||||
[CommandParameter(1, Name = ""bar"")]
|
||||
[CommandParameter(1, Name = "bar")]
|
||||
public string Bar { get; set; }
|
||||
|
||||
public ValueTask ExecuteAsync(IConsole console) => default;
|
||||
}";
|
||||
}
|
||||
""";
|
||||
|
||||
// Act & assert
|
||||
Analyzer.Should().ProduceDiagnostics(code);
|
||||
@@ -35,18 +37,20 @@ public class MyCommand : ICommand
|
||||
{
|
||||
// Arrange
|
||||
// language=cs
|
||||
const string code = @"
|
||||
const string code =
|
||||
"""
|
||||
[Command]
|
||||
public class MyCommand : ICommand
|
||||
{
|
||||
[CommandParameter(0, Name = ""foo"")]
|
||||
[CommandParameter(0, Name = "foo")]
|
||||
public string Foo { get; set; }
|
||||
|
||||
[CommandParameter(1, Name = ""bar"", IsRequired = false)]
|
||||
[CommandParameter(1, Name = "bar", IsRequired = false)]
|
||||
public string Bar { get; set; }
|
||||
|
||||
public ValueTask ExecuteAsync(IConsole console) => default;
|
||||
}";
|
||||
}
|
||||
""";
|
||||
|
||||
// Act & assert
|
||||
Analyzer.Should().NotProduceDiagnostics(code);
|
||||
@@ -57,18 +61,20 @@ public class MyCommand : ICommand
|
||||
{
|
||||
// Arrange
|
||||
// language=cs
|
||||
const string code = @"
|
||||
const string code =
|
||||
"""
|
||||
[Command]
|
||||
public class MyCommand : ICommand
|
||||
{
|
||||
[CommandParameter(0, Name = ""foo"")]
|
||||
[CommandParameter(0, Name = "foo")]
|
||||
public string Foo { get; set; }
|
||||
|
||||
[CommandParameter(1, Name = ""bar"", IsRequired = true)]
|
||||
[CommandParameter(1, Name = "bar", IsRequired = true)]
|
||||
public string Bar { get; set; }
|
||||
|
||||
public ValueTask ExecuteAsync(IConsole console) => default;
|
||||
}";
|
||||
}
|
||||
""";
|
||||
|
||||
// Act & assert
|
||||
Analyzer.Should().NotProduceDiagnostics(code);
|
||||
@@ -79,14 +85,16 @@ public class MyCommand : ICommand
|
||||
{
|
||||
// Arrange
|
||||
// language=cs
|
||||
const string code = @"
|
||||
const string code =
|
||||
"""
|
||||
[Command]
|
||||
public class MyCommand : ICommand
|
||||
{
|
||||
public string Foo { get; set; }
|
||||
|
||||
public ValueTask ExecuteAsync(IConsole console) => default;
|
||||
}";
|
||||
}
|
||||
""";
|
||||
|
||||
// Act & assert
|
||||
Analyzer.Should().NotProduceDiagnostics(code);
|
||||
|
||||
@@ -13,7 +13,8 @@ public class ParameterMustBeLastIfNonScalarAnalyzerSpecs
|
||||
{
|
||||
// Arrange
|
||||
// language=cs
|
||||
const string code = @"
|
||||
const string code =
|
||||
"""
|
||||
[Command]
|
||||
public class MyCommand : ICommand
|
||||
{
|
||||
@@ -24,7 +25,8 @@ public class MyCommand : ICommand
|
||||
public string Bar { get; set; }
|
||||
|
||||
public ValueTask ExecuteAsync(IConsole console) => default;
|
||||
}";
|
||||
}
|
||||
""";
|
||||
|
||||
// Act & assert
|
||||
Analyzer.Should().ProduceDiagnostics(code);
|
||||
@@ -35,7 +37,8 @@ public class MyCommand : ICommand
|
||||
{
|
||||
// Arrange
|
||||
// language=cs
|
||||
const string code = @"
|
||||
const string code =
|
||||
"""
|
||||
[Command]
|
||||
public class MyCommand : ICommand
|
||||
{
|
||||
@@ -46,7 +49,8 @@ public class MyCommand : ICommand
|
||||
public string[] Bar { get; set; }
|
||||
|
||||
public ValueTask ExecuteAsync(IConsole console) => default;
|
||||
}";
|
||||
}
|
||||
""";
|
||||
|
||||
// Act & assert
|
||||
Analyzer.Should().NotProduceDiagnostics(code);
|
||||
@@ -57,7 +61,8 @@ public class MyCommand : ICommand
|
||||
{
|
||||
// Arrange
|
||||
// language=cs
|
||||
const string code = @"
|
||||
const string code =
|
||||
"""
|
||||
[Command]
|
||||
public class MyCommand : ICommand
|
||||
{
|
||||
@@ -68,7 +73,8 @@ public class MyCommand : ICommand
|
||||
public string Bar { get; set; }
|
||||
|
||||
public ValueTask ExecuteAsync(IConsole console) => default;
|
||||
}";
|
||||
}
|
||||
""";
|
||||
|
||||
// Act & assert
|
||||
Analyzer.Should().NotProduceDiagnostics(code);
|
||||
@@ -79,14 +85,16 @@ public class MyCommand : ICommand
|
||||
{
|
||||
// Arrange
|
||||
// language=cs
|
||||
const string code = @"
|
||||
const string code =
|
||||
"""
|
||||
[Command]
|
||||
public class MyCommand : ICommand
|
||||
{
|
||||
public string Foo { get; set; }
|
||||
|
||||
public ValueTask ExecuteAsync(IConsole console) => default;
|
||||
}";
|
||||
}
|
||||
""";
|
||||
|
||||
// Act & assert
|
||||
Analyzer.Should().NotProduceDiagnostics(code);
|
||||
|
||||
@@ -13,7 +13,8 @@ public class ParameterMustBeSingleIfNonRequiredAnalyzerSpecs
|
||||
{
|
||||
// Arrange
|
||||
// language=cs
|
||||
const string code = @"
|
||||
const string code =
|
||||
"""
|
||||
[Command]
|
||||
public class MyCommand : ICommand
|
||||
{
|
||||
@@ -24,7 +25,8 @@ public class MyCommand : ICommand
|
||||
public string Bar { get; set; }
|
||||
|
||||
public ValueTask ExecuteAsync(IConsole console) => default;
|
||||
}";
|
||||
}
|
||||
""";
|
||||
|
||||
// Act & assert
|
||||
Analyzer.Should().ProduceDiagnostics(code);
|
||||
@@ -35,7 +37,8 @@ public class MyCommand : ICommand
|
||||
{
|
||||
// Arrange
|
||||
// language=cs
|
||||
const string code = @"
|
||||
const string code =
|
||||
"""
|
||||
[Command]
|
||||
public class MyCommand : ICommand
|
||||
{
|
||||
@@ -46,7 +49,8 @@ public class MyCommand : ICommand
|
||||
public string Bar { get; set; }
|
||||
|
||||
public ValueTask ExecuteAsync(IConsole console) => default;
|
||||
}";
|
||||
}
|
||||
""";
|
||||
|
||||
// Act & assert
|
||||
Analyzer.Should().NotProduceDiagnostics(code);
|
||||
@@ -57,7 +61,8 @@ public class MyCommand : ICommand
|
||||
{
|
||||
// Arrange
|
||||
// language=cs
|
||||
const string code = @"
|
||||
const string code =
|
||||
"""
|
||||
[Command]
|
||||
public class MyCommand : ICommand
|
||||
{
|
||||
@@ -68,7 +73,8 @@ public class MyCommand : ICommand
|
||||
public string Bar { get; set; }
|
||||
|
||||
public ValueTask ExecuteAsync(IConsole console) => default;
|
||||
}";
|
||||
}
|
||||
""";
|
||||
|
||||
// Act & assert
|
||||
Analyzer.Should().NotProduceDiagnostics(code);
|
||||
@@ -79,14 +85,16 @@ public class MyCommand : ICommand
|
||||
{
|
||||
// Arrange
|
||||
// language=cs
|
||||
const string code = @"
|
||||
const string code =
|
||||
"""
|
||||
[Command]
|
||||
public class MyCommand : ICommand
|
||||
{
|
||||
public string Foo { get; set; }
|
||||
|
||||
public ValueTask ExecuteAsync(IConsole console) => default;
|
||||
}";
|
||||
}
|
||||
""";
|
||||
|
||||
// Act & assert
|
||||
Analyzer.Should().NotProduceDiagnostics(code);
|
||||
|
||||
@@ -13,7 +13,8 @@ public class ParameterMustBeSingleIfNonScalarAnalyzerSpecs
|
||||
{
|
||||
// Arrange
|
||||
// language=cs
|
||||
const string code = @"
|
||||
const string code =
|
||||
"""
|
||||
[Command]
|
||||
public class MyCommand : ICommand
|
||||
{
|
||||
@@ -24,7 +25,8 @@ public class MyCommand : ICommand
|
||||
public string[] Bar { get; set; }
|
||||
|
||||
public ValueTask ExecuteAsync(IConsole console) => default;
|
||||
}";
|
||||
}
|
||||
""";
|
||||
|
||||
// Act & assert
|
||||
Analyzer.Should().ProduceDiagnostics(code);
|
||||
@@ -35,7 +37,8 @@ public class MyCommand : ICommand
|
||||
{
|
||||
// Arrange
|
||||
// language=cs
|
||||
const string code = @"
|
||||
const string code =
|
||||
"""
|
||||
[Command]
|
||||
public class MyCommand : ICommand
|
||||
{
|
||||
@@ -46,7 +49,8 @@ public class MyCommand : ICommand
|
||||
public string[] Bar { get; set; }
|
||||
|
||||
public ValueTask ExecuteAsync(IConsole console) => default;
|
||||
}";
|
||||
}
|
||||
""";
|
||||
|
||||
// Act & assert
|
||||
Analyzer.Should().NotProduceDiagnostics(code);
|
||||
@@ -57,7 +61,8 @@ public class MyCommand : ICommand
|
||||
{
|
||||
// Arrange
|
||||
// language=cs
|
||||
const string code = @"
|
||||
const string code =
|
||||
"""
|
||||
[Command]
|
||||
public class MyCommand : ICommand
|
||||
{
|
||||
@@ -68,7 +73,8 @@ public class MyCommand : ICommand
|
||||
public string Bar { get; set; }
|
||||
|
||||
public ValueTask ExecuteAsync(IConsole console) => default;
|
||||
}";
|
||||
}
|
||||
""";
|
||||
|
||||
// Act & assert
|
||||
Analyzer.Should().NotProduceDiagnostics(code);
|
||||
@@ -79,14 +85,16 @@ public class MyCommand : ICommand
|
||||
{
|
||||
// Arrange
|
||||
// language=cs
|
||||
const string code = @"
|
||||
const string code =
|
||||
"""
|
||||
[Command]
|
||||
public class MyCommand : ICommand
|
||||
{
|
||||
public string Foo { get; set; }
|
||||
|
||||
public ValueTask ExecuteAsync(IConsole console) => default;
|
||||
}";
|
||||
}
|
||||
""";
|
||||
|
||||
// Act & assert
|
||||
Analyzer.Should().NotProduceDiagnostics(code);
|
||||
|
||||
@@ -13,18 +13,20 @@ public class ParameterMustHaveUniqueNameAnalyzerSpecs
|
||||
{
|
||||
// Arrange
|
||||
// language=cs
|
||||
const string code = @"
|
||||
const string code =
|
||||
"""
|
||||
[Command]
|
||||
public class MyCommand : ICommand
|
||||
{
|
||||
[CommandParameter(0, Name = ""foo"")]
|
||||
[CommandParameter(0, Name = "foo")]
|
||||
public string Foo { get; set; }
|
||||
|
||||
[CommandParameter(1, Name = ""foo"")]
|
||||
[CommandParameter(1, Name = "foo")]
|
||||
public string Bar { get; set; }
|
||||
|
||||
public ValueTask ExecuteAsync(IConsole console) => default;
|
||||
}";
|
||||
}
|
||||
""";
|
||||
|
||||
// Act & assert
|
||||
Analyzer.Should().ProduceDiagnostics(code);
|
||||
@@ -35,18 +37,20 @@ public class MyCommand : ICommand
|
||||
{
|
||||
// Arrange
|
||||
// language=cs
|
||||
const string code = @"
|
||||
const string code =
|
||||
"""
|
||||
[Command]
|
||||
public class MyCommand : ICommand
|
||||
{
|
||||
[CommandParameter(0, Name = ""foo"")]
|
||||
[CommandParameter(0, Name = "foo")]
|
||||
public string Foo { get; set; }
|
||||
|
||||
[CommandParameter(1, Name = ""bar"")]
|
||||
[CommandParameter(1, Name = "bar")]
|
||||
public string Bar { get; set; }
|
||||
|
||||
public ValueTask ExecuteAsync(IConsole console) => default;
|
||||
}";
|
||||
}
|
||||
""";
|
||||
|
||||
// Act & assert
|
||||
Analyzer.Should().NotProduceDiagnostics(code);
|
||||
@@ -57,14 +61,16 @@ public class MyCommand : ICommand
|
||||
{
|
||||
// Arrange
|
||||
// language=cs
|
||||
const string code = @"
|
||||
const string code =
|
||||
"""
|
||||
[Command]
|
||||
public class MyCommand : ICommand
|
||||
{
|
||||
public string Foo { get; set; }
|
||||
|
||||
public ValueTask ExecuteAsync(IConsole console) => default;
|
||||
}";
|
||||
}
|
||||
""";
|
||||
|
||||
// Act & assert
|
||||
Analyzer.Should().NotProduceDiagnostics(code);
|
||||
|
||||
@@ -13,7 +13,8 @@ public class ParameterMustHaveUniqueOrderAnalyzerSpecs
|
||||
{
|
||||
// Arrange
|
||||
// language=cs
|
||||
const string code = @"
|
||||
const string code =
|
||||
"""
|
||||
[Command]
|
||||
public class MyCommand : ICommand
|
||||
{
|
||||
@@ -24,7 +25,8 @@ public class MyCommand : ICommand
|
||||
public string Bar { get; set; }
|
||||
|
||||
public ValueTask ExecuteAsync(IConsole console) => default;
|
||||
}";
|
||||
}
|
||||
""";
|
||||
|
||||
// Act & assert
|
||||
Analyzer.Should().ProduceDiagnostics(code);
|
||||
@@ -35,7 +37,8 @@ public class MyCommand : ICommand
|
||||
{
|
||||
// Arrange
|
||||
// language=cs
|
||||
const string code = @"
|
||||
const string code =
|
||||
"""
|
||||
[Command]
|
||||
public class MyCommand : ICommand
|
||||
{
|
||||
@@ -46,7 +49,8 @@ public class MyCommand : ICommand
|
||||
public string Bar { get; set; }
|
||||
|
||||
public ValueTask ExecuteAsync(IConsole console) => default;
|
||||
}";
|
||||
}
|
||||
""";
|
||||
|
||||
// Act & assert
|
||||
Analyzer.Should().NotProduceDiagnostics(code);
|
||||
@@ -57,14 +61,16 @@ public class MyCommand : ICommand
|
||||
{
|
||||
// Arrange
|
||||
// language=cs
|
||||
const string code = @"
|
||||
const string code =
|
||||
"""
|
||||
[Command]
|
||||
public class MyCommand : ICommand
|
||||
{
|
||||
public string Foo { get; set; }
|
||||
|
||||
public ValueTask ExecuteAsync(IConsole console) => default;
|
||||
}";
|
||||
}
|
||||
""";
|
||||
|
||||
// Act & assert
|
||||
Analyzer.Should().NotProduceDiagnostics(code);
|
||||
|
||||
@@ -13,7 +13,8 @@ public class ParameterMustHaveValidConverterAnalyzerSpecs
|
||||
{
|
||||
// Arrange
|
||||
// language=cs
|
||||
const string code = @"
|
||||
const string code =
|
||||
"""
|
||||
public class MyConverter
|
||||
{
|
||||
public string Convert(string rawValue) => rawValue;
|
||||
@@ -26,7 +27,8 @@ public class MyCommand : ICommand
|
||||
public string Foo { get; set; }
|
||||
|
||||
public ValueTask ExecuteAsync(IConsole console) => default;
|
||||
}";
|
||||
}
|
||||
""";
|
||||
|
||||
// Act & assert
|
||||
Analyzer.Should().ProduceDiagnostics(code);
|
||||
@@ -37,7 +39,8 @@ public class MyCommand : ICommand
|
||||
{
|
||||
// Arrange
|
||||
// language=cs
|
||||
const string code = @"
|
||||
const string code =
|
||||
"""
|
||||
public class MyConverter : BindingConverter<int>
|
||||
{
|
||||
public override int Convert(string rawValue) => 42;
|
||||
@@ -50,7 +53,8 @@ public class MyCommand : ICommand
|
||||
public string Foo { get; set; }
|
||||
|
||||
public ValueTask ExecuteAsync(IConsole console) => default;
|
||||
}";
|
||||
}
|
||||
""";
|
||||
|
||||
|
||||
// Act & assert
|
||||
@@ -62,7 +66,8 @@ public class MyCommand : ICommand
|
||||
{
|
||||
// Arrange
|
||||
// language=cs
|
||||
const string code = @"
|
||||
const string code =
|
||||
"""
|
||||
public class MyConverter : BindingConverter<string>
|
||||
{
|
||||
public override string Convert(string rawValue) => rawValue;
|
||||
@@ -75,7 +80,8 @@ public class MyCommand : ICommand
|
||||
public string Foo { get; set; }
|
||||
|
||||
public ValueTask ExecuteAsync(IConsole console) => default;
|
||||
}";
|
||||
}
|
||||
""";
|
||||
|
||||
// Act & assert
|
||||
Analyzer.Should().NotProduceDiagnostics(code);
|
||||
@@ -86,7 +92,8 @@ public class MyCommand : ICommand
|
||||
{
|
||||
// Arrange
|
||||
// language=cs
|
||||
const string code = @"
|
||||
const string code =
|
||||
"""
|
||||
public class MyConverter : BindingConverter<int>
|
||||
{
|
||||
public override int Convert(string rawValue) => 42;
|
||||
@@ -95,11 +102,12 @@ public class MyConverter : BindingConverter<int>
|
||||
[Command]
|
||||
public class MyCommand : ICommand
|
||||
{
|
||||
[CommandOption(""foo"", Converter = typeof(MyConverter))]
|
||||
[CommandOption("foo", Converter = typeof(MyConverter))]
|
||||
public int? Foo { get; set; }
|
||||
|
||||
public ValueTask ExecuteAsync(IConsole console) => default;
|
||||
}";
|
||||
}
|
||||
""";
|
||||
|
||||
// Act & assert
|
||||
Analyzer.Should().NotProduceDiagnostics(code);
|
||||
@@ -110,7 +118,8 @@ public class MyCommand : ICommand
|
||||
{
|
||||
// Arrange
|
||||
// language=cs
|
||||
const string code = @"
|
||||
const string code =
|
||||
"""
|
||||
public class MyConverter : BindingConverter<string>
|
||||
{
|
||||
public override string Convert(string rawValue) => rawValue;
|
||||
@@ -123,7 +132,8 @@ public class MyCommand : ICommand
|
||||
public IReadOnlyList<string> Foo { get; set; }
|
||||
|
||||
public ValueTask ExecuteAsync(IConsole console) => default;
|
||||
}";
|
||||
}
|
||||
""";
|
||||
|
||||
// Act & assert
|
||||
Analyzer.Should().NotProduceDiagnostics(code);
|
||||
@@ -134,7 +144,8 @@ public class MyCommand : ICommand
|
||||
{
|
||||
// Arrange
|
||||
// language=cs
|
||||
const string code = @"
|
||||
const string code =
|
||||
"""
|
||||
[Command]
|
||||
public class MyCommand : ICommand
|
||||
{
|
||||
@@ -142,7 +153,8 @@ public class MyCommand : ICommand
|
||||
public string Foo { get; set; }
|
||||
|
||||
public ValueTask ExecuteAsync(IConsole console) => default;
|
||||
}";
|
||||
}
|
||||
""";
|
||||
|
||||
// Act & assert
|
||||
Analyzer.Should().NotProduceDiagnostics(code);
|
||||
@@ -153,14 +165,16 @@ public class MyCommand : ICommand
|
||||
{
|
||||
// Arrange
|
||||
// language=cs
|
||||
const string code = @"
|
||||
const string code =
|
||||
"""
|
||||
[Command]
|
||||
public class MyCommand : ICommand
|
||||
{
|
||||
public string Foo { get; set; }
|
||||
|
||||
public ValueTask ExecuteAsync(IConsole console) => default;
|
||||
}";
|
||||
}
|
||||
""";
|
||||
|
||||
// Act & assert
|
||||
Analyzer.Should().NotProduceDiagnostics(code);
|
||||
|
||||
@@ -13,7 +13,8 @@ public class ParameterMustHaveValidValidatorsAnalyzerSpecs
|
||||
{
|
||||
// Arrange
|
||||
// language=cs
|
||||
const string code = @"
|
||||
const string code =
|
||||
"""
|
||||
public class MyValidator
|
||||
{
|
||||
public void Validate(string value) {}
|
||||
@@ -26,7 +27,8 @@ public class MyCommand : ICommand
|
||||
public string Foo { get; set; }
|
||||
|
||||
public ValueTask ExecuteAsync(IConsole console) => default;
|
||||
}";
|
||||
}
|
||||
""";
|
||||
|
||||
// Act & assert
|
||||
Analyzer.Should().ProduceDiagnostics(code);
|
||||
@@ -37,7 +39,8 @@ public class MyCommand : ICommand
|
||||
{
|
||||
// Arrange
|
||||
// language=cs
|
||||
const string code = @"
|
||||
const string code =
|
||||
"""
|
||||
public class MyValidator : BindingValidator<int>
|
||||
{
|
||||
public override BindingValidationError Validate(int value) => Ok();
|
||||
@@ -50,7 +53,8 @@ public class MyCommand : ICommand
|
||||
public string Foo { get; set; }
|
||||
|
||||
public ValueTask ExecuteAsync(IConsole console) => default;
|
||||
}";
|
||||
}
|
||||
""";
|
||||
|
||||
// Act & assert
|
||||
Analyzer.Should().ProduceDiagnostics(code);
|
||||
@@ -61,7 +65,8 @@ public class MyCommand : ICommand
|
||||
{
|
||||
// Arrange
|
||||
// language=cs
|
||||
const string code = @"
|
||||
const string code =
|
||||
"""
|
||||
public class MyValidator : BindingValidator<string>
|
||||
{
|
||||
public override BindingValidationError Validate(string value) => Ok();
|
||||
@@ -74,7 +79,8 @@ public class MyCommand : ICommand
|
||||
public string Foo { get; set; }
|
||||
|
||||
public ValueTask ExecuteAsync(IConsole console) => default;
|
||||
}";
|
||||
}
|
||||
""";
|
||||
|
||||
// Act & assert
|
||||
Analyzer.Should().NotProduceDiagnostics(code);
|
||||
@@ -85,7 +91,8 @@ public class MyCommand : ICommand
|
||||
{
|
||||
// Arrange
|
||||
// language=cs
|
||||
const string code = @"
|
||||
const string code =
|
||||
"""
|
||||
[Command]
|
||||
public class MyCommand : ICommand
|
||||
{
|
||||
@@ -93,7 +100,8 @@ public class MyCommand : ICommand
|
||||
public string Foo { get; set; }
|
||||
|
||||
public ValueTask ExecuteAsync(IConsole console) => default;
|
||||
}";
|
||||
}
|
||||
""";
|
||||
|
||||
// Act & assert
|
||||
Analyzer.Should().NotProduceDiagnostics(code);
|
||||
@@ -104,14 +112,16 @@ public class MyCommand : ICommand
|
||||
{
|
||||
// Arrange
|
||||
// language=cs
|
||||
const string code = @"
|
||||
const string code =
|
||||
"""
|
||||
[Command]
|
||||
public class MyCommand : ICommand
|
||||
{
|
||||
public string Foo { get; set; }
|
||||
|
||||
public ValueTask ExecuteAsync(IConsole console) => default;
|
||||
}";
|
||||
}
|
||||
""";
|
||||
|
||||
// Act & assert
|
||||
Analyzer.Should().NotProduceDiagnostics(code);
|
||||
|
||||
@@ -13,16 +13,18 @@ public class SystemConsoleShouldBeAvoidedAnalyzerSpecs
|
||||
{
|
||||
// Arrange
|
||||
// language=cs
|
||||
const string code = @"
|
||||
const string code =
|
||||
"""
|
||||
[Command]
|
||||
public class MyCommand : ICommand
|
||||
{
|
||||
public ValueTask ExecuteAsync(IConsole console)
|
||||
{
|
||||
Console.WriteLine(""Hello world"");
|
||||
Console.WriteLine("Hello world");
|
||||
return default;
|
||||
}
|
||||
}";
|
||||
}
|
||||
""";
|
||||
|
||||
// Act & assert
|
||||
Analyzer.Should().ProduceDiagnostics(code);
|
||||
@@ -33,7 +35,8 @@ public class MyCommand : ICommand
|
||||
{
|
||||
// Arrange
|
||||
// language=cs
|
||||
const string code = @"
|
||||
const string code =
|
||||
"""
|
||||
[Command]
|
||||
public class MyCommand : ICommand
|
||||
{
|
||||
@@ -42,7 +45,9 @@ public class MyCommand : ICommand
|
||||
Console.ForegroundColor = ConsoleColor.Black;
|
||||
return default;
|
||||
}
|
||||
}";
|
||||
}
|
||||
""";
|
||||
|
||||
// Act & assert
|
||||
Analyzer.Should().ProduceDiagnostics(code);
|
||||
}
|
||||
@@ -52,16 +57,18 @@ public class MyCommand : ICommand
|
||||
{
|
||||
// Arrange
|
||||
// language=cs
|
||||
const string code = @"
|
||||
const string code =
|
||||
"""
|
||||
[Command]
|
||||
public class MyCommand : ICommand
|
||||
{
|
||||
public ValueTask ExecuteAsync(IConsole console)
|
||||
{
|
||||
Console.Error.WriteLine(""Hello world"");
|
||||
Console.Error.WriteLine("Hello world");
|
||||
return default;
|
||||
}
|
||||
}";
|
||||
}
|
||||
""";
|
||||
|
||||
// Act & assert
|
||||
Analyzer.Should().ProduceDiagnostics(code);
|
||||
@@ -72,16 +79,18 @@ public class MyCommand : ICommand
|
||||
{
|
||||
// Arrange
|
||||
// language=cs
|
||||
const string code = @"
|
||||
const string code =
|
||||
"""
|
||||
[Command]
|
||||
public class MyCommand : ICommand
|
||||
{
|
||||
public ValueTask ExecuteAsync(IConsole console)
|
||||
{
|
||||
console.Output.WriteLine(""Hello world"");
|
||||
console.Output.WriteLine("Hello world");
|
||||
return default;
|
||||
}
|
||||
}";
|
||||
}
|
||||
""";
|
||||
|
||||
// Act & assert
|
||||
Analyzer.Should().NotProduceDiagnostics(code);
|
||||
@@ -92,14 +101,16 @@ public class MyCommand : ICommand
|
||||
{
|
||||
// Arrange
|
||||
// language=cs
|
||||
const string code = @"
|
||||
const string code =
|
||||
"""
|
||||
[Command]
|
||||
public class MyCommand : ICommand
|
||||
{
|
||||
public void SomeOtherMethod() => Console.WriteLine(""Test"");
|
||||
public void SomeOtherMethod() => Console.WriteLine("Test");
|
||||
|
||||
public ValueTask ExecuteAsync(IConsole console) => default;
|
||||
}";
|
||||
}
|
||||
""";
|
||||
|
||||
// Act & assert
|
||||
Analyzer.Should().NotProduceDiagnostics(code);
|
||||
@@ -110,7 +121,8 @@ public class MyCommand : ICommand
|
||||
{
|
||||
// Arrange
|
||||
// language=cs
|
||||
const string code = @"
|
||||
const string code =
|
||||
"""
|
||||
[Command]
|
||||
public class MyCommand : ICommand
|
||||
{
|
||||
@@ -118,7 +130,8 @@ public class MyCommand : ICommand
|
||||
{
|
||||
return default;
|
||||
}
|
||||
}";
|
||||
}
|
||||
""";
|
||||
|
||||
// Act & assert
|
||||
Analyzer.Should().NotProduceDiagnostics(code);
|
||||
|
||||
@@ -21,7 +21,7 @@ public class CancellationSpecs : SpecsBase
|
||||
// Arrange
|
||||
var commandType = DynamicCommandBuilder.Compile(
|
||||
// language=cs
|
||||
@"
|
||||
"""
|
||||
[Command]
|
||||
public class Command : ICommand
|
||||
{
|
||||
@@ -34,15 +34,17 @@ public class Command : ICommand
|
||||
console.RegisterCancellationHandler()
|
||||
);
|
||||
|
||||
console.Output.WriteLine(""Completed successfully"");
|
||||
console.Output.WriteLine("Completed successfully");
|
||||
}
|
||||
catch (OperationCanceledException)
|
||||
{
|
||||
console.Output.WriteLine(""Cancelled"");
|
||||
console.Output.WriteLine("Cancelled");
|
||||
throw;
|
||||
}
|
||||
}
|
||||
}");
|
||||
}
|
||||
"""
|
||||
);
|
||||
|
||||
var application = new CliApplicationBuilder()
|
||||
.AddCommand(commandType)
|
||||
|
||||
@@ -48,7 +48,7 @@ public class ConsoleSpecs : SpecsBase
|
||||
// Arrange
|
||||
var commandType = DynamicCommandBuilder.Compile(
|
||||
// language=cs
|
||||
@"
|
||||
"""
|
||||
[Command]
|
||||
public class Command : ICommand
|
||||
{
|
||||
@@ -62,13 +62,14 @@ public class Command : ICommand
|
||||
console.CursorLeft = 42;
|
||||
console.CursorTop = 24;
|
||||
|
||||
console.Output.WriteLine(""Hello "");
|
||||
console.Error.WriteLine(""world!"");
|
||||
console.Output.WriteLine("Hello ");
|
||||
console.Error.WriteLine("world!");
|
||||
|
||||
return default;
|
||||
}
|
||||
}
|
||||
");
|
||||
"""
|
||||
);
|
||||
|
||||
var application = new CliApplicationBuilder()
|
||||
.AddCommand(commandType)
|
||||
@@ -108,7 +109,7 @@ public class Command : ICommand
|
||||
// Arrange
|
||||
var commandType = DynamicCommandBuilder.Compile(
|
||||
// language=cs
|
||||
@"
|
||||
"""
|
||||
[Command]
|
||||
public class Command : ICommand
|
||||
{
|
||||
@@ -121,7 +122,8 @@ public class Command : ICommand
|
||||
return default;
|
||||
}
|
||||
}
|
||||
");
|
||||
"""
|
||||
);
|
||||
|
||||
var application = new CliApplicationBuilder()
|
||||
.AddCommand(commandType)
|
||||
@@ -151,7 +153,7 @@ public class Command : ICommand
|
||||
// Arrange
|
||||
var commandType = DynamicCommandBuilder.Compile(
|
||||
// language=cs
|
||||
@"
|
||||
"""
|
||||
[Command]
|
||||
public class Command : ICommand
|
||||
{
|
||||
@@ -164,7 +166,8 @@ public class Command : ICommand
|
||||
return default;
|
||||
}
|
||||
}
|
||||
");
|
||||
"""
|
||||
);
|
||||
|
||||
var application = new CliApplicationBuilder()
|
||||
.AddCommand(commandType)
|
||||
|
||||
@@ -21,7 +21,7 @@ public class ConversionSpecs : SpecsBase
|
||||
// Arrange
|
||||
var commandType = DynamicCommandBuilder.Compile(
|
||||
// language=cs
|
||||
@"
|
||||
"""
|
||||
[Command]
|
||||
public class Command : ICommand
|
||||
{
|
||||
@@ -34,7 +34,9 @@ public class Command : ICommand
|
||||
return default;
|
||||
}
|
||||
}
|
||||
");
|
||||
"""
|
||||
);
|
||||
|
||||
var application = new CliApplicationBuilder()
|
||||
.AddCommand(commandType)
|
||||
.UseConsole(FakeConsole)
|
||||
@@ -59,7 +61,7 @@ public class Command : ICommand
|
||||
// Arrange
|
||||
var commandType = DynamicCommandBuilder.Compile(
|
||||
// language=cs
|
||||
@"
|
||||
"""
|
||||
[Command]
|
||||
public class Command : ICommand
|
||||
{
|
||||
@@ -72,7 +74,9 @@ public class Command : ICommand
|
||||
return default;
|
||||
}
|
||||
}
|
||||
");
|
||||
"""
|
||||
);
|
||||
|
||||
var application = new CliApplicationBuilder()
|
||||
.AddCommand(commandType)
|
||||
.UseConsole(FakeConsole)
|
||||
@@ -97,7 +101,7 @@ public class Command : ICommand
|
||||
// Arrange
|
||||
var commandType = DynamicCommandBuilder.Compile(
|
||||
// language=cs
|
||||
@"
|
||||
"""
|
||||
[Command]
|
||||
public class Command : ICommand
|
||||
{
|
||||
@@ -109,13 +113,15 @@ public class Command : ICommand
|
||||
|
||||
public ValueTask ExecuteAsync(IConsole console)
|
||||
{
|
||||
console.Output.WriteLine(""Foo = "" + Foo);
|
||||
console.Output.WriteLine(""Bar = "" + Bar);
|
||||
console.Output.WriteLine("Foo = " + Foo);
|
||||
console.Output.WriteLine("Bar = " + Bar);
|
||||
|
||||
return default;
|
||||
}
|
||||
}
|
||||
");
|
||||
"""
|
||||
);
|
||||
|
||||
var application = new CliApplicationBuilder()
|
||||
.AddCommand(commandType)
|
||||
.UseConsole(FakeConsole)
|
||||
@@ -143,7 +149,7 @@ public class Command : ICommand
|
||||
// Arrange
|
||||
var commandType = DynamicCommandBuilder.Compile(
|
||||
// language=cs
|
||||
@"
|
||||
"""
|
||||
[Command]
|
||||
public class Command : ICommand
|
||||
{
|
||||
@@ -156,7 +162,9 @@ public class Command : ICommand
|
||||
return default;
|
||||
}
|
||||
}
|
||||
");
|
||||
"""
|
||||
);
|
||||
|
||||
var application = new CliApplicationBuilder()
|
||||
.AddCommand(commandType)
|
||||
.UseConsole(FakeConsole)
|
||||
@@ -181,7 +189,7 @@ public class Command : ICommand
|
||||
// Arrange
|
||||
var commandType = DynamicCommandBuilder.Compile(
|
||||
// language=cs
|
||||
@"
|
||||
"""
|
||||
[Command]
|
||||
public class Command : ICommand
|
||||
{
|
||||
@@ -194,7 +202,9 @@ public class Command : ICommand
|
||||
return default;
|
||||
}
|
||||
}
|
||||
");
|
||||
"""
|
||||
);
|
||||
|
||||
var application = new CliApplicationBuilder()
|
||||
.AddCommand(commandType)
|
||||
.UseConsole(FakeConsole)
|
||||
@@ -219,7 +229,7 @@ public class Command : ICommand
|
||||
// Arrange
|
||||
var commandType = DynamicCommandBuilder.Compile(
|
||||
// language=cs
|
||||
@"
|
||||
"""
|
||||
[Command]
|
||||
public class Command : ICommand
|
||||
{
|
||||
@@ -232,7 +242,9 @@ public class Command : ICommand
|
||||
return default;
|
||||
}
|
||||
}
|
||||
");
|
||||
"""
|
||||
);
|
||||
|
||||
var application = new CliApplicationBuilder()
|
||||
.AddCommand(commandType)
|
||||
.UseConsole(FakeConsole)
|
||||
@@ -257,7 +269,7 @@ public class Command : ICommand
|
||||
// Arrange
|
||||
var commandType = DynamicCommandBuilder.Compile(
|
||||
// language=cs
|
||||
@"
|
||||
"""
|
||||
[Command]
|
||||
public class Command : ICommand
|
||||
{
|
||||
@@ -266,11 +278,13 @@ public class Command : ICommand
|
||||
|
||||
public ValueTask ExecuteAsync(IConsole console)
|
||||
{
|
||||
console.Output.WriteLine(Foo.ToString(""u"", CultureInfo.InvariantCulture));
|
||||
console.Output.WriteLine(Foo.ToString("u", CultureInfo.InvariantCulture));
|
||||
return default;
|
||||
}
|
||||
}
|
||||
");
|
||||
"""
|
||||
);
|
||||
|
||||
var application = new CliApplicationBuilder()
|
||||
.AddCommand(commandType)
|
||||
.UseConsole(FakeConsole)
|
||||
@@ -295,7 +309,7 @@ public class Command : ICommand
|
||||
// Arrange
|
||||
var commandType = DynamicCommandBuilder.Compile(
|
||||
// language=cs
|
||||
@"
|
||||
"""
|
||||
[Command]
|
||||
public class Command : ICommand
|
||||
{
|
||||
@@ -308,7 +322,9 @@ public class Command : ICommand
|
||||
return default;
|
||||
}
|
||||
}
|
||||
");
|
||||
"""
|
||||
);
|
||||
|
||||
var application = new CliApplicationBuilder()
|
||||
.AddCommand(commandType)
|
||||
.UseConsole(FakeConsole)
|
||||
@@ -333,7 +349,7 @@ public class Command : ICommand
|
||||
// Arrange
|
||||
var commandType = DynamicCommandBuilder.Compile(
|
||||
// language=cs
|
||||
@"
|
||||
"""
|
||||
public enum CustomEnum { One = 1, Two = 2, Three = 3 }
|
||||
|
||||
[Command]
|
||||
@@ -348,7 +364,9 @@ public class Command : ICommand
|
||||
return default;
|
||||
}
|
||||
}
|
||||
");
|
||||
"""
|
||||
);
|
||||
|
||||
var application = new CliApplicationBuilder()
|
||||
.AddCommand(commandType)
|
||||
.UseConsole(FakeConsole)
|
||||
@@ -373,7 +391,7 @@ public class Command : ICommand
|
||||
// Arrange
|
||||
var commandType = DynamicCommandBuilder.Compile(
|
||||
// language=cs
|
||||
@"
|
||||
"""
|
||||
[Command]
|
||||
public class Command : ICommand
|
||||
{
|
||||
@@ -385,13 +403,15 @@ public class Command : ICommand
|
||||
|
||||
public ValueTask ExecuteAsync(IConsole console)
|
||||
{
|
||||
console.Output.WriteLine(""Foo = "" + Foo);
|
||||
console.Output.WriteLine(""Bar = "" + Bar);
|
||||
console.Output.WriteLine("Foo = " + Foo);
|
||||
console.Output.WriteLine("Bar = " + Bar);
|
||||
|
||||
return default;
|
||||
}
|
||||
}
|
||||
");
|
||||
"""
|
||||
);
|
||||
|
||||
var application = new CliApplicationBuilder()
|
||||
.AddCommand(commandType)
|
||||
.UseConsole(FakeConsole)
|
||||
@@ -419,7 +439,7 @@ public class Command : ICommand
|
||||
// Arrange
|
||||
var commandType = DynamicCommandBuilder.Compile(
|
||||
// language=cs
|
||||
@"
|
||||
"""
|
||||
public enum CustomEnum { One = 1, Two = 2, Three = 3 }
|
||||
|
||||
[Command]
|
||||
@@ -433,13 +453,15 @@ public class Command : ICommand
|
||||
|
||||
public ValueTask ExecuteAsync(IConsole console)
|
||||
{
|
||||
console.Output.WriteLine(""Foo = "" + (int?) Foo);
|
||||
console.Output.WriteLine(""Bar = "" + (int?) Bar);
|
||||
console.Output.WriteLine("Foo = " + (int?) Foo);
|
||||
console.Output.WriteLine("Bar = " + (int?) Bar);
|
||||
|
||||
return default;
|
||||
}
|
||||
}
|
||||
");
|
||||
"""
|
||||
);
|
||||
|
||||
var application = new CliApplicationBuilder()
|
||||
.AddCommand(commandType)
|
||||
.UseConsole(FakeConsole)
|
||||
@@ -467,7 +489,7 @@ public class Command : ICommand
|
||||
// Arrange
|
||||
var commandType = DynamicCommandBuilder.Compile(
|
||||
// language=cs
|
||||
@"
|
||||
"""
|
||||
public class CustomType
|
||||
{
|
||||
public string Value { get; }
|
||||
@@ -487,7 +509,9 @@ public class Command : ICommand
|
||||
return default;
|
||||
}
|
||||
}
|
||||
");
|
||||
"""
|
||||
);
|
||||
|
||||
var application = new CliApplicationBuilder()
|
||||
.AddCommand(commandType)
|
||||
.UseConsole(FakeConsole)
|
||||
@@ -512,7 +536,7 @@ public class Command : ICommand
|
||||
// Arrange
|
||||
var commandType = DynamicCommandBuilder.Compile(
|
||||
// language=cs
|
||||
@"
|
||||
"""
|
||||
public class CustomTypeA
|
||||
{
|
||||
public string Value { get; }
|
||||
@@ -544,13 +568,15 @@ public class Command : ICommand
|
||||
|
||||
public ValueTask ExecuteAsync(IConsole console)
|
||||
{
|
||||
console.Output.WriteLine(""Foo = "" + Foo.Value);
|
||||
console.Output.WriteLine(""Bar = "" + Bar.Value);
|
||||
console.Output.WriteLine("Foo = " + Foo.Value);
|
||||
console.Output.WriteLine("Bar = " + Bar.Value);
|
||||
|
||||
return default;
|
||||
}
|
||||
}
|
||||
");
|
||||
"""
|
||||
);
|
||||
|
||||
var application = new CliApplicationBuilder()
|
||||
.AddCommand(commandType)
|
||||
.UseConsole(FakeConsole)
|
||||
@@ -578,7 +604,7 @@ public class Command : ICommand
|
||||
// Arrange
|
||||
var commandType = DynamicCommandBuilder.Compile(
|
||||
// language=cs
|
||||
@"
|
||||
"""
|
||||
public class CustomConverter : BindingConverter<int>
|
||||
{
|
||||
public override int Convert(string rawValue) =>
|
||||
@@ -597,7 +623,9 @@ public class Command : ICommand
|
||||
return default;
|
||||
}
|
||||
}
|
||||
");
|
||||
"""
|
||||
);
|
||||
|
||||
var application = new CliApplicationBuilder()
|
||||
.AddCommand(commandType)
|
||||
.UseConsole(FakeConsole)
|
||||
@@ -622,7 +650,7 @@ public class Command : ICommand
|
||||
// Arrange
|
||||
var commandType = DynamicCommandBuilder.Compile(
|
||||
// language=cs
|
||||
@"
|
||||
"""
|
||||
[Command]
|
||||
public class Command : ICommand
|
||||
{
|
||||
@@ -637,7 +665,9 @@ public class Command : ICommand
|
||||
return default;
|
||||
}
|
||||
}
|
||||
");
|
||||
"""
|
||||
);
|
||||
|
||||
var application = new CliApplicationBuilder()
|
||||
.AddCommand(commandType)
|
||||
.UseConsole(FakeConsole)
|
||||
@@ -666,7 +696,7 @@ public class Command : ICommand
|
||||
// Arrange
|
||||
var commandType = DynamicCommandBuilder.Compile(
|
||||
// language=cs
|
||||
@"
|
||||
"""
|
||||
[Command]
|
||||
public class Command : ICommand
|
||||
{
|
||||
@@ -681,7 +711,9 @@ public class Command : ICommand
|
||||
return default;
|
||||
}
|
||||
}
|
||||
");
|
||||
"""
|
||||
);
|
||||
|
||||
var application = new CliApplicationBuilder()
|
||||
.AddCommand(commandType)
|
||||
.UseConsole(FakeConsole)
|
||||
@@ -710,7 +742,7 @@ public class Command : ICommand
|
||||
// Arrange
|
||||
var commandType = DynamicCommandBuilder.Compile(
|
||||
// language=cs
|
||||
@"
|
||||
"""
|
||||
[Command]
|
||||
public class Command : ICommand
|
||||
{
|
||||
@@ -725,7 +757,9 @@ public class Command : ICommand
|
||||
return default;
|
||||
}
|
||||
}
|
||||
");
|
||||
"""
|
||||
);
|
||||
|
||||
var application = new CliApplicationBuilder()
|
||||
.AddCommand(commandType)
|
||||
.UseConsole(FakeConsole)
|
||||
@@ -754,7 +788,7 @@ public class Command : ICommand
|
||||
// Arrange
|
||||
var commandType = DynamicCommandBuilder.Compile(
|
||||
// language=cs
|
||||
@"
|
||||
"""
|
||||
[Command]
|
||||
public class Command : ICommand
|
||||
{
|
||||
@@ -769,7 +803,9 @@ public class Command : ICommand
|
||||
return default;
|
||||
}
|
||||
}
|
||||
");
|
||||
"""
|
||||
);
|
||||
|
||||
var application = new CliApplicationBuilder()
|
||||
.AddCommand(commandType)
|
||||
.UseConsole(FakeConsole)
|
||||
@@ -798,7 +834,7 @@ public class Command : ICommand
|
||||
// Arrange
|
||||
var commandType = DynamicCommandBuilder.Compile(
|
||||
// language=cs
|
||||
@"
|
||||
"""
|
||||
[Command]
|
||||
public class Command : ICommand
|
||||
{
|
||||
@@ -807,7 +843,9 @@ public class Command : ICommand
|
||||
|
||||
public ValueTask ExecuteAsync(IConsole console) => default;
|
||||
}
|
||||
");
|
||||
"""
|
||||
);
|
||||
|
||||
var application = new CliApplicationBuilder()
|
||||
.AddCommand(commandType)
|
||||
.UseConsole(FakeConsole)
|
||||
@@ -832,7 +870,7 @@ public class Command : ICommand
|
||||
// Arrange
|
||||
var commandType = DynamicCommandBuilder.Compile(
|
||||
// language=cs
|
||||
@"
|
||||
"""
|
||||
public class CustomType {}
|
||||
|
||||
[Command]
|
||||
@@ -843,7 +881,9 @@ public class Command : ICommand
|
||||
|
||||
public ValueTask ExecuteAsync(IConsole console) => default;
|
||||
}
|
||||
");
|
||||
"""
|
||||
);
|
||||
|
||||
var application = new CliApplicationBuilder()
|
||||
.AddCommand(commandType)
|
||||
.UseConsole(FakeConsole)
|
||||
@@ -868,7 +908,7 @@ public class Command : ICommand
|
||||
// Arrange
|
||||
var commandType = DynamicCommandBuilder.Compile(
|
||||
// language=cs
|
||||
@"
|
||||
"""
|
||||
public class CustomType : IEnumerable<object>
|
||||
{
|
||||
public IEnumerator<object> GetEnumerator() => Enumerable.Empty<object>().GetEnumerator();
|
||||
@@ -884,7 +924,9 @@ public class Command : ICommand
|
||||
|
||||
public ValueTask ExecuteAsync(IConsole console) => default;
|
||||
}
|
||||
");
|
||||
"""
|
||||
);
|
||||
|
||||
var application = new CliApplicationBuilder()
|
||||
.AddCommand(commandType)
|
||||
.UseConsole(FakeConsole)
|
||||
@@ -909,7 +951,7 @@ public class Command : ICommand
|
||||
// Arrange
|
||||
var commandType = DynamicCommandBuilder.Compile(
|
||||
// language=cs
|
||||
@"
|
||||
"""
|
||||
public class ValidatorA : BindingValidator<int>
|
||||
{
|
||||
public override BindingValidationError Validate(int value) => Ok();
|
||||
@@ -917,7 +959,7 @@ public class ValidatorA : BindingValidator<int>
|
||||
|
||||
public class ValidatorB : BindingValidator<int>
|
||||
{
|
||||
public override BindingValidationError Validate(int value) => Error(""Hello world"");
|
||||
public override BindingValidationError Validate(int value) => Error("Hello world");
|
||||
}
|
||||
|
||||
[Command]
|
||||
@@ -928,7 +970,9 @@ public class Command : ICommand
|
||||
|
||||
public ValueTask ExecuteAsync(IConsole console) => default;
|
||||
}
|
||||
");
|
||||
"""
|
||||
);
|
||||
|
||||
var application = new CliApplicationBuilder()
|
||||
.AddCommand(commandType)
|
||||
.UseConsole(FakeConsole)
|
||||
@@ -953,14 +997,14 @@ public class Command : ICommand
|
||||
// Arrange
|
||||
var commandType = DynamicCommandBuilder.Compile(
|
||||
// language=cs
|
||||
@"
|
||||
"""
|
||||
public class CustomType
|
||||
{
|
||||
public string Value { get; }
|
||||
|
||||
private CustomType(string value) => Value = value;
|
||||
|
||||
public static CustomType Parse(string value) => throw new Exception(""Hello world"");
|
||||
public static CustomType Parse(string value) => throw new Exception("Hello world");
|
||||
}
|
||||
|
||||
[Command]
|
||||
@@ -971,7 +1015,9 @@ public class Command : ICommand
|
||||
|
||||
public ValueTask ExecuteAsync(IConsole console) => default;
|
||||
}
|
||||
");
|
||||
"""
|
||||
);
|
||||
|
||||
var application = new CliApplicationBuilder()
|
||||
.AddCommand(commandType)
|
||||
.UseConsole(FakeConsole)
|
||||
|
||||
@@ -75,13 +75,14 @@ public class DirectivesSpecs : SpecsBase
|
||||
// Arrange
|
||||
var commandType = DynamicCommandBuilder.Compile(
|
||||
// language=cs
|
||||
@"
|
||||
[Command(""cmd"")]
|
||||
"""
|
||||
[Command("cmd")]
|
||||
public class Command : ICommand
|
||||
{
|
||||
public ValueTask ExecuteAsync(IConsole console) => default;
|
||||
}
|
||||
");
|
||||
"""
|
||||
);
|
||||
|
||||
var application = new CliApplicationBuilder()
|
||||
.AddCommand(commandType)
|
||||
|
||||
@@ -25,11 +25,11 @@ public class EnvironmentSpecs : SpecsBase
|
||||
// Arrange
|
||||
var commandType = DynamicCommandBuilder.Compile(
|
||||
// language=cs
|
||||
@"
|
||||
"""
|
||||
[Command]
|
||||
public class Command : ICommand
|
||||
{
|
||||
[CommandOption(""foo"", IsRequired = true, EnvironmentVariable = ""ENV_FOO"")]
|
||||
[CommandOption("foo", IsRequired = true, EnvironmentVariable = "ENV_FOO")]
|
||||
public string Foo { get; set; }
|
||||
|
||||
public ValueTask ExecuteAsync(IConsole console)
|
||||
@@ -38,7 +38,8 @@ public class Command : ICommand
|
||||
return default;
|
||||
}
|
||||
}
|
||||
");
|
||||
"""
|
||||
);
|
||||
|
||||
var application = new CliApplicationBuilder()
|
||||
.AddCommand(commandType)
|
||||
@@ -67,11 +68,11 @@ public class Command : ICommand
|
||||
// Arrange
|
||||
var commandType = DynamicCommandBuilder.Compile(
|
||||
// language=cs
|
||||
@"
|
||||
"""
|
||||
[Command]
|
||||
public class Command : ICommand
|
||||
{
|
||||
[CommandOption(""foo"", EnvironmentVariable = ""ENV_FOO"")]
|
||||
[CommandOption("foo", EnvironmentVariable = "ENV_FOO")]
|
||||
public string Foo { get; set; }
|
||||
|
||||
public ValueTask ExecuteAsync(IConsole console)
|
||||
@@ -80,7 +81,8 @@ public class Command : ICommand
|
||||
return default;
|
||||
}
|
||||
}
|
||||
");
|
||||
"""
|
||||
);
|
||||
|
||||
var application = new CliApplicationBuilder()
|
||||
.AddCommand(commandType)
|
||||
@@ -109,11 +111,11 @@ public class Command : ICommand
|
||||
// Arrange
|
||||
var commandType = DynamicCommandBuilder.Compile(
|
||||
// language=cs
|
||||
@"
|
||||
"""
|
||||
[Command]
|
||||
public class Command : ICommand
|
||||
{
|
||||
[CommandOption(""foo"", EnvironmentVariable = ""ENV_FOO"")]
|
||||
[CommandOption("foo", EnvironmentVariable = "ENV_FOO")]
|
||||
public IReadOnlyList<string> Foo { get; set; }
|
||||
|
||||
public ValueTask ExecuteAsync(IConsole console)
|
||||
@@ -124,7 +126,8 @@ public class Command : ICommand
|
||||
return default;
|
||||
}
|
||||
}
|
||||
");
|
||||
"""
|
||||
);
|
||||
|
||||
var application = new CliApplicationBuilder()
|
||||
.AddCommand(commandType)
|
||||
@@ -156,11 +159,11 @@ public class Command : ICommand
|
||||
// Arrange
|
||||
var commandType = DynamicCommandBuilder.Compile(
|
||||
// language=cs
|
||||
@"
|
||||
"""
|
||||
[Command]
|
||||
public class Command : ICommand
|
||||
{
|
||||
[CommandOption(""foo"", EnvironmentVariable = ""ENV_FOO"")]
|
||||
[CommandOption("foo", EnvironmentVariable = "ENV_FOO")]
|
||||
public string Foo { get; set; }
|
||||
|
||||
public ValueTask ExecuteAsync(IConsole console)
|
||||
@@ -169,7 +172,8 @@ public class Command : ICommand
|
||||
return default;
|
||||
}
|
||||
}
|
||||
");
|
||||
"""
|
||||
);
|
||||
|
||||
var application = new CliApplicationBuilder()
|
||||
.AddCommand(commandType)
|
||||
@@ -198,11 +202,11 @@ public class Command : ICommand
|
||||
// Arrange
|
||||
var commandType = DynamicCommandBuilder.Compile(
|
||||
// language=cs
|
||||
@"
|
||||
"""
|
||||
[Command]
|
||||
public class Command : ICommand
|
||||
{
|
||||
[CommandOption(""foo"", EnvironmentVariable = ""ENV_FOO"")]
|
||||
[CommandOption("foo", EnvironmentVariable = "ENV_FOO")]
|
||||
public string Foo { get; set; }
|
||||
|
||||
public ValueTask ExecuteAsync(IConsole console)
|
||||
@@ -211,7 +215,8 @@ public class Command : ICommand
|
||||
return default;
|
||||
}
|
||||
}
|
||||
");
|
||||
"""
|
||||
);
|
||||
|
||||
var application = new CliApplicationBuilder()
|
||||
.AddCommand(commandType)
|
||||
|
||||
@@ -22,14 +22,15 @@ public class ErrorReportingSpecs : SpecsBase
|
||||
// Arrange
|
||||
var commandType = DynamicCommandBuilder.Compile(
|
||||
// language=cs
|
||||
@"
|
||||
"""
|
||||
[Command]
|
||||
public class Command : ICommand
|
||||
{
|
||||
public ValueTask ExecuteAsync(IConsole console) =>
|
||||
throw new Exception(""Something went wrong"");
|
||||
throw new Exception("Something went wrong");
|
||||
}
|
||||
");
|
||||
"""
|
||||
);
|
||||
|
||||
var application = new CliApplicationBuilder()
|
||||
.AddCommand(commandType)
|
||||
@@ -60,14 +61,15 @@ public class Command : ICommand
|
||||
// Arrange
|
||||
var commandType = DynamicCommandBuilder.Compile(
|
||||
// language=cs
|
||||
@"
|
||||
"""
|
||||
[Command]
|
||||
public class Command : ICommand
|
||||
{
|
||||
public ValueTask ExecuteAsync(IConsole console) =>
|
||||
throw new Exception(""Something went wrong"", new Exception(""Another exception""));
|
||||
throw new Exception("Something went wrong", new Exception("Another exception"));
|
||||
}
|
||||
");
|
||||
"""
|
||||
);
|
||||
|
||||
var application = new CliApplicationBuilder()
|
||||
.AddCommand(commandType)
|
||||
@@ -99,14 +101,15 @@ public class Command : ICommand
|
||||
// Arrange
|
||||
var commandType = DynamicCommandBuilder.Compile(
|
||||
// language=cs
|
||||
@"
|
||||
"""
|
||||
[Command]
|
||||
public class Command : ICommand
|
||||
{
|
||||
public ValueTask ExecuteAsync(IConsole console) =>
|
||||
throw new CommandException(""Something went wrong"", 69);
|
||||
throw new CommandException("Something went wrong", 69);
|
||||
}
|
||||
");
|
||||
"""
|
||||
);
|
||||
|
||||
var application = new CliApplicationBuilder()
|
||||
.AddCommand(commandType)
|
||||
@@ -134,14 +137,15 @@ public class Command : ICommand
|
||||
// Arrange
|
||||
var commandType = DynamicCommandBuilder.Compile(
|
||||
// language=cs
|
||||
@"
|
||||
"""
|
||||
[Command]
|
||||
public class Command : ICommand
|
||||
{
|
||||
public ValueTask ExecuteAsync(IConsole console) =>
|
||||
throw new CommandException("""", 69);
|
||||
throw new CommandException("", 69);
|
||||
}
|
||||
");
|
||||
"""
|
||||
);
|
||||
|
||||
var application = new CliApplicationBuilder()
|
||||
.AddCommand(commandType)
|
||||
@@ -172,14 +176,15 @@ public class Command : ICommand
|
||||
// Arrange
|
||||
var commandType = DynamicCommandBuilder.Compile(
|
||||
// language=cs
|
||||
@"
|
||||
"""
|
||||
[Command]
|
||||
public class Command : ICommand
|
||||
{
|
||||
public ValueTask ExecuteAsync(IConsole console) =>
|
||||
throw new CommandException(""Something went wrong"", 69, true);
|
||||
throw new CommandException("Something went wrong", 69, true);
|
||||
}
|
||||
");
|
||||
"""
|
||||
);
|
||||
|
||||
var application = new CliApplicationBuilder()
|
||||
.AddCommand(commandType)
|
||||
|
||||
@@ -44,13 +44,14 @@ public class HelpTextSpecs : SpecsBase
|
||||
// Arrange
|
||||
var commandType = DynamicCommandBuilder.Compile(
|
||||
// language=cs
|
||||
@"
|
||||
"""
|
||||
[Command]
|
||||
public class DefaultCommand : ICommand
|
||||
{
|
||||
public ValueTask ExecuteAsync(IConsole console) => default;
|
||||
}
|
||||
");
|
||||
"""
|
||||
);
|
||||
|
||||
var application = new CliApplicationBuilder()
|
||||
.AddCommand(commandType)
|
||||
@@ -77,19 +78,20 @@ public class DefaultCommand : ICommand
|
||||
// Arrange
|
||||
var commandTypes = DynamicCommandBuilder.CompileMany(
|
||||
// language=cs
|
||||
@"
|
||||
[Command(""cmd"")]
|
||||
"""
|
||||
[Command("cmd")]
|
||||
public class NamedCommand : ICommand
|
||||
{
|
||||
public ValueTask ExecuteAsync(IConsole console) => default;
|
||||
}
|
||||
|
||||
[Command(""cmd child"")]
|
||||
[Command("cmd child")]
|
||||
public class NamedChildCommand : ICommand
|
||||
{
|
||||
public ValueTask ExecuteAsync(IConsole console) => default;
|
||||
}
|
||||
");
|
||||
"""
|
||||
);
|
||||
|
||||
var application = new CliApplicationBuilder()
|
||||
.AddCommands(commandTypes)
|
||||
@@ -116,25 +118,26 @@ public class NamedChildCommand : ICommand
|
||||
// Arrange
|
||||
var commandTypes = DynamicCommandBuilder.CompileMany(
|
||||
// language=cs
|
||||
@"
|
||||
"""
|
||||
[Command]
|
||||
public class DefaultCommand : ICommand
|
||||
{
|
||||
public ValueTask ExecuteAsync(IConsole console) => default;
|
||||
}
|
||||
|
||||
[Command(""cmd"", Description = ""Description of a named command."")]
|
||||
[Command("cmd", Description = "Description of a named command.")]
|
||||
public class NamedCommand : ICommand
|
||||
{
|
||||
public ValueTask ExecuteAsync(IConsole console) => default;
|
||||
}
|
||||
|
||||
[Command(""cmd child"")]
|
||||
[Command("cmd child")]
|
||||
public class NamedChildCommand : ICommand
|
||||
{
|
||||
public ValueTask ExecuteAsync(IConsole console) => default;
|
||||
}
|
||||
");
|
||||
"""
|
||||
);
|
||||
|
||||
var application = new CliApplicationBuilder()
|
||||
.AddCommands(commandTypes)
|
||||
@@ -160,25 +163,26 @@ public class NamedChildCommand : ICommand
|
||||
// Arrange
|
||||
var commandTypes = DynamicCommandBuilder.CompileMany(
|
||||
// language=cs
|
||||
@"
|
||||
"""
|
||||
[Command]
|
||||
public class DefaultCommand : ICommand
|
||||
{
|
||||
public ValueTask ExecuteAsync(IConsole console) => default;
|
||||
}
|
||||
|
||||
[Command(""cmd"")]
|
||||
[Command("cmd")]
|
||||
public class NamedCommand : ICommand
|
||||
{
|
||||
public ValueTask ExecuteAsync(IConsole console) => default;
|
||||
}
|
||||
|
||||
[Command(""cmd child"", Description = ""Description of a named child command."")]
|
||||
[Command("cmd child", Description = "Description of a named child command.")]
|
||||
public class NamedChildCommand : ICommand
|
||||
{
|
||||
public ValueTask ExecuteAsync(IConsole console) => default;
|
||||
}
|
||||
");
|
||||
"""
|
||||
);
|
||||
|
||||
var application = new CliApplicationBuilder()
|
||||
.AddCommands(commandTypes)
|
||||
@@ -257,13 +261,15 @@ public class NamedChildCommand : ICommand
|
||||
// Arrange
|
||||
var commandType = DynamicCommandBuilder.Compile(
|
||||
// language=cs
|
||||
@"
|
||||
[Command(Description = ""Description of the default command."")]
|
||||
"""
|
||||
|
||||
[Command(Description = "Description of the default command.")]
|
||||
public class DefaultCommand : ICommand
|
||||
{
|
||||
public ValueTask ExecuteAsync(IConsole console) => default;
|
||||
}
|
||||
");
|
||||
|
||||
""");
|
||||
|
||||
var application = new CliApplicationBuilder()
|
||||
.AddCommand(commandType)
|
||||
@@ -292,19 +298,21 @@ public class DefaultCommand : ICommand
|
||||
// Arrange
|
||||
var commandTypes = DynamicCommandBuilder.CompileMany(
|
||||
// language=cs
|
||||
@"
|
||||
"""
|
||||
|
||||
[Command]
|
||||
public class DefaultCommand : ICommand
|
||||
{
|
||||
public ValueTask ExecuteAsync(IConsole console) => default;
|
||||
}
|
||||
|
||||
[Command(""cmd"")]
|
||||
[Command("cmd")]
|
||||
public class NamedCommand : ICommand
|
||||
{
|
||||
public ValueTask ExecuteAsync(IConsole console) => default;
|
||||
}
|
||||
");
|
||||
|
||||
""");
|
||||
|
||||
var application = new CliApplicationBuilder()
|
||||
.AddCommands(commandTypes)
|
||||
@@ -333,7 +341,8 @@ public class NamedCommand : ICommand
|
||||
// Arrange
|
||||
var commandType = DynamicCommandBuilder.Compile(
|
||||
// language=cs
|
||||
@"
|
||||
"""
|
||||
|
||||
[Command]
|
||||
public class Command : ICommand
|
||||
{
|
||||
@@ -348,7 +357,8 @@ public class Command : ICommand
|
||||
|
||||
public ValueTask ExecuteAsync(IConsole console) => default;
|
||||
}
|
||||
");
|
||||
|
||||
""");
|
||||
|
||||
var application = new CliApplicationBuilder()
|
||||
.AddCommand(commandType)
|
||||
@@ -378,7 +388,8 @@ public class Command : ICommand
|
||||
// Arrange
|
||||
var commandType = DynamicCommandBuilder.Compile(
|
||||
// language=cs
|
||||
@"
|
||||
"""
|
||||
|
||||
// Base members appear last in reflection order
|
||||
public abstract class CommandBase : ICommand
|
||||
{
|
||||
@@ -399,7 +410,8 @@ public class Command : CommandBase
|
||||
|
||||
public override ValueTask ExecuteAsync(IConsole console) => default;
|
||||
}
|
||||
");
|
||||
|
||||
""");
|
||||
|
||||
var application = new CliApplicationBuilder()
|
||||
.AddCommand(commandType)
|
||||
@@ -428,22 +440,24 @@ public class Command : CommandBase
|
||||
// Arrange
|
||||
var commandType = DynamicCommandBuilder.Compile(
|
||||
// language=cs
|
||||
@"
|
||||
"""
|
||||
|
||||
[Command]
|
||||
public class Command : ICommand
|
||||
{
|
||||
[CommandOption(""foo"", IsRequired = true)]
|
||||
[CommandOption("foo", IsRequired = true)]
|
||||
public string Foo { get; set; }
|
||||
|
||||
[CommandOption(""bar"")]
|
||||
[CommandOption("bar")]
|
||||
public string Bar { get; set; }
|
||||
|
||||
[CommandOption(""baz"", IsRequired = true)]
|
||||
[CommandOption("baz", IsRequired = true)]
|
||||
public IReadOnlyList<string> Baz { get; set; }
|
||||
|
||||
public ValueTask ExecuteAsync(IConsole console) => default;
|
||||
}
|
||||
");
|
||||
|
||||
""");
|
||||
|
||||
var application = new CliApplicationBuilder()
|
||||
.AddCommand(commandType)
|
||||
@@ -472,19 +486,21 @@ public class Command : ICommand
|
||||
// Arrange
|
||||
var commandType = DynamicCommandBuilder.Compile(
|
||||
// language=cs
|
||||
@"
|
||||
"""
|
||||
|
||||
[Command]
|
||||
public class Command : ICommand
|
||||
{
|
||||
[CommandParameter(0, Name = ""foo"", Description = ""Description of foo."")]
|
||||
[CommandParameter(0, Name = "foo", Description = "Description of foo.")]
|
||||
public string Foo { get; set; }
|
||||
|
||||
[CommandOption(""bar"", Description = ""Description of bar."")]
|
||||
[CommandOption("bar", Description = "Description of bar.")]
|
||||
public string Bar { get; set; }
|
||||
|
||||
public ValueTask ExecuteAsync(IConsole console) => default;
|
||||
}
|
||||
");
|
||||
|
||||
""");
|
||||
|
||||
var application = new CliApplicationBuilder()
|
||||
.AddCommand(commandType)
|
||||
@@ -515,13 +531,15 @@ public class Command : ICommand
|
||||
// Arrange
|
||||
var commandType = DynamicCommandBuilder.Compile(
|
||||
// language=cs
|
||||
@"
|
||||
"""
|
||||
|
||||
[Command]
|
||||
public class Command : ICommand
|
||||
{
|
||||
public ValueTask ExecuteAsync(IConsole console) => default;
|
||||
}
|
||||
");
|
||||
|
||||
""");
|
||||
|
||||
var application = new CliApplicationBuilder()
|
||||
.AddCommand(commandType)
|
||||
@@ -551,13 +569,15 @@ public class Command : ICommand
|
||||
// Arrange
|
||||
var commandType = DynamicCommandBuilder.Compile(
|
||||
// language=cs
|
||||
@"
|
||||
[Command(""cmd"")]
|
||||
"""
|
||||
|
||||
[Command("cmd")]
|
||||
public class Command : ICommand
|
||||
{
|
||||
public ValueTask ExecuteAsync(IConsole console) => default;
|
||||
}
|
||||
");
|
||||
|
||||
""");
|
||||
|
||||
var application = new CliApplicationBuilder()
|
||||
.AddCommand(commandType)
|
||||
@@ -589,7 +609,8 @@ public class Command : ICommand
|
||||
// Arrange
|
||||
var commandType = DynamicCommandBuilder.Compile(
|
||||
// language=cs
|
||||
@"
|
||||
"""
|
||||
|
||||
public enum CustomEnum { One, Two, Three }
|
||||
|
||||
[Command]
|
||||
@@ -598,12 +619,13 @@ public class Command : ICommand
|
||||
[CommandParameter(0)]
|
||||
public CustomEnum Foo { get; set; }
|
||||
|
||||
[CommandOption(""bar"")]
|
||||
[CommandOption("bar")]
|
||||
public CustomEnum Bar { get; set; }
|
||||
|
||||
public ValueTask ExecuteAsync(IConsole console) => default;
|
||||
}
|
||||
");
|
||||
|
||||
""");
|
||||
|
||||
var application = new CliApplicationBuilder()
|
||||
.AddCommand(commandType)
|
||||
@@ -634,7 +656,8 @@ public class Command : ICommand
|
||||
// Arrange
|
||||
var commandType = DynamicCommandBuilder.Compile(
|
||||
// language=cs
|
||||
@"
|
||||
"""
|
||||
|
||||
public enum CustomEnum { One, Two, Three }
|
||||
|
||||
[Command]
|
||||
@@ -643,12 +666,13 @@ public class Command : ICommand
|
||||
[CommandParameter(0)]
|
||||
public IReadOnlyList<CustomEnum> Foo { get; set; }
|
||||
|
||||
[CommandOption(""bar"")]
|
||||
[CommandOption("bar")]
|
||||
public IReadOnlyList<CustomEnum> Bar { get; set; }
|
||||
|
||||
public ValueTask ExecuteAsync(IConsole console) => default;
|
||||
}
|
||||
");
|
||||
|
||||
""");
|
||||
|
||||
var application = new CliApplicationBuilder()
|
||||
.AddCommand(commandType)
|
||||
@@ -679,7 +703,8 @@ public class Command : ICommand
|
||||
// Arrange
|
||||
var commandType = DynamicCommandBuilder.Compile(
|
||||
// language=cs
|
||||
@"
|
||||
"""
|
||||
|
||||
public enum CustomEnum { One, Two, Three }
|
||||
|
||||
[Command]
|
||||
@@ -688,12 +713,13 @@ public class Command : ICommand
|
||||
[CommandParameter(0)]
|
||||
public CustomEnum? Foo { get; set; }
|
||||
|
||||
[CommandOption(""bar"")]
|
||||
[CommandOption("bar")]
|
||||
public IReadOnlyList<CustomEnum?> Bar { get; set; }
|
||||
|
||||
public ValueTask ExecuteAsync(IConsole console) => default;
|
||||
}
|
||||
");
|
||||
|
||||
""");
|
||||
|
||||
var application = new CliApplicationBuilder()
|
||||
.AddCommand(commandType)
|
||||
@@ -724,21 +750,23 @@ public class Command : ICommand
|
||||
// Arrange
|
||||
var commandType = DynamicCommandBuilder.Compile(
|
||||
// language=cs
|
||||
@"
|
||||
"""
|
||||
|
||||
public enum CustomEnum { One, Two, Three }
|
||||
|
||||
[Command]
|
||||
public class Command : ICommand
|
||||
{
|
||||
[CommandOption(""foo"", EnvironmentVariable = ""ENV_FOO"")]
|
||||
[CommandOption("foo", EnvironmentVariable = "ENV_FOO")]
|
||||
public CustomEnum Foo { get; set; }
|
||||
|
||||
[CommandOption(""bar"", EnvironmentVariable = ""ENV_BAR"")]
|
||||
[CommandOption("bar", EnvironmentVariable = "ENV_BAR")]
|
||||
public CustomEnum Bar { get; set; }
|
||||
|
||||
public ValueTask ExecuteAsync(IConsole console) => default;
|
||||
}
|
||||
");
|
||||
|
||||
""");
|
||||
|
||||
var application = new CliApplicationBuilder()
|
||||
.AddCommand(commandType)
|
||||
@@ -768,39 +796,41 @@ public class Command : ICommand
|
||||
// Arrange
|
||||
var commandType = DynamicCommandBuilder.Compile(
|
||||
// language=cs
|
||||
@"
|
||||
"""
|
||||
|
||||
public enum CustomEnum { One, Two, Three }
|
||||
|
||||
[Command]
|
||||
public class Command : ICommand
|
||||
{
|
||||
[CommandOption(""foo"")]
|
||||
[CommandOption("foo")]
|
||||
public object Foo { get; set; } = 42;
|
||||
|
||||
[CommandOption(""bar"")]
|
||||
public string Bar { get; set; } = ""hello"";
|
||||
[CommandOption("bar")]
|
||||
public string Bar { get; set; } = "hello";
|
||||
|
||||
[CommandOption(""baz"")]
|
||||
public IReadOnlyList<string> Baz { get; set; } = new[] {""one"", ""two"", ""three""};
|
||||
[CommandOption("baz")]
|
||||
public IReadOnlyList<string> Baz { get; set; } = new[] {"one", "two", "three"};
|
||||
|
||||
[CommandOption(""qwe"")]
|
||||
[CommandOption("qwe")]
|
||||
public bool Qwe { get; set; } = true;
|
||||
|
||||
[CommandOption(""qop"")]
|
||||
[CommandOption("qop")]
|
||||
public int? Qop { get; set; } = 1337;
|
||||
|
||||
[CommandOption(""zor"")]
|
||||
[CommandOption("zor")]
|
||||
public TimeSpan Zor { get; set; } = TimeSpan.FromMinutes(123);
|
||||
|
||||
[CommandOption(""lol"")]
|
||||
[CommandOption("lol")]
|
||||
public CustomEnum Lol { get; set; } = CustomEnum.Two;
|
||||
|
||||
[CommandOption(""hmm"", IsRequired = true)]
|
||||
public string Hmm { get; set; } = ""not printed"";
|
||||
[CommandOption("hmm", IsRequired = true)]
|
||||
public string Hmm { get; set; } = "not printed";
|
||||
|
||||
public ValueTask ExecuteAsync(IConsole console) => default;
|
||||
}
|
||||
");
|
||||
|
||||
""");
|
||||
|
||||
var application = new CliApplicationBuilder()
|
||||
.AddCommand(commandType)
|
||||
@@ -836,25 +866,27 @@ public class Command : ICommand
|
||||
// Arrange
|
||||
var commandTypes = DynamicCommandBuilder.CompileMany(
|
||||
// language=cs
|
||||
@"
|
||||
[Command(""cmd1"", Description = ""Description of one command."")]
|
||||
"""
|
||||
|
||||
[Command("cmd1", Description = "Description of one command.")]
|
||||
public class FirstCommand : ICommand
|
||||
{
|
||||
public ValueTask ExecuteAsync(IConsole console) => default;
|
||||
}
|
||||
|
||||
[Command(""cmd2"", Description = ""Description of another command."")]
|
||||
[Command("cmd2", Description = "Description of another command.")]
|
||||
public class SecondCommand : ICommand
|
||||
{
|
||||
public ValueTask ExecuteAsync(IConsole console) => default;
|
||||
}
|
||||
|
||||
[Command(""cmd2 child"", Description = ""Description of another command's child command."")]
|
||||
[Command("cmd2 child", Description = "Description of another command's child command.")]
|
||||
public class SecondCommandChildCommand : ICommand
|
||||
{
|
||||
public ValueTask ExecuteAsync(IConsole console) => default;
|
||||
}
|
||||
");
|
||||
|
||||
""");
|
||||
|
||||
var application = new CliApplicationBuilder()
|
||||
.AddCommands(commandTypes)
|
||||
@@ -890,37 +922,39 @@ public class SecondCommandChildCommand : ICommand
|
||||
// Arrange
|
||||
var commandTypes = DynamicCommandBuilder.CompileMany(
|
||||
// language=cs
|
||||
@"
|
||||
[Command(""cmd1"")]
|
||||
"""
|
||||
|
||||
[Command("cmd1")]
|
||||
public class FirstCommand : ICommand
|
||||
{
|
||||
public ValueTask ExecuteAsync(IConsole console) => default;
|
||||
}
|
||||
|
||||
[Command(""cmd1 child1"")]
|
||||
[Command("cmd1 child1")]
|
||||
public class FirstCommandFirstChildCommand : ICommand
|
||||
{
|
||||
public ValueTask ExecuteAsync(IConsole console) => default;
|
||||
}
|
||||
|
||||
[Command(""cmd2"")]
|
||||
[Command("cmd2")]
|
||||
public class SecondCommand : ICommand
|
||||
{
|
||||
public ValueTask ExecuteAsync(IConsole console) => default;
|
||||
}
|
||||
|
||||
[Command(""cmd2 child11"")]
|
||||
[Command("cmd2 child11")]
|
||||
public class SecondCommandFirstChildCommand : ICommand
|
||||
{
|
||||
public ValueTask ExecuteAsync(IConsole console) => default;
|
||||
}
|
||||
|
||||
[Command(""cmd2 child2"")]
|
||||
[Command("cmd2 child2")]
|
||||
public class SecondCommandSecondChildCommand : ICommand
|
||||
{
|
||||
public ValueTask ExecuteAsync(IConsole console) => default;
|
||||
}
|
||||
");
|
||||
|
||||
""");
|
||||
|
||||
var application = new CliApplicationBuilder()
|
||||
.AddCommands(commandTypes)
|
||||
@@ -950,25 +984,27 @@ public class SecondCommandSecondChildCommand : ICommand
|
||||
// Arrange
|
||||
var commandTypes = DynamicCommandBuilder.CompileMany(
|
||||
// language=cs
|
||||
@"
|
||||
[Command(""cmd1"")]
|
||||
"""
|
||||
|
||||
[Command("cmd1")]
|
||||
public class FirstCommand : ICommand
|
||||
{
|
||||
public ValueTask ExecuteAsync(IConsole console) => default;
|
||||
}
|
||||
|
||||
[Command(""cmd2 child1"")]
|
||||
[Command("cmd2 child1")]
|
||||
public class SecondCommandFirstChildCommand : ICommand
|
||||
{
|
||||
public ValueTask ExecuteAsync(IConsole console) => default;
|
||||
}
|
||||
|
||||
[Command(""cmd2 child2"")]
|
||||
[Command("cmd2 child2")]
|
||||
public class SecondCommandSecondChildCommand : ICommand
|
||||
{
|
||||
public ValueTask ExecuteAsync(IConsole console) => default;
|
||||
}
|
||||
");
|
||||
|
||||
""");
|
||||
|
||||
var application = new CliApplicationBuilder()
|
||||
.AddCommands(commandTypes)
|
||||
|
||||
@@ -22,11 +22,11 @@ public class OptionBindingSpecs : SpecsBase
|
||||
// Arrange
|
||||
var commandType = DynamicCommandBuilder.Compile(
|
||||
// language=cs
|
||||
@"
|
||||
"""
|
||||
[Command]
|
||||
public class Command : ICommand
|
||||
{
|
||||
[CommandOption(""foo"")]
|
||||
[CommandOption("foo")]
|
||||
public bool Foo { get; set; }
|
||||
|
||||
public ValueTask ExecuteAsync(IConsole console)
|
||||
@@ -34,7 +34,9 @@ public class Command : ICommand
|
||||
console.Output.WriteLine(Foo);
|
||||
return default;
|
||||
}
|
||||
}");
|
||||
}
|
||||
"""
|
||||
);
|
||||
|
||||
var application = new CliApplicationBuilder()
|
||||
.AddCommand(commandType)
|
||||
@@ -60,7 +62,7 @@ public class Command : ICommand
|
||||
// Arrange
|
||||
var commandType = DynamicCommandBuilder.Compile(
|
||||
// language=cs
|
||||
@"
|
||||
"""
|
||||
[Command]
|
||||
public class Command : ICommand
|
||||
{
|
||||
@@ -72,7 +74,9 @@ public class Command : ICommand
|
||||
console.Output.WriteLine(Foo);
|
||||
return default;
|
||||
}
|
||||
}");
|
||||
}
|
||||
"""
|
||||
);
|
||||
|
||||
var application = new CliApplicationBuilder()
|
||||
.AddCommand(commandType)
|
||||
@@ -98,24 +102,26 @@ public class Command : ICommand
|
||||
// Arrange
|
||||
var commandType = DynamicCommandBuilder.Compile(
|
||||
// language=cs
|
||||
@"
|
||||
"""
|
||||
[Command]
|
||||
public class Command : ICommand
|
||||
{
|
||||
[CommandOption(""foo"")]
|
||||
[CommandOption("foo")]
|
||||
public string Foo { get; set; }
|
||||
|
||||
[CommandOption(""bar"")]
|
||||
[CommandOption("bar")]
|
||||
public string Bar { get; set; }
|
||||
|
||||
public ValueTask ExecuteAsync(IConsole console)
|
||||
{
|
||||
console.Output.WriteLine(""Foo = "" + Foo);
|
||||
console.Output.WriteLine(""Bar = "" + Bar);
|
||||
console.Output.WriteLine("Foo = " + Foo);
|
||||
console.Output.WriteLine("Bar = " + Bar);
|
||||
|
||||
return default;
|
||||
}
|
||||
}");
|
||||
}
|
||||
"""
|
||||
);
|
||||
|
||||
var application = new CliApplicationBuilder()
|
||||
.AddCommand(commandType)
|
||||
@@ -144,7 +150,7 @@ public class Command : ICommand
|
||||
// Arrange
|
||||
var commandType = DynamicCommandBuilder.Compile(
|
||||
// language=cs
|
||||
@"
|
||||
"""
|
||||
[Command]
|
||||
public class Command : ICommand
|
||||
{
|
||||
@@ -156,12 +162,14 @@ public class Command : ICommand
|
||||
|
||||
public ValueTask ExecuteAsync(IConsole console)
|
||||
{
|
||||
console.Output.WriteLine(""Foo = "" + Foo);
|
||||
console.Output.WriteLine(""Bar = "" + Bar);
|
||||
console.Output.WriteLine("Foo = " + Foo);
|
||||
console.Output.WriteLine("Bar = " + Bar);
|
||||
|
||||
return default;
|
||||
}
|
||||
}");
|
||||
}
|
||||
"""
|
||||
);
|
||||
|
||||
var application = new CliApplicationBuilder()
|
||||
.AddCommand(commandType)
|
||||
@@ -190,7 +198,7 @@ public class Command : ICommand
|
||||
// Arrange
|
||||
var commandType = DynamicCommandBuilder.Compile(
|
||||
// language=cs
|
||||
@"
|
||||
"""
|
||||
[Command]
|
||||
public class Command : ICommand
|
||||
{
|
||||
@@ -202,12 +210,14 @@ public class Command : ICommand
|
||||
|
||||
public ValueTask ExecuteAsync(IConsole console)
|
||||
{
|
||||
console.Output.WriteLine(""Foo = "" + Foo);
|
||||
console.Output.WriteLine(""Bar = "" + Bar);
|
||||
console.Output.WriteLine("Foo = " + Foo);
|
||||
console.Output.WriteLine("Bar = " + Bar);
|
||||
|
||||
return default;
|
||||
}
|
||||
}");
|
||||
}
|
||||
"""
|
||||
);
|
||||
|
||||
var application = new CliApplicationBuilder()
|
||||
.AddCommand(commandType)
|
||||
@@ -236,11 +246,11 @@ public class Command : ICommand
|
||||
// Arrange
|
||||
var commandType = DynamicCommandBuilder.Compile(
|
||||
// language=cs
|
||||
@"
|
||||
"""
|
||||
[Command]
|
||||
public class Command : ICommand
|
||||
{
|
||||
[CommandOption(""Foo"")]
|
||||
[CommandOption("Foo")]
|
||||
public IReadOnlyList<string> Foo { get; set; }
|
||||
|
||||
public ValueTask ExecuteAsync(IConsole console)
|
||||
@@ -250,7 +260,9 @@ public class Command : ICommand
|
||||
|
||||
return default;
|
||||
}
|
||||
}");
|
||||
}
|
||||
"""
|
||||
);
|
||||
|
||||
var application = new CliApplicationBuilder()
|
||||
.AddCommand(commandType)
|
||||
@@ -280,7 +292,7 @@ public class Command : ICommand
|
||||
// Arrange
|
||||
var commandType = DynamicCommandBuilder.Compile(
|
||||
// language=cs
|
||||
@"
|
||||
"""
|
||||
[Command]
|
||||
public class Command : ICommand
|
||||
{
|
||||
@@ -294,7 +306,9 @@ public class Command : ICommand
|
||||
|
||||
return default;
|
||||
}
|
||||
}");
|
||||
}
|
||||
"""
|
||||
);
|
||||
|
||||
var application = new CliApplicationBuilder()
|
||||
.AddCommand(commandType)
|
||||
@@ -324,11 +338,11 @@ public class Command : ICommand
|
||||
// Arrange
|
||||
var commandType = DynamicCommandBuilder.Compile(
|
||||
// language=cs
|
||||
@"
|
||||
"""
|
||||
[Command]
|
||||
public class Command : ICommand
|
||||
{
|
||||
[CommandOption(""foo"")]
|
||||
[CommandOption("foo")]
|
||||
public IReadOnlyList<string> Foo { get; set; }
|
||||
|
||||
public ValueTask ExecuteAsync(IConsole console)
|
||||
@@ -338,7 +352,9 @@ public class Command : ICommand
|
||||
|
||||
return default;
|
||||
}
|
||||
}");
|
||||
}
|
||||
"""
|
||||
);
|
||||
|
||||
var application = new CliApplicationBuilder()
|
||||
.AddCommand(commandType)
|
||||
@@ -368,7 +384,7 @@ public class Command : ICommand
|
||||
// Arrange
|
||||
var commandType = DynamicCommandBuilder.Compile(
|
||||
// language=cs
|
||||
@"
|
||||
"""
|
||||
[Command]
|
||||
public class Command : ICommand
|
||||
{
|
||||
@@ -382,7 +398,9 @@ public class Command : ICommand
|
||||
|
||||
return default;
|
||||
}
|
||||
}");
|
||||
}
|
||||
"""
|
||||
);
|
||||
|
||||
var application = new CliApplicationBuilder()
|
||||
.AddCommand(commandType)
|
||||
@@ -412,11 +430,11 @@ public class Command : ICommand
|
||||
// Arrange
|
||||
var commandType = DynamicCommandBuilder.Compile(
|
||||
// language=cs
|
||||
@"
|
||||
"""
|
||||
[Command]
|
||||
public class Command : ICommand
|
||||
{
|
||||
[CommandOption(""foo"", 'f')]
|
||||
[CommandOption("foo", 'f')]
|
||||
public IReadOnlyList<string> Foo { get; set; }
|
||||
|
||||
public ValueTask ExecuteAsync(IConsole console)
|
||||
@@ -426,7 +444,9 @@ public class Command : ICommand
|
||||
|
||||
return default;
|
||||
}
|
||||
}");
|
||||
}
|
||||
"""
|
||||
);
|
||||
|
||||
var application = new CliApplicationBuilder()
|
||||
.AddCommand(commandType)
|
||||
@@ -456,24 +476,26 @@ public class Command : ICommand
|
||||
// Arrange
|
||||
var commandType = DynamicCommandBuilder.Compile(
|
||||
// language=cs
|
||||
@"
|
||||
"""
|
||||
[Command]
|
||||
public class Command : ICommand
|
||||
{
|
||||
[CommandOption(""foo"")]
|
||||
[CommandOption("foo")]
|
||||
public string Foo { get; set; }
|
||||
|
||||
[CommandOption(""bar"")]
|
||||
public string Bar { get; set; } = ""hello"";
|
||||
[CommandOption("bar")]
|
||||
public string Bar { get; set; } = "hello";
|
||||
|
||||
public ValueTask ExecuteAsync(IConsole console)
|
||||
{
|
||||
console.Output.WriteLine(""Foo = "" + Foo);
|
||||
console.Output.WriteLine(""Bar = "" + Bar);
|
||||
console.Output.WriteLine("Foo = " + Foo);
|
||||
console.Output.WriteLine("Bar = " + Bar);
|
||||
|
||||
return default;
|
||||
}
|
||||
}");
|
||||
}
|
||||
"""
|
||||
);
|
||||
|
||||
var application = new CliApplicationBuilder()
|
||||
.AddCommand(commandType)
|
||||
@@ -502,7 +524,7 @@ public class Command : ICommand
|
||||
// Arrange
|
||||
var commandType = DynamicCommandBuilder.Compile(
|
||||
// language=cs
|
||||
@"
|
||||
"""
|
||||
public static class SharedContext
|
||||
{
|
||||
public static int Foo { get; set; }
|
||||
@@ -512,7 +534,7 @@ public static class SharedContext
|
||||
|
||||
public interface IHasFoo : ICommand
|
||||
{
|
||||
[CommandOption(""foo"")]
|
||||
[CommandOption("foo")]
|
||||
public int Foo
|
||||
{
|
||||
get => SharedContext.Foo;
|
||||
@@ -522,7 +544,7 @@ public interface IHasFoo : ICommand
|
||||
|
||||
public interface IHasBar : ICommand
|
||||
{
|
||||
[CommandOption(""bar"")]
|
||||
[CommandOption("bar")]
|
||||
public bool Bar
|
||||
{
|
||||
get => SharedContext.Bar;
|
||||
@@ -538,19 +560,20 @@ public interface IHasBaz : ICommand
|
||||
[Command]
|
||||
public class Command : IHasFoo, IHasBar, IHasBaz
|
||||
{
|
||||
[CommandOption(""baz"")]
|
||||
[CommandOption("baz")]
|
||||
public string Baz { get; set; }
|
||||
|
||||
public ValueTask ExecuteAsync(IConsole console)
|
||||
{
|
||||
console.Output.WriteLine(""Foo = "" + SharedContext.Foo);
|
||||
console.Output.WriteLine(""Bar = "" + SharedContext.Bar);
|
||||
console.Output.WriteLine(""Baz = "" + Baz);
|
||||
console.Output.WriteLine("Foo = " + SharedContext.Foo);
|
||||
console.Output.WriteLine("Bar = " + SharedContext.Bar);
|
||||
console.Output.WriteLine("Baz = " + Baz);
|
||||
|
||||
return default;
|
||||
}
|
||||
}
|
||||
");
|
||||
"""
|
||||
);
|
||||
|
||||
var application = new CliApplicationBuilder()
|
||||
.AddCommand(commandType)
|
||||
@@ -579,11 +602,11 @@ public class Command : IHasFoo, IHasBar, IHasBaz
|
||||
// Arrange
|
||||
var commandType = DynamicCommandBuilder.Compile(
|
||||
// language=cs
|
||||
@"
|
||||
"""
|
||||
[Command]
|
||||
public class Command : ICommand
|
||||
{
|
||||
[CommandOption(""foo"")]
|
||||
[CommandOption("foo")]
|
||||
public string Foo { get; set; }
|
||||
|
||||
public ValueTask ExecuteAsync(IConsole console)
|
||||
@@ -592,7 +615,9 @@ public class Command : ICommand
|
||||
|
||||
return default;
|
||||
}
|
||||
}");
|
||||
}
|
||||
"""
|
||||
);
|
||||
|
||||
var application = new CliApplicationBuilder()
|
||||
.AddCommand(commandType)
|
||||
@@ -618,15 +643,17 @@ public class Command : ICommand
|
||||
// Arrange
|
||||
var commandType = DynamicCommandBuilder.Compile(
|
||||
// language=cs
|
||||
@"
|
||||
"""
|
||||
[Command]
|
||||
public class Command : ICommand
|
||||
{
|
||||
[CommandOption(""foo"", IsRequired = true)]
|
||||
[CommandOption("foo", IsRequired = true)]
|
||||
public string Foo { get; set; }
|
||||
|
||||
public ValueTask ExecuteAsync(IConsole console) => default;
|
||||
}");
|
||||
}
|
||||
"""
|
||||
);
|
||||
|
||||
var application = new CliApplicationBuilder()
|
||||
.AddCommand(commandType)
|
||||
@@ -652,15 +679,17 @@ public class Command : ICommand
|
||||
// Arrange
|
||||
var commandType = DynamicCommandBuilder.Compile(
|
||||
// language=cs
|
||||
@"
|
||||
"""
|
||||
[Command]
|
||||
public class Command : ICommand
|
||||
{
|
||||
[CommandOption(""foo"", IsRequired = true)]
|
||||
[CommandOption("foo", IsRequired = true)]
|
||||
public string Foo { get; set; }
|
||||
|
||||
public ValueTask ExecuteAsync(IConsole console) => default;
|
||||
}");
|
||||
}
|
||||
"""
|
||||
);
|
||||
|
||||
var application = new CliApplicationBuilder()
|
||||
.AddCommand(commandType)
|
||||
@@ -686,15 +715,17 @@ public class Command : ICommand
|
||||
// Arrange
|
||||
var commandType = DynamicCommandBuilder.Compile(
|
||||
// language=cs
|
||||
@"
|
||||
"""
|
||||
[Command]
|
||||
public class Command : ICommand
|
||||
{
|
||||
[CommandOption(""foo"", IsRequired = true)]
|
||||
[CommandOption("foo", IsRequired = true)]
|
||||
public IReadOnlyList<string> Foo { get; set; }
|
||||
|
||||
public ValueTask ExecuteAsync(IConsole console) => default;
|
||||
}");
|
||||
}
|
||||
"""
|
||||
);
|
||||
|
||||
var application = new CliApplicationBuilder()
|
||||
.AddCommand(commandType)
|
||||
@@ -720,15 +751,17 @@ public class Command : ICommand
|
||||
// Arrange
|
||||
var commandType = DynamicCommandBuilder.Compile(
|
||||
// language=cs
|
||||
@"
|
||||
"""
|
||||
[Command]
|
||||
public class Command : ICommand
|
||||
{
|
||||
[CommandOption(""foo"")]
|
||||
[CommandOption("foo")]
|
||||
public string Foo { get; set; }
|
||||
|
||||
public ValueTask ExecuteAsync(IConsole console) => default;
|
||||
}");
|
||||
}
|
||||
"""
|
||||
);
|
||||
|
||||
var application = new CliApplicationBuilder()
|
||||
.AddCommand(commandType)
|
||||
@@ -754,15 +787,17 @@ public class Command : ICommand
|
||||
// Arrange
|
||||
var commandType = DynamicCommandBuilder.Compile(
|
||||
// language=cs
|
||||
@"
|
||||
"""
|
||||
[Command]
|
||||
public class Command : ICommand
|
||||
{
|
||||
[CommandOption(""foo"")]
|
||||
[CommandOption("foo")]
|
||||
public string Foo { get; set; }
|
||||
|
||||
public ValueTask ExecuteAsync(IConsole console) => default;
|
||||
}");
|
||||
}
|
||||
"""
|
||||
);
|
||||
|
||||
var application = new CliApplicationBuilder()
|
||||
.AddCommand(commandType)
|
||||
|
||||
@@ -21,7 +21,7 @@ public class ParameterBindingSpecs : SpecsBase
|
||||
// Arrange
|
||||
var commandType = DynamicCommandBuilder.Compile(
|
||||
// language=cs
|
||||
@"
|
||||
"""
|
||||
[Command]
|
||||
public class Command : ICommand
|
||||
{
|
||||
@@ -33,12 +33,14 @@ public class Command : ICommand
|
||||
|
||||
public ValueTask ExecuteAsync(IConsole console)
|
||||
{
|
||||
console.Output.WriteLine(""Foo = "" + Foo);
|
||||
console.Output.WriteLine(""Bar = "" + Bar);
|
||||
console.Output.WriteLine("Foo = " + Foo);
|
||||
console.Output.WriteLine("Bar = " + Bar);
|
||||
|
||||
return default;
|
||||
}
|
||||
}");
|
||||
}
|
||||
"""
|
||||
);
|
||||
|
||||
var application = new CliApplicationBuilder()
|
||||
.AddCommand(commandType)
|
||||
@@ -67,7 +69,7 @@ public class Command : ICommand
|
||||
// Arrange
|
||||
var commandType = DynamicCommandBuilder.Compile(
|
||||
// language=cs
|
||||
@"
|
||||
"""
|
||||
[Command]
|
||||
public class Command : ICommand
|
||||
{
|
||||
@@ -80,20 +82,22 @@ public class Command : ICommand
|
||||
[CommandParameter(2)]
|
||||
public IReadOnlyList<string> Baz { get; set; }
|
||||
|
||||
[CommandOption(""boo"")]
|
||||
[CommandOption("boo")]
|
||||
public string Boo { get; set; }
|
||||
|
||||
public ValueTask ExecuteAsync(IConsole console)
|
||||
{
|
||||
console.Output.WriteLine(""Foo = "" + Foo);
|
||||
console.Output.WriteLine(""Bar = "" + Bar);
|
||||
console.Output.WriteLine("Foo = " + Foo);
|
||||
console.Output.WriteLine("Bar = " + Bar);
|
||||
|
||||
foreach (var i in Baz)
|
||||
console.Output.WriteLine(""Baz = "" + i);
|
||||
console.Output.WriteLine("Baz = " + i);
|
||||
|
||||
return default;
|
||||
}
|
||||
}");
|
||||
}
|
||||
"""
|
||||
);
|
||||
|
||||
var application = new CliApplicationBuilder()
|
||||
.AddCommand(commandType)
|
||||
@@ -125,7 +129,7 @@ public class Command : ICommand
|
||||
// Arrange
|
||||
var commandType = DynamicCommandBuilder.Compile(
|
||||
// language=cs
|
||||
@"
|
||||
"""
|
||||
[Command]
|
||||
public class Command : ICommand
|
||||
{
|
||||
@@ -133,16 +137,18 @@ public class Command : ICommand
|
||||
public string Foo { get; set; }
|
||||
|
||||
[CommandParameter(1, IsRequired = false)]
|
||||
public string Bar { get; set; } = ""xyz"";
|
||||
public string Bar { get; set; } = "xyz";
|
||||
|
||||
public ValueTask ExecuteAsync(IConsole console)
|
||||
{
|
||||
console.Output.WriteLine(""Foo = "" + Foo);
|
||||
console.Output.WriteLine(""Bar = "" + Bar);
|
||||
console.Output.WriteLine("Foo = " + Foo);
|
||||
console.Output.WriteLine("Bar = " + Bar);
|
||||
|
||||
return default;
|
||||
}
|
||||
}");
|
||||
}
|
||||
"""
|
||||
);
|
||||
|
||||
var application = new CliApplicationBuilder()
|
||||
.AddCommand(commandType)
|
||||
@@ -171,7 +177,7 @@ public class Command : ICommand
|
||||
// Arrange
|
||||
var commandType = DynamicCommandBuilder.Compile(
|
||||
// language=cs
|
||||
@"
|
||||
"""
|
||||
[Command]
|
||||
public class Command : ICommand
|
||||
{
|
||||
@@ -182,7 +188,9 @@ public class Command : ICommand
|
||||
public string Bar { get; set; }
|
||||
|
||||
public ValueTask ExecuteAsync(IConsole console) => default;
|
||||
}");
|
||||
}
|
||||
"""
|
||||
);
|
||||
|
||||
var application = new CliApplicationBuilder()
|
||||
.AddCommand(commandType)
|
||||
@@ -208,7 +216,7 @@ public class Command : ICommand
|
||||
// Arrange
|
||||
var commandType = DynamicCommandBuilder.Compile(
|
||||
// language=cs
|
||||
@"
|
||||
"""
|
||||
[Command]
|
||||
public class Command : ICommand
|
||||
{
|
||||
@@ -219,7 +227,9 @@ public class Command : ICommand
|
||||
public IReadOnlyList<string> Bar { get; set; }
|
||||
|
||||
public ValueTask ExecuteAsync(IConsole console) => default;
|
||||
}");
|
||||
}
|
||||
"""
|
||||
);
|
||||
|
||||
var application = new CliApplicationBuilder()
|
||||
.AddCommand(commandType)
|
||||
@@ -245,7 +255,7 @@ public class Command : ICommand
|
||||
// Arrange
|
||||
var commandType = DynamicCommandBuilder.Compile(
|
||||
// language=cs
|
||||
@"
|
||||
"""
|
||||
[Command]
|
||||
public class Command : ICommand
|
||||
{
|
||||
@@ -256,7 +266,9 @@ public class Command : ICommand
|
||||
public string Bar { get; set; }
|
||||
|
||||
public ValueTask ExecuteAsync(IConsole console) => default;
|
||||
}");
|
||||
}
|
||||
"""
|
||||
);
|
||||
|
||||
var application = new CliApplicationBuilder()
|
||||
.AddCommand(commandType)
|
||||
|
||||
@@ -21,37 +21,38 @@ public class RoutingSpecs : SpecsBase
|
||||
// Arrange
|
||||
var commandTypes = DynamicCommandBuilder.CompileMany(
|
||||
// language=cs
|
||||
@"
|
||||
"""
|
||||
[Command]
|
||||
public class DefaultCommand : ICommand
|
||||
{
|
||||
public ValueTask ExecuteAsync(IConsole console)
|
||||
{
|
||||
console.Output.WriteLine(""default"");
|
||||
console.Output.WriteLine("default");
|
||||
return default;
|
||||
}
|
||||
}
|
||||
|
||||
[Command(""cmd"")]
|
||||
[Command("cmd")]
|
||||
public class NamedCommand : ICommand
|
||||
{
|
||||
public ValueTask ExecuteAsync(IConsole console)
|
||||
{
|
||||
console.Output.WriteLine(""cmd"");
|
||||
console.Output.WriteLine("cmd");
|
||||
return default;
|
||||
}
|
||||
}
|
||||
|
||||
[Command(""cmd child"")]
|
||||
[Command("cmd child")]
|
||||
public class NamedChildCommand : ICommand
|
||||
{
|
||||
public ValueTask ExecuteAsync(IConsole console)
|
||||
{
|
||||
console.Output.WriteLine(""cmd child"");
|
||||
console.Output.WriteLine("cmd child");
|
||||
return default;
|
||||
}
|
||||
}
|
||||
");
|
||||
"""
|
||||
);
|
||||
|
||||
var application = new CliApplicationBuilder()
|
||||
.AddCommands(commandTypes)
|
||||
@@ -77,37 +78,38 @@ public class NamedChildCommand : ICommand
|
||||
// Arrange
|
||||
var commandTypes = DynamicCommandBuilder.CompileMany(
|
||||
// language=cs
|
||||
@"
|
||||
"""
|
||||
[Command]
|
||||
public class DefaultCommand : ICommand
|
||||
{
|
||||
public ValueTask ExecuteAsync(IConsole console)
|
||||
{
|
||||
console.Output.WriteLine(""default"");
|
||||
console.Output.WriteLine("default");
|
||||
return default;
|
||||
}
|
||||
}
|
||||
|
||||
[Command(""cmd"")]
|
||||
[Command("cmd")]
|
||||
public class NamedCommand : ICommand
|
||||
{
|
||||
public ValueTask ExecuteAsync(IConsole console)
|
||||
{
|
||||
console.Output.WriteLine(""cmd"");
|
||||
console.Output.WriteLine("cmd");
|
||||
return default;
|
||||
}
|
||||
}
|
||||
|
||||
[Command(""cmd child"")]
|
||||
[Command("cmd child")]
|
||||
public class NamedChildCommand : ICommand
|
||||
{
|
||||
public ValueTask ExecuteAsync(IConsole console)
|
||||
{
|
||||
console.Output.WriteLine(""cmd child"");
|
||||
console.Output.WriteLine("cmd child");
|
||||
return default;
|
||||
}
|
||||
}
|
||||
");
|
||||
"""
|
||||
);
|
||||
|
||||
var application = new CliApplicationBuilder()
|
||||
.AddCommands(commandTypes)
|
||||
@@ -133,37 +135,38 @@ public class NamedChildCommand : ICommand
|
||||
// Arrange
|
||||
var commandTypes = DynamicCommandBuilder.CompileMany(
|
||||
// language=cs
|
||||
@"
|
||||
"""
|
||||
[Command]
|
||||
public class DefaultCommand : ICommand
|
||||
{
|
||||
public ValueTask ExecuteAsync(IConsole console)
|
||||
{
|
||||
console.Output.WriteLine(""default"");
|
||||
console.Output.WriteLine("default");
|
||||
return default;
|
||||
}
|
||||
}
|
||||
|
||||
[Command(""cmd"")]
|
||||
[Command("cmd")]
|
||||
public class NamedCommand : ICommand
|
||||
{
|
||||
public ValueTask ExecuteAsync(IConsole console)
|
||||
{
|
||||
console.Output.WriteLine(""cmd"");
|
||||
console.Output.WriteLine("cmd");
|
||||
return default;
|
||||
}
|
||||
}
|
||||
|
||||
[Command(""cmd child"")]
|
||||
[Command("cmd child")]
|
||||
public class NamedChildCommand : ICommand
|
||||
{
|
||||
public ValueTask ExecuteAsync(IConsole console)
|
||||
{
|
||||
console.Output.WriteLine(""cmd child"");
|
||||
console.Output.WriteLine("cmd child");
|
||||
return default;
|
||||
}
|
||||
}
|
||||
");
|
||||
"""
|
||||
);
|
||||
|
||||
var application = new CliApplicationBuilder()
|
||||
.AddCommands(commandTypes)
|
||||
|
||||
@@ -23,16 +23,18 @@ public class TypeActivationSpecs : SpecsBase
|
||||
// Arrange
|
||||
var commandType = DynamicCommandBuilder.Compile(
|
||||
// language=cs
|
||||
@"
|
||||
"""
|
||||
[Command]
|
||||
public class Command : ICommand
|
||||
{
|
||||
public ValueTask ExecuteAsync(IConsole console)
|
||||
{
|
||||
console.Output.WriteLine(""foo"");
|
||||
console.Output.WriteLine("foo");
|
||||
return default;
|
||||
}
|
||||
}");
|
||||
}
|
||||
"""
|
||||
);
|
||||
|
||||
var application = new CliApplicationBuilder()
|
||||
.AddCommand(commandType)
|
||||
@@ -59,14 +61,16 @@ public class Command : ICommand
|
||||
// Arrange
|
||||
var commandType = DynamicCommandBuilder.Compile(
|
||||
// language=cs
|
||||
@"
|
||||
"""
|
||||
[Command]
|
||||
public class Command : ICommand
|
||||
{
|
||||
public Command(string foo) {}
|
||||
|
||||
public ValueTask ExecuteAsync(IConsole console) => default;
|
||||
}");
|
||||
}
|
||||
"""
|
||||
);
|
||||
|
||||
var application = new CliApplicationBuilder()
|
||||
.AddCommand(commandType)
|
||||
@@ -93,7 +97,7 @@ public class Command : ICommand
|
||||
// Arrange
|
||||
var commandType = DynamicCommandBuilder.Compile(
|
||||
// language=cs
|
||||
@"
|
||||
"""
|
||||
[Command]
|
||||
public class Command : ICommand
|
||||
{
|
||||
@@ -106,7 +110,9 @@ public class Command : ICommand
|
||||
console.Output.WriteLine(_foo);
|
||||
return default;
|
||||
}
|
||||
}");
|
||||
}
|
||||
"""
|
||||
);
|
||||
|
||||
var application = new CliApplicationBuilder()
|
||||
.AddCommand(commandType)
|
||||
@@ -133,7 +139,7 @@ public class Command : ICommand
|
||||
// Arrange
|
||||
var commandType = DynamicCommandBuilder.Compile(
|
||||
// language=cs
|
||||
@"
|
||||
"""
|
||||
[Command]
|
||||
public class Command : ICommand
|
||||
{
|
||||
@@ -146,7 +152,9 @@ public class Command : ICommand
|
||||
console.Output.WriteLine(_foo);
|
||||
return default;
|
||||
}
|
||||
}");
|
||||
}
|
||||
"""
|
||||
);
|
||||
|
||||
var serviceProvider = new ServiceCollection()
|
||||
.AddSingleton(commandType, Activator.CreateInstance(commandType, "Hello world")!)
|
||||
@@ -177,16 +185,18 @@ public class Command : ICommand
|
||||
// Arrange
|
||||
var commandType = DynamicCommandBuilder.Compile(
|
||||
// language=cs
|
||||
@"
|
||||
"""
|
||||
[Command]
|
||||
public class Command : ICommand
|
||||
{
|
||||
public ValueTask ExecuteAsync(IConsole console)
|
||||
{
|
||||
console.Output.WriteLine(""foo"");
|
||||
console.Output.WriteLine("foo");
|
||||
return default;
|
||||
}
|
||||
}");
|
||||
}
|
||||
"""
|
||||
);
|
||||
|
||||
var application = new CliApplicationBuilder()
|
||||
.AddCommand(commandType)
|
||||
|
||||
Reference in New Issue
Block a user