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]