diff --git a/src/Directory.Build.props b/src/Directory.Build.props index f0362dc..d98151c 100644 --- a/src/Directory.Build.props +++ b/src/Directory.Build.props @@ -1,15 +1,18 @@ - + - - Julian Verdurmen - JulianVerdurmen.SlnxValidator - true - true - false - MIT - https://github.com/304NotModified/SLNX-validator - + + Julian Verdurmen + JulianVerdurmen.SlnxValidator + true + true + false + MIT + https://github.com/304NotModified/SLNX-validator + + + + diff --git a/src/SLNX-validator.Core/FileSystem/ISlnxFileResolver.cs b/src/SLNX-validator.Core/FileSystem/ISlnxFileResolver.cs new file mode 100644 index 0000000..555b09b --- /dev/null +++ b/src/SLNX-validator.Core/FileSystem/ISlnxFileResolver.cs @@ -0,0 +1,7 @@ +namespace JulianVerdurmen.SlnxValidator.Core.FileSystem +{ + public interface ISlnxFileResolver + { + IReadOnlyList Resolve(string input); + } +} \ No newline at end of file diff --git a/src/SLNX-validator.Core/FileSystem/SlnxFileResolver.cs b/src/SLNX-validator.Core/FileSystem/SlnxFileResolver.cs index f42cfc4..a798151 100644 --- a/src/SLNX-validator.Core/FileSystem/SlnxFileResolver.cs +++ b/src/SLNX-validator.Core/FileSystem/SlnxFileResolver.cs @@ -1,6 +1,6 @@ namespace JulianVerdurmen.SlnxValidator.Core.FileSystem; -public sealed class SlnxFileResolver(IFileSystem fileSystem) +internal sealed class SlnxFileResolver(IFileSystem fileSystem) : ISlnxFileResolver { /// /// Resolves one or more .slnx file paths from the given input. diff --git a/src/SLNX-validator.Core/ServiceCollectionExtensions.cs b/src/SLNX-validator.Core/ServiceCollectionExtensions.cs index 1e1a29d..2af27ec 100644 --- a/src/SLNX-validator.Core/ServiceCollectionExtensions.cs +++ b/src/SLNX-validator.Core/ServiceCollectionExtensions.cs @@ -13,8 +13,8 @@ public static IServiceCollection AddSlnxValidator(this IServiceCollection servic services.AddSingleton(); services.AddSingleton(); services.AddSingleton(); - services.AddSingleton(); - services.AddSingleton(); + services.AddSingleton(); + services.AddSingleton(); return services; } } diff --git a/src/SLNX-validator.Core/Validation/ISlnxValidator.cs b/src/SLNX-validator.Core/Validation/ISlnxValidator.cs new file mode 100644 index 0000000..fe81982 --- /dev/null +++ b/src/SLNX-validator.Core/Validation/ISlnxValidator.cs @@ -0,0 +1,8 @@ +using JulianVerdurmen.SlnxValidator.Core.ValidationResults; + +namespace JulianVerdurmen.SlnxValidator.Core.Validation; + +public interface ISlnxValidator +{ + Task ValidateAsync(string slnxContent, string slnxDirectory, CancellationToken cancellationToken = default); +} diff --git a/src/SLNX-validator.Core/Validation/SlnxValidator.cs b/src/SLNX-validator.Core/Validation/SlnxValidator.cs index e5a464b..cf4962e 100644 --- a/src/SLNX-validator.Core/Validation/SlnxValidator.cs +++ b/src/SLNX-validator.Core/Validation/SlnxValidator.cs @@ -5,7 +5,7 @@ namespace JulianVerdurmen.SlnxValidator.Core.Validation; -public sealed class SlnxValidator(IFileSystem fileSystem, IXsdValidator xsdValidator) +internal sealed class SlnxValidator(IFileSystem fileSystem, IXsdValidator xsdValidator) : ISlnxValidator { /// /// Validates a .slnx file against the XSD schema and checks that all referenced files exist on disk. diff --git a/src/SLNX-validator.Core/Validation/SlnxXsdProvider.cs b/src/SLNX-validator.Core/Validation/SlnxXsdProvider.cs index c68eaba..73788b3 100644 --- a/src/SLNX-validator.Core/Validation/SlnxXsdProvider.cs +++ b/src/SLNX-validator.Core/Validation/SlnxXsdProvider.cs @@ -2,7 +2,7 @@ namespace JulianVerdurmen.SlnxValidator.Core.Validation; -public sealed class SlnxXsdProvider : ISlnxXsdProvider +internal sealed class SlnxXsdProvider : ISlnxXsdProvider { // Source: https://github.com/microsoft/vs-solutionpersistence/blob/main/src/Microsoft.VisualStudio.SolutionPersistence/Serializer/Xml/Slnx.xsd private const string XsdResourceName = "JulianVerdurmen.SlnxValidator.Slnx.xsd"; diff --git a/src/SLNX-validator.Core/Validation/XsdValidator.cs b/src/SLNX-validator.Core/Validation/XsdValidator.cs index eb46a2d..7afc7a0 100644 --- a/src/SLNX-validator.Core/Validation/XsdValidator.cs +++ b/src/SLNX-validator.Core/Validation/XsdValidator.cs @@ -4,7 +4,7 @@ namespace JulianVerdurmen.SlnxValidator.Core.Validation; -public sealed class XsdValidator(ISlnxXsdProvider xsdProvider) : IXsdValidator +internal sealed class XsdValidator(ISlnxXsdProvider xsdProvider) : IXsdValidator { public async Task ValidateAsync(string slnxContent, ValidationResult result, CancellationToken cancellationToken) { diff --git a/src/SLNX-validator/ValidationCollector.cs b/src/SLNX-validator/ValidationCollector.cs index c1aaca2..5d18d30 100644 --- a/src/SLNX-validator/ValidationCollector.cs +++ b/src/SLNX-validator/ValidationCollector.cs @@ -1,10 +1,10 @@ using JulianVerdurmen.SlnxValidator.Core.FileSystem; +using JulianVerdurmen.SlnxValidator.Core.Validation; using JulianVerdurmen.SlnxValidator.Core.ValidationResults; -using CoreSlnxValidator = JulianVerdurmen.SlnxValidator.Core.Validation.SlnxValidator; namespace JulianVerdurmen.SlnxValidator; -internal sealed class ValidationCollector(IFileSystem fileSystem, CoreSlnxValidator validator) +internal sealed class ValidationCollector(IFileSystem fileSystem, ISlnxValidator validator) { public async Task> CollectAsync(IReadOnlyList files, CancellationToken cancellationToken) { diff --git a/src/SLNX-validator/ValidatorRunner.cs b/src/SLNX-validator/ValidatorRunner.cs index 6a1ff39..46af0d1 100644 --- a/src/SLNX-validator/ValidatorRunner.cs +++ b/src/SLNX-validator/ValidatorRunner.cs @@ -4,7 +4,7 @@ namespace JulianVerdurmen.SlnxValidator; -internal sealed class ValidatorRunner(SlnxFileResolver resolver, ValidationCollector collector, ISonarReporter sonarReporter) +internal sealed class ValidatorRunner(ISlnxFileResolver resolver, ValidationCollector collector, ISonarReporter sonarReporter) { public async Task RunAsync(string input, string? sonarqubeReportPath, bool continueOnError, CancellationToken cancellationToken) { diff --git a/tests/Directory.Build.props b/tests/Directory.Build.props index add338a..4368037 100644 --- a/tests/Directory.Build.props +++ b/tests/Directory.Build.props @@ -14,6 +14,7 @@ + diff --git a/tests/SLNX-validator.Tests/ValidatorRunnerTests.cs b/tests/SLNX-validator.Tests/ValidatorRunnerTests.cs index 1c45d43..a9f5a97 100644 --- a/tests/SLNX-validator.Tests/ValidatorRunnerTests.cs +++ b/tests/SLNX-validator.Tests/ValidatorRunnerTests.cs @@ -2,19 +2,16 @@ using JulianVerdurmen.SlnxValidator.Core.FileSystem; using JulianVerdurmen.SlnxValidator.Core.SonarQubeReporting; using JulianVerdurmen.SlnxValidator.Core.Validation; -using CoreSlnxValidator = JulianVerdurmen.SlnxValidator.Core.Validation.SlnxValidator; - +using NSubstitute; namespace JulianVerdurmen.SlnxValidator.Tests; public class ValidatorRunnerTests { private static ValidatorRunner CreateRunner(IFileSystem fileSystem) { - var resolver = new SlnxFileResolver(fileSystem); - var validator = new CoreSlnxValidator(fileSystem, new XsdValidator(new SlnxXsdProvider())); - var collector = new ValidationCollector(fileSystem, validator); + var collector = new ValidationCollector(fileSystem, Substitute.For()); var sonarReporter = new SonarReporter(fileSystem); - return new ValidatorRunner(resolver, collector, sonarReporter); + return new ValidatorRunner(Substitute.For(), collector, sonarReporter); } [Test]