Skip to content

Commit

Permalink
[.NET] Adopt c# 10 file scoped namespaces
Browse files Browse the repository at this point in the history
  • Loading branch information
Romfos committed Aug 15, 2024
1 parent 3970e02 commit 6fd2dd4
Show file tree
Hide file tree
Showing 91 changed files with 2,829 additions and 2,905 deletions.
1 change: 1 addition & 0 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
Expand Up @@ -10,6 +10,7 @@ This document is formatted according to the principles of [Keep A CHANGELOG](htt
### Changed
- [Ruby] Upgraded messages support to permit up to v26
- [.NET] Drop unsupported frameworks. Now supported target frameworks are .NET 8, .NET Framework 4.6.2, .NET Standard 2.0
- [.NET] Adopt File Scoped Namespaces c# feature

## [29.0.0] - 2024-08-12
### Added
Expand Down
43 changes: 21 additions & 22 deletions dotnet/Gherkin.Specs/AstBuildingTests.cs
Original file line number Diff line number Diff line change
Expand Up @@ -4,36 +4,35 @@
using Gherkin.Specs.Helper;
using Xunit;

namespace Gherkin.Specs
namespace Gherkin.Specs;

public class AstBuildingTests : EventTestBase
{
public class AstBuildingTests : EventTestBase
[Theory, MemberData(nameof(TestFileProvider.GetValidTestFiles), MemberType = typeof(TestFileProvider))]
public void TestSuccessfulAstBuilding(string testFeatureFile)
{
[Theory, MemberData(nameof(TestFileProvider.GetValidTestFiles), MemberType = typeof(TestFileProvider))]
public void TestSuccessfulAstBuilding(string testFeatureFile)
{
var testFile = GetFullPathToTestFeatureFile(testFeatureFile, "good", ".ast.ndjson");
var expectedAstContent = GetExpectedContent(testFile.ExpectedFileFullPath);
var testFile = GetFullPathToTestFeatureFile(testFeatureFile, "good", ".ast.ndjson");
var expectedAstContent = GetExpectedContent(testFile.ExpectedFileFullPath);

var expectedGherkinDocumentEvent = NDJsonParser.Deserialize<Envelope>(expectedAstContent);
var expectedGherkinDocumentEvent = NDJsonParser.Deserialize<Envelope>(expectedAstContent);

var raisedEvents = ProcessGherkinEvents(testFile.FullPath, false, true, false);
var raisedEvents = ProcessGherkinEvents(testFile.FullPath, false, true, false);

raisedEvents.Should().Match(list => list.All(e => e.GherkinDocument != null));
AssertEvents(testFeatureFile, raisedEvents, expectedGherkinDocumentEvent, testFile);
}
raisedEvents.Should().Match(list => list.All(e => e.GherkinDocument != null));
AssertEvents(testFeatureFile, raisedEvents, expectedGherkinDocumentEvent, testFile);
}

[Theory, MemberData(nameof(TestFileProvider.GetInvalidTestFiles), MemberType = typeof(TestFileProvider))]
public void TestFailedAstBuilding(string testFeatureFile)
{
var testFile = GetFullPathToTestFeatureFile(testFeatureFile, "bad", ".errors.ndjson");
var expectedAstContent = GetExpectedContent(testFile.ExpectedFileFullPath);
[Theory, MemberData(nameof(TestFileProvider.GetInvalidTestFiles), MemberType = typeof(TestFileProvider))]
public void TestFailedAstBuilding(string testFeatureFile)
{
var testFile = GetFullPathToTestFeatureFile(testFeatureFile, "bad", ".errors.ndjson");
var expectedAstContent = GetExpectedContent(testFile.ExpectedFileFullPath);

var expectedGherkinDocumentEvent = NDJsonParser.Deserialize<Envelope>(expectedAstContent);
var expectedGherkinDocumentEvent = NDJsonParser.Deserialize<Envelope>(expectedAstContent);

var raisedEvents = ProcessGherkinEvents(testFile.FullPath, false, true, false);
var raisedEvents = ProcessGherkinEvents(testFile.FullPath, false, true, false);

raisedEvents.Should().Match(list => list.All(e => e.ParseError != null));
AssertEvents(testFeatureFile, raisedEvents, expectedGherkinDocumentEvent, testFile);
}
raisedEvents.Should().Match(list => list.All(e => e.ParseError != null));
AssertEvents(testFeatureFile, raisedEvents, expectedGherkinDocumentEvent, testFile);
}
}
151 changes: 75 additions & 76 deletions dotnet/Gherkin.Specs/CLI/Program.cs
Original file line number Diff line number Diff line change
Expand Up @@ -6,107 +6,106 @@
using Gherkin.Specs.Tokens;
using Utf8Json.Resolvers;

namespace Gherkin.Specs.CLI
namespace Gherkin.Specs.CLI;

class Program
{
class Program
static int Main(string[] argv)
{
static int Main(string[] argv)
if (argv.Length == 0)
{
if (argv.Length == 0)
{
ShowUsage();
return 100;
}

switch (argv[0].ToLowerInvariant())
{
case "tokens":
return PrintTokens(argv.Skip(1));
case "events":
var printEventArgs = GetPrintEventsArgs(argv.Skip(1));
return PrintEvents(printEventArgs);
default:
ShowUsage();
return 110;
}
ShowUsage();
return 100;
}

private static void ShowUsage()
switch (argv[0].ToLowerInvariant())
{
Console.WriteLine(@"Usage:
case "tokens":
return PrintTokens(argv.Skip(1));
case "events":
var printEventArgs = GetPrintEventsArgs(argv.Skip(1));
return PrintEvents(printEventArgs);
default:
ShowUsage();
return 110;
}
}

private static void ShowUsage()
{
Console.WriteLine(@"Usage:
dotnet Gherkin.Specs events [--no-source] [--no-ast] [--no-pickles] feature-file.feature
- or -
dotnet Gherkin.Specs tokens feature-file.feature
");
}
}

class PrintEventsArgs
{
public bool PrintSource { get; set; } = true;
public bool PrintAst { get; set; } = true;
public bool PrintPickles { get; set; } = true;
public List<string> Paths { get; } = new();
}
class PrintEventsArgs
{
public bool PrintSource { get; set; } = true;
public bool PrintAst { get; set; } = true;
public bool PrintPickles { get; set; } = true;
public List<string> Paths { get; } = new();
}

private static PrintEventsArgs GetPrintEventsArgs(IEnumerable<string> args)
{
var result = new PrintEventsArgs();
private static PrintEventsArgs GetPrintEventsArgs(IEnumerable<string> args)
{
var result = new PrintEventsArgs();

foreach (string arg in args)
foreach (string arg in args)
{
switch (arg)
{
switch (arg)
{
case "--no-source":
result.PrintSource = false;
break;
case "--no-ast":
result.PrintAst = false;
break;
case "--no-pickles":
result.PrintPickles = false;
break;
default:
result.Paths.Add(arg);
break;
}
case "--no-source":
result.PrintSource = false;
break;
case "--no-ast":
result.PrintAst = false;
break;
case "--no-pickles":
result.PrintPickles = false;
break;
default:
result.Paths.Add(arg);
break;
}

return result;
}

private static int PrintTokens(IEnumerable<string> paths)
return result;
}

private static int PrintTokens(IEnumerable<string> paths)
{
foreach (var featureFilePath in paths)
{
foreach (var featureFilePath in paths)
try
{
try
{
var tokensText = TokensGenerator.GenerateTokens(featureFilePath);
Console.WriteLine(tokensText);
}
catch (Exception ex)
{
Console.Error.WriteLine(ex.Message);
return 1;
}
var tokensText = TokensGenerator.GenerateTokens(featureFilePath);
Console.WriteLine(tokensText);
}
catch (Exception ex)
{
Console.Error.WriteLine(ex.Message);
return 1;
}

return 0;
}

private static int PrintEvents(PrintEventsArgs args)
return 0;
}

private static int PrintEvents(PrintEventsArgs args)
{
var sourceProvider = new SourceProvider();
var sources = sourceProvider.GetSources(args.Paths);
var gherkinEventsProvider = new GherkinEventsProvider(args.PrintSource, args.PrintAst, args.PrintPickles, new IncrementingIdGenerator());
foreach (var sourceEventEvent in sources)
{
var sourceProvider = new SourceProvider();
var sources = sourceProvider.GetSources(args.Paths);
var gherkinEventsProvider = new GherkinEventsProvider(args.PrintSource, args.PrintAst, args.PrintPickles, new IncrementingIdGenerator());
foreach (var sourceEventEvent in sources)
foreach (var evt in gherkinEventsProvider.GetEvents(sourceEventEvent))
{
foreach (var evt in gherkinEventsProvider.GetEvents(sourceEventEvent))
{
var jsonString = Utf8Json.JsonSerializer.ToJsonString((object)evt, StandardResolver.ExcludeNullCamelCase);
Console.WriteLine(jsonString);
}
var jsonString = Utf8Json.JsonSerializer.ToJsonString((object)evt, StandardResolver.ExcludeNullCamelCase);
Console.WriteLine(jsonString);
}
return 0;
}
return 0;
}
}
Loading

0 comments on commit 6fd2dd4

Please sign in to comment.