From 0905b5dbe697ed7911626d6fae66f7c0cc18315f Mon Sep 17 00:00:00 2001 From: Howard van Rooijen Date: Tue, 6 Aug 2024 16:16:19 +0100 Subject: [PATCH 01/25] Migrate from Specflow to ReqnRoll Remove Azure DevOps pipelines --- .gitignore | 2 +- README.md | 40 +- ...reFunctions.DemoFunctions.InProcess.csproj | 2 +- .../SampleFunction.cs | 2 +- .../packages.lock.json | 127 +- ...ureFunctions.DemoFunctions.Isolated.csproj | 6 +- .../DemoFunctionConfig.cs | 9 +- .../DemoFunctionPerFeatureHooks.cs | 9 +- .../DemoFunctionPerScenarioHooks.cs | 7 +- ...nariosUsingPerFeatureHookInProcess.feature | 0 ...enariosUsingPerFeatureHookIsolated.feature | 0 ...thAdditionalConfigurationInProcess.feature | 0 ...ithAdditionalConfigurationIsolated.feature | 0 ...ariosUsingPerScenarioHookInProcess.feature | 0 ...nariosUsingPerScenarioHookIsolated.feature | 0 ...thAdditionalConfigurationInProcess.feature | 0 ...ithAdditionalConfigurationIsolated.feature | 0 .../ScenariosUsingStepBindings.feature | 0 .../AzureFunctionsTesting/StepBindings.cs | 18 +- ...sting.AzureFunctions.ReqnRoll.Demo.csproj} | 32 +- .../GlobalSuppressions.cs | 4 +- .../packages.lock.json | 451 +++++ .../specflow.json | 6 + ...sting.AzureFunctions.ReqnRoll.NUnit.csproj | 46 + .../DummyClass.cs | 6 + ...us.Testing.AzureFunctions.ReqnRoll.csproj} | 8 +- .../SpecFlow/FunctionsBindings.cs | 14 +- .../packages.lock.json | 1446 ----------------- .../specflow.json | 6 - ...sting.AzureFunctions.SpecFlow.NUnit.csproj | 74 - .../DummyClass.cs | 6 - ...s.Testing.AzureFunctions.Xunit.Demo.csproj | 12 +- .../packages.lock.json | 174 +- .../Corvus.Testing.ReqnRoll.NUnit.csproj} | 15 +- .../DummyClass.cs | 2 +- .../Containers/ContainerTestContext.cs | 11 +- .../Containers/NoContainer.feature | 0 .../Containers/NoContainerSteps.cs | 8 +- .../Containers/PerFeatureContainer.feature | 4 +- .../Containers/PerFeatureContainerSteps.cs | 8 +- .../Containers/PerScenarioContainer.feature | 4 +- .../Containers/PerScenarioContainerSteps.cs | 6 +- .../Containers/Phase.cs | 2 +- .../Containers/RootService.cs | 2 +- .../Corvus.Testing.ReqnRoll.Specs.csproj} | 75 +- .../GlobalSuppressions.cs | 0 .../packages.lock.json | 353 ++++ .../specflow.json | 5 + .../Corvus.Testing.ReqnRoll.csproj} | 13 +- .../Testing/SpecFlow/ChildObjectBindings.cs | 10 +- .../SpecFlow/ContainerBeforeFeatureOrder.cs | 4 +- .../SpecFlow/ContainerBeforeScenarioOrder.cs | 4 +- .../Testing/SpecFlow/ContainerBindings.cs | 38 +- .../Internal/ChildObjectValueRetriever.cs | 6 +- .../Testing/SpecFlow/TeardownExceptions.cs | 22 +- .../SpecFlow/TeardownExceptionsBindings.cs | 20 +- .../packages.lock.json | 1334 --------------- .../specflow.json | 5 - Solutions/Corvus.Testing.sln | 14 +- azure-pipelines.release.yml | 15 - azure-pipelines.yml | 38 - docs/ReleaseNotes/Corvus.Testing.v3.md | 2 +- 62 files changed, 1218 insertions(+), 3309 deletions(-) rename Solutions/{Corvus.Testing.AzureFunctions.SpecFlow.Demo => Corvus.Testing.AzureFunctions.ReqnRoll.Demo}/AzureFunctionsTesting/DemoFunctionConfig.cs (83%) rename Solutions/{Corvus.Testing.AzureFunctions.SpecFlow.Demo => Corvus.Testing.AzureFunctions.ReqnRoll.Demo}/AzureFunctionsTesting/DemoFunctionPerFeatureHooks.cs (95%) rename Solutions/{Corvus.Testing.AzureFunctions.SpecFlow.Demo => Corvus.Testing.AzureFunctions.ReqnRoll.Demo}/AzureFunctionsTesting/DemoFunctionPerScenarioHooks.cs (95%) rename Solutions/{Corvus.Testing.AzureFunctions.SpecFlow.Demo => Corvus.Testing.AzureFunctions.ReqnRoll.Demo}/AzureFunctionsTesting/ScenariosUsingPerFeatureHookInProcess.feature (100%) rename Solutions/{Corvus.Testing.AzureFunctions.SpecFlow.Demo => Corvus.Testing.AzureFunctions.ReqnRoll.Demo}/AzureFunctionsTesting/ScenariosUsingPerFeatureHookIsolated.feature (100%) rename Solutions/{Corvus.Testing.AzureFunctions.SpecFlow.Demo => Corvus.Testing.AzureFunctions.ReqnRoll.Demo}/AzureFunctionsTesting/ScenariosUsingPerFeatureHookWithAdditionalConfigurationInProcess.feature (100%) rename Solutions/{Corvus.Testing.AzureFunctions.SpecFlow.Demo => Corvus.Testing.AzureFunctions.ReqnRoll.Demo}/AzureFunctionsTesting/ScenariosUsingPerFeatureHookWithAdditionalConfigurationIsolated.feature (100%) rename Solutions/{Corvus.Testing.AzureFunctions.SpecFlow.Demo => Corvus.Testing.AzureFunctions.ReqnRoll.Demo}/AzureFunctionsTesting/ScenariosUsingPerScenarioHookInProcess.feature (100%) rename Solutions/{Corvus.Testing.AzureFunctions.SpecFlow.Demo => Corvus.Testing.AzureFunctions.ReqnRoll.Demo}/AzureFunctionsTesting/ScenariosUsingPerScenarioHookIsolated.feature (100%) rename Solutions/{Corvus.Testing.AzureFunctions.SpecFlow.Demo => Corvus.Testing.AzureFunctions.ReqnRoll.Demo}/AzureFunctionsTesting/ScenariosUsingPerScenarioHookWithAdditionalConfigurationInProcess.feature (100%) rename Solutions/{Corvus.Testing.AzureFunctions.SpecFlow.Demo => Corvus.Testing.AzureFunctions.ReqnRoll.Demo}/AzureFunctionsTesting/ScenariosUsingPerScenarioHookWithAdditionalConfigurationIsolated.feature (100%) rename Solutions/{Corvus.Testing.AzureFunctions.SpecFlow.Demo => Corvus.Testing.AzureFunctions.ReqnRoll.Demo}/AzureFunctionsTesting/ScenariosUsingStepBindings.feature (100%) rename Solutions/{Corvus.Testing.AzureFunctions.SpecFlow.Demo => Corvus.Testing.AzureFunctions.ReqnRoll.Demo}/AzureFunctionsTesting/StepBindings.cs (78%) rename Solutions/{Corvus.Testing.AzureFunctions.SpecFlow.Demo/Corvus.Testing.AzureFunctions.SpecFlow.Demo.csproj => Corvus.Testing.AzureFunctions.ReqnRoll.Demo/Corvus.Testing.AzureFunctions.ReqnRoll.Demo.csproj} (78%) rename Solutions/{Corvus.Testing.SpecFlow.Specs => Corvus.Testing.AzureFunctions.ReqnRoll.Demo}/GlobalSuppressions.cs (70%) create mode 100644 Solutions/Corvus.Testing.AzureFunctions.ReqnRoll.Demo/packages.lock.json create mode 100644 Solutions/Corvus.Testing.AzureFunctions.ReqnRoll.Demo/specflow.json create mode 100644 Solutions/Corvus.Testing.AzureFunctions.ReqnRoll.NUnit/Corvus.Testing.AzureFunctions.ReqnRoll.NUnit.csproj create mode 100644 Solutions/Corvus.Testing.AzureFunctions.ReqnRoll.NUnit/DummyClass.cs rename Solutions/{Corvus.Testing.AzureFunctions.SpecFlow/Corvus.Testing.AzureFunctions.SpecFlow.csproj => Corvus.Testing.AzureFunctions.ReqnRoll/Corvus.Testing.AzureFunctions.ReqnRoll.csproj} (85%) rename Solutions/{Corvus.Testing.AzureFunctions.SpecFlow => Corvus.Testing.AzureFunctions.ReqnRoll}/Corvus/Testing/AzureFunctions/SpecFlow/FunctionsBindings.cs (93%) delete mode 100644 Solutions/Corvus.Testing.AzureFunctions.SpecFlow.Demo/packages.lock.json delete mode 100644 Solutions/Corvus.Testing.AzureFunctions.SpecFlow.Demo/specflow.json delete mode 100644 Solutions/Corvus.Testing.AzureFunctions.SpecFlow.NUnit/Corvus.Testing.AzureFunctions.SpecFlow.NUnit.csproj delete mode 100644 Solutions/Corvus.Testing.AzureFunctions.SpecFlow.NUnit/DummyClass.cs rename Solutions/{Corvus.Testing.SpecFlow.NUnit/Corvus.Testing.SpecFlow.NUnit.csproj => Corvus.Testing.ReqnRoll.NUnit/Corvus.Testing.ReqnRoll.NUnit.csproj} (69%) rename Solutions/{Corvus.Testing.SpecFlow.NUnit => Corvus.Testing.ReqnRoll.NUnit}/DummyClass.cs (52%) rename Solutions/{Corvus.Testing.SpecFlow.Specs => Corvus.Testing.ReqnRoll.Specs}/Containers/ContainerTestContext.cs (91%) rename Solutions/{Corvus.Testing.SpecFlow.Specs => Corvus.Testing.ReqnRoll.Specs}/Containers/NoContainer.feature (100%) rename Solutions/{Corvus.Testing.SpecFlow.Specs => Corvus.Testing.ReqnRoll.Specs}/Containers/NoContainerSteps.cs (83%) rename Solutions/{Corvus.Testing.SpecFlow.Specs => Corvus.Testing.ReqnRoll.Specs}/Containers/PerFeatureContainer.feature (94%) rename Solutions/{Corvus.Testing.SpecFlow.Specs => Corvus.Testing.ReqnRoll.Specs}/Containers/PerFeatureContainerSteps.cs (95%) rename Solutions/{Corvus.Testing.SpecFlow.Specs => Corvus.Testing.ReqnRoll.Specs}/Containers/PerScenarioContainer.feature (94%) rename Solutions/{Corvus.Testing.SpecFlow.Specs => Corvus.Testing.ReqnRoll.Specs}/Containers/PerScenarioContainerSteps.cs (95%) rename Solutions/{Corvus.Testing.SpecFlow.Specs => Corvus.Testing.ReqnRoll.Specs}/Containers/Phase.cs (90%) rename Solutions/{Corvus.Testing.SpecFlow.Specs => Corvus.Testing.ReqnRoll.Specs}/Containers/RootService.cs (92%) rename Solutions/{Corvus.Testing.SpecFlow.Specs/Corvus.Testing.SpecFlow.Specs.csproj => Corvus.Testing.ReqnRoll.Specs/Corvus.Testing.ReqnRoll.Specs.csproj} (51%) rename Solutions/{Corvus.Testing.AzureFunctions.SpecFlow.Demo => Corvus.Testing.ReqnRoll.Specs}/GlobalSuppressions.cs (100%) create mode 100644 Solutions/Corvus.Testing.ReqnRoll.Specs/packages.lock.json create mode 100644 Solutions/Corvus.Testing.ReqnRoll.Specs/specflow.json rename Solutions/{Corvus.Testing.SpecFlow/Corvus.Testing.SpecFlow.csproj => Corvus.Testing.ReqnRoll/Corvus.Testing.ReqnRoll.csproj} (82%) rename Solutions/{Corvus.Testing.SpecFlow => Corvus.Testing.ReqnRoll}/Corvus/Testing/SpecFlow/ChildObjectBindings.cs (87%) rename Solutions/{Corvus.Testing.SpecFlow => Corvus.Testing.ReqnRoll}/Corvus/Testing/SpecFlow/ContainerBeforeFeatureOrder.cs (97%) rename Solutions/{Corvus.Testing.SpecFlow => Corvus.Testing.ReqnRoll}/Corvus/Testing/SpecFlow/ContainerBeforeScenarioOrder.cs (97%) rename Solutions/{Corvus.Testing.SpecFlow => Corvus.Testing.ReqnRoll}/Corvus/Testing/SpecFlow/ContainerBindings.cs (90%) rename Solutions/{Corvus.Testing.SpecFlow => Corvus.Testing.ReqnRoll}/Corvus/Testing/SpecFlow/Internal/ChildObjectValueRetriever.cs (90%) rename Solutions/{Corvus.Testing.SpecFlow => Corvus.Testing.ReqnRoll}/Corvus/Testing/SpecFlow/TeardownExceptions.cs (89%) rename Solutions/{Corvus.Testing.SpecFlow => Corvus.Testing.ReqnRoll}/Corvus/Testing/SpecFlow/TeardownExceptionsBindings.cs (83%) delete mode 100644 Solutions/Corvus.Testing.SpecFlow.Specs/packages.lock.json delete mode 100644 Solutions/Corvus.Testing.SpecFlow.Specs/specflow.json delete mode 100644 azure-pipelines.release.yml delete mode 100644 azure-pipelines.yml diff --git a/.gitignore b/.gitignore index e8b838e6..632d513d 100644 --- a/.gitignore +++ b/.gitignore @@ -335,7 +335,7 @@ coverage.cobertura.xml # VS Code config files /.vscode -# Specflow generated files +# ReqnRoll generated files *.feature.cs # Scripted build migration diff --git a/README.md b/README.md index 9607e61a..3891020a 100644 --- a/README.md +++ b/README.md @@ -3,17 +3,17 @@ [![GitHub license](https://img.shields.io/badge/License-Apache%202-blue.svg)](https://raw.githubusercontent.com/corvus-dotnet/Corvus.Testing/main/LICENSE) [![IMM](https://imm.endjin.com/api/imm/github/corvus-dotnet/Corvus.Testing/total?cache=false)](https://imm.endjin.com/api/imm/github/corvus-dotnet/Corvus.Testing/total?cache=false) -This provides a library of useful testing extensions, primarily focussed on SpecFlow operations. +This provides a library of useful testing extensions, primarily focussed on ReqnRoll operations. It is built for .NET 6.0, and we support use on both .NET 6.0 and .NET 8.0. (If you require .NET Standard 2.0, use `Corvus.Testing` v1.) -The SpecFlow specific libraries contain additional bindings; to use these, you will need to add a `specflow.json` file to any project wishing to use them. Add entries to the `stepAssemblies` array for each of the Corvus libraries you need to use: +The ReqnRoll specific libraries contain additional bindings; to use these, you will need to add a `ReqnRoll.json` file to any project wishing to use them. Add entries to the `stepAssemblies` array for each of the Corvus libraries you need to use: ```json { "stepAssemblies": [ - { "assembly": "Corvus.Testing.SpecFlow" }, - { "assembly": "Corvus.Testing.AzureFunctions.SpecFlow" }, + { "assembly": "Corvus.Testing.ReqnRoll" }, + { "assembly": "Corvus.Testing.AzureFunctions.ReqnRoll" }, ] } ``` @@ -22,9 +22,9 @@ The SpecFlow specific libraries contain additional bindings; to use these, you w This library offers the following features. -### Container Bindings (Corvus.Testing.SpecFlow) +### Container Bindings (Corvus.Testing.ReqnRoll) -`Corvus.Testing.SpecFlow` can simplify the use of dependency injection. It can automatically create a dependency injection service collection (an instance of the `IServiceCollection` type defined by the `Microsoft.Extensions.DependencyInjection.Abstractions` component). It offers your tests an opportunity to populate this collection during the early phases of test execution. It then automatically builds an `IServiceProvider` from the service collection, and makes this accessible to your test. It disposes the provider at the end, ensuring any dependencies that need to clean up will have their `Dispose` methods called. +`Corvus.Testing.ReqnRoll` can simplify the use of dependency injection. It can automatically create a dependency injection service collection (an instance of the `IServiceCollection` type defined by the `Microsoft.Extensions.DependencyInjection.Abstractions` component). It offers your tests an opportunity to populate this collection during the early phases of test execution. It then automatically builds an `IServiceProvider` from the service collection, and makes this accessible to your test. It disposes the provider at the end, ensuring any dependencies that need to clean up will have their `Dispose` methods called. This feature offers two modes: you can either arrange for the service collection to be created, built, and torn down for individual scenarios, or you can create one that is created at the start of a feature, in which the service provider is shared by all scenarios within the feature, and the services are disposed only after all scenarios have run. @@ -56,7 +56,7 @@ public static void PopulateFeatureServiceCollection(FeatureContext featureContex } ``` -The method name doesn't matter. It's the attribute that's significant. Note that by specifying the same `@perScenarioContainer` (or `@perFeatureContainer`) tag that `Corvus.Testing.SpecFlow` is looking for, this binding will run for any tests that specify that tag. If you want to use this container feature in multiple tests but you want to use different service configuration in different tests, you can define your own tag, e.g. your feature file might start: +The method name doesn't matter. It's the attribute that's significant. Note that by specifying the same `@perScenarioContainer` (or `@perFeatureContainer`) tag that `Corvus.Testing.ReqnRoll` is looking for, this binding will run for any tests that specify that tag. If you want to use this container feature in multiple tests but you want to use different service configuration in different tests, you can define your own tag, e.g. your feature file might start: ``` @perScenarioContainer @@ -74,7 +74,7 @@ MyService svc = this.ServiceProvider.GetRequiredService() The `ContainerBindings.GetServiceProvider` method is overloaded, accepting either a `ScenarioContext` or a `FeatureContext`. If you used the `@perScenarioContainer` tag you should pass the scenario context as the example above does, but if you're using `@perFeatureContainer` pass the feature context instead. -`GetServiceProvider` will work from inside any step, whether it's `Given`, `When`, or `Then`. But if you need to write a custom `Before...` binding that has access to the service provider, you'll need to make sure it runs at the appropriate moment. Since `Corvus.Testing.SpecFlow` relies on this binding mechanism to create and initialize the services, you need to make sure that your code runs at the right moment, which means using the `Order` property on these SpecFlow binding attributes. The bindings shown above that populate the `IServiceCollection` set their `Order` property with constants supplied by `Corvus.Testing.SpecFlow`. This ensures that these bindings run after `Corvus.Testing.SpecFlow` has created the service collection but before it has built the provider. If you want to access services from DI you will need to run after the provider has been built, which you can do by specifying a different constant for the `Order`: +`GetServiceProvider` will work from inside any step, whether it's `Given`, `When`, or `Then`. But if you need to write a custom `Before...` binding that has access to the service provider, you'll need to make sure it runs at the appropriate moment. Since `Corvus.Testing.ReqnRoll` relies on this binding mechanism to create and initialize the services, you need to make sure that your code runs at the right moment, which means using the `Order` property on these ReqnRoll binding attributes. The bindings shown above that populate the `IServiceCollection` set their `Order` property with constants supplied by `Corvus.Testing.ReqnRoll`. This ensures that these bindings run after `Corvus.Testing.ReqnRoll` has created the service collection but before it has built the provider. If you want to access services from DI you will need to run after the provider has been built, which you can do by specifying a different constant for the `Order`: ```csharp [BeforeScenario("@adminTestContainerInitialization", Order = ContainerBeforeScenarioOrder.ServiceProviderAvailable)] @@ -88,21 +88,21 @@ public static void ServiceProviderAvailableBeforeScenario(ScenarioContext scenar (This presumes that we've got some test-specific work going on. If you wanted this binding to run any time you used a per-scenario container you'd put `@perFeatureContainer` instead of `@adminTestContainerInitialization`.) -Note that the `Order` constants that `Corvus.Testing.SpecFlow` provides space to allow you to control the order of multiple bindings of your own if necessary. The `BuildServiceProvider` is 9999 higher than `PopulateServiceCollection`, so if you need to perform multiple bindings in between the the service collection being created, and the final service provider being built from that collection, you can do so, and you can control their ordering. (E.g., you can have one binding with `Order = ContainerBeforeScenarioOrder.PopulateServiceCollection`, and then another with `ContainerBeforeScenarioOrder.PopulateServiceCollection + 1`.) +Note that the `Order` constants that `Corvus.Testing.ReqnRoll` provides space to allow you to control the order of multiple bindings of your own if necessary. The `BuildServiceProvider` is 9999 higher than `PopulateServiceCollection`, so if you need to perform multiple bindings in between the the service collection being created, and the final service provider being built from that collection, you can do so, and you can control their ordering. (E.g., you can have one binding with `Order = ContainerBeforeScenarioOrder.PopulateServiceCollection`, and then another with `ContainerBeforeScenarioOrder.PopulateServiceCollection + 1`.) Exceptions during container disposal are handled using the Teardown Exception Handling mechanism described below, meaning that if errors occur, they will not prevent other teardown from happening, but will still eventually be reported. (Although be aware that depending on how you run your tests, feature-level errors will not necessarily be reported as errors, due to limitations inherent in how .NET test runners integrate with build and development tools.) -### Child Object Value Retriever (Corvus.Testing.SpecFlow) +### Child Object Value Retriever (Corvus.Testing.ReqnRoll) -If a scenario or feature specifies the `@useChildObjects` tag, this registers a Value Retrieved with SpecFlow enabling named objects in the scenario context to be referred to with a `{name}` syntax. So if an earlier stage of a test puts something into the scenario context with the key `transactionId` you could write `{transactionId}` in a SpecFlow feature fle to retrieve that value from the context and pass it in as the argument to a step. +If a scenario or feature specifies the `@useChildObjects` tag, this registers a Value Retrieved with ReqnRoll enabling named objects in the scenario context to be referred to with a `{name}` syntax. So if an earlier stage of a test puts something into the scenario context with the key `transactionId` you could write `{transactionId}` in a ReqnRoll feature fle to retrieve that value from the context and pass it in as the argument to a step. -### Azure Functions Launch (Corvus.Testing.AzureFunctions and Corvus.Testing.AzureFunctions.SpecFlow) +### Azure Functions Launch (Corvus.Testing.AzureFunctions and Corvus.Testing.AzureFunctions.ReqnRoll) The `Corvus.Testing.AzureFunctions` library contains a `FunctionsController` class that can be used to run Azure Functions as separate processes as part of a test. -For usage examples, see the `Corvus.Testing.AzureFunctions.Xunit.Demo` and `Corvus.Testing.AzureFunctions.SpecFlow.Demo`, which show the various ways these classes can be used. +For usage examples, see the `Corvus.Testing.AzureFunctions.Xunit.Demo` and `Corvus.Testing.AzureFunctions.ReqnRoll.Demo`, which show the various ways these classes can be used. -SpecFlow-specific bindings can be found in `Corvus.Testing.AzureFunctions.SpecFlow`, which defines a `Given` step that matches this pattern: +ReqnRoll-specific bindings can be found in `Corvus.Testing.AzureFunctions.ReqnRoll`, which defines a `Given` step that matches this pattern: ``` I start a functions instance for the local project '(.*)' on port (.*) @@ -118,15 +118,15 @@ The effect of this will be to launch the local function emulator with the `Workf You can launch multiple functions in a single scenario as long as they are all listening on different ports. This can be helpful for integration tests. -`Corvus.Testing.AzureFunctions.SpecFlow` includes an unconditional `[AfterScenario]` binding that will run after every single test, and it checks to see if any functions were launched, and if so, shuts it down and waits until the process exits. (It waits to avoid port conflicts if another test wants to go on to run a function on the same port.) It also collects all standard output including any errors, and prints this to the test process's console. This can be useful for diagnosing failures, because relevant information is often written to these channels. (This library does not run the function in a console window, so this is the only way to see the output. A console window would not be a good fit for tests running as part of an automated build in any case.) +`Corvus.Testing.AzureFunctions.ReqnRoll` includes an unconditional `[AfterScenario]` binding that will run after every single test, and it checks to see if any functions were launched, and if so, shuts it down and waits until the process exits. (It waits to avoid port conflicts if another test wants to go on to run a function on the same port.) It also collects all standard output including any errors, and prints this to the test process's console. This can be useful for diagnosing failures, because relevant information is often written to these channels. (This library does not run the function in a console window, so this is the only way to see the output. A console window would not be a good fit for tests running as part of an automated build in any case.) You will need the Functions development tools to be installed for this to work. If you don't have that, the test will fail, reporting the `npm` command you need to run to fix it. If you're using Azure DevOps pipelines, there's a task for this. -### Teardown Exception Handling (Corvus.Testing.SpecFlow) +### Teardown Exception Handling (Corvus.Testing.ReqnRoll) -If you do any non-trivial work during `After...` bindings (e.g., tearing down a function) it is often important to ensure that all the bindings run. This is problematic in cases where failures might occur at this stage, because the only way a binding can report failure is by throwing an exception, and if it does so, it will normally prevent all other bindings from running, because it causes the test to come to an abrupt halt. (SpecFlow doesn't have a concept of "fail, but continue to clean up".) This is especially problematic for integration tests that create external resources. (E.g., if your test creates resources in Azure, it can be costly if you fail to clean these up when you're done.) +If you do any non-trivial work during `After...` bindings (e.g., tearing down a function) it is often important to ensure that all the bindings run. This is problematic in cases where failures might occur at this stage, because the only way a binding can report failure is by throwing an exception, and if it does so, it will normally prevent all other bindings from running, because it causes the test to come to an abrupt halt. (ReqnRoll doesn't have a concept of "fail, but continue to clean up".) This is especially problematic for integration tests that create external resources. (E.g., if your test creates resources in Azure, it can be costly if you fail to clean these up when you're done.) -`Corvus.Testing.SpecFlow` provides a mechanism by which you can run code in some sort of `After...` binding, and be free to throw exceptions without that halting all further cleanup, while still eventually seeing the error. You do this through a helper like this: +`Corvus.Testing.ReqnRoll` provides a mechanism by which you can run code in some sort of `After...` binding, and be free to throw exceptions without that halting all further cleanup, while still eventually seeing the error. You do this through a helper like this: ```csharp [AfterScenario] @@ -138,11 +138,11 @@ public void TeardownFunctionsAfterScenario() The `RunAndStoreExceptions` method here is an extension method on `ScenarioContext`. There's also one for `FeatureContext`. -This is the code in `Corvus.Testing.AzureFunctions.SpecFlow` that tears down any functions created with the Azure Functions Launch feature described earlier. The code that performs this work is called `TeardownFunctions` and it's an instance member of the `FunctionsController` class, and it has been passed here as a delegate argument to `RunAndStoreExceptions`. +This is the code in `Corvus.Testing.AzureFunctions.ReqnRoll` that tears down any functions created with the Azure Functions Launch feature described earlier. The code that performs this work is called `TeardownFunctions` and it's an instance member of the `FunctionsController` class, and it has been passed here as a delegate argument to `RunAndStoreExceptions`. `RunAndStoreExceptions` lets you throw exceptions without risk. It catches any exceptions that emerge from your code, stores them, enables all other teardown to proceed, and then at the very last moment, it checks to see if any exceptions were detected this way, and if they were, it reports them all in one go by throwing an `AggregateException` containing every failure. -To work, `Corvus.Testing.SpecFlow` defines unconditional `AfterScenario` and `AfterFeature` bindings each with an `Order` of `int.MaxValue`. This means they will only truly be the last thing to run for the scenario or feature if nothing else tries the same thing. If you want to use this feature, you will need to ensure that you're not using anything else that also depends on being able to be the very last thing that happens. +To work, `Corvus.Testing.ReqnRoll` defines unconditional `AfterScenario` and `AfterFeature` bindings each with an `Order` of `int.MaxValue`. This means they will only truly be the last thing to run for the scenario or feature if nothing else tries the same thing. If you want to use this feature, you will need to ensure that you're not using anything else that also depends on being able to be the very last thing that happens. ## Running the Tests diff --git a/Solutions/Corvus.Testing.AzureFunctions.DemoFunction.InProcess/Corvus.Testing.AzureFunctions.DemoFunctions.InProcess.csproj b/Solutions/Corvus.Testing.AzureFunctions.DemoFunction.InProcess/Corvus.Testing.AzureFunctions.DemoFunctions.InProcess.csproj index dc00710f..92b5cb67 100644 --- a/Solutions/Corvus.Testing.AzureFunctions.DemoFunction.InProcess/Corvus.Testing.AzureFunctions.DemoFunctions.InProcess.csproj +++ b/Solutions/Corvus.Testing.AzureFunctions.DemoFunction.InProcess/Corvus.Testing.AzureFunctions.DemoFunctions.InProcess.csproj @@ -43,7 +43,7 @@ all runtime; build; native; contentfiles; analyzers; buildtransitive - + diff --git a/Solutions/Corvus.Testing.AzureFunctions.DemoFunction.InProcess/SampleFunction.cs b/Solutions/Corvus.Testing.AzureFunctions.DemoFunction.InProcess/SampleFunction.cs index 94ede44e..d2cfcda8 100644 --- a/Solutions/Corvus.Testing.AzureFunctions.DemoFunction.InProcess/SampleFunction.cs +++ b/Solutions/Corvus.Testing.AzureFunctions.DemoFunction.InProcess/SampleFunction.cs @@ -2,7 +2,7 @@ // Copyright (c) Endjin Limited. All rights reserved. // -namespace Corvus.Testing.SpecFlow.DemoFunction.InProcess +namespace Corvus.Testing.ReqnRoll.DemoFunction.InProcess { using System.IO; using System.Threading.Tasks; diff --git a/Solutions/Corvus.Testing.AzureFunctions.DemoFunction.InProcess/packages.lock.json b/Solutions/Corvus.Testing.AzureFunctions.DemoFunction.InProcess/packages.lock.json index 7363610f..ab578035 100644 --- a/Solutions/Corvus.Testing.AzureFunctions.DemoFunction.InProcess/packages.lock.json +++ b/Solutions/Corvus.Testing.AzureFunctions.DemoFunction.InProcess/packages.lock.json @@ -4,33 +4,36 @@ "net6.0": { "Endjin.RecommendedPractices.GitHub": { "type": "Direct", - "requested": "[2.1.9, )", - "resolved": "2.1.9", - "contentHash": "gFCDZOu96fU+TfsAkZ7zLUzm8NX1/k3hWt7lbyf5HOn95+hYJQZ+g4bjs/Awx7JODsvNZpON8QlstZQVjPnRxg==", + "requested": "[2.1.12, )", + "resolved": "2.1.12", + "contentHash": "JEOlUQymdvrI6OeVHPTpakLhOJvkLdvmH+wJNNdjqSq3FtZ2LnqKei+4AMFUzTdJcL6RF3KGD3x0AqUfhYgWcw==", "dependencies": { - "Endjin.RecommendedPractices": "2.1.9", + "Endjin.RecommendedPractices": "2.1.12", "Microsoft.SourceLink.GitHub": "1.1.1" } }, "Microsoft.NET.Sdk.Functions": { "type": "Direct", - "requested": "[4.2.0, )", - "resolved": "4.2.0", - "contentHash": "Ttsa6BkGXH77CPP72UtKSuPiyTKP+hke4Vl+oR6bD2sjIObvAjFGUVxs877/uDVBrw9sT0rzmIJUo/1FStjR1w==", + "requested": "[4.4.1, )", + "resolved": "4.4.1", + "contentHash": "ZHEvZW5+4dKv/CpuW+qGc1Sjc5erX18bvy4JuLiuiYen7hVWms1iaVIfDkQJF7uqj6SvkKm4d06uScTGpekdLw==", "dependencies": { "Microsoft.Azure.Functions.Analyzers": "[1.0.0, 2.0.0)", "Microsoft.Azure.WebJobs": "[3.0.32, 3.1.0)", "Microsoft.Azure.WebJobs.Extensions": "3.0.6", "Microsoft.Azure.WebJobs.Extensions.Http": "[3.2.0, 3.3.0)", "Microsoft.Azure.WebJobs.Script.ExtensionsMetadataGenerator": "4.0.1", - "Newtonsoft.Json": "13.0.1" + "Newtonsoft.Json": "13.0.1", + "System.Net.Http": "4.3.4", + "System.Text.Encodings.Web": "4.7.2", + "System.Text.RegularExpressions": "4.3.1" } }, "Roslynator.Analyzers": { "type": "Direct", - "requested": "[4.9.0, )", - "resolved": "4.9.0", - "contentHash": "lFd4MmkllYR0dKlPWDokRwAvQnjNoPJztlncyzvnCG/wvGr5FzHAencngcJna/wkyDE0xIv7AnUccgCLsoIXTw==" + "requested": "[4.12.3, )", + "resolved": "4.12.3", + "contentHash": "6+O9GwAxOxJr1rZ4aaLiBiSH3pxDkJuXLE8qjo/JXLvGkZhKRLbAz30WA32RmJb5Nn1TmjZ2T3kWt3GJmEDj1w==" }, "StyleCop.Analyzers": { "type": "Direct", @@ -43,8 +46,8 @@ }, "Endjin.RecommendedPractices": { "type": "Transitive", - "resolved": "2.1.9", - "contentHash": "LzppiBrlPBj5TmVsQVxWoGv/MWfq+sAz0qkdB/ozUDS2hq31Pu8j2Cvk+BVlhvrb9eDUQxxHaLL4gbE7LiSAfQ==", + "resolved": "2.1.12", + "contentHash": "OZObdtlvF6isizGzO0Vydwmj2IR8GxydcTMGCoA9lmejnlCRWYPuyJXr3ULknlJ23hHDkyLFnu/xNA4duMr2SQ==", "dependencies": { "Microsoft.Build.Tasks.Git": "1.1.1" } @@ -542,13 +545,13 @@ }, "Microsoft.NETCore.Platforms": { "type": "Transitive", - "resolved": "1.1.0", - "contentHash": "kz0PEW2lhqygehI/d6XsPCQzD7ff7gUJaVGPVETX611eadGsA3A877GdSlU0LRVMCTH/+P3o2iDTak+S08V2+A==" + "resolved": "1.1.1", + "contentHash": "TMBuzAHpTenGbGgk0SMTwyEkyijY/Eae4ZGsFNYJvAr/LDn1ku3Etp3FPxChmDp5HHF3kzJuoaa08N0xjqAJfQ==" }, "Microsoft.NETCore.Targets": { "type": "Transitive", - "resolved": "1.1.0", - "contentHash": "aOZA3BWfz9RXjpzt0sRJJMjAscAUm3Hoa4UWAfceV9UTYxgwZ1lZt5nO2myFf+/jetYQo4uTP7zS8sJY67BBxg==" + "resolved": "1.1.3", + "contentHash": "3Wrmi0kJDzClwAC+iBdUBpEKmEle8FQNsCs77fkiOIw/9oYA07bL1EZNX0kQ2OMN3xpwvl0vAtOCYY3ndDNlhQ==" }, "Microsoft.SourceLink.Common": { "type": "Transitive", @@ -654,18 +657,18 @@ }, "runtime.debian.8-x64.runtime.native.System.Security.Cryptography.OpenSsl": { "type": "Transitive", - "resolved": "4.3.0", - "contentHash": "HdSSp5MnJSsg08KMfZThpuLPJpPwE5hBXvHwoKWosyHHfe8Mh5WKT0ylEOf6yNzX6Ngjxe4Whkafh5q7Ymac4Q==" + "resolved": "4.3.2", + "contentHash": "7VSGO0URRKoMEAq0Sc9cRz8mb6zbyx/BZDEWhgPdzzpmFhkam3fJ1DAGWFXBI4nGlma+uPKpfuMQP5LXRnOH5g==" }, "runtime.fedora.23-x64.runtime.native.System.Security.Cryptography.OpenSsl": { "type": "Transitive", - "resolved": "4.3.0", - "contentHash": "+yH1a49wJMy8Zt4yx5RhJrxO/DBDByAiCzNwiETI+1S4mPdCu0OY4djdciC7Vssk0l22wQaDLrXxXkp+3+7bVA==" + "resolved": "4.3.2", + "contentHash": "0oAaTAm6e2oVH+/Zttt0cuhGaePQYKII1dY8iaqP7CvOpVKgLybKRFvQjXR2LtxXOXTVPNv14j0ot8uV+HrUmw==" }, "runtime.fedora.24-x64.runtime.native.System.Security.Cryptography.OpenSsl": { "type": "Transitive", - "resolved": "4.3.0", - "contentHash": "c3YNH1GQJbfIPJeCnr4avseugSqPrxwIqzthYyZDN6EuOyNOzq+y2KSUfRcXauya1sF4foESTgwM5e1A8arAKw==" + "resolved": "4.3.2", + "contentHash": "G24ibsCNi5Kbz0oXWynBoRgtGvsw5ZSVEWjv13/KiCAM8C6wz9zzcCniMeQFIkJ2tasjo2kXlvlBZhplL51kGg==" }, "runtime.native.System": { "type": "Transitive", @@ -704,30 +707,30 @@ }, "runtime.native.System.Security.Cryptography.OpenSsl": { "type": "Transitive", - "resolved": "4.3.0", - "contentHash": "NS1U+700m4KFRHR5o4vo9DSlTmlCKu/u7dtE5sUHVIPB+xpXxYQvgBgA6wEIeCz6Yfn0Z52/72WYsToCEPJnrw==", + "resolved": "4.3.2", + "contentHash": "QR1OwtwehHxSeQvZKXe+iSd+d3XZNkEcuWMFYa2i0aG1l+lR739HPicKMlTbJst3spmeekDVBUS7SeS26s4U/g==", "dependencies": { - "runtime.debian.8-x64.runtime.native.System.Security.Cryptography.OpenSsl": "4.3.0", - "runtime.fedora.23-x64.runtime.native.System.Security.Cryptography.OpenSsl": "4.3.0", - "runtime.fedora.24-x64.runtime.native.System.Security.Cryptography.OpenSsl": "4.3.0", - "runtime.opensuse.13.2-x64.runtime.native.System.Security.Cryptography.OpenSsl": "4.3.0", - "runtime.opensuse.42.1-x64.runtime.native.System.Security.Cryptography.OpenSsl": "4.3.0", - "runtime.osx.10.10-x64.runtime.native.System.Security.Cryptography.OpenSsl": "4.3.0", - "runtime.rhel.7-x64.runtime.native.System.Security.Cryptography.OpenSsl": "4.3.0", - "runtime.ubuntu.14.04-x64.runtime.native.System.Security.Cryptography.OpenSsl": "4.3.0", - "runtime.ubuntu.16.04-x64.runtime.native.System.Security.Cryptography.OpenSsl": "4.3.0", - "runtime.ubuntu.16.10-x64.runtime.native.System.Security.Cryptography.OpenSsl": "4.3.0" + "runtime.debian.8-x64.runtime.native.System.Security.Cryptography.OpenSsl": "4.3.2", + "runtime.fedora.23-x64.runtime.native.System.Security.Cryptography.OpenSsl": "4.3.2", + "runtime.fedora.24-x64.runtime.native.System.Security.Cryptography.OpenSsl": "4.3.2", + "runtime.opensuse.13.2-x64.runtime.native.System.Security.Cryptography.OpenSsl": "4.3.2", + "runtime.opensuse.42.1-x64.runtime.native.System.Security.Cryptography.OpenSsl": "4.3.2", + "runtime.osx.10.10-x64.runtime.native.System.Security.Cryptography.OpenSsl": "4.3.2", + "runtime.rhel.7-x64.runtime.native.System.Security.Cryptography.OpenSsl": "4.3.2", + "runtime.ubuntu.14.04-x64.runtime.native.System.Security.Cryptography.OpenSsl": "4.3.2", + "runtime.ubuntu.16.04-x64.runtime.native.System.Security.Cryptography.OpenSsl": "4.3.2", + "runtime.ubuntu.16.10-x64.runtime.native.System.Security.Cryptography.OpenSsl": "4.3.2" } }, "runtime.opensuse.13.2-x64.runtime.native.System.Security.Cryptography.OpenSsl": { "type": "Transitive", - "resolved": "4.3.0", - "contentHash": "b3pthNgxxFcD+Pc0WSEoC0+md3MyhRS6aCEeenvNE3Fdw1HyJ18ZhRFVJJzIeR/O/jpxPboB805Ho0T3Ul7w8A==" + "resolved": "4.3.2", + "contentHash": "I+GNKGg2xCHueRd1m9PzeEW7WLbNNLznmTuEi8/vZX71HudUbx1UTwlGkiwMri7JLl8hGaIAWnA/GONhu+LOyQ==" }, "runtime.opensuse.42.1-x64.runtime.native.System.Security.Cryptography.OpenSsl": { "type": "Transitive", - "resolved": "4.3.0", - "contentHash": "KeLz4HClKf+nFS7p/6Fi/CqyLXh81FpiGzcmuS8DGi9lUqSnZ6Es23/gv2O+1XVGfrbNmviF7CckBpavkBoIFQ==" + "resolved": "4.3.2", + "contentHash": "1Z3TAq1ytS1IBRtPXJvEUZdVsfWfeNEhBkbiOCGEl9wwAfsjP2lz3ZFDx5tq8p60/EqbS0HItG5piHuB71RjoA==" }, "runtime.osx.10.10-x64.runtime.native.System.Security.Cryptography.Apple": { "type": "Transitive", @@ -736,28 +739,28 @@ }, "runtime.osx.10.10-x64.runtime.native.System.Security.Cryptography.OpenSsl": { "type": "Transitive", - "resolved": "4.3.0", - "contentHash": "X7IdhILzr4ROXd8mI1BUCQMSHSQwelUlBjF1JyTKCjXaOGn2fB4EKBxQbCK2VjO3WaWIdlXZL3W6TiIVnrhX4g==" + "resolved": "4.3.2", + "contentHash": "6mU/cVmmHtQiDXhnzUImxIcDL48GbTk+TsptXyJA+MIOG9LRjPoAQC/qBFB7X+UNyK86bmvGwC8t+M66wsYC8w==" }, "runtime.rhel.7-x64.runtime.native.System.Security.Cryptography.OpenSsl": { "type": "Transitive", - "resolved": "4.3.0", - "contentHash": "nyFNiCk/r+VOiIqreLix8yN+q3Wga9+SE8BCgkf+2BwEKiNx6DyvFjCgkfV743/grxv8jHJ8gUK4XEQw7yzRYg==" + "resolved": "4.3.2", + "contentHash": "vjwG0GGcTW/PPg6KVud8F9GLWYuAV1rrw1BKAqY0oh4jcUqg15oYF1+qkGR2x2ZHM4DQnWKQ7cJgYbfncz/lYg==" }, "runtime.ubuntu.14.04-x64.runtime.native.System.Security.Cryptography.OpenSsl": { "type": "Transitive", - "resolved": "4.3.0", - "contentHash": "ytoewC6wGorL7KoCAvRfsgoJPJbNq+64k2SqW6JcOAebWsFUvCCYgfzQMrnpvPiEl4OrblUlhF2ji+Q1+SVLrQ==" + "resolved": "4.3.2", + "contentHash": "7KMFpTkHC/zoExs+PwP8jDCWcrK9H6L7soowT80CUx3e+nxP/AFnq0AQAW5W76z2WYbLAYCRyPfwYFG6zkvQRw==" }, "runtime.ubuntu.16.04-x64.runtime.native.System.Security.Cryptography.OpenSsl": { "type": "Transitive", - "resolved": "4.3.0", - "contentHash": "I8bKw2I8k58Wx7fMKQJn2R8lamboCAiHfHeV/pS65ScKWMMI0+wJkLYlEKvgW1D/XvSl/221clBoR2q9QNNM7A==" + "resolved": "4.3.2", + "contentHash": "xrlmRCnKZJLHxyyLIqkZjNXqgxnKdZxfItrPkjI+6pkRo5lHX8YvSZlWrSI5AVwLMi4HbNWP7064hcAWeZKp5w==" }, "runtime.ubuntu.16.10-x64.runtime.native.System.Security.Cryptography.OpenSsl": { "type": "Transitive", - "resolved": "4.3.0", - "contentHash": "VB5cn/7OzUfzdnC8tqAIMQciVLiq2epm2NrAm1E9OjNRyG4lVhfR61SMcLizejzQP8R8Uf/0l5qOIbUEi+RdEg==" + "resolved": "4.3.2", + "contentHash": "leXiwfiIkW7Gmn7cgnNcdtNAU70SjmKW3jxGj1iKHOvdn0zRWsgv/l2OJUO5zdGdiv2VRFnAsxxhDgMzofPdWg==" }, "StyleCop.Analyzers.Unstable": { "type": "Transitive", @@ -1052,10 +1055,10 @@ }, "System.Net.Http": { "type": "Transitive", - "resolved": "4.3.0", - "contentHash": "sYg+FtILtRQuYWSIAuNOELwVuVsxVyJGWQyOnlAzhV4xvhyFnON1bAzYYC+jjRW8JREM45R0R5Dgi8MTC5sEwA==", + "resolved": "4.3.4", + "contentHash": "aOa2d51SEbmM+H+Csw7yJOuNZoHkrP2XnAurye5HWYgGVVU54YZDvsLUYRv6h18X3sPnjNCANmN7ZhIPiqMcjA==", "dependencies": { - "Microsoft.NETCore.Platforms": "1.1.0", + "Microsoft.NETCore.Platforms": "1.1.1", "System.Collections": "4.3.0", "System.Diagnostics.Debug": "4.3.0", "System.Diagnostics.DiagnosticSource": "4.3.0", @@ -1080,7 +1083,7 @@ "System.Threading.Tasks": "4.3.0", "runtime.native.System": "4.3.0", "runtime.native.System.Net.Http": "4.3.0", - "runtime.native.System.Security.Cryptography.OpenSsl": "4.3.0" + "runtime.native.System.Security.Cryptography.OpenSsl": "4.3.2" } }, "System.Net.Primitives": { @@ -1208,11 +1211,11 @@ }, "System.Runtime": { "type": "Transitive", - "resolved": "4.3.0", - "contentHash": "JufQi0vPQ0xGnAczR13AUFglDyVYt4Kqnz1AZaiKZ5+GICq0/1MH/mO/eAJHt/mHW1zjKBJd7kV26SrxddAhiw==", + "resolved": "4.3.1", + "contentHash": "abhfv1dTK6NXOmu4bgHIONxHyEqFjW8HwXPmpY9gmll+ix9UNo4XDcmzJn6oLooftxNssVHdJC1pGT9jkSynQg==", "dependencies": { - "Microsoft.NETCore.Platforms": "1.1.0", - "Microsoft.NETCore.Targets": "1.1.0" + "Microsoft.NETCore.Platforms": "1.1.1", + "Microsoft.NETCore.Targets": "1.1.3" } }, "System.Runtime.CompilerServices.Unsafe": { @@ -1455,8 +1458,8 @@ }, "System.Text.Encodings.Web": { "type": "Transitive", - "resolved": "4.5.0", - "contentHash": "Xg4G4Indi4dqP1iuAiMSwpiWS54ZghzR644OtsRCm/m/lBMG8dUBhLVN7hLm8NNrNTR+iGbshCPTwrvxZPlm4g==" + "resolved": "4.7.2", + "contentHash": "iTUgB/WtrZ1sWZs84F2hwyQhiRH6QNjQv2DkwrH+WP6RoFga2Q1m3f9/Q7FG8cck8AdHitQkmkXSY8qylcDmuA==" }, "System.Text.Json": { "type": "Transitive", @@ -1465,10 +1468,10 @@ }, "System.Text.RegularExpressions": { "type": "Transitive", - "resolved": "4.3.0", - "contentHash": "RpT2DA+L660cBt1FssIE9CAGpLFdFPuheB7pLpKpn6ZXNby7jDERe8Ua/Ne2xGiwLVG2JOqziiaVCGDon5sKFA==", + "resolved": "4.3.1", + "contentHash": "N0kNRrWe4+nXOWlpLT4LAY5brb8caNFlUuIRpraCVMDLYutKkol1aV079rQjLuSxKMJT2SpBQsYX9xbcTMmzwg==", "dependencies": { - "System.Runtime": "4.3.0" + "System.Runtime": "4.3.1" } }, "System.Threading": { diff --git a/Solutions/Corvus.Testing.AzureFunctions.DemoFunctions.Isolated/Corvus.Testing.AzureFunctions.DemoFunctions.Isolated.csproj b/Solutions/Corvus.Testing.AzureFunctions.DemoFunctions.Isolated/Corvus.Testing.AzureFunctions.DemoFunctions.Isolated.csproj index 0b86e044..6fa3339c 100644 --- a/Solutions/Corvus.Testing.AzureFunctions.DemoFunctions.Isolated/Corvus.Testing.AzureFunctions.DemoFunctions.Isolated.csproj +++ b/Solutions/Corvus.Testing.AzureFunctions.DemoFunctions.Isolated/Corvus.Testing.AzureFunctions.DemoFunctions.Isolated.csproj @@ -16,9 +16,9 @@ - - - + + + diff --git a/Solutions/Corvus.Testing.AzureFunctions.SpecFlow.Demo/AzureFunctionsTesting/DemoFunctionConfig.cs b/Solutions/Corvus.Testing.AzureFunctions.ReqnRoll.Demo/AzureFunctionsTesting/DemoFunctionConfig.cs similarity index 83% rename from Solutions/Corvus.Testing.AzureFunctions.SpecFlow.Demo/AzureFunctionsTesting/DemoFunctionConfig.cs rename to Solutions/Corvus.Testing.AzureFunctions.ReqnRoll.Demo/AzureFunctionsTesting/DemoFunctionConfig.cs index 07bf7919..228a7e10 100644 --- a/Solutions/Corvus.Testing.AzureFunctions.SpecFlow.Demo/AzureFunctionsTesting/DemoFunctionConfig.cs +++ b/Solutions/Corvus.Testing.AzureFunctions.ReqnRoll.Demo/AzureFunctionsTesting/DemoFunctionConfig.cs @@ -2,18 +2,17 @@ // Copyright (c) Endjin Limited. All rights reserved. // -namespace Corvus.Testing.SpecFlow.Demo.AzureFunctionsTesting +namespace Corvus.Testing.ReqnRoll.Demo.AzureFunctionsTesting { using System.Collections.Generic; using Corvus.Testing.AzureFunctions; - using Corvus.Testing.AzureFunctions.SpecFlow; - - using TechTalk.SpecFlow; + using Corvus.Testing.AzureFunctions.ReqnRoll; + using Reqnroll; internal static class DemoFunctionConfig { - public static void SetupTestConfig(SpecFlowContext context) + public static void SetupTestConfig(ReqnrollContext context) { FunctionConfiguration functionConfiguration = FunctionsBindings.GetFunctionConfiguration(context); var config = new Dictionary() diff --git a/Solutions/Corvus.Testing.AzureFunctions.SpecFlow.Demo/AzureFunctionsTesting/DemoFunctionPerFeatureHooks.cs b/Solutions/Corvus.Testing.AzureFunctions.ReqnRoll.Demo/AzureFunctionsTesting/DemoFunctionPerFeatureHooks.cs similarity index 95% rename from Solutions/Corvus.Testing.AzureFunctions.SpecFlow.Demo/AzureFunctionsTesting/DemoFunctionPerFeatureHooks.cs rename to Solutions/Corvus.Testing.AzureFunctions.ReqnRoll.Demo/AzureFunctionsTesting/DemoFunctionPerFeatureHooks.cs index 7d5f43a6..5069e1bb 100644 --- a/Solutions/Corvus.Testing.AzureFunctions.SpecFlow.Demo/AzureFunctionsTesting/DemoFunctionPerFeatureHooks.cs +++ b/Solutions/Corvus.Testing.AzureFunctions.ReqnRoll.Demo/AzureFunctionsTesting/DemoFunctionPerFeatureHooks.cs @@ -2,16 +2,15 @@ // Copyright (c) Endjin Limited. All rights reserved. // -namespace Corvus.Testing.SpecFlow.Demo.AzureFunctionsTesting +namespace Corvus.Testing.ReqnRoll.Demo.AzureFunctionsTesting { using System.Threading.Tasks; using Corvus.Testing.AzureFunctions; - using Corvus.Testing.AzureFunctions.SpecFlow; + using Corvus.Testing.AzureFunctions.ReqnRoll; using Microsoft.Extensions.Logging; - - using TechTalk.SpecFlow; + using Reqnroll; [Binding] public static class DemoFunctionPerFeatureHooks @@ -74,4 +73,4 @@ public static void StopFunction(FeatureContext featureContext) functionsController.TeardownFunctions(); } } -} +} \ No newline at end of file diff --git a/Solutions/Corvus.Testing.AzureFunctions.SpecFlow.Demo/AzureFunctionsTesting/DemoFunctionPerScenarioHooks.cs b/Solutions/Corvus.Testing.AzureFunctions.ReqnRoll.Demo/AzureFunctionsTesting/DemoFunctionPerScenarioHooks.cs similarity index 95% rename from Solutions/Corvus.Testing.AzureFunctions.SpecFlow.Demo/AzureFunctionsTesting/DemoFunctionPerScenarioHooks.cs rename to Solutions/Corvus.Testing.AzureFunctions.ReqnRoll.Demo/AzureFunctionsTesting/DemoFunctionPerScenarioHooks.cs index ee8c3e79..1ca50bed 100644 --- a/Solutions/Corvus.Testing.AzureFunctions.SpecFlow.Demo/AzureFunctionsTesting/DemoFunctionPerScenarioHooks.cs +++ b/Solutions/Corvus.Testing.AzureFunctions.ReqnRoll.Demo/AzureFunctionsTesting/DemoFunctionPerScenarioHooks.cs @@ -2,14 +2,13 @@ // Copyright (c) Endjin Limited. All rights reserved. // -namespace Corvus.Testing.SpecFlow.Demo.AzureFunctionsTesting +namespace Corvus.Testing.ReqnRoll.Demo.AzureFunctionsTesting { using System.Threading.Tasks; using Corvus.Testing.AzureFunctions; - using Corvus.Testing.AzureFunctions.SpecFlow; - - using TechTalk.SpecFlow; + using Corvus.Testing.AzureFunctions.ReqnRoll; + using Reqnroll; [Binding] public static class DemoFunctionPerScenarioHooks diff --git a/Solutions/Corvus.Testing.AzureFunctions.SpecFlow.Demo/AzureFunctionsTesting/ScenariosUsingPerFeatureHookInProcess.feature b/Solutions/Corvus.Testing.AzureFunctions.ReqnRoll.Demo/AzureFunctionsTesting/ScenariosUsingPerFeatureHookInProcess.feature similarity index 100% rename from Solutions/Corvus.Testing.AzureFunctions.SpecFlow.Demo/AzureFunctionsTesting/ScenariosUsingPerFeatureHookInProcess.feature rename to Solutions/Corvus.Testing.AzureFunctions.ReqnRoll.Demo/AzureFunctionsTesting/ScenariosUsingPerFeatureHookInProcess.feature diff --git a/Solutions/Corvus.Testing.AzureFunctions.SpecFlow.Demo/AzureFunctionsTesting/ScenariosUsingPerFeatureHookIsolated.feature b/Solutions/Corvus.Testing.AzureFunctions.ReqnRoll.Demo/AzureFunctionsTesting/ScenariosUsingPerFeatureHookIsolated.feature similarity index 100% rename from Solutions/Corvus.Testing.AzureFunctions.SpecFlow.Demo/AzureFunctionsTesting/ScenariosUsingPerFeatureHookIsolated.feature rename to Solutions/Corvus.Testing.AzureFunctions.ReqnRoll.Demo/AzureFunctionsTesting/ScenariosUsingPerFeatureHookIsolated.feature diff --git a/Solutions/Corvus.Testing.AzureFunctions.SpecFlow.Demo/AzureFunctionsTesting/ScenariosUsingPerFeatureHookWithAdditionalConfigurationInProcess.feature b/Solutions/Corvus.Testing.AzureFunctions.ReqnRoll.Demo/AzureFunctionsTesting/ScenariosUsingPerFeatureHookWithAdditionalConfigurationInProcess.feature similarity index 100% rename from Solutions/Corvus.Testing.AzureFunctions.SpecFlow.Demo/AzureFunctionsTesting/ScenariosUsingPerFeatureHookWithAdditionalConfigurationInProcess.feature rename to Solutions/Corvus.Testing.AzureFunctions.ReqnRoll.Demo/AzureFunctionsTesting/ScenariosUsingPerFeatureHookWithAdditionalConfigurationInProcess.feature diff --git a/Solutions/Corvus.Testing.AzureFunctions.SpecFlow.Demo/AzureFunctionsTesting/ScenariosUsingPerFeatureHookWithAdditionalConfigurationIsolated.feature b/Solutions/Corvus.Testing.AzureFunctions.ReqnRoll.Demo/AzureFunctionsTesting/ScenariosUsingPerFeatureHookWithAdditionalConfigurationIsolated.feature similarity index 100% rename from Solutions/Corvus.Testing.AzureFunctions.SpecFlow.Demo/AzureFunctionsTesting/ScenariosUsingPerFeatureHookWithAdditionalConfigurationIsolated.feature rename to Solutions/Corvus.Testing.AzureFunctions.ReqnRoll.Demo/AzureFunctionsTesting/ScenariosUsingPerFeatureHookWithAdditionalConfigurationIsolated.feature diff --git a/Solutions/Corvus.Testing.AzureFunctions.SpecFlow.Demo/AzureFunctionsTesting/ScenariosUsingPerScenarioHookInProcess.feature b/Solutions/Corvus.Testing.AzureFunctions.ReqnRoll.Demo/AzureFunctionsTesting/ScenariosUsingPerScenarioHookInProcess.feature similarity index 100% rename from Solutions/Corvus.Testing.AzureFunctions.SpecFlow.Demo/AzureFunctionsTesting/ScenariosUsingPerScenarioHookInProcess.feature rename to Solutions/Corvus.Testing.AzureFunctions.ReqnRoll.Demo/AzureFunctionsTesting/ScenariosUsingPerScenarioHookInProcess.feature diff --git a/Solutions/Corvus.Testing.AzureFunctions.SpecFlow.Demo/AzureFunctionsTesting/ScenariosUsingPerScenarioHookIsolated.feature b/Solutions/Corvus.Testing.AzureFunctions.ReqnRoll.Demo/AzureFunctionsTesting/ScenariosUsingPerScenarioHookIsolated.feature similarity index 100% rename from Solutions/Corvus.Testing.AzureFunctions.SpecFlow.Demo/AzureFunctionsTesting/ScenariosUsingPerScenarioHookIsolated.feature rename to Solutions/Corvus.Testing.AzureFunctions.ReqnRoll.Demo/AzureFunctionsTesting/ScenariosUsingPerScenarioHookIsolated.feature diff --git a/Solutions/Corvus.Testing.AzureFunctions.SpecFlow.Demo/AzureFunctionsTesting/ScenariosUsingPerScenarioHookWithAdditionalConfigurationInProcess.feature b/Solutions/Corvus.Testing.AzureFunctions.ReqnRoll.Demo/AzureFunctionsTesting/ScenariosUsingPerScenarioHookWithAdditionalConfigurationInProcess.feature similarity index 100% rename from Solutions/Corvus.Testing.AzureFunctions.SpecFlow.Demo/AzureFunctionsTesting/ScenariosUsingPerScenarioHookWithAdditionalConfigurationInProcess.feature rename to Solutions/Corvus.Testing.AzureFunctions.ReqnRoll.Demo/AzureFunctionsTesting/ScenariosUsingPerScenarioHookWithAdditionalConfigurationInProcess.feature diff --git a/Solutions/Corvus.Testing.AzureFunctions.SpecFlow.Demo/AzureFunctionsTesting/ScenariosUsingPerScenarioHookWithAdditionalConfigurationIsolated.feature b/Solutions/Corvus.Testing.AzureFunctions.ReqnRoll.Demo/AzureFunctionsTesting/ScenariosUsingPerScenarioHookWithAdditionalConfigurationIsolated.feature similarity index 100% rename from Solutions/Corvus.Testing.AzureFunctions.SpecFlow.Demo/AzureFunctionsTesting/ScenariosUsingPerScenarioHookWithAdditionalConfigurationIsolated.feature rename to Solutions/Corvus.Testing.AzureFunctions.ReqnRoll.Demo/AzureFunctionsTesting/ScenariosUsingPerScenarioHookWithAdditionalConfigurationIsolated.feature diff --git a/Solutions/Corvus.Testing.AzureFunctions.SpecFlow.Demo/AzureFunctionsTesting/ScenariosUsingStepBindings.feature b/Solutions/Corvus.Testing.AzureFunctions.ReqnRoll.Demo/AzureFunctionsTesting/ScenariosUsingStepBindings.feature similarity index 100% rename from Solutions/Corvus.Testing.AzureFunctions.SpecFlow.Demo/AzureFunctionsTesting/ScenariosUsingStepBindings.feature rename to Solutions/Corvus.Testing.AzureFunctions.ReqnRoll.Demo/AzureFunctionsTesting/ScenariosUsingStepBindings.feature diff --git a/Solutions/Corvus.Testing.AzureFunctions.SpecFlow.Demo/AzureFunctionsTesting/StepBindings.cs b/Solutions/Corvus.Testing.AzureFunctions.ReqnRoll.Demo/AzureFunctionsTesting/StepBindings.cs similarity index 78% rename from Solutions/Corvus.Testing.AzureFunctions.SpecFlow.Demo/AzureFunctionsTesting/StepBindings.cs rename to Solutions/Corvus.Testing.AzureFunctions.ReqnRoll.Demo/AzureFunctionsTesting/StepBindings.cs index 5ac99618..7b83dbd0 100644 --- a/Solutions/Corvus.Testing.AzureFunctions.SpecFlow.Demo/AzureFunctionsTesting/StepBindings.cs +++ b/Solutions/Corvus.Testing.AzureFunctions.ReqnRoll.Demo/AzureFunctionsTesting/StepBindings.cs @@ -2,7 +2,7 @@ // Copyright (c) Endjin Limited. All rights reserved. // -namespace Corvus.Testing.SpecFlow.Demo.AzureFunctionsTesting +namespace Corvus.Testing.ReqnRoll.Demo.AzureFunctionsTesting { using System.Net; using System.Net.Http; @@ -11,9 +11,9 @@ namespace Corvus.Testing.SpecFlow.Demo.AzureFunctionsTesting using Newtonsoft.Json; using Newtonsoft.Json.Linq; using NUnit.Framework; - using TechTalk.SpecFlow; using Corvus.Testing.AzureFunctions; - using Corvus.Testing.AzureFunctions.SpecFlow; + using Corvus.Testing.AzureFunctions.ReqnRoll; + using Reqnroll; [Binding] public class StepBindings @@ -34,7 +34,7 @@ public void GivenIHaveSetAdditionalConfigurationForFunctionsInstances(Table tabl { FunctionConfiguration functionConfiguration = FunctionsBindings.GetFunctionConfiguration(this.scenarioContext); - foreach (TableRow row in table.Rows) + foreach (DataTableRow row in table.Rows) { functionConfiguration.EnvironmentVariables.Add(row[0], row[1]); } @@ -56,7 +56,7 @@ public async Task WhenISendAPOSTRequestTo(string uri) public async Task WhenISendAPOSTRequestToWithDataInTheRequestBody(string uri, Table table) { var requestBody = new JObject(); - foreach (TableRow row in table.Rows) + foreach (DataTableRow row in table.Rows) { requestBody.Add(row[0], row[1]); } @@ -69,17 +69,17 @@ public async Task WhenISendAPOSTRequestToWithDataInTheRequestBody(string uri, Ta [Then("I receive a (.*) response code")] public void ThenIReceiveAResponseCode(int expectedCode) { - Assert.IsNotNull(this.lastHttpResponseMessage, "Could not verify last response status code as there is no last response"); - Assert.AreEqual((HttpStatusCode)expectedCode, this.lastHttpResponseMessage!.StatusCode); + Assert.That(this.lastHttpResponseMessage, Is.Not.Null, "Could not verify last response status code as there is no last response"); + Assert.That(this.lastHttpResponseMessage!.StatusCode, Is.EqualTo((HttpStatusCode)expectedCode)); } [Then("the response body contains the text '(.*)'")] public async Task ThenTheResponseBodyContainsTheText(string expectedContent) { - Assert.IsNotNull(this.lastHttpResponseMessage, "Could not verify last response status code as there is no last response"); + Assert.That(this.lastHttpResponseMessage, Is.Not.Null, "Could not verify last response status code as there is no last response"); string actualContent = await this.lastHttpResponseMessage!.Content.ReadAsStringAsync().ConfigureAwait(false); - Assert.AreEqual(expectedContent, actualContent); + Assert.That(expectedContent, Is.Not.Null, actualContent); } } } diff --git a/Solutions/Corvus.Testing.AzureFunctions.SpecFlow.Demo/Corvus.Testing.AzureFunctions.SpecFlow.Demo.csproj b/Solutions/Corvus.Testing.AzureFunctions.ReqnRoll.Demo/Corvus.Testing.AzureFunctions.ReqnRoll.Demo.csproj similarity index 78% rename from Solutions/Corvus.Testing.AzureFunctions.SpecFlow.Demo/Corvus.Testing.AzureFunctions.SpecFlow.Demo.csproj rename to Solutions/Corvus.Testing.AzureFunctions.ReqnRoll.Demo/Corvus.Testing.AzureFunctions.ReqnRoll.Demo.csproj index 108a27b4..d51b410a 100644 --- a/Solutions/Corvus.Testing.AzureFunctions.SpecFlow.Demo/Corvus.Testing.AzureFunctions.SpecFlow.Demo.csproj +++ b/Solutions/Corvus.Testing.AzureFunctions.ReqnRoll.Demo/Corvus.Testing.AzureFunctions.ReqnRoll.Demo.csproj @@ -7,7 +7,7 @@ Copyright (c) Endjin Limited 2024. All rights reserved. latest + + + + + Apache-2.0 + A metapackage that encapsulates the required dependencies when using Corvus.Testing.AzureFunctions.ReqnRoll and Endjin's standard practises. Also simplifies the dependency management process when using tools like Dependabot. + metapackage + + MetaPackage.ReqnRoll.AzureFunctions.NUnit + true + false + false + + $(NoWarn);NU5128 + + + + + + contentfiles; analyzers + + + + contentfiles; analyzers + + + + + + + + + diff --git a/Solutions/Corvus.Testing.AzureFunctions.ReqnRoll.NUnit/DummyClass.cs b/Solutions/Corvus.Testing.AzureFunctions.ReqnRoll.NUnit/DummyClass.cs new file mode 100644 index 00000000..70a03f9c --- /dev/null +++ b/Solutions/Corvus.Testing.AzureFunctions.ReqnRoll.NUnit/DummyClass.cs @@ -0,0 +1,6 @@ +namespace MetaPackage.ReqnRoll.AzureFunctions.NUnit +{ + public class DummyClass + { + } +} diff --git a/Solutions/Corvus.Testing.AzureFunctions.SpecFlow/Corvus.Testing.AzureFunctions.SpecFlow.csproj b/Solutions/Corvus.Testing.AzureFunctions.ReqnRoll/Corvus.Testing.AzureFunctions.ReqnRoll.csproj similarity index 85% rename from Solutions/Corvus.Testing.AzureFunctions.SpecFlow/Corvus.Testing.AzureFunctions.SpecFlow.csproj rename to Solutions/Corvus.Testing.AzureFunctions.ReqnRoll/Corvus.Testing.AzureFunctions.ReqnRoll.csproj index 6b8f754b..10bb499e 100644 --- a/Solutions/Corvus.Testing.AzureFunctions.SpecFlow/Corvus.Testing.AzureFunctions.SpecFlow.csproj +++ b/Solutions/Corvus.Testing.AzureFunctions.ReqnRoll/Corvus.Testing.AzureFunctions.ReqnRoll.csproj @@ -30,14 +30,12 @@ all runtime; build; native; contentfiles; analyzers; buildtransitive - - - + + - + - diff --git a/Solutions/Corvus.Testing.AzureFunctions.SpecFlow/Corvus/Testing/AzureFunctions/SpecFlow/FunctionsBindings.cs b/Solutions/Corvus.Testing.AzureFunctions.ReqnRoll/Corvus/Testing/AzureFunctions/SpecFlow/FunctionsBindings.cs similarity index 93% rename from Solutions/Corvus.Testing.AzureFunctions.SpecFlow/Corvus/Testing/AzureFunctions/SpecFlow/FunctionsBindings.cs rename to Solutions/Corvus.Testing.AzureFunctions.ReqnRoll/Corvus/Testing/AzureFunctions/SpecFlow/FunctionsBindings.cs index d9703220..086ddd95 100644 --- a/Solutions/Corvus.Testing.AzureFunctions.SpecFlow/Corvus/Testing/AzureFunctions/SpecFlow/FunctionsBindings.cs +++ b/Solutions/Corvus.Testing.AzureFunctions.ReqnRoll/Corvus/Testing/AzureFunctions/SpecFlow/FunctionsBindings.cs @@ -2,16 +2,16 @@ // Copyright (c) Endjin Limited. All rights reserved. // -namespace Corvus.Testing.AzureFunctions.SpecFlow +namespace Corvus.Testing.AzureFunctions.ReqnRoll { using System.Threading.Tasks; using Corvus.Testing.AzureFunctions; - using Corvus.Testing.SpecFlow; + using Corvus.Testing.ReqnRoll; using Microsoft.Extensions.Logging; - using TechTalk.SpecFlow; + using Reqnroll; /// - /// Specflow bindings to support Azure Functions. + /// ReqnRoll bindings to support Azure Functions. /// [Binding] public class FunctionsBindings @@ -32,13 +32,13 @@ public FunctionsBindings(ScenarioContext scenarioContext) /// /// Retrieves the current functions controller from the supplied context. /// - /// The SpecFlow context to retrieve from. + /// The ReqnRoll context to retrieve from. /// The FunctionsController. /// /// If the controller hasn't already been added to the context, this method will create /// and add a new instance. /// - public static FunctionsController GetFunctionsController(SpecFlowContext context) + public static FunctionsController GetFunctionsController(ReqnrollContext context) { if (!context.TryGetValue(out ILogger logger)) { @@ -64,7 +64,7 @@ public static FunctionsController GetFunctionsController(SpecFlowContext context /// If a hasn't already been added to the context, /// this method will create and add a new instance. /// - public static FunctionConfiguration GetFunctionConfiguration(SpecFlowContext context) + public static FunctionConfiguration GetFunctionConfiguration(ReqnrollContext context) { if (!context.TryGetValue(out FunctionConfiguration value)) { diff --git a/Solutions/Corvus.Testing.AzureFunctions.SpecFlow.Demo/packages.lock.json b/Solutions/Corvus.Testing.AzureFunctions.SpecFlow.Demo/packages.lock.json deleted file mode 100644 index d2b8392e..00000000 --- a/Solutions/Corvus.Testing.AzureFunctions.SpecFlow.Demo/packages.lock.json +++ /dev/null @@ -1,1446 +0,0 @@ -{ - "version": 1, - "dependencies": { - "net8.0": { - "Endjin.RecommendedPractices.GitHub": { - "type": "Direct", - "requested": "[2.1.9, )", - "resolved": "2.1.9", - "contentHash": "gFCDZOu96fU+TfsAkZ7zLUzm8NX1/k3hWt7lbyf5HOn95+hYJQZ+g4bjs/Awx7JODsvNZpON8QlstZQVjPnRxg==", - "dependencies": { - "Endjin.RecommendedPractices": "2.1.9", - "Microsoft.SourceLink.GitHub": "1.1.1" - } - }, - "Microsoft.Extensions.Configuration": { - "type": "Direct", - "requested": "[8.0.0, )", - "resolved": "8.0.0", - "contentHash": "0J/9YNXTMWSZP2p2+nvl8p71zpSwokZXZuJW+VjdErkegAnFdO1XlqtA62SJtgVYHdKu3uPxJHcMR/r35HwFBA==", - "dependencies": { - "Microsoft.Extensions.Configuration.Abstractions": "8.0.0", - "Microsoft.Extensions.Primitives": "8.0.0" - } - }, - "Roslynator.Analyzers": { - "type": "Direct", - "requested": "[4.9.0, )", - "resolved": "4.9.0", - "contentHash": "lFd4MmkllYR0dKlPWDokRwAvQnjNoPJztlncyzvnCG/wvGr5FzHAencngcJna/wkyDE0xIv7AnUccgCLsoIXTw==" - }, - "StyleCop.Analyzers": { - "type": "Direct", - "requested": "[1.2.0-beta.556, )", - "resolved": "1.2.0-beta.556", - "contentHash": "llRPgmA1fhC0I0QyFLEcjvtM2239QzKr/tcnbsjArLMJxJlu0AA5G7Fft0OI30pHF3MW63Gf4aSSsjc5m82J1Q==", - "dependencies": { - "StyleCop.Analyzers.Unstable": "1.2.0.556" - } - }, - "BoDi": { - "type": "Transitive", - "resolved": "1.5.0", - "contentHash": "CzIPzdIAFSd2zuLxI+0K9s48Qv3HQDbWiApn9h96j284rHs2bSPrn/PMca3mi4q3xLSEqOp+GUJ6+mXDD9prKg==" - }, - "coverlet.msbuild": { - "type": "Transitive", - "resolved": "6.0.0", - "contentHash": "cUKI50VSVBqDQDFIdBnjN0Jk5JYhjtD0geP2BZZv71/ZrKORJXcLRswFsojI+cHdV+rFUL2XDJEpuhK3x1YqLA==" - }, - "Endjin.RecommendedPractices": { - "type": "Transitive", - "resolved": "2.1.9", - "contentHash": "LzppiBrlPBj5TmVsQVxWoGv/MWfq+sAz0qkdB/ozUDS2hq31Pu8j2Cvk+BVlhvrb9eDUQxxHaLL4gbE7LiSAfQ==", - "dependencies": { - "Microsoft.Build.Tasks.Git": "1.1.1" - } - }, - "Gherkin": { - "type": "Transitive", - "resolved": "19.0.3", - "contentHash": "kq9feqMojMj9aABrHb/ABEPaH2Y4dSclseSahAru6qxCeqVQNLLTgw/6vZMauzI1yBUL2fz03ub5yEd5btLfvg==" - }, - "Microsoft.Build.Tasks.Git": { - "type": "Transitive", - "resolved": "1.1.1", - "contentHash": "AT3HlgTjsqHnWpBHSNeR0KxbLZD7bztlZVj7I8vgeYG9SYqbeFGh0TM/KVtC6fg53nrWHl3VfZFvb5BiQFcY6Q==" - }, - "Microsoft.CodeCoverage": { - "type": "Transitive", - "resolved": "17.8.0", - "contentHash": "KC8SXWbGIdoFVdlxKk9WHccm0llm9HypcHMLUUFabRiTS3SO2fQXNZfdiF3qkEdTJhbRrxhdRxjL4jbtwPq4Ew==" - }, - "Microsoft.DotNet.InternalAbstractions": { - "type": "Transitive", - "resolved": "1.0.0", - "contentHash": "AAguUq7YyKk3yDWPoWA8DrLZvURxB/LrDdTn1h5lmPeznkFUpfC3p459w5mQYQE0qpquf/CkSQZ0etiV5vRHFA==", - "dependencies": { - "System.AppContext": "4.1.0", - "System.Collections": "4.0.11", - "System.IO": "4.1.0", - "System.IO.FileSystem": "4.0.1", - "System.Reflection.TypeExtensions": "4.1.0", - "System.Runtime.Extensions": "4.1.0", - "System.Runtime.InteropServices": "4.1.0", - "System.Runtime.InteropServices.RuntimeInformation": "4.0.0" - } - }, - "Microsoft.DotNet.PlatformAbstractions": { - "type": "Transitive", - "resolved": "1.0.3", - "contentHash": "rF92Gp5L2asYrFNf0cKNBxzzGLh1krHuj6TRDk9wdjN2qdvJLaNYOn1s9oYkMlptYX436KiEFqxhLB+I5veXvQ==", - "dependencies": { - "System.AppContext": "4.1.0", - "System.Collections": "4.0.11", - "System.IO": "4.1.0", - "System.IO.FileSystem": "4.0.1", - "System.Reflection.TypeExtensions": "4.1.0", - "System.Runtime.Extensions": "4.1.0", - "System.Runtime.InteropServices": "4.1.0", - "System.Runtime.InteropServices.RuntimeInformation": "4.0.0" - } - }, - "Microsoft.Extensions.Configuration.Abstractions": { - "type": "Transitive", - "resolved": "8.0.0", - "contentHash": "3lE/iLSutpgX1CC0NOW70FJoGARRHbyKmG7dc0klnUZ9Dd9hS6N/POPWhKhMLCEuNN5nXEY5agmlFtH562vqhQ==", - "dependencies": { - "Microsoft.Extensions.Primitives": "8.0.0" - } - }, - "Microsoft.Extensions.Configuration.Binder": { - "type": "Transitive", - "resolved": "6.0.0", - "contentHash": "b3ErKzND8LIC7o08QAVlKfaEIYEvLJbtmVbFZVBRXeu9YkKfSSzLZfR1SUfQPBIy9mKLhEtJgGYImkcMNaKE0A==", - "dependencies": { - "Microsoft.Extensions.Configuration.Abstractions": "6.0.0" - } - }, - "Microsoft.Extensions.DependencyInjection": { - "type": "Transitive", - "resolved": "6.0.1", - "contentHash": "vWXPg3HJQIpZkENn1KWq8SfbqVujVD7S7vIAyFXXqK5xkf1Vho+vG0bLBCHxU36lD1cLLtmGpfYf0B3MYFi9tQ==", - "dependencies": { - "Microsoft.Extensions.DependencyInjection.Abstractions": "6.0.0", - "System.Runtime.CompilerServices.Unsafe": "6.0.0" - } - }, - "Microsoft.Extensions.DependencyInjection.Abstractions": { - "type": "Transitive", - "resolved": "6.0.0", - "contentHash": "xlzi2IYREJH3/m6+lUrQlujzX8wDitm4QGnUu6kUXTQAWPuZY8i+ticFJbzfqaetLA6KR/rO6Ew/HuYD+bxifg==" - }, - "Microsoft.Extensions.DependencyModel": { - "type": "Transitive", - "resolved": "1.0.3", - "contentHash": "Z3o19EnheuegmvgpCzwoSlnCWxYA6qIUhvKJ7ifKHHvU7U+oYR/gliLiL3LVYOOeGMEEzkpJ5W67sOcXizGtlw==", - "dependencies": { - "Microsoft.DotNet.PlatformAbstractions": "1.0.3", - "Newtonsoft.Json": "9.0.1", - "System.Diagnostics.Debug": "4.0.11", - "System.Dynamic.Runtime": "4.0.11", - "System.Linq": "4.1.0" - } - }, - "Microsoft.Extensions.Logging": { - "type": "Transitive", - "resolved": "6.0.0", - "contentHash": "eIbyj40QDg1NDz0HBW0S5f3wrLVnKWnDJ/JtZ+yJDFnDj90VoPuoPmFkeaXrtu+0cKm5GRAwoDf+dBWXK0TUdg==", - "dependencies": { - "Microsoft.Extensions.DependencyInjection": "6.0.0", - "Microsoft.Extensions.DependencyInjection.Abstractions": "6.0.0", - "Microsoft.Extensions.Logging.Abstractions": "6.0.0", - "Microsoft.Extensions.Options": "6.0.0", - "System.Diagnostics.DiagnosticSource": "6.0.0" - } - }, - "Microsoft.Extensions.Logging.Abstractions": { - "type": "Transitive", - "resolved": "6.0.4", - "contentHash": "K14wYgwOfKVELrUh5eBqlC8Wvo9vvhS3ZhIvcswV2uS/ubkTRPSQsN557EZiYUSSoZNxizG+alN4wjtdyLdcyw==" - }, - "Microsoft.Extensions.Logging.Configuration": { - "type": "Transitive", - "resolved": "6.0.0", - "contentHash": "ZDskjagmBAbv+K8rYW9VhjPplhbOE63xUD0DiuydZJwt15dRyoqicYklLd86zzeintUc7AptDkHn+YhhYkYo8A==", - "dependencies": { - "Microsoft.Extensions.Configuration": "6.0.0", - "Microsoft.Extensions.Configuration.Abstractions": "6.0.0", - "Microsoft.Extensions.Configuration.Binder": "6.0.0", - "Microsoft.Extensions.DependencyInjection.Abstractions": "6.0.0", - "Microsoft.Extensions.Logging": "6.0.0", - "Microsoft.Extensions.Logging.Abstractions": "6.0.0", - "Microsoft.Extensions.Options": "6.0.0", - "Microsoft.Extensions.Options.ConfigurationExtensions": "6.0.0" - } - }, - "Microsoft.Extensions.Logging.Console": { - "type": "Transitive", - "resolved": "6.0.0", - "contentHash": "gsqKzOEdsvq28QiXFxagmn1oRB9GeI5GgYCkoybZtQA0IUb7QPwf1WmN3AwJeNIsadTvIFQCiVK0OVIgKfOBGg==", - "dependencies": { - "Microsoft.Extensions.DependencyInjection.Abstractions": "6.0.0", - "Microsoft.Extensions.Logging": "6.0.0", - "Microsoft.Extensions.Logging.Abstractions": "6.0.0", - "Microsoft.Extensions.Logging.Configuration": "6.0.0", - "Microsoft.Extensions.Options": "6.0.0", - "System.Text.Json": "6.0.0" - } - }, - "Microsoft.Extensions.Options": { - "type": "Transitive", - "resolved": "6.0.0", - "contentHash": "dzXN0+V1AyjOe2xcJ86Qbo233KHuLEY0njf/P2Kw8SfJU+d45HNS2ctJdnEnrWbM9Ye2eFgaC5Mj9otRMU6IsQ==", - "dependencies": { - "Microsoft.Extensions.DependencyInjection.Abstractions": "6.0.0", - "Microsoft.Extensions.Primitives": "6.0.0" - } - }, - "Microsoft.Extensions.Options.ConfigurationExtensions": { - "type": "Transitive", - "resolved": "6.0.0", - "contentHash": "bXWINbTn0vC0FYc9GaQTISbxhQLAMrvtbuvD9N6JelEaIS/Pr62wUCinrq5bf1WRBGczt1v4wDhxFtVFNcMdUQ==", - "dependencies": { - "Microsoft.Extensions.Configuration.Abstractions": "6.0.0", - "Microsoft.Extensions.Configuration.Binder": "6.0.0", - "Microsoft.Extensions.DependencyInjection.Abstractions": "6.0.0", - "Microsoft.Extensions.Options": "6.0.0", - "Microsoft.Extensions.Primitives": "6.0.0" - } - }, - "Microsoft.Extensions.Primitives": { - "type": "Transitive", - "resolved": "8.0.0", - "contentHash": "bXJEZrW9ny8vjMF1JV253WeLhpEVzFo1lyaZu1vQ4ZxWUlVvknZ/+ftFgVheLubb4eZPSwwxBeqS1JkCOjxd8g==" - }, - "Microsoft.NET.Test.Sdk": { - "type": "Transitive", - "resolved": "17.8.0", - "contentHash": "BmTYGbD/YuDHmApIENdoyN1jCk0Rj1fJB0+B/fVekyTdVidr91IlzhqzytiUgaEAzL1ZJcYCme0MeBMYvJVzvw==", - "dependencies": { - "Microsoft.CodeCoverage": "17.8.0", - "Microsoft.TestPlatform.TestHost": "17.8.0" - } - }, - "Microsoft.NETCore.Platforms": { - "type": "Transitive", - "resolved": "3.1.0", - "contentHash": "z7aeg8oHln2CuNulfhiLYxCVMPEwBl3rzicjvIX+4sUuCwvXw5oXQEtbiU2c0z4qYL5L3Kmx0mMA/+t/SbY67w==" - }, - "Microsoft.NETCore.Targets": { - "type": "Transitive", - "resolved": "1.1.3", - "contentHash": "3Wrmi0kJDzClwAC+iBdUBpEKmEle8FQNsCs77fkiOIw/9oYA07bL1EZNX0kQ2OMN3xpwvl0vAtOCYY3ndDNlhQ==" - }, - "Microsoft.SourceLink.Common": { - "type": "Transitive", - "resolved": "1.1.1", - "contentHash": "WMcGpWKrmJmzrNeuaEb23bEMnbtR/vLmvZtkAP5qWu7vQsY59GqfRJd65sFpBszbd2k/bQ8cs8eWawQKAabkVg==" - }, - "Microsoft.SourceLink.GitHub": { - "type": "Transitive", - "resolved": "1.1.1", - "contentHash": "IaJGnOv/M7UQjRJks7B6p7pbPnOwisYGOIzqCz5ilGFTApZ3ktOR+6zJ12ZRPInulBmdAf1SrGdDG2MU8g6XTw==", - "dependencies": { - "Microsoft.Build.Tasks.Git": "1.1.1", - "Microsoft.SourceLink.Common": "1.1.1" - } - }, - "Microsoft.TestPlatform.ObjectModel": { - "type": "Transitive", - "resolved": "17.8.0", - "contentHash": "AYy6vlpGMfz5kOFq99L93RGbqftW/8eQTqjT9iGXW6s9MRP3UdtY8idJ8rJcjeSja8A18IhIro5YnH3uv1nz4g==", - "dependencies": { - "NuGet.Frameworks": "6.5.0", - "System.Reflection.Metadata": "1.6.0" - } - }, - "Microsoft.TestPlatform.TestHost": { - "type": "Transitive", - "resolved": "17.8.0", - "contentHash": "9ivcl/7SGRmOT0YYrHQGohWiT5YCpkmy/UEzldfVisLm6QxbLaK3FAJqZXI34rnRLmqqDCeMQxKINwmKwAPiDw==", - "dependencies": { - "Microsoft.TestPlatform.ObjectModel": "17.8.0", - "Newtonsoft.Json": "13.0.1" - } - }, - "Microsoft.Win32.Primitives": { - "type": "Transitive", - "resolved": "4.3.0", - "contentHash": "9ZQKCWxH7Ijp9BfahvL2Zyf1cJIk8XYLF6Yjzr2yi0b2cOut/HQ31qf1ThHAgCc3WiZMdnWcfJCgN82/0UunxA==", - "dependencies": { - "Microsoft.NETCore.Platforms": "1.1.0", - "Microsoft.NETCore.Targets": "1.1.0", - "System.Runtime": "4.3.0" - } - }, - "Microsoft.Win32.Registry": { - "type": "Transitive", - "resolved": "4.7.0", - "contentHash": "KSrRMb5vNi0CWSGG1++id2ZOs/1QhRqROt+qgbEAdQuGjGrFcl4AOl4/exGPUYz2wUnU42nvJqon1T3U0kPXLA==", - "dependencies": { - "System.Security.AccessControl": "4.7.0", - "System.Security.Principal.Windows": "4.7.0" - } - }, - "NETStandard.Library": { - "type": "Transitive", - "resolved": "2.0.0", - "contentHash": "7jnbRU+L08FXKMxqUflxEXtVymWvNOrS8yHgu9s6EM8Anr6T/wIX4nZ08j/u3Asz+tCufp3YVwFSEvFTPYmBPA==", - "dependencies": { - "Microsoft.NETCore.Platforms": "1.1.0" - } - }, - "Newtonsoft.Json": { - "type": "Transitive", - "resolved": "13.0.1", - "contentHash": "ppPFpBcvxdsfUonNcvITKqLl3bqxWbDCZIzDWHzjpdAHRFfZe0Dw9HmA0+za13IdyrgJwpkDTDA9fHaxOrt20A==" - }, - "NuGet.Frameworks": { - "type": "Transitive", - "resolved": "6.5.0", - "contentHash": "QWINE2x3MbTODsWT1Gh71GaGb5icBz4chS8VYvTgsBnsi8esgN6wtHhydd7fvToWECYGq7T4cgBBDiKD/363fg==" - }, - "NUnit": { - "type": "Transitive", - "resolved": "3.14.0", - "contentHash": "R7iPwD7kbOaP3o2zldWJbWeMQAvDKD0uld27QvA3PAALl1unl7x0v2J7eGiJOYjimV/BuGT4VJmr45RjS7z4LA==", - "dependencies": { - "NETStandard.Library": "2.0.0" - } - }, - "NUnit.Console": { - "type": "Transitive", - "resolved": "3.12.0", - "contentHash": "9KXFnViEIKQjz4vqiYFpLV9sntfHxixQomLCJzDMXC6WDo9DP2GhDQiBND6we6MRStMSNzoAWgourbLKwo7utQ==", - "dependencies": { - "NUnit.ConsoleRunner": "3.12.0", - "NUnit.Extension.NUnitProjectLoader": "3.6.0", - "NUnit.Extension.NUnitV2Driver": "3.8.0", - "NUnit.Extension.NUnitV2ResultWriter": "3.6.0", - "NUnit.Extension.TeamCityEventListener": "1.0.7", - "NUnit.Extension.VSProjectLoader": "3.8.0" - } - }, - "NUnit.ConsoleRunner": { - "type": "Transitive", - "resolved": "3.12.0", - "contentHash": "ZUtI8leU9ozCjLy4ZZ2X6ClU0hxfQtb95VOdmMA4SxIUvf62rIPxoHXS+jghvo5QxgRihGGcEp8xT3vCfgDdsA==" - }, - "NUnit.Extension.NUnitProjectLoader": { - "type": "Transitive", - "resolved": "3.6.0", - "contentHash": "ev2+dCJShMNIATkYNm/vHEuieBfbismr9DcUfBvafJZf5vNyugXPuMXO/MaOFcJaoW9j6/zjMmXKG7R5umWzXA==" - }, - "NUnit.Extension.NUnitV2Driver": { - "type": "Transitive", - "resolved": "3.8.0", - "contentHash": "l6MgFJPTnrlDaMXWfbUZ82h1uvtj0C1ExPpqm6HrYOBa5Z4MBwmFLqj85rnv9JMhu/Ju7jQB/FIaMbfoXInI2A==" - }, - "NUnit.Extension.NUnitV2ResultWriter": { - "type": "Transitive", - "resolved": "3.6.0", - "contentHash": "P/Nc+wgFRe3dT59/VjhiIT0SWfLMbb/Vc9AtBU3L71VOCs8zQnuNjCOEFLQL/Mq6XSaZeB2Sug9tUgTfCnQk9w==" - }, - "NUnit.Extension.TeamCityEventListener": { - "type": "Transitive", - "resolved": "1.0.7", - "contentHash": "bw+ZwHsUmxqb9leo91qLEF7ggtdpawY2V6wNqHI6+ATa2SHxHxoxiV5UV07ZWDRpf/qlQJELNlZu7wIB3+w2qQ==" - }, - "NUnit.Extension.VSProjectLoader": { - "type": "Transitive", - "resolved": "3.8.0", - "contentHash": "CIScV9a7+wUu6Ylb+WO0q/WGWQVoB05TUj3XZHa1CO+2BInDdfIVkqtlrSguhy6D/AGIMaLVrCZpQkQ2m0bbzQ==" - }, - "NUnit3TestAdapter": { - "type": "Transitive", - "resolved": "3.17.0", - "contentHash": "I9MNvK+GM2yXrHPitwZkAZKU9sYI2OO/8wKC+VuBD7V3z+ySQ1pSopX/urr0ooedI8/TIcajYPRO4vGRr7AM8A==", - "dependencies": { - "Microsoft.DotNet.InternalAbstractions": "1.0.0", - "System.ComponentModel.EventBasedAsync": "4.3.0", - "System.ComponentModel.TypeConverter": "4.3.0", - "System.Diagnostics.Process": "4.3.0", - "System.Reflection": "4.3.0", - "System.Runtime.InteropServices.RuntimeInformation": "4.3.0", - "System.Threading.Thread": "4.3.0", - "System.Xml.XPath.XmlDocument": "4.3.0", - "System.Xml.XmlDocument": "4.3.0" - } - }, - "runtime.debian.8-x64.runtime.native.System.Security.Cryptography.OpenSsl": { - "type": "Transitive", - "resolved": "4.3.2", - "contentHash": "7VSGO0URRKoMEAq0Sc9cRz8mb6zbyx/BZDEWhgPdzzpmFhkam3fJ1DAGWFXBI4nGlma+uPKpfuMQP5LXRnOH5g==" - }, - "runtime.fedora.23-x64.runtime.native.System.Security.Cryptography.OpenSsl": { - "type": "Transitive", - "resolved": "4.3.2", - "contentHash": "0oAaTAm6e2oVH+/Zttt0cuhGaePQYKII1dY8iaqP7CvOpVKgLybKRFvQjXR2LtxXOXTVPNv14j0ot8uV+HrUmw==" - }, - "runtime.fedora.24-x64.runtime.native.System.Security.Cryptography.OpenSsl": { - "type": "Transitive", - "resolved": "4.3.2", - "contentHash": "G24ibsCNi5Kbz0oXWynBoRgtGvsw5ZSVEWjv13/KiCAM8C6wz9zzcCniMeQFIkJ2tasjo2kXlvlBZhplL51kGg==" - }, - "runtime.native.System": { - "type": "Transitive", - "resolved": "4.3.0", - "contentHash": "c/qWt2LieNZIj1jGnVNsE2Kl23Ya2aSTBuXMD6V7k9KWr6l16Tqdwq+hJScEpWER9753NWC8h96PaVNY5Ld7Jw==", - "dependencies": { - "Microsoft.NETCore.Platforms": "1.1.0", - "Microsoft.NETCore.Targets": "1.1.0" - } - }, - "runtime.native.System.Net.Http": { - "type": "Transitive", - "resolved": "4.3.0", - "contentHash": "ZVuZJqnnegJhd2k/PtAbbIcZ3aZeITq3sj06oKfMBSfphW3HDmk/t4ObvbOk/JA/swGR0LNqMksAh/f7gpTROg==", - "dependencies": { - "Microsoft.NETCore.Platforms": "1.1.0", - "Microsoft.NETCore.Targets": "1.1.0" - } - }, - "runtime.native.System.Security.Cryptography.Apple": { - "type": "Transitive", - "resolved": "4.3.0", - "contentHash": "DloMk88juo0OuOWr56QG7MNchmafTLYWvABy36izkrLI5VledI0rq28KGs1i9wbpeT9NPQrx/wTf8U2vazqQ3Q==", - "dependencies": { - "runtime.osx.10.10-x64.runtime.native.System.Security.Cryptography.Apple": "4.3.0" - } - }, - "runtime.native.System.Security.Cryptography.OpenSsl": { - "type": "Transitive", - "resolved": "4.3.2", - "contentHash": "QR1OwtwehHxSeQvZKXe+iSd+d3XZNkEcuWMFYa2i0aG1l+lR739HPicKMlTbJst3spmeekDVBUS7SeS26s4U/g==", - "dependencies": { - "runtime.debian.8-x64.runtime.native.System.Security.Cryptography.OpenSsl": "4.3.2", - "runtime.fedora.23-x64.runtime.native.System.Security.Cryptography.OpenSsl": "4.3.2", - "runtime.fedora.24-x64.runtime.native.System.Security.Cryptography.OpenSsl": "4.3.2", - "runtime.opensuse.13.2-x64.runtime.native.System.Security.Cryptography.OpenSsl": "4.3.2", - "runtime.opensuse.42.1-x64.runtime.native.System.Security.Cryptography.OpenSsl": "4.3.2", - "runtime.osx.10.10-x64.runtime.native.System.Security.Cryptography.OpenSsl": "4.3.2", - "runtime.rhel.7-x64.runtime.native.System.Security.Cryptography.OpenSsl": "4.3.2", - "runtime.ubuntu.14.04-x64.runtime.native.System.Security.Cryptography.OpenSsl": "4.3.2", - "runtime.ubuntu.16.04-x64.runtime.native.System.Security.Cryptography.OpenSsl": "4.3.2", - "runtime.ubuntu.16.10-x64.runtime.native.System.Security.Cryptography.OpenSsl": "4.3.2" - } - }, - "runtime.opensuse.13.2-x64.runtime.native.System.Security.Cryptography.OpenSsl": { - "type": "Transitive", - "resolved": "4.3.2", - "contentHash": "I+GNKGg2xCHueRd1m9PzeEW7WLbNNLznmTuEi8/vZX71HudUbx1UTwlGkiwMri7JLl8hGaIAWnA/GONhu+LOyQ==" - }, - "runtime.opensuse.42.1-x64.runtime.native.System.Security.Cryptography.OpenSsl": { - "type": "Transitive", - "resolved": "4.3.2", - "contentHash": "1Z3TAq1ytS1IBRtPXJvEUZdVsfWfeNEhBkbiOCGEl9wwAfsjP2lz3ZFDx5tq8p60/EqbS0HItG5piHuB71RjoA==" - }, - "runtime.osx.10.10-x64.runtime.native.System.Security.Cryptography.Apple": { - "type": "Transitive", - "resolved": "4.3.0", - "contentHash": "kVXCuMTrTlxq4XOOMAysuNwsXWpYeboGddNGpIgNSZmv1b6r/s/DPk0fYMB7Q5Qo4bY68o48jt4T4y5BVecbCQ==" - }, - "runtime.osx.10.10-x64.runtime.native.System.Security.Cryptography.OpenSsl": { - "type": "Transitive", - "resolved": "4.3.2", - "contentHash": "6mU/cVmmHtQiDXhnzUImxIcDL48GbTk+TsptXyJA+MIOG9LRjPoAQC/qBFB7X+UNyK86bmvGwC8t+M66wsYC8w==" - }, - "runtime.rhel.7-x64.runtime.native.System.Security.Cryptography.OpenSsl": { - "type": "Transitive", - "resolved": "4.3.2", - "contentHash": "vjwG0GGcTW/PPg6KVud8F9GLWYuAV1rrw1BKAqY0oh4jcUqg15oYF1+qkGR2x2ZHM4DQnWKQ7cJgYbfncz/lYg==" - }, - "runtime.ubuntu.14.04-x64.runtime.native.System.Security.Cryptography.OpenSsl": { - "type": "Transitive", - "resolved": "4.3.2", - "contentHash": "7KMFpTkHC/zoExs+PwP8jDCWcrK9H6L7soowT80CUx3e+nxP/AFnq0AQAW5W76z2WYbLAYCRyPfwYFG6zkvQRw==" - }, - "runtime.ubuntu.16.04-x64.runtime.native.System.Security.Cryptography.OpenSsl": { - "type": "Transitive", - "resolved": "4.3.2", - "contentHash": "xrlmRCnKZJLHxyyLIqkZjNXqgxnKdZxfItrPkjI+6pkRo5lHX8YvSZlWrSI5AVwLMi4HbNWP7064hcAWeZKp5w==" - }, - "runtime.ubuntu.16.10-x64.runtime.native.System.Security.Cryptography.OpenSsl": { - "type": "Transitive", - "resolved": "4.3.2", - "contentHash": "leXiwfiIkW7Gmn7cgnNcdtNAU70SjmKW3jxGj1iKHOvdn0zRWsgv/l2OJUO5zdGdiv2VRFnAsxxhDgMzofPdWg==" - }, - "SpecFlow": { - "type": "Transitive", - "resolved": "3.9.74", - "contentHash": "n6kcg9ZeQWxqJFoT23SsFT89U1QQNwvcN9pAX5alB6ZPr6K0p5D5nGIJ1PZsSaFaRFutiwQ+DicmxBCPAZVYIA==", - "dependencies": { - "BoDi": "1.5.0", - "Gherkin": "19.0.3", - "Microsoft.Extensions.DependencyModel": "1.0.3", - "SpecFlow.Internal.Json": "1.0.8", - "System.Configuration.ConfigurationManager": "4.5.0", - "System.Net.Http": "4.3.4", - "System.Runtime.Loader": "4.3.0" - } - }, - "SpecFlow.Internal.Json": { - "type": "Transitive", - "resolved": "1.0.8", - "contentHash": "lVCC/Rie7N5rFoc7YxPS0nneLfsWSTIMMlkndwxhaD8MxBp3Bsv1HeiVjVwXCjWaQeoqZcvIy52fF5Xit00ZLw==" - }, - "SpecFlow.NUnit": { - "type": "Transitive", - "resolved": "3.9.74", - "contentHash": "nMPLztTT5IZDMnvNCUxklqaM+agn4kjuNy/qAcYQQOxau2G1MF73UxhL9OXjJQaEuPuyT8gJvXudOYCFZWztxA==", - "dependencies": { - "NUnit": "3.13.1", - "SpecFlow": "[3.9.74]", - "SpecFlow.Tools.MsBuild.Generation": "[3.9.74]" - } - }, - "SpecFlow.NUnit.Runners": { - "type": "Transitive", - "resolved": "3.9.74", - "contentHash": "m595x3GM7CYco+KsXo96irQ2jcjC6+1+41bKdmnTdl3RAvnC4jUZ9f5B5FhGuaVK4+j4GwWi8MZtGMrT//zHLA==", - "dependencies": { - "NUnit.Console": "3.12.0", - "NUnit3TestAdapter": "3.17.0", - "SpecFlow.NUnit": "[3.9.74]" - } - }, - "SpecFlow.Tools.MsBuild.Generation": { - "type": "Transitive", - "resolved": "3.9.74", - "contentHash": "I/9OvmKOohJqIUNJ0xGYJCWfL6WKDaes8OoOAD/2yhGX+tzC5ofs9yqkP9Cu/xfnIx+11IR3pZs7YhBhGAcgWQ==", - "dependencies": { - "SpecFlow": "[3.9.74]" - } - }, - "StyleCop.Analyzers.Unstable": { - "type": "Transitive", - "resolved": "1.2.0.556", - "contentHash": "zvn9Mqs/ox/83cpYPignI8hJEM2A93s2HkHs8HYMOAQW0PkampyoErAiIyKxgTLqbbad29HX/shv/6LGSjPJNQ==" - }, - "System.AppContext": { - "type": "Transitive", - "resolved": "4.1.0", - "contentHash": "3QjO4jNV7PdKkmQAVp9atA+usVnKRwI3Kx1nMwJ93T0LcQfx7pKAYk0nKz5wn1oP5iqlhZuy6RXOFdhr7rDwow==", - "dependencies": { - "System.Runtime": "4.1.0" - } - }, - "System.CodeDom": { - "type": "Transitive", - "resolved": "4.7.0", - "contentHash": "Hs9pw/kmvH3lXaZ1LFKj3pLQsiGfj2xo3sxSzwiLlRL6UcMZUTeCfoJ9Udalvn3yq5dLlPEZzYegrTQ1/LhPOQ==" - }, - "System.Collections": { - "type": "Transitive", - "resolved": "4.3.0", - "contentHash": "3Dcj85/TBdVpL5Zr+gEEBUuFe2icOnLalmEh9hfck1PTYbbyWuZgh4fmm2ysCLTrqLQw6t3TgTyJ+VLp+Qb+Lw==", - "dependencies": { - "Microsoft.NETCore.Platforms": "1.1.0", - "Microsoft.NETCore.Targets": "1.1.0", - "System.Runtime": "4.3.0" - } - }, - "System.Collections.Concurrent": { - "type": "Transitive", - "resolved": "4.3.0", - "contentHash": "ztl69Xp0Y/UXCL+3v3tEU+lIy+bvjKNUmopn1wep/a291pVPK7dxBd6T7WnlQqRog+d1a/hSsgRsmFnIBKTPLQ==", - "dependencies": { - "System.Collections": "4.3.0", - "System.Diagnostics.Debug": "4.3.0", - "System.Diagnostics.Tracing": "4.3.0", - "System.Globalization": "4.3.0", - "System.Reflection": "4.3.0", - "System.Resources.ResourceManager": "4.3.0", - "System.Runtime": "4.3.0", - "System.Runtime.Extensions": "4.3.0", - "System.Threading": "4.3.0", - "System.Threading.Tasks": "4.3.0" - } - }, - "System.Collections.NonGeneric": { - "type": "Transitive", - "resolved": "4.3.0", - "contentHash": "prtjIEMhGUnQq6RnPEYLpFt8AtLbp9yq2zxOSrY7KJJZrw25Fi97IzBqY7iqssbM61Ek5b8f3MG/sG1N2sN5KA==", - "dependencies": { - "System.Diagnostics.Debug": "4.3.0", - "System.Globalization": "4.3.0", - "System.Resources.ResourceManager": "4.3.0", - "System.Runtime": "4.3.0", - "System.Runtime.Extensions": "4.3.0", - "System.Threading": "4.3.0" - } - }, - "System.Collections.Specialized": { - "type": "Transitive", - "resolved": "4.3.0", - "contentHash": "Epx8PoVZR0iuOnJJDzp7pWvdfMMOAvpUo95pC4ScH2mJuXkKA2Y4aR3cG9qt2klHgSons1WFh4kcGW7cSXvrxg==", - "dependencies": { - "System.Collections.NonGeneric": "4.3.0", - "System.Globalization": "4.3.0", - "System.Globalization.Extensions": "4.3.0", - "System.Resources.ResourceManager": "4.3.0", - "System.Runtime": "4.3.0", - "System.Runtime.Extensions": "4.3.0", - "System.Threading": "4.3.0" - } - }, - "System.ComponentModel": { - "type": "Transitive", - "resolved": "4.3.0", - "contentHash": "VyGn1jGRZVfxnh8EdvDCi71v3bMXrsu8aYJOwoV7SNDLVhiEqwP86pPMyRGsDsxhXAm2b3o9OIqeETfN5qfezw==", - "dependencies": { - "System.Runtime": "4.3.0" - } - }, - "System.ComponentModel.EventBasedAsync": { - "type": "Transitive", - "resolved": "4.3.0", - "contentHash": "fCFl8f0XdwA/BuoNrVBB5D0Y48/hv2J+w4xSDdXQitXZsR6UCSOrDVE7TCUraY802ENwcHUnUCv4En8CupDU1g==", - "dependencies": { - "System.Resources.ResourceManager": "4.3.0", - "System.Runtime": "4.3.0", - "System.Threading": "4.3.0", - "System.Threading.Tasks": "4.3.0" - } - }, - "System.ComponentModel.Primitives": { - "type": "Transitive", - "resolved": "4.3.0", - "contentHash": "j8GUkCpM8V4d4vhLIIoBLGey2Z5bCkMVNjEZseyAlm4n5arcsJOeI3zkUP+zvZgzsbLTYh4lYeP/ZD/gdIAPrw==", - "dependencies": { - "System.ComponentModel": "4.3.0", - "System.Resources.ResourceManager": "4.3.0", - "System.Runtime": "4.3.0" - } - }, - "System.ComponentModel.TypeConverter": { - "type": "Transitive", - "resolved": "4.3.0", - "contentHash": "16pQ6P+EdhcXzPiEK4kbA953Fu0MNG2ovxTZU81/qsCd1zPRsKc3uif5NgvllCY598k6bI0KUyKW8fanlfaDQg==", - "dependencies": { - "System.Collections": "4.3.0", - "System.Collections.NonGeneric": "4.3.0", - "System.Collections.Specialized": "4.3.0", - "System.ComponentModel": "4.3.0", - "System.ComponentModel.Primitives": "4.3.0", - "System.Globalization": "4.3.0", - "System.Linq": "4.3.0", - "System.Reflection": "4.3.0", - "System.Reflection.Extensions": "4.3.0", - "System.Reflection.Primitives": "4.3.0", - "System.Reflection.TypeExtensions": "4.3.0", - "System.Resources.ResourceManager": "4.3.0", - "System.Runtime": "4.3.0", - "System.Runtime.Extensions": "4.3.0", - "System.Threading": "4.3.0" - } - }, - "System.Configuration.ConfigurationManager": { - "type": "Transitive", - "resolved": "4.5.0", - "contentHash": "UIFvaFfuKhLr9u5tWMxmVoDPkFeD+Qv8gUuap4aZgVGYSYMdERck4OhLN/2gulAc0nYTEigWXSJNNWshrmxnng==", - "dependencies": { - "System.Security.Cryptography.ProtectedData": "4.5.0", - "System.Security.Permissions": "4.5.0" - } - }, - "System.Diagnostics.Debug": { - "type": "Transitive", - "resolved": "4.3.0", - "contentHash": "ZUhUOdqmaG5Jk3Xdb8xi5kIyQYAA4PnTNlHx1mu9ZY3qv4ELIdKbnL/akbGaKi2RnNUWaZsAs31rvzFdewTj2g==", - "dependencies": { - "Microsoft.NETCore.Platforms": "1.1.0", - "Microsoft.NETCore.Targets": "1.1.0", - "System.Runtime": "4.3.0" - } - }, - "System.Diagnostics.DiagnosticSource": { - "type": "Transitive", - "resolved": "6.0.0", - "contentHash": "frQDfv0rl209cKm1lnwTgFPzNigy2EKk1BS3uAvHvlBVKe5cymGyHO+Sj+NLv5VF/AhHsqPIUUwya5oV4CHMUw==", - "dependencies": { - "System.Runtime.CompilerServices.Unsafe": "6.0.0" - } - }, - "System.Diagnostics.Process": { - "type": "Transitive", - "resolved": "4.3.0", - "contentHash": "J0wOX07+QASQblsfxmIMFc9Iq7KTXYL3zs2G/Xc704Ylv3NpuVdo6gij6V3PGiptTxqsK0K7CdXenRvKUnkA2g==", - "dependencies": { - "Microsoft.NETCore.Platforms": "1.1.0", - "Microsoft.Win32.Primitives": "4.3.0", - "Microsoft.Win32.Registry": "4.3.0", - "System.Collections": "4.3.0", - "System.Diagnostics.Debug": "4.3.0", - "System.Globalization": "4.3.0", - "System.IO": "4.3.0", - "System.IO.FileSystem": "4.3.0", - "System.IO.FileSystem.Primitives": "4.3.0", - "System.Resources.ResourceManager": "4.3.0", - "System.Runtime": "4.3.0", - "System.Runtime.Extensions": "4.3.0", - "System.Runtime.Handles": "4.3.0", - "System.Runtime.InteropServices": "4.3.0", - "System.Text.Encoding": "4.3.0", - "System.Text.Encoding.Extensions": "4.3.0", - "System.Threading": "4.3.0", - "System.Threading.Tasks": "4.3.0", - "System.Threading.Thread": "4.3.0", - "System.Threading.ThreadPool": "4.3.0", - "runtime.native.System": "4.3.0" - } - }, - "System.Diagnostics.Tracing": { - "type": "Transitive", - "resolved": "4.3.0", - "contentHash": "rswfv0f/Cqkh78rA5S8eN8Neocz234+emGCtTF3lxPY96F+mmmUen6tbn0glN6PMvlKQb9bPAY5e9u7fgPTkKw==", - "dependencies": { - "Microsoft.NETCore.Platforms": "1.1.0", - "Microsoft.NETCore.Targets": "1.1.0", - "System.Runtime": "4.3.0" - } - }, - "System.Dynamic.Runtime": { - "type": "Transitive", - "resolved": "4.0.11", - "contentHash": "db34f6LHYM0U0JpE+sOmjar27BnqTVkbLJhgfwMpTdgTigG/Hna3m2MYVwnFzGGKnEJk2UXFuoVTr8WUbU91/A==", - "dependencies": { - "System.Collections": "4.0.11", - "System.Diagnostics.Debug": "4.0.11", - "System.Globalization": "4.0.11", - "System.Linq": "4.1.0", - "System.Linq.Expressions": "4.1.0", - "System.ObjectModel": "4.0.12", - "System.Reflection": "4.1.0", - "System.Reflection.Emit": "4.0.1", - "System.Reflection.Emit.ILGeneration": "4.0.1", - "System.Reflection.Primitives": "4.0.1", - "System.Reflection.TypeExtensions": "4.1.0", - "System.Resources.ResourceManager": "4.0.1", - "System.Runtime": "4.1.0", - "System.Runtime.Extensions": "4.1.0", - "System.Threading": "4.0.11" - } - }, - "System.Globalization": { - "type": "Transitive", - "resolved": "4.3.0", - "contentHash": "kYdVd2f2PAdFGblzFswE4hkNANJBKRmsfa2X5LG2AcWE1c7/4t0pYae1L8vfZ5xvE2nK/R9JprtToA61OSHWIg==", - "dependencies": { - "Microsoft.NETCore.Platforms": "1.1.0", - "Microsoft.NETCore.Targets": "1.1.0", - "System.Runtime": "4.3.0" - } - }, - "System.Globalization.Calendars": { - "type": "Transitive", - "resolved": "4.3.0", - "contentHash": "GUlBtdOWT4LTV3I+9/PJW+56AnnChTaOqqTLFtdmype/L500M2LIyXgmtd9X2P2VOkmJd5c67H5SaC2QcL1bFA==", - "dependencies": { - "Microsoft.NETCore.Platforms": "1.1.0", - "Microsoft.NETCore.Targets": "1.1.0", - "System.Globalization": "4.3.0", - "System.Runtime": "4.3.0" - } - }, - "System.Globalization.Extensions": { - "type": "Transitive", - "resolved": "4.3.0", - "contentHash": "FhKmdR6MPG+pxow6wGtNAWdZh7noIOpdD5TwQ3CprzgIE1bBBoim0vbR1+AWsWjQmU7zXHgQo4TWSP6lCeiWcQ==", - "dependencies": { - "Microsoft.NETCore.Platforms": "1.1.0", - "System.Globalization": "4.3.0", - "System.Resources.ResourceManager": "4.3.0", - "System.Runtime": "4.3.0", - "System.Runtime.Extensions": "4.3.0", - "System.Runtime.InteropServices": "4.3.0" - } - }, - "System.IO": { - "type": "Transitive", - "resolved": "4.3.0", - "contentHash": "3qjaHvxQPDpSOYICjUoTsmoq5u6QJAFRUITgeT/4gqkF1bajbSmb1kwSxEA8AHlofqgcKJcM8udgieRNhaJ5Cg==", - "dependencies": { - "Microsoft.NETCore.Platforms": "1.1.0", - "Microsoft.NETCore.Targets": "1.1.0", - "System.Runtime": "4.3.0", - "System.Text.Encoding": "4.3.0", - "System.Threading.Tasks": "4.3.0" - } - }, - "System.IO.FileSystem": { - "type": "Transitive", - "resolved": "4.3.0", - "contentHash": "3wEMARTnuio+ulnvi+hkRNROYwa1kylvYahhcLk4HSoVdl+xxTFVeVlYOfLwrDPImGls0mDqbMhrza8qnWPTdA==", - "dependencies": { - "Microsoft.NETCore.Platforms": "1.1.0", - "Microsoft.NETCore.Targets": "1.1.0", - "System.IO": "4.3.0", - "System.IO.FileSystem.Primitives": "4.3.0", - "System.Runtime": "4.3.0", - "System.Runtime.Handles": "4.3.0", - "System.Text.Encoding": "4.3.0", - "System.Threading.Tasks": "4.3.0" - } - }, - "System.IO.FileSystem.Primitives": { - "type": "Transitive", - "resolved": "4.3.0", - "contentHash": "6QOb2XFLch7bEc4lIcJH49nJN2HV+OC3fHDgsLVsBVBk3Y4hFAnOBGzJ2lUu7CyDDFo9IBWkSsnbkT6IBwwiMw==", - "dependencies": { - "System.Runtime": "4.3.0" - } - }, - "System.Linq": { - "type": "Transitive", - "resolved": "4.3.0", - "contentHash": "5DbqIUpsDp0dFftytzuMmc0oeMdQwjcP/EWxsksIz/w1TcFRkZ3yKKz0PqiYFMmEwPSWw+qNVqD7PJ889JzHbw==", - "dependencies": { - "System.Collections": "4.3.0", - "System.Diagnostics.Debug": "4.3.0", - "System.Resources.ResourceManager": "4.3.0", - "System.Runtime": "4.3.0", - "System.Runtime.Extensions": "4.3.0" - } - }, - "System.Linq.Expressions": { - "type": "Transitive", - "resolved": "4.1.0", - "contentHash": "I+y02iqkgmCAyfbqOmSDOgqdZQ5tTj80Akm5BPSS8EeB0VGWdy6X1KCoYe8Pk6pwDoAKZUOdLVxnTJcExiv5zw==", - "dependencies": { - "System.Collections": "4.0.11", - "System.Diagnostics.Debug": "4.0.11", - "System.Globalization": "4.0.11", - "System.IO": "4.1.0", - "System.Linq": "4.1.0", - "System.ObjectModel": "4.0.12", - "System.Reflection": "4.1.0", - "System.Reflection.Emit": "4.0.1", - "System.Reflection.Emit.ILGeneration": "4.0.1", - "System.Reflection.Emit.Lightweight": "4.0.1", - "System.Reflection.Extensions": "4.0.1", - "System.Reflection.Primitives": "4.0.1", - "System.Reflection.TypeExtensions": "4.1.0", - "System.Resources.ResourceManager": "4.0.1", - "System.Runtime": "4.1.0", - "System.Runtime.Extensions": "4.1.0", - "System.Threading": "4.0.11" - } - }, - "System.Management": { - "type": "Transitive", - "resolved": "4.7.0", - "contentHash": "IY+uuGhgzWiCg21i8IvQeY/Z7m1tX8VuPF+ludfn7iTCaccTtJo5HkjZbBEL8kbBubKhAKKtNXr7uMtmAc28Pw==", - "dependencies": { - "Microsoft.NETCore.Platforms": "3.1.0", - "Microsoft.Win32.Registry": "4.7.0", - "System.CodeDom": "4.7.0" - } - }, - "System.Net.Http": { - "type": "Transitive", - "resolved": "4.3.4", - "contentHash": "aOa2d51SEbmM+H+Csw7yJOuNZoHkrP2XnAurye5HWYgGVVU54YZDvsLUYRv6h18X3sPnjNCANmN7ZhIPiqMcjA==", - "dependencies": { - "Microsoft.NETCore.Platforms": "1.1.1", - "System.Collections": "4.3.0", - "System.Diagnostics.Debug": "4.3.0", - "System.Diagnostics.DiagnosticSource": "4.3.0", - "System.Diagnostics.Tracing": "4.3.0", - "System.Globalization": "4.3.0", - "System.Globalization.Extensions": "4.3.0", - "System.IO": "4.3.0", - "System.IO.FileSystem": "4.3.0", - "System.Net.Primitives": "4.3.0", - "System.Resources.ResourceManager": "4.3.0", - "System.Runtime": "4.3.0", - "System.Runtime.Extensions": "4.3.0", - "System.Runtime.Handles": "4.3.0", - "System.Runtime.InteropServices": "4.3.0", - "System.Security.Cryptography.Algorithms": "4.3.0", - "System.Security.Cryptography.Encoding": "4.3.0", - "System.Security.Cryptography.OpenSsl": "4.3.0", - "System.Security.Cryptography.Primitives": "4.3.0", - "System.Security.Cryptography.X509Certificates": "4.3.0", - "System.Text.Encoding": "4.3.0", - "System.Threading": "4.3.0", - "System.Threading.Tasks": "4.3.0", - "runtime.native.System": "4.3.0", - "runtime.native.System.Net.Http": "4.3.0", - "runtime.native.System.Security.Cryptography.OpenSsl": "4.3.2" - } - }, - "System.Net.Primitives": { - "type": "Transitive", - "resolved": "4.3.0", - "contentHash": "qOu+hDwFwoZPbzPvwut2qATe3ygjeQBDQj91xlsaqGFQUI5i4ZnZb8yyQuLGpDGivEPIt8EJkd1BVzVoP31FXA==", - "dependencies": { - "Microsoft.NETCore.Platforms": "1.1.0", - "Microsoft.NETCore.Targets": "1.1.0", - "System.Runtime": "4.3.0", - "System.Runtime.Handles": "4.3.0" - } - }, - "System.ObjectModel": { - "type": "Transitive", - "resolved": "4.0.12", - "contentHash": "tAgJM1xt3ytyMoW4qn4wIqgJYm7L7TShRZG4+Q4Qsi2PCcj96pXN7nRywS9KkB3p/xDUjc2HSwP9SROyPYDYKQ==", - "dependencies": { - "System.Collections": "4.0.11", - "System.Diagnostics.Debug": "4.0.11", - "System.Resources.ResourceManager": "4.0.1", - "System.Runtime": "4.1.0", - "System.Threading": "4.0.11" - } - }, - "System.Reflection": { - "type": "Transitive", - "resolved": "4.3.0", - "contentHash": "KMiAFoW7MfJGa9nDFNcfu+FpEdiHpWgTcS2HdMpDvt9saK3y/G4GwprPyzqjFH9NTaGPQeWNHU+iDlDILj96aQ==", - "dependencies": { - "Microsoft.NETCore.Platforms": "1.1.0", - "Microsoft.NETCore.Targets": "1.1.0", - "System.IO": "4.3.0", - "System.Reflection.Primitives": "4.3.0", - "System.Runtime": "4.3.0" - } - }, - "System.Reflection.Emit": { - "type": "Transitive", - "resolved": "4.0.1", - "contentHash": "P2wqAj72fFjpP6wb9nSfDqNBMab+2ovzSDzUZK7MVIm54tBJEPr9jWfSjjoTpPwj1LeKcmX3vr0ttyjSSFM47g==", - "dependencies": { - "System.IO": "4.1.0", - "System.Reflection": "4.1.0", - "System.Reflection.Emit.ILGeneration": "4.0.1", - "System.Reflection.Primitives": "4.0.1", - "System.Runtime": "4.1.0" - } - }, - "System.Reflection.Emit.ILGeneration": { - "type": "Transitive", - "resolved": "4.0.1", - "contentHash": "Ov6dU8Bu15Bc7zuqttgHF12J5lwSWyTf1S+FJouUXVMSqImLZzYaQ+vRr1rQ0OZ0HqsrwWl4dsKHELckQkVpgA==", - "dependencies": { - "System.Reflection": "4.1.0", - "System.Reflection.Primitives": "4.0.1", - "System.Runtime": "4.1.0" - } - }, - "System.Reflection.Emit.Lightweight": { - "type": "Transitive", - "resolved": "4.0.1", - "contentHash": "sSzHHXueZ5Uh0OLpUQprhr+ZYJrLPA2Cmr4gn0wj9+FftNKXx8RIMKvO9qnjk2ebPYUjZ+F2ulGdPOsvj+MEjA==", - "dependencies": { - "System.Reflection": "4.1.0", - "System.Reflection.Emit.ILGeneration": "4.0.1", - "System.Reflection.Primitives": "4.0.1", - "System.Runtime": "4.1.0" - } - }, - "System.Reflection.Extensions": { - "type": "Transitive", - "resolved": "4.3.0", - "contentHash": "rJkrJD3kBI5B712aRu4DpSIiHRtr6QlfZSQsb0hYHrDCZORXCFjQfoipo2LaMUHoT9i1B7j7MnfaEKWDFmFQNQ==", - "dependencies": { - "Microsoft.NETCore.Platforms": "1.1.0", - "Microsoft.NETCore.Targets": "1.1.0", - "System.Reflection": "4.3.0", - "System.Runtime": "4.3.0" - } - }, - "System.Reflection.Metadata": { - "type": "Transitive", - "resolved": "1.6.0", - "contentHash": "COC1aiAJjCoA5GBF+QKL2uLqEBew4JsCkQmoHKbN3TlOZKa2fKLz5CpiRQKDz0RsAOEGsVKqOD5bomsXq/4STQ==" - }, - "System.Reflection.Primitives": { - "type": "Transitive", - "resolved": "4.3.0", - "contentHash": "5RXItQz5As4xN2/YUDxdpsEkMhvw3e6aNveFXUn4Hl/udNTCNhnKp8lT9fnc3MhvGKh1baak5CovpuQUXHAlIA==", - "dependencies": { - "Microsoft.NETCore.Platforms": "1.1.0", - "Microsoft.NETCore.Targets": "1.1.0", - "System.Runtime": "4.3.0" - } - }, - "System.Reflection.TypeExtensions": { - "type": "Transitive", - "resolved": "4.3.0", - "contentHash": "7u6ulLcZbyxB5Gq0nMkQttcdBTx57ibzw+4IOXEfR+sXYQoHvjW5LTLyNr8O22UIMrqYbchJQJnos4eooYzYJA==", - "dependencies": { - "System.Reflection": "4.3.0", - "System.Runtime": "4.3.0" - } - }, - "System.Resources.ResourceManager": { - "type": "Transitive", - "resolved": "4.3.0", - "contentHash": "/zrcPkkWdZmI4F92gL/TPumP98AVDu/Wxr3CSJGQQ+XN6wbRZcyfSKVoPo17ilb3iOr0cCRqJInGwNMolqhS8A==", - "dependencies": { - "Microsoft.NETCore.Platforms": "1.1.0", - "Microsoft.NETCore.Targets": "1.1.0", - "System.Globalization": "4.3.0", - "System.Reflection": "4.3.0", - "System.Runtime": "4.3.0" - } - }, - "System.Runtime": { - "type": "Transitive", - "resolved": "4.3.1", - "contentHash": "abhfv1dTK6NXOmu4bgHIONxHyEqFjW8HwXPmpY9gmll+ix9UNo4XDcmzJn6oLooftxNssVHdJC1pGT9jkSynQg==", - "dependencies": { - "Microsoft.NETCore.Platforms": "1.1.1", - "Microsoft.NETCore.Targets": "1.1.3" - } - }, - "System.Runtime.CompilerServices.Unsafe": { - "type": "Transitive", - "resolved": "6.0.0", - "contentHash": "/iUeP3tq1S0XdNNoMz5C9twLSrM/TH+qElHkXWaPvuNOt+99G75NrV0OS2EqHx5wMN7popYjpc8oTjC1y16DLg==" - }, - "System.Runtime.Extensions": { - "type": "Transitive", - "resolved": "4.3.0", - "contentHash": "guW0uK0fn5fcJJ1tJVXYd7/1h5F+pea1r7FLSOz/f8vPEqbR2ZAknuRDvTQ8PzAilDveOxNjSfr0CHfIQfFk8g==", - "dependencies": { - "Microsoft.NETCore.Platforms": "1.1.0", - "Microsoft.NETCore.Targets": "1.1.0", - "System.Runtime": "4.3.0" - } - }, - "System.Runtime.Handles": { - "type": "Transitive", - "resolved": "4.3.0", - "contentHash": "OKiSUN7DmTWeYb3l51A7EYaeNMnvxwE249YtZz7yooT4gOZhmTjIn48KgSsw2k2lYdLgTKNJw/ZIfSElwDRVgg==", - "dependencies": { - "Microsoft.NETCore.Platforms": "1.1.0", - "Microsoft.NETCore.Targets": "1.1.0", - "System.Runtime": "4.3.0" - } - }, - "System.Runtime.InteropServices": { - "type": "Transitive", - "resolved": "4.3.0", - "contentHash": "uv1ynXqiMK8mp1GM3jDqPCFN66eJ5w5XNomaK2XD+TuCroNTLFGeZ+WCmBMcBDyTFKou3P6cR6J/QsaqDp7fGQ==", - "dependencies": { - "Microsoft.NETCore.Platforms": "1.1.0", - "Microsoft.NETCore.Targets": "1.1.0", - "System.Reflection": "4.3.0", - "System.Reflection.Primitives": "4.3.0", - "System.Runtime": "4.3.0", - "System.Runtime.Handles": "4.3.0" - } - }, - "System.Runtime.InteropServices.RuntimeInformation": { - "type": "Transitive", - "resolved": "4.3.0", - "contentHash": "cbz4YJMqRDR7oLeMRbdYv7mYzc++17lNhScCX0goO2XpGWdvAt60CGN+FHdePUEHCe/Jy9jUlvNAiNdM+7jsOw==", - "dependencies": { - "System.Reflection": "4.3.0", - "System.Reflection.Extensions": "4.3.0", - "System.Resources.ResourceManager": "4.3.0", - "System.Runtime": "4.3.0", - "System.Runtime.InteropServices": "4.3.0", - "System.Threading": "4.3.0", - "runtime.native.System": "4.3.0" - } - }, - "System.Runtime.Loader": { - "type": "Transitive", - "resolved": "4.3.0", - "contentHash": "DHMaRn8D8YCK2GG2pw+UzNxn/OHVfaWx7OTLBD/hPegHZZgcZh3H6seWegrC4BYwsfuGrywIuT+MQs+rPqRLTQ==", - "dependencies": { - "System.IO": "4.3.0", - "System.Reflection": "4.3.0", - "System.Runtime": "4.3.0" - } - }, - "System.Runtime.Numerics": { - "type": "Transitive", - "resolved": "4.3.0", - "contentHash": "yMH+MfdzHjy17l2KESnPiF2dwq7T+xLnSJar7slyimAkUh/gTrS9/UQOtv7xarskJ2/XDSNvfLGOBQPjL7PaHQ==", - "dependencies": { - "System.Globalization": "4.3.0", - "System.Resources.ResourceManager": "4.3.0", - "System.Runtime": "4.3.0", - "System.Runtime.Extensions": "4.3.0" - } - }, - "System.Security.AccessControl": { - "type": "Transitive", - "resolved": "4.7.0", - "contentHash": "JECvTt5aFF3WT3gHpfofL2MNNP6v84sxtXxpqhLBCcDRzqsPBmHhQ6shv4DwwN2tRlzsUxtb3G9M3763rbXKDg==", - "dependencies": { - "Microsoft.NETCore.Platforms": "3.1.0", - "System.Security.Principal.Windows": "4.7.0" - } - }, - "System.Security.Cryptography.Algorithms": { - "type": "Transitive", - "resolved": "4.3.0", - "contentHash": "W1kd2Y8mYSCgc3ULTAZ0hOP2dSdG5YauTb1089T0/kRcN2MpSAW1izOFROrJgxSlMn3ArsgHXagigyi+ibhevg==", - "dependencies": { - "Microsoft.NETCore.Platforms": "1.1.0", - "System.Collections": "4.3.0", - "System.IO": "4.3.0", - "System.Resources.ResourceManager": "4.3.0", - "System.Runtime": "4.3.0", - "System.Runtime.Extensions": "4.3.0", - "System.Runtime.Handles": "4.3.0", - "System.Runtime.InteropServices": "4.3.0", - "System.Runtime.Numerics": "4.3.0", - "System.Security.Cryptography.Encoding": "4.3.0", - "System.Security.Cryptography.Primitives": "4.3.0", - "System.Text.Encoding": "4.3.0", - "runtime.native.System.Security.Cryptography.Apple": "4.3.0", - "runtime.native.System.Security.Cryptography.OpenSsl": "4.3.0" - } - }, - "System.Security.Cryptography.Cng": { - "type": "Transitive", - "resolved": "4.3.0", - "contentHash": "03idZOqFlsKRL4W+LuCpJ6dBYDUWReug6lZjBa3uJWnk5sPCUXckocevTaUA8iT/MFSrY/2HXkOt753xQ/cf8g==", - "dependencies": { - "Microsoft.NETCore.Platforms": "1.1.0", - "System.IO": "4.3.0", - "System.Resources.ResourceManager": "4.3.0", - "System.Runtime": "4.3.0", - "System.Runtime.Extensions": "4.3.0", - "System.Runtime.Handles": "4.3.0", - "System.Runtime.InteropServices": "4.3.0", - "System.Security.Cryptography.Algorithms": "4.3.0", - "System.Security.Cryptography.Encoding": "4.3.0", - "System.Security.Cryptography.Primitives": "4.3.0", - "System.Text.Encoding": "4.3.0" - } - }, - "System.Security.Cryptography.Csp": { - "type": "Transitive", - "resolved": "4.3.0", - "contentHash": "X4s/FCkEUnRGnwR3aSfVIkldBmtURMhmexALNTwpjklzxWU7yjMk7GHLKOZTNkgnWnE0q7+BCf9N2LVRWxewaA==", - "dependencies": { - "Microsoft.NETCore.Platforms": "1.1.0", - "System.IO": "4.3.0", - "System.Reflection": "4.3.0", - "System.Resources.ResourceManager": "4.3.0", - "System.Runtime": "4.3.0", - "System.Runtime.Extensions": "4.3.0", - "System.Runtime.Handles": "4.3.0", - "System.Runtime.InteropServices": "4.3.0", - "System.Security.Cryptography.Algorithms": "4.3.0", - "System.Security.Cryptography.Encoding": "4.3.0", - "System.Security.Cryptography.Primitives": "4.3.0", - "System.Text.Encoding": "4.3.0", - "System.Threading": "4.3.0" - } - }, - "System.Security.Cryptography.Encoding": { - "type": "Transitive", - "resolved": "4.3.0", - "contentHash": "1DEWjZZly9ae9C79vFwqaO5kaOlI5q+3/55ohmq/7dpDyDfc8lYe7YVxJUZ5MF/NtbkRjwFRo14yM4OEo9EmDw==", - "dependencies": { - "Microsoft.NETCore.Platforms": "1.1.0", - "System.Collections": "4.3.0", - "System.Collections.Concurrent": "4.3.0", - "System.Linq": "4.3.0", - "System.Resources.ResourceManager": "4.3.0", - "System.Runtime": "4.3.0", - "System.Runtime.Extensions": "4.3.0", - "System.Runtime.Handles": "4.3.0", - "System.Runtime.InteropServices": "4.3.0", - "System.Security.Cryptography.Primitives": "4.3.0", - "System.Text.Encoding": "4.3.0", - "runtime.native.System.Security.Cryptography.OpenSsl": "4.3.0" - } - }, - "System.Security.Cryptography.OpenSsl": { - "type": "Transitive", - "resolved": "4.3.0", - "contentHash": "h4CEgOgv5PKVF/HwaHzJRiVboL2THYCou97zpmhjghx5frc7fIvlkY1jL+lnIQyChrJDMNEXS6r7byGif8Cy4w==", - "dependencies": { - "System.Collections": "4.3.0", - "System.IO": "4.3.0", - "System.Resources.ResourceManager": "4.3.0", - "System.Runtime": "4.3.0", - "System.Runtime.Extensions": "4.3.0", - "System.Runtime.Handles": "4.3.0", - "System.Runtime.InteropServices": "4.3.0", - "System.Runtime.Numerics": "4.3.0", - "System.Security.Cryptography.Algorithms": "4.3.0", - "System.Security.Cryptography.Encoding": "4.3.0", - "System.Security.Cryptography.Primitives": "4.3.0", - "System.Text.Encoding": "4.3.0", - "runtime.native.System.Security.Cryptography.OpenSsl": "4.3.0" - } - }, - "System.Security.Cryptography.Primitives": { - "type": "Transitive", - "resolved": "4.3.0", - "contentHash": "7bDIyVFNL/xKeFHjhobUAQqSpJq9YTOpbEs6mR233Et01STBMXNAc/V+BM6dwYGc95gVh/Zf+iVXWzj3mE8DWg==", - "dependencies": { - "System.Diagnostics.Debug": "4.3.0", - "System.Globalization": "4.3.0", - "System.IO": "4.3.0", - "System.Resources.ResourceManager": "4.3.0", - "System.Runtime": "4.3.0", - "System.Threading": "4.3.0", - "System.Threading.Tasks": "4.3.0" - } - }, - "System.Security.Cryptography.ProtectedData": { - "type": "Transitive", - "resolved": "4.5.0", - "contentHash": "wLBKzFnDCxP12VL9ANydSYhk59fC4cvOr9ypYQLPnAj48NQIhqnjdD2yhP8yEKyBJEjERWS9DisKL7rX5eU25Q==" - }, - "System.Security.Cryptography.X509Certificates": { - "type": "Transitive", - "resolved": "4.3.0", - "contentHash": "t2Tmu6Y2NtJ2um0RtcuhP7ZdNNxXEgUm2JeoA/0NvlMjAhKCnM1NX07TDl3244mVp3QU6LPEhT3HTtH1uF7IYw==", - "dependencies": { - "Microsoft.NETCore.Platforms": "1.1.0", - "System.Collections": "4.3.0", - "System.Diagnostics.Debug": "4.3.0", - "System.Globalization": "4.3.0", - "System.Globalization.Calendars": "4.3.0", - "System.IO": "4.3.0", - "System.IO.FileSystem": "4.3.0", - "System.IO.FileSystem.Primitives": "4.3.0", - "System.Resources.ResourceManager": "4.3.0", - "System.Runtime": "4.3.0", - "System.Runtime.Extensions": "4.3.0", - "System.Runtime.Handles": "4.3.0", - "System.Runtime.InteropServices": "4.3.0", - "System.Runtime.Numerics": "4.3.0", - "System.Security.Cryptography.Algorithms": "4.3.0", - "System.Security.Cryptography.Cng": "4.3.0", - "System.Security.Cryptography.Csp": "4.3.0", - "System.Security.Cryptography.Encoding": "4.3.0", - "System.Security.Cryptography.OpenSsl": "4.3.0", - "System.Security.Cryptography.Primitives": "4.3.0", - "System.Text.Encoding": "4.3.0", - "System.Threading": "4.3.0", - "runtime.native.System": "4.3.0", - "runtime.native.System.Net.Http": "4.3.0", - "runtime.native.System.Security.Cryptography.OpenSsl": "4.3.0" - } - }, - "System.Security.Permissions": { - "type": "Transitive", - "resolved": "4.5.0", - "contentHash": "9gdyuARhUR7H+p5CjyUB/zPk7/Xut3wUSP8NJQB6iZr8L3XUXTMdoLeVAg9N4rqF8oIpE7MpdqHdDHQ7XgJe0g==", - "dependencies": { - "System.Security.AccessControl": "4.5.0" - } - }, - "System.Security.Principal.Windows": { - "type": "Transitive", - "resolved": "4.7.0", - "contentHash": "ojD0PX0XhneCsUbAZVKdb7h/70vyYMDYs85lwEI+LngEONe/17A0cFaRFqZU+sOEidcVswYWikYOQ9PPfjlbtQ==" - }, - "System.Text.Encoding": { - "type": "Transitive", - "resolved": "4.3.0", - "contentHash": "BiIg+KWaSDOITze6jGQynxg64naAPtqGHBwDrLaCtixsa5bKiR8dpPOHA7ge3C0JJQizJE+sfkz1wV+BAKAYZw==", - "dependencies": { - "Microsoft.NETCore.Platforms": "1.1.0", - "Microsoft.NETCore.Targets": "1.1.0", - "System.Runtime": "4.3.0" - } - }, - "System.Text.Encoding.Extensions": { - "type": "Transitive", - "resolved": "4.3.0", - "contentHash": "YVMK0Bt/A43RmwizJoZ22ei2nmrhobgeiYwFzC4YAN+nue8RF6djXDMog0UCn+brerQoYVyaS+ghy9P/MUVcmw==", - "dependencies": { - "Microsoft.NETCore.Platforms": "1.1.0", - "Microsoft.NETCore.Targets": "1.1.0", - "System.Runtime": "4.3.0", - "System.Text.Encoding": "4.3.0" - } - }, - "System.Text.Encodings.Web": { - "type": "Transitive", - "resolved": "6.0.0", - "contentHash": "Vg8eB5Tawm1IFqj4TVK1czJX89rhFxJo9ELqc/Eiq0eXy13RK00eubyU6TJE6y+GQXjyV5gSfiewDUZjQgSE0w==", - "dependencies": { - "System.Runtime.CompilerServices.Unsafe": "6.0.0" - } - }, - "System.Text.Json": { - "type": "Transitive", - "resolved": "6.0.0", - "contentHash": "zaJsHfESQvJ11vbXnNlkrR46IaMULk/gHxYsJphzSF+07kTjPHv+Oc14w6QEOfo3Q4hqLJgStUaYB9DBl0TmWg==", - "dependencies": { - "System.Runtime.CompilerServices.Unsafe": "6.0.0", - "System.Text.Encodings.Web": "6.0.0" - } - }, - "System.Text.RegularExpressions": { - "type": "Transitive", - "resolved": "4.3.1", - "contentHash": "N0kNRrWe4+nXOWlpLT4LAY5brb8caNFlUuIRpraCVMDLYutKkol1aV079rQjLuSxKMJT2SpBQsYX9xbcTMmzwg==", - "dependencies": { - "System.Runtime": "4.3.1" - } - }, - "System.Threading": { - "type": "Transitive", - "resolved": "4.3.0", - "contentHash": "VkUS0kOBcUf3Wwm0TSbrevDDZ6BlM+b/HRiapRFWjM5O0NS0LviG0glKmFK+hhPDd1XFeSdU1GmlLhb2CoVpIw==", - "dependencies": { - "System.Runtime": "4.3.0", - "System.Threading.Tasks": "4.3.0" - } - }, - "System.Threading.Tasks": { - "type": "Transitive", - "resolved": "4.3.0", - "contentHash": "LbSxKEdOUhVe8BezB/9uOGGppt+nZf6e1VFyw6v3DN6lqitm0OSn2uXMOdtP0M3W4iMcqcivm2J6UgqiwwnXiA==", - "dependencies": { - "Microsoft.NETCore.Platforms": "1.1.0", - "Microsoft.NETCore.Targets": "1.1.0", - "System.Runtime": "4.3.0" - } - }, - "System.Threading.Tasks.Extensions": { - "type": "Transitive", - "resolved": "4.3.0", - "contentHash": "npvJkVKl5rKXrtl1Kkm6OhOUaYGEiF9wFbppFRWSMoApKzt2PiPHT2Bb8a5sAWxprvdOAtvaARS9QYMznEUtug==", - "dependencies": { - "System.Collections": "4.3.0", - "System.Runtime": "4.3.0", - "System.Threading.Tasks": "4.3.0" - } - }, - "System.Threading.Thread": { - "type": "Transitive", - "resolved": "4.3.0", - "contentHash": "OHmbT+Zz065NKII/ZHcH9XO1dEuLGI1L2k7uYss+9C1jLxTC9kTZZuzUOyXHayRk+dft9CiDf3I/QZ0t8JKyBQ==", - "dependencies": { - "System.Runtime": "4.3.0" - } - }, - "System.Threading.ThreadPool": { - "type": "Transitive", - "resolved": "4.3.0", - "contentHash": "k/+g4b7vjdd4aix83sTgC9VG6oXYKAktSfNIJUNGxPEj7ryEOfzHHhfnmsZvjxawwcD9HyWXKCXmPjX8U4zeSw==", - "dependencies": { - "System.Runtime": "4.3.0", - "System.Runtime.Handles": "4.3.0" - } - }, - "System.Xml.ReaderWriter": { - "type": "Transitive", - "resolved": "4.3.0", - "contentHash": "GrprA+Z0RUXaR4N7/eW71j1rgMnEnEVlgii49GZyAjTH7uliMnrOU3HNFBr6fEDBCJCIdlVNq9hHbaDR621XBA==", - "dependencies": { - "System.Collections": "4.3.0", - "System.Diagnostics.Debug": "4.3.0", - "System.Globalization": "4.3.0", - "System.IO": "4.3.0", - "System.IO.FileSystem": "4.3.0", - "System.IO.FileSystem.Primitives": "4.3.0", - "System.Resources.ResourceManager": "4.3.0", - "System.Runtime": "4.3.0", - "System.Runtime.Extensions": "4.3.0", - "System.Runtime.InteropServices": "4.3.0", - "System.Text.Encoding": "4.3.0", - "System.Text.Encoding.Extensions": "4.3.0", - "System.Text.RegularExpressions": "4.3.0", - "System.Threading.Tasks": "4.3.0", - "System.Threading.Tasks.Extensions": "4.3.0" - } - }, - "System.Xml.XmlDocument": { - "type": "Transitive", - "resolved": "4.3.0", - "contentHash": "lJ8AxvkX7GQxpC6GFCeBj8ThYVyQczx2+f/cWHJU8tjS7YfI6Cv6bon70jVEgs2CiFbmmM8b9j1oZVx0dSI2Ww==", - "dependencies": { - "System.Collections": "4.3.0", - "System.Diagnostics.Debug": "4.3.0", - "System.Globalization": "4.3.0", - "System.IO": "4.3.0", - "System.Resources.ResourceManager": "4.3.0", - "System.Runtime": "4.3.0", - "System.Runtime.Extensions": "4.3.0", - "System.Text.Encoding": "4.3.0", - "System.Threading": "4.3.0", - "System.Xml.ReaderWriter": "4.3.0" - } - }, - "System.Xml.XPath": { - "type": "Transitive", - "resolved": "4.3.0", - "contentHash": "v1JQ5SETnQusqmS3RwStF7vwQ3L02imIzl++sewmt23VGygix04pEH+FCj1yWb+z4GDzKiljr1W7Wfvrx0YwgA==", - "dependencies": { - "System.Collections": "4.3.0", - "System.Diagnostics.Debug": "4.3.0", - "System.Globalization": "4.3.0", - "System.IO": "4.3.0", - "System.Resources.ResourceManager": "4.3.0", - "System.Runtime": "4.3.0", - "System.Runtime.Extensions": "4.3.0", - "System.Threading": "4.3.0", - "System.Xml.ReaderWriter": "4.3.0" - } - }, - "System.Xml.XPath.XmlDocument": { - "type": "Transitive", - "resolved": "4.3.0", - "contentHash": "A/uxsWi/Ifzkmd4ArTLISMbfFs6XpRPsXZonrIqyTY70xi8t+mDtvSM5Os0RqyRDobjMBwIDHDL4NOIbkDwf7A==", - "dependencies": { - "System.Collections": "4.3.0", - "System.Globalization": "4.3.0", - "System.IO": "4.3.0", - "System.Resources.ResourceManager": "4.3.0", - "System.Runtime": "4.3.0", - "System.Runtime.Extensions": "4.3.0", - "System.Threading": "4.3.0", - "System.Xml.ReaderWriter": "4.3.0", - "System.Xml.XPath": "4.3.0", - "System.Xml.XmlDocument": "4.3.0" - } - }, - "corvus.testing.azurefunctions": { - "type": "Project", - "dependencies": { - "Microsoft.Extensions.Logging.Abstractions": "[6.0.4, )", - "System.Management": "[4.7.*, )" - } - }, - "corvus.testing.azurefunctions.specflow": { - "type": "Project", - "dependencies": { - "Corvus.Testing.AzureFunctions": "[1.0.0, )", - "Corvus.Testing.SpecFlow": "[1.0.0, )", - "Microsoft.Extensions.Logging.Console": "[6.0.0, )", - "NUnit": "[3.14.0, )", - "SpecFlow": "[3.9.74, )" - } - }, - "corvus.testing.azurefunctions.specflow.nunit": { - "type": "Project", - "dependencies": { - "Corvus.Testing.AzureFunctions.SpecFlow": "[1.0.0, )", - "Microsoft.NET.Test.Sdk": "[17.8.0, )", - "SpecFlow.NUnit.Runners": "[3.9.74, )", - "System.Text.RegularExpressions": "[4.3.1, )", - "coverlet.msbuild": "[6.0.0, )" - } - }, - "corvus.testing.specflow": { - "type": "Project", - "dependencies": { - "Microsoft.Extensions.Configuration.Abstractions": "[6.0.0, )", - "Microsoft.Extensions.DependencyInjection": "[6.0.1, )", - "Microsoft.Extensions.DependencyInjection.Abstractions": "[6.0.0, )", - "NUnit": "[3.14.0, )", - "SpecFlow": "[3.9.74, )", - "System.Management": "[4.7.*, )" - } - } - } - } -} \ No newline at end of file diff --git a/Solutions/Corvus.Testing.AzureFunctions.SpecFlow.Demo/specflow.json b/Solutions/Corvus.Testing.AzureFunctions.SpecFlow.Demo/specflow.json deleted file mode 100644 index c24d1537..00000000 --- a/Solutions/Corvus.Testing.AzureFunctions.SpecFlow.Demo/specflow.json +++ /dev/null @@ -1,6 +0,0 @@ -{ - "stepAssemblies": [ - { "assembly": "Corvus.Testing.SpecFlow" }, - { "assembly": "Corvus.Testing.AzureFunctions.SpecFlow" } - ] -} \ No newline at end of file diff --git a/Solutions/Corvus.Testing.AzureFunctions.SpecFlow.NUnit/Corvus.Testing.AzureFunctions.SpecFlow.NUnit.csproj b/Solutions/Corvus.Testing.AzureFunctions.SpecFlow.NUnit/Corvus.Testing.AzureFunctions.SpecFlow.NUnit.csproj deleted file mode 100644 index f483f9bf..00000000 --- a/Solutions/Corvus.Testing.AzureFunctions.SpecFlow.NUnit/Corvus.Testing.AzureFunctions.SpecFlow.NUnit.csproj +++ /dev/null @@ -1,74 +0,0 @@ - - - - net6.0 - Copyright (c) Endjin Limited 2024. All rights reserved. - - - - false - false - - - - - - - - Apache-2.0 - A metapackage that encapsulates the required dependencies when using Corvus.Testing.AzureFunctions.SpecFlow and Endjin's standard practises. Also simplifies the dependency management process when using tools like Dependabot. - metapackage - - MetaPackage.SpecFlow.AzureFunctions.NUnit - true - false - false - - $(NoWarn);NU5128 - - - - - - - contentfiles; analyzers - - - - contentfiles; analyzers - - - - contentfiles; analyzers - - - - - - - - - - - diff --git a/Solutions/Corvus.Testing.AzureFunctions.SpecFlow.NUnit/DummyClass.cs b/Solutions/Corvus.Testing.AzureFunctions.SpecFlow.NUnit/DummyClass.cs deleted file mode 100644 index 8770e8c2..00000000 --- a/Solutions/Corvus.Testing.AzureFunctions.SpecFlow.NUnit/DummyClass.cs +++ /dev/null @@ -1,6 +0,0 @@ -namespace MetaPackage.SpecFlow.AzureFunctions.NUnit -{ - public class DummyClass - { - } -} diff --git a/Solutions/Corvus.Testing.AzureFunctions.Xunit.Demo/Corvus.Testing.AzureFunctions.Xunit.Demo.csproj b/Solutions/Corvus.Testing.AzureFunctions.Xunit.Demo/Corvus.Testing.AzureFunctions.Xunit.Demo.csproj index 88b6b558..e53139cc 100644 --- a/Solutions/Corvus.Testing.AzureFunctions.Xunit.Demo/Corvus.Testing.AzureFunctions.Xunit.Demo.csproj +++ b/Solutions/Corvus.Testing.AzureFunctions.Xunit.Demo/Corvus.Testing.AzureFunctions.Xunit.Demo.csproj @@ -44,13 +44,13 @@ all runtime; build; native; contentfiles; analyzers; buildtransitive - - - - + + + + - - + + all runtime; build; native; contentfiles; analyzers; buildtransitive diff --git a/Solutions/Corvus.Testing.AzureFunctions.Xunit.Demo/packages.lock.json b/Solutions/Corvus.Testing.AzureFunctions.Xunit.Demo/packages.lock.json index c670296b..6ec7aff0 100644 --- a/Solutions/Corvus.Testing.AzureFunctions.Xunit.Demo/packages.lock.json +++ b/Solutions/Corvus.Testing.AzureFunctions.Xunit.Demo/packages.lock.json @@ -4,60 +4,58 @@ "net8.0": { "Endjin.RecommendedPractices.GitHub": { "type": "Direct", - "requested": "[2.1.9, )", - "resolved": "2.1.9", - "contentHash": "gFCDZOu96fU+TfsAkZ7zLUzm8NX1/k3hWt7lbyf5HOn95+hYJQZ+g4bjs/Awx7JODsvNZpON8QlstZQVjPnRxg==", + "requested": "[2.1.12, )", + "resolved": "2.1.12", + "contentHash": "JEOlUQymdvrI6OeVHPTpakLhOJvkLdvmH+wJNNdjqSq3FtZ2LnqKei+4AMFUzTdJcL6RF3KGD3x0AqUfhYgWcw==", "dependencies": { - "Endjin.RecommendedPractices": "2.1.9", + "Endjin.RecommendedPractices": "2.1.12", "Microsoft.SourceLink.GitHub": "1.1.1" } }, "Microsoft.Extensions.Logging": { "type": "Direct", - "requested": "[6.0.0, )", - "resolved": "6.0.0", - "contentHash": "eIbyj40QDg1NDz0HBW0S5f3wrLVnKWnDJ/JtZ+yJDFnDj90VoPuoPmFkeaXrtu+0cKm5GRAwoDf+dBWXK0TUdg==", + "requested": "[8.0.0, )", + "resolved": "8.0.0", + "contentHash": "tvRkov9tAJ3xP51LCv3FJ2zINmv1P8Hi8lhhtcKGqM+ImiTCC84uOPEI4z8Cdq2C3o9e+Aa0Gw0rmrsJD77W+w==", "dependencies": { - "Microsoft.Extensions.DependencyInjection": "6.0.0", - "Microsoft.Extensions.DependencyInjection.Abstractions": "6.0.0", - "Microsoft.Extensions.Logging.Abstractions": "6.0.0", - "Microsoft.Extensions.Options": "6.0.0", - "System.Diagnostics.DiagnosticSource": "6.0.0" + "Microsoft.Extensions.DependencyInjection": "8.0.0", + "Microsoft.Extensions.Logging.Abstractions": "8.0.0", + "Microsoft.Extensions.Options": "8.0.0" } }, "Microsoft.NET.Test.Sdk": { "type": "Direct", - "requested": "[17.8.0, )", - "resolved": "17.8.0", - "contentHash": "BmTYGbD/YuDHmApIENdoyN1jCk0Rj1fJB0+B/fVekyTdVidr91IlzhqzytiUgaEAzL1ZJcYCme0MeBMYvJVzvw==", + "requested": "[17.10.0, )", + "resolved": "17.10.0", + "contentHash": "0/2HeACkaHEYU3wc83YlcD2Fi4LMtECJjqrtvw0lPi9DCEa35zSPt1j4fuvM8NagjDqJuh1Ja35WcRtn1Um6/A==", "dependencies": { - "Microsoft.CodeCoverage": "17.8.0", - "Microsoft.TestPlatform.TestHost": "17.8.0" + "Microsoft.CodeCoverage": "17.10.0", + "Microsoft.TestPlatform.TestHost": "17.10.0" } }, "Roslynator.Analyzers": { "type": "Direct", - "requested": "[4.9.0, )", - "resolved": "4.9.0", - "contentHash": "lFd4MmkllYR0dKlPWDokRwAvQnjNoPJztlncyzvnCG/wvGr5FzHAencngcJna/wkyDE0xIv7AnUccgCLsoIXTw==" + "requested": "[4.12.3, )", + "resolved": "4.12.3", + "contentHash": "6+O9GwAxOxJr1rZ4aaLiBiSH3pxDkJuXLE8qjo/JXLvGkZhKRLbAz30WA32RmJb5Nn1TmjZ2T3kWt3GJmEDj1w==" }, "Serilog.Extensions.Logging": { "type": "Direct", - "requested": "[3.1.0, )", - "resolved": "3.1.0", - "contentHash": "IWfem7wfrFbB3iw1OikqPFNPEzfayvDuN4WP7Ue1AVFskalMByeWk3QbtUXQR34SBkv1EbZ3AySHda/ErDgpcg==", + "requested": "[8.0.0, )", + "resolved": "8.0.0", + "contentHash": "YEAMWu1UnWgf1c1KP85l1SgXGfiVo0Rz6x08pCiPOIBt2Qe18tcZLvdBUuV5o1QHvrs8FAry9wTIhgBRtjIlEg==", "dependencies": { - "Microsoft.Extensions.Logging": "2.0.0", - "Serilog": "2.9.0" + "Microsoft.Extensions.Logging": "8.0.0", + "Serilog": "3.1.1" } }, "Serilog.Sinks.File": { "type": "Direct", - "requested": "[5.0.0, )", - "resolved": "5.0.0", - "contentHash": "uwV5hdhWPwUH1szhO8PJpFiahqXmzPzJT/sOijH/kFgUx+cyoDTMM8MHD0adw9+Iem6itoibbUXHYslzXsLEAg==", + "requested": "[6.0.0, )", + "resolved": "6.0.0", + "contentHash": "lxjg89Y8gJMmFxVkbZ+qDgjl+T4yC5F7WSLTvA+5q0R04tfKVLRL/EHpYoJ/MEQd2EeCKDuylBIVnAYMotmh2A==", "dependencies": { - "Serilog": "2.10.0" + "Serilog": "4.0.0" } }, "Serilog.Sinks.XUnit": { @@ -83,25 +81,25 @@ }, "xunit": { "type": "Direct", - "requested": "[2.6.6, )", - "resolved": "2.6.6", - "contentHash": "MAbOOMtZIKyn2lrAmMlvhX0BhDOX/smyrTB+8WTXnSKkrmTGBS2fm8g1PZtHBPj91Dc5DJA7fY+/81TJ/yUFZw==", + "requested": "[2.9.0, )", + "resolved": "2.9.0", + "contentHash": "PtU3rZ0ThdmdJqTbK7GkgFf6iBaCR6Q0uvJHznID+XEYk2v6O/b7sRxqnbi3B2gRDXxjTqMkVNayzwsqsFUxRw==", "dependencies": { - "xunit.analyzers": "1.10.0", - "xunit.assert": "2.6.6", - "xunit.core": "[2.6.6]" + "xunit.analyzers": "1.15.0", + "xunit.assert": "2.9.0", + "xunit.core": "[2.9.0]" } }, "xunit.runner.visualstudio": { "type": "Direct", - "requested": "[2.5.6, )", - "resolved": "2.5.6", - "contentHash": "CW6uhMXNaQQNMSG1IWhHkBT+V5eqHqn7MP0zfNMhU9wS/sgKX7FGL3rzoaUgt26wkY3bpf7pDVw3IjXhwfiP4w==" + "requested": "[2.8.2, )", + "resolved": "2.8.2", + "contentHash": "vm1tbfXhFmjFMUmS4M0J0ASXz3/U5XvXBa6DOQUL3fEz4Vt6YPhv+ESCarx6M6D+9kJkJYZKCNvJMas1+nVfmQ==" }, "Endjin.RecommendedPractices": { "type": "Transitive", - "resolved": "2.1.9", - "contentHash": "LzppiBrlPBj5TmVsQVxWoGv/MWfq+sAz0qkdB/ozUDS2hq31Pu8j2Cvk+BVlhvrb9eDUQxxHaLL4gbE7LiSAfQ==", + "resolved": "2.1.12", + "contentHash": "OZObdtlvF6isizGzO0Vydwmj2IR8GxydcTMGCoA9lmejnlCRWYPuyJXr3ULknlJ23hHDkyLFnu/xNA4duMr2SQ==", "dependencies": { "Microsoft.Build.Tasks.Git": "1.1.1" } @@ -113,44 +111,43 @@ }, "Microsoft.CodeCoverage": { "type": "Transitive", - "resolved": "17.8.0", - "contentHash": "KC8SXWbGIdoFVdlxKk9WHccm0llm9HypcHMLUUFabRiTS3SO2fQXNZfdiF3qkEdTJhbRrxhdRxjL4jbtwPq4Ew==" + "resolved": "17.10.0", + "contentHash": "yC7oSlnR54XO5kOuHlVOKtxomNNN1BWXX8lK1G2jaPXT9sUok7kCOoA4Pgs0qyFaCtMrNsprztYMeoEGqCm4uA==" }, "Microsoft.Extensions.DependencyInjection": { "type": "Transitive", - "resolved": "6.0.0", - "contentHash": "k6PWQMuoBDGGHOQTtyois2u4AwyVcIwL2LaSLlTZQm2CYcJ1pxbt6jfAnpWmzENA/wfrYRI/X9DTLoUkE4AsLw==", + "resolved": "8.0.0", + "contentHash": "V8S3bsm50ig6JSyrbcJJ8bW2b9QLGouz+G1miK3UTaOWmMtFwNNNzUf4AleyDWUmTrWMLNnFSLEQtxmxgNQnNQ==", "dependencies": { - "Microsoft.Extensions.DependencyInjection.Abstractions": "6.0.0", - "System.Runtime.CompilerServices.Unsafe": "6.0.0" + "Microsoft.Extensions.DependencyInjection.Abstractions": "8.0.0" } }, "Microsoft.Extensions.DependencyInjection.Abstractions": { "type": "Transitive", - "resolved": "6.0.0", - "contentHash": "xlzi2IYREJH3/m6+lUrQlujzX8wDitm4QGnUu6kUXTQAWPuZY8i+ticFJbzfqaetLA6KR/rO6Ew/HuYD+bxifg==" + "resolved": "8.0.0", + "contentHash": "cjWrLkJXK0rs4zofsK4bSdg+jhDLTaxrkXu4gS6Y7MAlCvRyNNgwY/lJi5RDlQOnSZweHqoyvgvbdvQsRIW+hg==" }, "Microsoft.Extensions.Logging.Abstractions": { "type": "Transitive", - "resolved": "6.0.4", - "contentHash": "K14wYgwOfKVELrUh5eBqlC8Wvo9vvhS3ZhIvcswV2uS/ubkTRPSQsN557EZiYUSSoZNxizG+alN4wjtdyLdcyw==" + "resolved": "8.0.0", + "contentHash": "arDBqTgFCyS0EvRV7O3MZturChstm50OJ0y9bDJvAcmEPJm0FFpFyjU/JLYyStNGGey081DvnQYlncNX5SJJGA==", + "dependencies": { + "Microsoft.Extensions.DependencyInjection.Abstractions": "8.0.0" + } }, "Microsoft.Extensions.Options": { "type": "Transitive", - "resolved": "6.0.0", - "contentHash": "dzXN0+V1AyjOe2xcJ86Qbo233KHuLEY0njf/P2Kw8SfJU+d45HNS2ctJdnEnrWbM9Ye2eFgaC5Mj9otRMU6IsQ==", + "resolved": "8.0.0", + "contentHash": "JOVOfqpnqlVLUzINQ2fox8evY2SKLYJ3BV8QDe/Jyp21u1T7r45x/R/5QdteURMR5r01GxeJSBBUOCOyaNXA3g==", "dependencies": { - "Microsoft.Extensions.DependencyInjection.Abstractions": "6.0.0", - "Microsoft.Extensions.Primitives": "6.0.0" + "Microsoft.Extensions.DependencyInjection.Abstractions": "8.0.0", + "Microsoft.Extensions.Primitives": "8.0.0" } }, "Microsoft.Extensions.Primitives": { "type": "Transitive", - "resolved": "6.0.0", - "contentHash": "9+PnzmQFfEFNR9J2aDTfJGGupShHjOuGw4VUv+JB044biSHrnmCIMD+mJHmb2H7YryrfBEXDurxQ47gJZdCKNQ==", - "dependencies": { - "System.Runtime.CompilerServices.Unsafe": "6.0.0" - } + "resolved": "8.0.0", + "contentHash": "bXJEZrW9ny8vjMF1JV253WeLhpEVzFo1lyaZu1vQ4ZxWUlVvknZ/+ftFgVheLubb4eZPSwwxBeqS1JkCOjxd8g==" }, "Microsoft.NETCore.Platforms": { "type": "Transitive", @@ -173,19 +170,18 @@ }, "Microsoft.TestPlatform.ObjectModel": { "type": "Transitive", - "resolved": "17.8.0", - "contentHash": "AYy6vlpGMfz5kOFq99L93RGbqftW/8eQTqjT9iGXW6s9MRP3UdtY8idJ8rJcjeSja8A18IhIro5YnH3uv1nz4g==", + "resolved": "17.10.0", + "contentHash": "KkwhjQevuDj0aBRoPLY6OLAhGqbPUEBuKLbaCs0kUVw29qiOYncdORd4mLVJbn9vGZ7/iFGQ/+AoJl0Tu5Umdg==", "dependencies": { - "NuGet.Frameworks": "6.5.0", "System.Reflection.Metadata": "1.6.0" } }, "Microsoft.TestPlatform.TestHost": { "type": "Transitive", - "resolved": "17.8.0", - "contentHash": "9ivcl/7SGRmOT0YYrHQGohWiT5YCpkmy/UEzldfVisLm6QxbLaK3FAJqZXI34rnRLmqqDCeMQxKINwmKwAPiDw==", + "resolved": "17.10.0", + "contentHash": "LWpMdfqhHvcUkeMCvNYJO8QlPLlYz9XPPb+ZbaXIKhdmjAV0wqTSrTiW5FLaf7RRZT50AQADDOYMOe0HxDxNgA==", "dependencies": { - "Microsoft.TestPlatform.ObjectModel": "17.8.0", + "Microsoft.TestPlatform.ObjectModel": "17.10.0", "Newtonsoft.Json": "13.0.1" } }, @@ -203,15 +199,10 @@ "resolved": "13.0.1", "contentHash": "ppPFpBcvxdsfUonNcvITKqLl3bqxWbDCZIzDWHzjpdAHRFfZe0Dw9HmA0+za13IdyrgJwpkDTDA9fHaxOrt20A==" }, - "NuGet.Frameworks": { - "type": "Transitive", - "resolved": "6.5.0", - "contentHash": "QWINE2x3MbTODsWT1Gh71GaGb5icBz4chS8VYvTgsBnsi8esgN6wtHhydd7fvToWECYGq7T4cgBBDiKD/363fg==" - }, "Serilog": { "type": "Transitive", - "resolved": "2.12.0", - "contentHash": "xaiJLIdu6rYMKfQMYUZgTy8YK7SMZjB4Yk50C/u//Z4OsvxkUfSPJy4nknfvwAC34yr13q7kcyh4grbwhSxyZg==" + "resolved": "4.0.0", + "contentHash": "2jDkUrSh5EofOp7Lx5Zgy0EB+7hXjjxE2ktTb1WVQmU00lDACR2TdROGKU0K1pDTBSJBN1PqgYpgOZF8mL7NJw==" }, "StyleCop.Analyzers.Unstable": { "type": "Transitive", @@ -223,14 +214,6 @@ "resolved": "4.7.0", "contentHash": "Hs9pw/kmvH3lXaZ1LFKj3pLQsiGfj2xo3sxSzwiLlRL6UcMZUTeCfoJ9Udalvn3yq5dLlPEZzYegrTQ1/LhPOQ==" }, - "System.Diagnostics.DiagnosticSource": { - "type": "Transitive", - "resolved": "6.0.0", - "contentHash": "frQDfv0rl209cKm1lnwTgFPzNigy2EKk1BS3uAvHvlBVKe5cymGyHO+Sj+NLv5VF/AhHsqPIUUwya5oV4CHMUw==", - "dependencies": { - "System.Runtime.CompilerServices.Unsafe": "6.0.0" - } - }, "System.Management": { "type": "Transitive", "resolved": "4.7.0", @@ -246,11 +229,6 @@ "resolved": "1.6.0", "contentHash": "COC1aiAJjCoA5GBF+QKL2uLqEBew4JsCkQmoHKbN3TlOZKa2fKLz5CpiRQKDz0RsAOEGsVKqOD5bomsXq/4STQ==" }, - "System.Runtime.CompilerServices.Unsafe": { - "type": "Transitive", - "resolved": "6.0.0", - "contentHash": "/iUeP3tq1S0XdNNoMz5C9twLSrM/TH+qElHkXWaPvuNOt+99G75NrV0OS2EqHx5wMN7popYjpc8oTjC1y16DLg==" - }, "System.Security.AccessControl": { "type": "Transitive", "resolved": "4.7.0", @@ -272,37 +250,37 @@ }, "xunit.analyzers": { "type": "Transitive", - "resolved": "1.10.0", - "contentHash": "Lw8CiDy5NaAWcO6keqD7iZHYUTIuCOcoFrUHw5Sv84ITZ9gFeDybdkVdH0Y2maSlP9fUjtENyiykT44zwFQIHA==" + "resolved": "1.15.0", + "contentHash": "s+M8K/Rtlgr6CmD7AYQKrNTvT5sh0l0ZKDoZ3Z/ExhlIwfV9mGAMR4f7KqIB7SSK7ZOhqDTgTUMYPmKfmvWUWQ==" }, "xunit.assert": { "type": "Transitive", - "resolved": "2.6.6", - "contentHash": "74Cm9lAZOk5TKCz2MvCBCByKsS23yryOKDIMxH3XRDHXmfGM02jKZWzRA7g4mGB41GnBnv/pcWP3vUYkrCtEcg==" + "resolved": "2.9.0", + "contentHash": "Z/1pyia//860wEYTKn6Q5dmgikJdRjgE4t5AoxJkK8oTmidzPLEPG574kmm7LFkMLbH6Frwmgb750kcyR+hwoA==" }, "xunit.core": { "type": "Transitive", - "resolved": "2.6.6", - "contentHash": "tqi7RfaNBqM7t8zx6QHryuBPzmotsZXKGaWnopQG2Ez5UV7JoWuyoNdT6gLpDIcKdGYey6YTXJdSr9IXDMKwjg==", + "resolved": "2.9.0", + "contentHash": "uRaop9tZsZMCaUS4AfbSPGYHtvywWnm8XXFNUqII7ShWyDBgdchY6gyDNgO4AK1Lv/1NNW61Zq63CsDV6oH6Jg==", "dependencies": { - "xunit.extensibility.core": "[2.6.6]", - "xunit.extensibility.execution": "[2.6.6]" + "xunit.extensibility.core": "[2.9.0]", + "xunit.extensibility.execution": "[2.9.0]" } }, "xunit.extensibility.core": { "type": "Transitive", - "resolved": "2.6.6", - "contentHash": "ty6VKByzbx4Toj4/VGJLEnlmOawqZiMv0in/tLju+ftA+lbWuAWDERM+E52Jfhj4ZYHrAYVa14KHK5T+dq0XxA==", + "resolved": "2.9.0", + "contentHash": "zjDEUSxsr6UNij4gIwCgMqQox+oLDPRZ+mubwWLci+SssPBFQD1xeRR4SvgBuXqbE0QXCJ/STVTp+lxiB5NLVA==", "dependencies": { "xunit.abstractions": "2.0.3" } }, "xunit.extensibility.execution": { "type": "Transitive", - "resolved": "2.6.6", - "contentHash": "UDjIVGj2TepVKN3n32/qXIdb3U6STwTb9L6YEwoQO2A8OxiJS5QAVv2l1aT6tDwwv/9WBmm8Khh/LyHALipcng==", + "resolved": "2.9.0", + "contentHash": "5ZTQZvmPLlBw6QzCOwM0KnMsZw6eGjbmC176QHZlcbQoMhGIeGcYzYwn5w9yXxf+4phtplMuVqTpTbFDQh2bqQ==", "dependencies": { - "xunit.extensibility.core": "[2.6.6]" + "xunit.extensibility.core": "[2.9.0]" } }, "corvus.testing.azurefunctions": { diff --git a/Solutions/Corvus.Testing.SpecFlow.NUnit/Corvus.Testing.SpecFlow.NUnit.csproj b/Solutions/Corvus.Testing.ReqnRoll.NUnit/Corvus.Testing.ReqnRoll.NUnit.csproj similarity index 69% rename from Solutions/Corvus.Testing.SpecFlow.NUnit/Corvus.Testing.SpecFlow.NUnit.csproj rename to Solutions/Corvus.Testing.ReqnRoll.NUnit/Corvus.Testing.ReqnRoll.NUnit.csproj index f3c2f179..3cff1590 100644 --- a/Solutions/Corvus.Testing.SpecFlow.NUnit/Corvus.Testing.SpecFlow.NUnit.csproj +++ b/Solutions/Corvus.Testing.ReqnRoll.NUnit/Corvus.Testing.ReqnRoll.NUnit.csproj @@ -16,10 +16,10 @@ Apache-2.0 - A metapackage that encapsulates the required dependencies when using Corvus.Testing.SpecFlow and Endjin's standard practises. Also simplifies the dependency management process when using tools like Dependabot. + A metapackage that encapsulates the required dependencies when using Corvus.Testing.ReqnRoll and Endjin's standard practises. Also simplifies the dependency management process when using tools like Dependabot. metapackage - MetaPackage.SpecFlow.NUnit + MetaPackage.ReqnRoll.NUnit true false false @@ -28,23 +28,18 @@ - - - - contentfiles; analyzers - - + contentfiles; analyzers - + contentfiles; analyzers - + diff --git a/Solutions/Corvus.Testing.SpecFlow.NUnit/DummyClass.cs b/Solutions/Corvus.Testing.ReqnRoll.NUnit/DummyClass.cs similarity index 52% rename from Solutions/Corvus.Testing.SpecFlow.NUnit/DummyClass.cs rename to Solutions/Corvus.Testing.ReqnRoll.NUnit/DummyClass.cs index 542f295b..5ea742e4 100644 --- a/Solutions/Corvus.Testing.SpecFlow.NUnit/DummyClass.cs +++ b/Solutions/Corvus.Testing.ReqnRoll.NUnit/DummyClass.cs @@ -1,4 +1,4 @@ -namespace MetaPackage.SpecFlow.NUnit +namespace MetaPackage.ReqnRoll.NUnit { public class DummyClass { diff --git a/Solutions/Corvus.Testing.SpecFlow.Specs/Containers/ContainerTestContext.cs b/Solutions/Corvus.Testing.ReqnRoll.Specs/Containers/ContainerTestContext.cs similarity index 91% rename from Solutions/Corvus.Testing.SpecFlow.Specs/Containers/ContainerTestContext.cs rename to Solutions/Corvus.Testing.ReqnRoll.Specs/Containers/ContainerTestContext.cs index be98bc6f..26178588 100644 --- a/Solutions/Corvus.Testing.SpecFlow.Specs/Containers/ContainerTestContext.cs +++ b/Solutions/Corvus.Testing.ReqnRoll.Specs/Containers/ContainerTestContext.cs @@ -2,14 +2,14 @@ // Copyright (c) Endjin Limited. All rights reserved. // -namespace Corvus.Testing.SpecFlow.Specs.Containers +namespace Corvus.Testing.ReqnRoll.Specs.Containers { using System; using System.Collections.Generic; using System.Globalization; using Microsoft.Extensions.DependencyInjection; using NUnit.Framework; - using TechTalk.SpecFlow; + using Reqnroll; /// /// Manages the various objects required by the per-Feature and per-Scenario container tests. @@ -72,10 +72,9 @@ public void GetServiceFromContainerDuringPhase(Phase phase) public void VerifyServicesFromPhase(Phase phase) { - Assert.IsTrue(this.ExtractedServices.TryGetValue(phase, out RootService? root), $"No services obtained for phase {phase}"); - - Assert.AreSame(this.CultureOriginallySuppliedToContainer, root!.CultureInfo, "CultureInfo"); - Assert.AreSame(this.ComparerOriginallySuppliedToContainer, root.Comparer, "Comparer"); + Assert.That(this.ExtractedServices.TryGetValue(phase, out RootService? root), $"No services obtained for phase {phase}"); + Assert.That(root!.CultureInfo, Is.SameAs(this.CultureOriginallySuppliedToContainer), "CultureInfo"); + Assert.That(root!.Comparer, Is.SameAs(this.ComparerOriginallySuppliedToContainer), "Comparer"); } private protected abstract void ConfigureServices(Action services); diff --git a/Solutions/Corvus.Testing.SpecFlow.Specs/Containers/NoContainer.feature b/Solutions/Corvus.Testing.ReqnRoll.Specs/Containers/NoContainer.feature similarity index 100% rename from Solutions/Corvus.Testing.SpecFlow.Specs/Containers/NoContainer.feature rename to Solutions/Corvus.Testing.ReqnRoll.Specs/Containers/NoContainer.feature diff --git a/Solutions/Corvus.Testing.SpecFlow.Specs/Containers/NoContainerSteps.cs b/Solutions/Corvus.Testing.ReqnRoll.Specs/Containers/NoContainerSteps.cs similarity index 83% rename from Solutions/Corvus.Testing.SpecFlow.Specs/Containers/NoContainerSteps.cs rename to Solutions/Corvus.Testing.ReqnRoll.Specs/Containers/NoContainerSteps.cs index c4c5eed6..099a3220 100644 --- a/Solutions/Corvus.Testing.SpecFlow.Specs/Containers/NoContainerSteps.cs +++ b/Solutions/Corvus.Testing.ReqnRoll.Specs/Containers/NoContainerSteps.cs @@ -2,12 +2,12 @@ // Copyright (c) Endjin Limited. All rights reserved. // -namespace Corvus.Testing.SpecFlow.Specs.Containers +namespace Corvus.Testing.ReqnRoll.Specs.Containers { using System; - using Corvus.Testing.SpecFlow; + using Corvus.Testing.ReqnRoll; using NUnit.Framework; - using TechTalk.SpecFlow; + using Reqnroll; [Binding] public class NoContainerSteps @@ -36,7 +36,7 @@ public void WhenICallContainerBindings_GetServiceProviderInsideATryBlock() [Then("it should throw an InvalidOperationException")] public void ThenItShouldThrowAnInvalidOperationException() { - Assert.IsInstanceOf(this.exceptionFromGetServiceProvider); + Assert.That(this.exceptionFromGetServiceProvider, Is.InstanceOf()); } } } diff --git a/Solutions/Corvus.Testing.SpecFlow.Specs/Containers/PerFeatureContainer.feature b/Solutions/Corvus.Testing.ReqnRoll.Specs/Containers/PerFeatureContainer.feature similarity index 94% rename from Solutions/Corvus.Testing.SpecFlow.Specs/Containers/PerFeatureContainer.feature rename to Solutions/Corvus.Testing.ReqnRoll.Specs/Containers/PerFeatureContainer.feature index 3a1647a6..9d8cfdd8 100644 --- a/Solutions/Corvus.Testing.SpecFlow.Specs/Containers/PerFeatureContainer.feature +++ b/Solutions/Corvus.Testing.ReqnRoll.Specs/Containers/PerFeatureContainer.feature @@ -1,5 +1,5 @@ -# These tests are a bit meta, because they test that the library enables us to write SpecFlow specs in the way we want, -# and they do so through the medium of SpecFlow specs. In some cases this is straightforward, but it makes certain +# These tests are a bit meta, because they test that the library enables us to write ReqnRoll specs in the way we want, +# and they do so through the medium of ReqnRoll specs. In some cases this is straightforward, but it makes certain # aspects of the test look a little odd. # This tag is essentially the thing we're testing. Tests using per-feature containers will put this tag at the top of diff --git a/Solutions/Corvus.Testing.SpecFlow.Specs/Containers/PerFeatureContainerSteps.cs b/Solutions/Corvus.Testing.ReqnRoll.Specs/Containers/PerFeatureContainerSteps.cs similarity index 95% rename from Solutions/Corvus.Testing.SpecFlow.Specs/Containers/PerFeatureContainerSteps.cs rename to Solutions/Corvus.Testing.ReqnRoll.Specs/Containers/PerFeatureContainerSteps.cs index fab81ac3..30dab69b 100644 --- a/Solutions/Corvus.Testing.SpecFlow.Specs/Containers/PerFeatureContainerSteps.cs +++ b/Solutions/Corvus.Testing.ReqnRoll.Specs/Containers/PerFeatureContainerSteps.cs @@ -2,11 +2,11 @@ // Copyright (c) Endjin Limited. All rights reserved. // -namespace Corvus.Testing.SpecFlow.Specs.Containers +namespace Corvus.Testing.ReqnRoll.Specs.Containers { - using Corvus.Testing.SpecFlow; + using Corvus.Testing.ReqnRoll; using NUnit.Framework; - using TechTalk.SpecFlow; + using Reqnroll; [Binding] public class PerFeatureContainerSteps @@ -23,7 +23,7 @@ public PerFeatureContainerSteps(FeatureContext featureContext) [Given("I have specified the perFeatureContainer tag")] public void GivenIHaveSpecifiedThePerFeatureContainerTag() { - Assert.Contains("perFeatureContainer", this.featureContext.FeatureInfo.Tags); + Assert.That(this.featureContext.FeatureInfo.Tags, Does.Contain("perFeatureContainer")); } [Given(@"I use feature ContainerBindings\.GetServiceProvider during a Given step")] diff --git a/Solutions/Corvus.Testing.SpecFlow.Specs/Containers/PerScenarioContainer.feature b/Solutions/Corvus.Testing.ReqnRoll.Specs/Containers/PerScenarioContainer.feature similarity index 94% rename from Solutions/Corvus.Testing.SpecFlow.Specs/Containers/PerScenarioContainer.feature rename to Solutions/Corvus.Testing.ReqnRoll.Specs/Containers/PerScenarioContainer.feature index 361c30c4..773152be 100644 --- a/Solutions/Corvus.Testing.SpecFlow.Specs/Containers/PerScenarioContainer.feature +++ b/Solutions/Corvus.Testing.ReqnRoll.Specs/Containers/PerScenarioContainer.feature @@ -1,5 +1,5 @@ -# These tests are a bit meta, because they test that the library enables us to write SpecFlow specs in the way we want, -# and they do so through the medium of SpecFlow specs. In some cases this is straightforward, but it makes certain +# These tests are a bit meta, because they test that the library enables us to write ReqnRoll specs in the way we want, +# and they do so through the medium of ReqnRoll specs. In some cases this is straightforward, but it makes certain # aspects of the test look a little odd. # This tag is essentially the thing we're testing. Tests using per-scenario containers will put this tag at the top of diff --git a/Solutions/Corvus.Testing.SpecFlow.Specs/Containers/PerScenarioContainerSteps.cs b/Solutions/Corvus.Testing.ReqnRoll.Specs/Containers/PerScenarioContainerSteps.cs similarity index 95% rename from Solutions/Corvus.Testing.SpecFlow.Specs/Containers/PerScenarioContainerSteps.cs rename to Solutions/Corvus.Testing.ReqnRoll.Specs/Containers/PerScenarioContainerSteps.cs index b291ed17..a6837d75 100644 --- a/Solutions/Corvus.Testing.SpecFlow.Specs/Containers/PerScenarioContainerSteps.cs +++ b/Solutions/Corvus.Testing.ReqnRoll.Specs/Containers/PerScenarioContainerSteps.cs @@ -2,10 +2,10 @@ // Copyright (c) Endjin Limited. All rights reserved. // -namespace Corvus.Testing.SpecFlow.Specs.Containers +namespace Corvus.Testing.ReqnRoll.Specs.Containers { using NUnit.Framework; - using TechTalk.SpecFlow; + using Reqnroll; [Binding] public class PerScenarioContainerSteps @@ -26,7 +26,7 @@ public PerScenarioContainerSteps( [Given("I have specified the perScenarioContainer tag")] public void GivenIHaveSpecifiedThePerScenarioContainerTag() { - Assert.Contains("perScenarioContainer", this.featureContext.FeatureInfo.Tags); + Assert.That(this.featureContext.FeatureInfo.Tags, Does.Contain("perScenarioContainer")); } [Given(@"I use scenario ContainerBindings\.GetServiceProvider during a Given step")] diff --git a/Solutions/Corvus.Testing.SpecFlow.Specs/Containers/Phase.cs b/Solutions/Corvus.Testing.ReqnRoll.Specs/Containers/Phase.cs similarity index 90% rename from Solutions/Corvus.Testing.SpecFlow.Specs/Containers/Phase.cs rename to Solutions/Corvus.Testing.ReqnRoll.Specs/Containers/Phase.cs index cfcb69ab..1e29eed9 100644 --- a/Solutions/Corvus.Testing.SpecFlow.Specs/Containers/Phase.cs +++ b/Solutions/Corvus.Testing.ReqnRoll.Specs/Containers/Phase.cs @@ -2,7 +2,7 @@ // Copyright (c) Endjin Limited. All rights reserved. // -namespace Corvus.Testing.SpecFlow.Specs.Containers +namespace Corvus.Testing.ReqnRoll.Specs.Containers { /// /// Represents the moment within test execution that we want to attempt or measure something. diff --git a/Solutions/Corvus.Testing.SpecFlow.Specs/Containers/RootService.cs b/Solutions/Corvus.Testing.ReqnRoll.Specs/Containers/RootService.cs similarity index 92% rename from Solutions/Corvus.Testing.SpecFlow.Specs/Containers/RootService.cs rename to Solutions/Corvus.Testing.ReqnRoll.Specs/Containers/RootService.cs index a5c93f62..62d62591 100644 --- a/Solutions/Corvus.Testing.SpecFlow.Specs/Containers/RootService.cs +++ b/Solutions/Corvus.Testing.ReqnRoll.Specs/Containers/RootService.cs @@ -2,7 +2,7 @@ // Copyright (c) Endjin Limited. All rights reserved. // -namespace Corvus.Testing.SpecFlow.Specs.Containers +namespace Corvus.Testing.ReqnRoll.Specs.Containers { using System.Collections.Generic; using System.Globalization; diff --git a/Solutions/Corvus.Testing.SpecFlow.Specs/Corvus.Testing.SpecFlow.Specs.csproj b/Solutions/Corvus.Testing.ReqnRoll.Specs/Corvus.Testing.ReqnRoll.Specs.csproj similarity index 51% rename from Solutions/Corvus.Testing.SpecFlow.Specs/Corvus.Testing.SpecFlow.Specs.csproj rename to Solutions/Corvus.Testing.ReqnRoll.Specs/Corvus.Testing.ReqnRoll.Specs.csproj index 7808f572..6f4c4945 100644 --- a/Solutions/Corvus.Testing.SpecFlow.Specs/Corvus.Testing.SpecFlow.Specs.csproj +++ b/Solutions/Corvus.Testing.ReqnRoll.Specs/Corvus.Testing.ReqnRoll.Specs.csproj @@ -1,24 +1,24 @@ - + - - net8.0 - Copyright (c) Endjin Limited 2024. All rights reserved. - latest - - RCS1029;SA0001;SA1204;SA1600;SA1602;CS1591 + RCS1029;SA0001;SA1204;SA1600;SA1602;CS1591 - false - + false + - - - true + true - - true - + true + - - enable - + + enable + - - - all - runtime; build; native; contentfiles; analyzers; buildtransitive - - + + + all + runtime; build; native; contentfiles; analyzers; buildtransitive + + + + + - - - - - - - PreserveNewest - - - - + + + + + + + PreserveNewest + + + + \ No newline at end of file diff --git a/Solutions/Corvus.Testing.AzureFunctions.SpecFlow.Demo/GlobalSuppressions.cs b/Solutions/Corvus.Testing.ReqnRoll.Specs/GlobalSuppressions.cs similarity index 100% rename from Solutions/Corvus.Testing.AzureFunctions.SpecFlow.Demo/GlobalSuppressions.cs rename to Solutions/Corvus.Testing.ReqnRoll.Specs/GlobalSuppressions.cs diff --git a/Solutions/Corvus.Testing.ReqnRoll.Specs/packages.lock.json b/Solutions/Corvus.Testing.ReqnRoll.Specs/packages.lock.json new file mode 100644 index 00000000..8d5252a4 --- /dev/null +++ b/Solutions/Corvus.Testing.ReqnRoll.Specs/packages.lock.json @@ -0,0 +1,353 @@ +{ + "version": 1, + "dependencies": { + "net8.0": { + "Endjin.RecommendedPractices.GitHub": { + "type": "Direct", + "requested": "[2.1.12, )", + "resolved": "2.1.12", + "contentHash": "JEOlUQymdvrI6OeVHPTpakLhOJvkLdvmH+wJNNdjqSq3FtZ2LnqKei+4AMFUzTdJcL6RF3KGD3x0AqUfhYgWcw==", + "dependencies": { + "Endjin.RecommendedPractices": "2.1.12", + "Microsoft.SourceLink.GitHub": "1.1.1" + } + }, + "Microsoft.NET.Test.Sdk": { + "type": "Direct", + "requested": "[17.10.0, )", + "resolved": "17.10.0", + "contentHash": "0/2HeACkaHEYU3wc83YlcD2Fi4LMtECJjqrtvw0lPi9DCEa35zSPt1j4fuvM8NagjDqJuh1Ja35WcRtn1Um6/A==", + "dependencies": { + "Microsoft.CodeCoverage": "17.10.0", + "Microsoft.TestPlatform.TestHost": "17.10.0" + } + }, + "NUnit3TestAdapter": { + "type": "Direct", + "requested": "[4.6.0, )", + "resolved": "4.6.0", + "contentHash": "R7e1+a4vuV/YS+ItfL7f//rG+JBvVeVLX4mHzFEZo4W1qEKl8Zz27AqvQSAqo+BtIzUCo4aAJMYa56VXS4hudw==" + }, + "Reqnroll.NUnit": { + "type": "Direct", + "requested": "[2.0.3, )", + "resolved": "2.0.3", + "contentHash": "z5JTI4aCxkx/REXeEDAzOM1UMqbjQvF12HbcY8wksQUpw150w0jMgZQ2Qr+CCtAb0ClyzadtoO4XgDfeiPMK2w==", + "dependencies": { + "NUnit": "3.13.1", + "Reqnroll": "[2.0.3]", + "Reqnroll.Tools.MsBuild.Generation": "[2.0.3]" + } + }, + "Roslynator.Analyzers": { + "type": "Direct", + "requested": "[4.12.3, )", + "resolved": "4.12.3", + "contentHash": "6+O9GwAxOxJr1rZ4aaLiBiSH3pxDkJuXLE8qjo/JXLvGkZhKRLbAz30WA32RmJb5Nn1TmjZ2T3kWt3GJmEDj1w==" + }, + "StyleCop.Analyzers": { + "type": "Direct", + "requested": "[1.2.0-beta.556, )", + "resolved": "1.2.0-beta.556", + "contentHash": "llRPgmA1fhC0I0QyFLEcjvtM2239QzKr/tcnbsjArLMJxJlu0AA5G7Fft0OI30pHF3MW63Gf4aSSsjc5m82J1Q==", + "dependencies": { + "StyleCop.Analyzers.Unstable": "1.2.0.556" + } + }, + "coverlet.msbuild": { + "type": "Transitive", + "resolved": "6.0.2", + "contentHash": "8b4jBNH7mcQy1otyQErjjIUuGD74XxKZ1wvDufbY7jhWwckl7wIa+icjwdPYeI0aYMS4Tp63LIZvyMFjWwOMDw==" + }, + "Cucumber.CucumberExpressions": { + "type": "Transitive", + "resolved": "16.0.0", + "contentHash": "fFuJVpAXfIOvN9EXbCiYSg9vS6m9Y24jsQfhvSn7kYQRHtXksCSy/JAkWDbyUEheQUkeM1FRaC9Pt2ODHpSBeQ==" + }, + "Endjin.RecommendedPractices": { + "type": "Transitive", + "resolved": "2.1.12", + "contentHash": "OZObdtlvF6isizGzO0Vydwmj2IR8GxydcTMGCoA9lmejnlCRWYPuyJXr3ULknlJ23hHDkyLFnu/xNA4duMr2SQ==", + "dependencies": { + "Microsoft.Build.Tasks.Git": "1.1.1" + } + }, + "Gherkin": { + "type": "Transitive", + "resolved": "19.0.3", + "contentHash": "kq9feqMojMj9aABrHb/ABEPaH2Y4dSclseSahAru6qxCeqVQNLLTgw/6vZMauzI1yBUL2fz03ub5yEd5btLfvg==" + }, + "Microsoft.Build.Tasks.Git": { + "type": "Transitive", + "resolved": "1.1.1", + "contentHash": "AT3HlgTjsqHnWpBHSNeR0KxbLZD7bztlZVj7I8vgeYG9SYqbeFGh0TM/KVtC6fg53nrWHl3VfZFvb5BiQFcY6Q==" + }, + "Microsoft.CodeCoverage": { + "type": "Transitive", + "resolved": "17.10.0", + "contentHash": "yC7oSlnR54XO5kOuHlVOKtxomNNN1BWXX8lK1G2jaPXT9sUok7kCOoA4Pgs0qyFaCtMrNsprztYMeoEGqCm4uA==" + }, + "Microsoft.Extensions.Configuration.Abstractions": { + "type": "Transitive", + "resolved": "8.0.0", + "contentHash": "3lE/iLSutpgX1CC0NOW70FJoGARRHbyKmG7dc0klnUZ9Dd9hS6N/POPWhKhMLCEuNN5nXEY5agmlFtH562vqhQ==", + "dependencies": { + "Microsoft.Extensions.Primitives": "8.0.0" + } + }, + "Microsoft.Extensions.DependencyInjection": { + "type": "Transitive", + "resolved": "8.0.0", + "contentHash": "V8S3bsm50ig6JSyrbcJJ8bW2b9QLGouz+G1miK3UTaOWmMtFwNNNzUf4AleyDWUmTrWMLNnFSLEQtxmxgNQnNQ==", + "dependencies": { + "Microsoft.Extensions.DependencyInjection.Abstractions": "8.0.0" + } + }, + "Microsoft.Extensions.DependencyInjection.Abstractions": { + "type": "Transitive", + "resolved": "8.0.1", + "contentHash": "fGLiCRLMYd00JYpClraLjJTNKLmMJPnqxMaiRzEBIIvevlzxz33mXy39Lkd48hu1G+N21S7QpaO5ZzKsI6FRuA==" + }, + "Microsoft.Extensions.DependencyModel": { + "type": "Transitive", + "resolved": "6.0.0", + "contentHash": "TD5QHg98m3+QhgEV1YVoNMl5KtBw/4rjfxLHO0e/YV9bPUBDKntApP4xdrVtGgCeQZHVfC2EXIGsdpRNrr87Pg==", + "dependencies": { + "System.Buffers": "4.5.1", + "System.Memory": "4.5.4", + "System.Runtime.CompilerServices.Unsafe": "6.0.0", + "System.Text.Encodings.Web": "6.0.0", + "System.Text.Json": "6.0.0" + } + }, + "Microsoft.Extensions.Primitives": { + "type": "Transitive", + "resolved": "8.0.0", + "contentHash": "bXJEZrW9ny8vjMF1JV253WeLhpEVzFo1lyaZu1vQ4ZxWUlVvknZ/+ftFgVheLubb4eZPSwwxBeqS1JkCOjxd8g==" + }, + "Microsoft.NETCore.Platforms": { + "type": "Transitive", + "resolved": "1.1.0", + "contentHash": "kz0PEW2lhqygehI/d6XsPCQzD7ff7gUJaVGPVETX611eadGsA3A877GdSlU0LRVMCTH/+P3o2iDTak+S08V2+A==" + }, + "Microsoft.NETCore.Targets": { + "type": "Transitive", + "resolved": "1.1.0", + "contentHash": "aOZA3BWfz9RXjpzt0sRJJMjAscAUm3Hoa4UWAfceV9UTYxgwZ1lZt5nO2myFf+/jetYQo4uTP7zS8sJY67BBxg==" + }, + "Microsoft.SourceLink.Common": { + "type": "Transitive", + "resolved": "1.1.1", + "contentHash": "WMcGpWKrmJmzrNeuaEb23bEMnbtR/vLmvZtkAP5qWu7vQsY59GqfRJd65sFpBszbd2k/bQ8cs8eWawQKAabkVg==" + }, + "Microsoft.SourceLink.GitHub": { + "type": "Transitive", + "resolved": "1.1.1", + "contentHash": "IaJGnOv/M7UQjRJks7B6p7pbPnOwisYGOIzqCz5ilGFTApZ3ktOR+6zJ12ZRPInulBmdAf1SrGdDG2MU8g6XTw==", + "dependencies": { + "Microsoft.Build.Tasks.Git": "1.1.1", + "Microsoft.SourceLink.Common": "1.1.1" + } + }, + "Microsoft.TestPlatform.ObjectModel": { + "type": "Transitive", + "resolved": "17.10.0", + "contentHash": "KkwhjQevuDj0aBRoPLY6OLAhGqbPUEBuKLbaCs0kUVw29qiOYncdORd4mLVJbn9vGZ7/iFGQ/+AoJl0Tu5Umdg==", + "dependencies": { + "System.Reflection.Metadata": "1.6.0" + } + }, + "Microsoft.TestPlatform.TestHost": { + "type": "Transitive", + "resolved": "17.10.0", + "contentHash": "LWpMdfqhHvcUkeMCvNYJO8QlPLlYz9XPPb+ZbaXIKhdmjAV0wqTSrTiW5FLaf7RRZT50AQADDOYMOe0HxDxNgA==", + "dependencies": { + "Microsoft.TestPlatform.ObjectModel": "17.10.0", + "Newtonsoft.Json": "13.0.1" + } + }, + "Newtonsoft.Json": { + "type": "Transitive", + "resolved": "13.0.1", + "contentHash": "ppPFpBcvxdsfUonNcvITKqLl3bqxWbDCZIzDWHzjpdAHRFfZe0Dw9HmA0+za13IdyrgJwpkDTDA9fHaxOrt20A==" + }, + "NUnit": { + "type": "Transitive", + "resolved": "4.1.0", + "contentHash": "MT/DpAhjtiytzhTgTqIhBuWx4y26PKfDepYUHUM+5uv4TsryHC2jwFo5e6NhWkApCm/G6kZ80dRjdJFuAxq3rg==" + }, + "Reqnroll": { + "type": "Transitive", + "resolved": "2.0.3", + "contentHash": "J4l4rrVuhu+Avhp6huzK+/sLenpQPndHH9Ma6M9ul+qeqwQ+2glJfRQ/GSslqYxtrdcX4Wwr+9xla5SdEriRAg==", + "dependencies": { + "Cucumber.CucumberExpressions": "16.0.0", + "Gherkin": "19.0.3", + "Microsoft.Extensions.DependencyModel": "6.0.0", + "SpecFlow.Internal.Json": "1.0.8", + "System.Runtime.Loader": "4.3.0" + } + }, + "Reqnroll.Tools.MsBuild.Generation": { + "type": "Transitive", + "resolved": "2.0.3", + "contentHash": "H7yIi52OvzJiJX0tI4GYa4kZjPzxavkcEMIWWtKHugpAOwSXWO7TvXlnz6DHW7F2Nty0n+3M/FhaNNlt28OnFA==", + "dependencies": { + "Reqnroll": "[2.0.3]" + } + }, + "SpecFlow.Internal.Json": { + "type": "Transitive", + "resolved": "1.0.8", + "contentHash": "lVCC/Rie7N5rFoc7YxPS0nneLfsWSTIMMlkndwxhaD8MxBp3Bsv1HeiVjVwXCjWaQeoqZcvIy52fF5Xit00ZLw==" + }, + "StyleCop.Analyzers.Unstable": { + "type": "Transitive", + "resolved": "1.2.0.556", + "contentHash": "zvn9Mqs/ox/83cpYPignI8hJEM2A93s2HkHs8HYMOAQW0PkampyoErAiIyKxgTLqbbad29HX/shv/6LGSjPJNQ==" + }, + "System.Buffers": { + "type": "Transitive", + "resolved": "4.5.1", + "contentHash": "Rw7ijyl1qqRS0YQD/WycNst8hUUMgrMH4FCn1nNm27M4VxchZ1js3fVjQaANHO5f3sN4isvP4a+Met9Y4YomAg==" + }, + "System.CodeDom": { + "type": "Transitive", + "resolved": "8.0.0", + "contentHash": "WTlRjL6KWIMr/pAaq3rYqh0TJlzpouaQ/W1eelssHgtlwHAH25jXTkUphTYx9HaIIf7XA6qs/0+YhtLEQRkJ+Q==" + }, + "System.IO": { + "type": "Transitive", + "resolved": "4.3.0", + "contentHash": "3qjaHvxQPDpSOYICjUoTsmoq5u6QJAFRUITgeT/4gqkF1bajbSmb1kwSxEA8AHlofqgcKJcM8udgieRNhaJ5Cg==", + "dependencies": { + "Microsoft.NETCore.Platforms": "1.1.0", + "Microsoft.NETCore.Targets": "1.1.0", + "System.Runtime": "4.3.0", + "System.Text.Encoding": "4.3.0", + "System.Threading.Tasks": "4.3.0" + } + }, + "System.Management": { + "type": "Transitive", + "resolved": "8.0.0", + "contentHash": "jrK22i5LRzxZCfGb+tGmke2VH7oE0DvcDlJ1HAKYU8cPmD8XnpUT0bYn2Gy98GEhGjtfbR/sxKTVb+dE770pfA==", + "dependencies": { + "System.CodeDom": "8.0.0" + } + }, + "System.Memory": { + "type": "Transitive", + "resolved": "4.5.4", + "contentHash": "1MbJTHS1lZ4bS4FmsJjnuGJOu88ZzTT2rLvrhW7Ygic+pC0NWA+3hgAen0HRdsocuQXCkUTdFn9yHJJhsijDXw==" + }, + "System.Reflection": { + "type": "Transitive", + "resolved": "4.3.0", + "contentHash": "KMiAFoW7MfJGa9nDFNcfu+FpEdiHpWgTcS2HdMpDvt9saK3y/G4GwprPyzqjFH9NTaGPQeWNHU+iDlDILj96aQ==", + "dependencies": { + "Microsoft.NETCore.Platforms": "1.1.0", + "Microsoft.NETCore.Targets": "1.1.0", + "System.IO": "4.3.0", + "System.Reflection.Primitives": "4.3.0", + "System.Runtime": "4.3.0" + } + }, + "System.Reflection.Metadata": { + "type": "Transitive", + "resolved": "1.6.0", + "contentHash": "COC1aiAJjCoA5GBF+QKL2uLqEBew4JsCkQmoHKbN3TlOZKa2fKLz5CpiRQKDz0RsAOEGsVKqOD5bomsXq/4STQ==" + }, + "System.Reflection.Primitives": { + "type": "Transitive", + "resolved": "4.3.0", + "contentHash": "5RXItQz5As4xN2/YUDxdpsEkMhvw3e6aNveFXUn4Hl/udNTCNhnKp8lT9fnc3MhvGKh1baak5CovpuQUXHAlIA==", + "dependencies": { + "Microsoft.NETCore.Platforms": "1.1.0", + "Microsoft.NETCore.Targets": "1.1.0", + "System.Runtime": "4.3.0" + } + }, + "System.Runtime": { + "type": "Transitive", + "resolved": "4.3.0", + "contentHash": "JufQi0vPQ0xGnAczR13AUFglDyVYt4Kqnz1AZaiKZ5+GICq0/1MH/mO/eAJHt/mHW1zjKBJd7kV26SrxddAhiw==", + "dependencies": { + "Microsoft.NETCore.Platforms": "1.1.0", + "Microsoft.NETCore.Targets": "1.1.0" + } + }, + "System.Runtime.CompilerServices.Unsafe": { + "type": "Transitive", + "resolved": "6.0.0", + "contentHash": "/iUeP3tq1S0XdNNoMz5C9twLSrM/TH+qElHkXWaPvuNOt+99G75NrV0OS2EqHx5wMN7popYjpc8oTjC1y16DLg==" + }, + "System.Runtime.Loader": { + "type": "Transitive", + "resolved": "4.3.0", + "contentHash": "DHMaRn8D8YCK2GG2pw+UzNxn/OHVfaWx7OTLBD/hPegHZZgcZh3H6seWegrC4BYwsfuGrywIuT+MQs+rPqRLTQ==", + "dependencies": { + "System.IO": "4.3.0", + "System.Reflection": "4.3.0", + "System.Runtime": "4.3.0" + } + }, + "System.Text.Encoding": { + "type": "Transitive", + "resolved": "4.3.0", + "contentHash": "BiIg+KWaSDOITze6jGQynxg64naAPtqGHBwDrLaCtixsa5bKiR8dpPOHA7ge3C0JJQizJE+sfkz1wV+BAKAYZw==", + "dependencies": { + "Microsoft.NETCore.Platforms": "1.1.0", + "Microsoft.NETCore.Targets": "1.1.0", + "System.Runtime": "4.3.0" + } + }, + "System.Text.Encodings.Web": { + "type": "Transitive", + "resolved": "6.0.0", + "contentHash": "Vg8eB5Tawm1IFqj4TVK1czJX89rhFxJo9ELqc/Eiq0eXy13RK00eubyU6TJE6y+GQXjyV5gSfiewDUZjQgSE0w==", + "dependencies": { + "System.Runtime.CompilerServices.Unsafe": "6.0.0" + } + }, + "System.Text.Json": { + "type": "Transitive", + "resolved": "6.0.0", + "contentHash": "zaJsHfESQvJ11vbXnNlkrR46IaMULk/gHxYsJphzSF+07kTjPHv+Oc14w6QEOfo3Q4hqLJgStUaYB9DBl0TmWg==", + "dependencies": { + "System.Runtime.CompilerServices.Unsafe": "6.0.0", + "System.Text.Encodings.Web": "6.0.0" + } + }, + "System.Threading.Tasks": { + "type": "Transitive", + "resolved": "4.3.0", + "contentHash": "LbSxKEdOUhVe8BezB/9uOGGppt+nZf6e1VFyw6v3DN6lqitm0OSn2uXMOdtP0M3W4iMcqcivm2J6UgqiwwnXiA==", + "dependencies": { + "Microsoft.NETCore.Platforms": "1.1.0", + "Microsoft.NETCore.Targets": "1.1.0", + "System.Runtime": "4.3.0" + } + }, + "corvus.testing.reqnroll": { + "type": "Project", + "dependencies": { + "Microsoft.Extensions.Configuration.Abstractions": "[8.0.0, )", + "Microsoft.Extensions.DependencyInjection": "[8.0.0, )", + "Microsoft.Extensions.DependencyInjection.Abstractions": "[8.0.1, )", + "NUnit": "[4.1.0, )", + "Reqnroll": "[2.0.3, )", + "System.Management": "[8.0.0, )" + } + }, + "corvus.testing.reqnroll.nunit": { + "type": "Project", + "dependencies": { + "Corvus.Testing.ReqnRoll": "[1.0.0, )", + "Microsoft.NET.Test.Sdk": "[17.10.0, )", + "coverlet.msbuild": "[6.0.2, )" + } + } + } + } +} \ No newline at end of file diff --git a/Solutions/Corvus.Testing.ReqnRoll.Specs/specflow.json b/Solutions/Corvus.Testing.ReqnRoll.Specs/specflow.json new file mode 100644 index 00000000..9a16c7db --- /dev/null +++ b/Solutions/Corvus.Testing.ReqnRoll.Specs/specflow.json @@ -0,0 +1,5 @@ +{ + "stepAssemblies": [ + { "assembly": "Corvus.Testing.ReqnRoll" } + ] +} \ No newline at end of file diff --git a/Solutions/Corvus.Testing.SpecFlow/Corvus.Testing.SpecFlow.csproj b/Solutions/Corvus.Testing.ReqnRoll/Corvus.Testing.ReqnRoll.csproj similarity index 82% rename from Solutions/Corvus.Testing.SpecFlow/Corvus.Testing.SpecFlow.csproj rename to Solutions/Corvus.Testing.ReqnRoll/Corvus.Testing.ReqnRoll.csproj index 087cbb9e..b73dee07 100644 --- a/Solutions/Corvus.Testing.SpecFlow/Corvus.Testing.SpecFlow.csproj +++ b/Solutions/Corvus.Testing.ReqnRoll/Corvus.Testing.ReqnRoll.csproj @@ -30,13 +30,12 @@ all runtime; build; native; contentfiles; analyzers; buildtransitive - - - - - - + + + + + + - diff --git a/Solutions/Corvus.Testing.SpecFlow/Corvus/Testing/SpecFlow/ChildObjectBindings.cs b/Solutions/Corvus.Testing.ReqnRoll/Corvus/Testing/SpecFlow/ChildObjectBindings.cs similarity index 87% rename from Solutions/Corvus.Testing.SpecFlow/Corvus/Testing/SpecFlow/ChildObjectBindings.cs rename to Solutions/Corvus.Testing.ReqnRoll/Corvus/Testing/SpecFlow/ChildObjectBindings.cs index a5d87f69..63f14af3 100644 --- a/Solutions/Corvus.Testing.SpecFlow/Corvus/Testing/SpecFlow/ChildObjectBindings.cs +++ b/Solutions/Corvus.Testing.ReqnRoll/Corvus/Testing/SpecFlow/ChildObjectBindings.cs @@ -2,14 +2,14 @@ // Copyright (c) Endjin Limited. All rights reserved. // -namespace Corvus.Testing.SpecFlow +namespace Corvus.Testing.ReqnRoll { - using Corvus.Testing.SpecFlow.Internal; - using TechTalk.SpecFlow; - using TechTalk.SpecFlow.Assist; + using Corvus.Testing.ReqnRoll.Internal; + using Reqnroll; + using Reqnroll.Assist; /// - /// Provides Specflow bindings for retrieving child objects from the scenario context. + /// Provides ReqnRoll bindings for retrieving child objects from the scenario context. /// [Binding] public static class ChildObjectBindings diff --git a/Solutions/Corvus.Testing.SpecFlow/Corvus/Testing/SpecFlow/ContainerBeforeFeatureOrder.cs b/Solutions/Corvus.Testing.ReqnRoll/Corvus/Testing/SpecFlow/ContainerBeforeFeatureOrder.cs similarity index 97% rename from Solutions/Corvus.Testing.SpecFlow/Corvus/Testing/SpecFlow/ContainerBeforeFeatureOrder.cs rename to Solutions/Corvus.Testing.ReqnRoll/Corvus/Testing/SpecFlow/ContainerBeforeFeatureOrder.cs index 548f0d3a..6eab5aac 100644 --- a/Solutions/Corvus.Testing.SpecFlow/Corvus/Testing/SpecFlow/ContainerBeforeFeatureOrder.cs +++ b/Solutions/Corvus.Testing.ReqnRoll/Corvus/Testing/SpecFlow/ContainerBeforeFeatureOrder.cs @@ -2,10 +2,10 @@ // Copyright (c) Endjin Limited. All rights reserved. // -namespace Corvus.Testing.SpecFlow +namespace Corvus.Testing.ReqnRoll { using System; - using TechTalk.SpecFlow; + using Reqnroll; /// /// Defines constants to use for property on a diff --git a/Solutions/Corvus.Testing.SpecFlow/Corvus/Testing/SpecFlow/ContainerBeforeScenarioOrder.cs b/Solutions/Corvus.Testing.ReqnRoll/Corvus/Testing/SpecFlow/ContainerBeforeScenarioOrder.cs similarity index 97% rename from Solutions/Corvus.Testing.SpecFlow/Corvus/Testing/SpecFlow/ContainerBeforeScenarioOrder.cs rename to Solutions/Corvus.Testing.ReqnRoll/Corvus/Testing/SpecFlow/ContainerBeforeScenarioOrder.cs index 5ab8e3fb..8d89445b 100644 --- a/Solutions/Corvus.Testing.SpecFlow/Corvus/Testing/SpecFlow/ContainerBeforeScenarioOrder.cs +++ b/Solutions/Corvus.Testing.ReqnRoll/Corvus/Testing/SpecFlow/ContainerBeforeScenarioOrder.cs @@ -2,10 +2,10 @@ // Copyright (c) Endjin Limited. All rights reserved. // -namespace Corvus.Testing.SpecFlow +namespace Corvus.Testing.ReqnRoll { using System; - using TechTalk.SpecFlow; + using Reqnroll; /// /// Defines constants to use for property on a diff --git a/Solutions/Corvus.Testing.SpecFlow/Corvus/Testing/SpecFlow/ContainerBindings.cs b/Solutions/Corvus.Testing.ReqnRoll/Corvus/Testing/SpecFlow/ContainerBindings.cs similarity index 90% rename from Solutions/Corvus.Testing.SpecFlow/Corvus/Testing/SpecFlow/ContainerBindings.cs rename to Solutions/Corvus.Testing.ReqnRoll/Corvus/Testing/SpecFlow/ContainerBindings.cs index 22f1032e..26bd2d0d 100644 --- a/Solutions/Corvus.Testing.SpecFlow/Corvus/Testing/SpecFlow/ContainerBindings.cs +++ b/Solutions/Corvus.Testing.ReqnRoll/Corvus/Testing/SpecFlow/ContainerBindings.cs @@ -2,15 +2,15 @@ // Copyright (c) Endjin Limited. All rights reserved. // -namespace Corvus.Testing.SpecFlow +namespace Corvus.Testing.ReqnRoll { using System; using Microsoft.Extensions.DependencyInjection; using NUnit.Framework; - using TechTalk.SpecFlow; + using Reqnroll; /// - /// Provides Specflow bindings for DI Composition. + /// Provides ReqnRoll bindings for DI Composition. /// [Binding] public static class ContainerBindings @@ -22,7 +22,7 @@ public static class ContainerBindings /// /// Add DI services to the per-feature container. /// - /// The SpecFlow feature context. + /// The ReqnRoll feature context. /// Callback that will be invoked with the service collection. /// /// Call this from a BeforeFeature binding. You must specify an Order that is @@ -42,7 +42,7 @@ public static void ConfigureServices( /// /// Add DI services to the per-scenario container. /// - /// The SpecFlow scenario context. + /// The ReqnRoll scenario context. /// Callback that will be invoked with the service collection. /// /// Call this from a BeforeScenario binding. You must specify an Order that is @@ -62,7 +62,7 @@ public static void ConfigureServices( /// /// Gets the for the specified feature context. /// - /// The SpecFlow context. + /// The ReqnRoll context. /// The service provider. /// /// You can call this either during execution of steps, or in a BeforeFeature binding with @@ -75,7 +75,7 @@ public static IServiceProvider GetServiceProvider(FeatureContext featureContext) /// /// Gets the for the specified scenario context. /// - /// The SpecFlow context. + /// The ReqnRoll context. /// The service provider. /// /// You can call this either during execution of steps, or in a BeforeScenario binding with @@ -88,7 +88,7 @@ public static IServiceProvider GetServiceProvider(ScenarioContext scenarioContex /// /// Start setup of the DI container for a feature. /// - /// SpecFlow-supplied context. + /// ReqnRoll-supplied context. /// We expect features run in parallel to be executing in separate app domains. [BeforeFeature("@perFeatureContainer", "@setupContainer", Order = ContainerBeforeFeatureOrder.CreateServiceCollection)] public static void StartFeatureContainerSetup(FeatureContext featureContext) @@ -99,8 +99,8 @@ public static void StartFeatureContainerSetup(FeatureContext featureContext) /// /// Start setup of the DI container for a scenario. /// - /// SpecFlow-supplied feature context. - /// SpecFlow-supplied scenario context. + /// ReqnRoll-supplied feature context. + /// ReqnRoll-supplied scenario context. /// We expect scenarios run in parallel to be executing in separate app domains. [BeforeScenario("@perScenarioContainer", Order = ContainerBeforeScenarioOrder.CreateServiceCollection)] public static void StartScenarioContainerSetup( @@ -118,7 +118,7 @@ public static void StartScenarioContainerSetup( /// /// Complete setup of the DI container for a feature. /// - /// SpecFlow-supplied context. + /// ReqnRoll-supplied context. /// We expect features run in parallel to be executing in separate app domains. [BeforeFeature("@perFeatureContainer", "@setupContainer", Order = ContainerBeforeFeatureOrder.BuildServiceProvider)] public static void CompleteFeatureContainerSetup(FeatureContext featureContext) @@ -129,7 +129,7 @@ public static void CompleteFeatureContainerSetup(FeatureContext featureContext) /// /// Complete setup of the DI container for a scenario. /// - /// SpecFlow-supplied context. + /// ReqnRoll-supplied context. /// We expect scenarios run in parallel to be executing in separate app domains. [BeforeScenario("@perScenarioContainer", Order = ContainerBeforeScenarioOrder.BuildServiceProvider)] public static void CompleteScenarioContainerSetup(ScenarioContext scenarioContext) @@ -172,7 +172,7 @@ public static void TeardownContainer(ScenarioContext scenarioContext) } private static void ConfigureServices( - SpecFlowContext context, + ReqnrollContext context, Action configure, string exceptionMessageIfBuildNotInProgress) { @@ -187,7 +187,7 @@ private static void ConfigureServices( configure(serviceCollection); } - private static IServiceProvider GetServiceProvider(SpecFlowContext context, string messageForBuildInProgressError) + private static IServiceProvider GetServiceProvider(ReqnrollContext context, string messageForBuildInProgressError) { bool serviceBuildInProgress = VerifyBindingAvailable(context); @@ -199,14 +199,14 @@ private static IServiceProvider GetServiceProvider(SpecFlowContext context, stri return context.Get(ServiceProviderKey); } - private static void CreateServiceCollection(SpecFlowContext scenarioContext) + private static void CreateServiceCollection(ReqnrollContext scenarioContext) { scenarioContext.Set(true, ContainerBindingPhaseKey); var serviceCollection = new ServiceCollection(); scenarioContext.Set(serviceCollection, ServiceCollectionKey); } - private static void CompleteContainerSetup(SpecFlowContext context) + private static void CompleteContainerSetup(ReqnrollContext context) { context.Set(false, ContainerBindingPhaseKey); @@ -216,7 +216,7 @@ private static void CompleteContainerSetup(SpecFlowContext context) context.Set(service, ServiceProviderKey); } - private static void DisposeServiceProvider(SpecFlowContext context) + private static void DisposeServiceProvider(ReqnrollContext context) { if (context.Get(ServiceProviderKey) is IDisposable spDisposable) { @@ -224,12 +224,12 @@ private static void DisposeServiceProvider(SpecFlowContext context) } } - private static bool VerifyBindingAvailable(SpecFlowContext featureContext) + private static bool VerifyBindingAvailable(ReqnrollContext featureContext) { if (!featureContext.TryGetValue(ContainerBindingPhaseKey, out bool serviceBuildInProgress)) { throw new InvalidOperationException( - $"This method requires {typeof(ContainerBindings).FullName} to be registered with SpecFlow and either the @perScenarioContainer or the @perFeatureContainer tag to be specified"); + $"This method requires {typeof(ContainerBindings).FullName} to be registered with ReqnRoll and either the @perScenarioContainer or the @perFeatureContainer tag to be specified"); } return serviceBuildInProgress; diff --git a/Solutions/Corvus.Testing.SpecFlow/Corvus/Testing/SpecFlow/Internal/ChildObjectValueRetriever.cs b/Solutions/Corvus.Testing.ReqnRoll/Corvus/Testing/SpecFlow/Internal/ChildObjectValueRetriever.cs similarity index 90% rename from Solutions/Corvus.Testing.SpecFlow/Corvus/Testing/SpecFlow/Internal/ChildObjectValueRetriever.cs rename to Solutions/Corvus.Testing.ReqnRoll/Corvus/Testing/SpecFlow/Internal/ChildObjectValueRetriever.cs index cb1f5600..5527529f 100644 --- a/Solutions/Corvus.Testing.SpecFlow/Corvus/Testing/SpecFlow/Internal/ChildObjectValueRetriever.cs +++ b/Solutions/Corvus.Testing.ReqnRoll/Corvus/Testing/SpecFlow/Internal/ChildObjectValueRetriever.cs @@ -2,12 +2,12 @@ // Copyright (c) Endjin Limited. All rights reserved. // -namespace Corvus.Testing.SpecFlow.Internal +namespace Corvus.Testing.ReqnRoll.Internal { using System; using System.Collections.Generic; - using TechTalk.SpecFlow; - using TechTalk.SpecFlow.Assist; + using Reqnroll; + using Reqnroll.Assist; /// /// A value retriever that looks in the scenario context for a named instance. diff --git a/Solutions/Corvus.Testing.SpecFlow/Corvus/Testing/SpecFlow/TeardownExceptions.cs b/Solutions/Corvus.Testing.ReqnRoll/Corvus/Testing/SpecFlow/TeardownExceptions.cs similarity index 89% rename from Solutions/Corvus.Testing.SpecFlow/Corvus/Testing/SpecFlow/TeardownExceptions.cs rename to Solutions/Corvus.Testing.ReqnRoll/Corvus/Testing/SpecFlow/TeardownExceptions.cs index c1876891..49c5c29f 100644 --- a/Solutions/Corvus.Testing.SpecFlow/Corvus/Testing/SpecFlow/TeardownExceptions.cs +++ b/Solutions/Corvus.Testing.ReqnRoll/Corvus/Testing/SpecFlow/TeardownExceptions.cs @@ -2,12 +2,12 @@ // Copyright (c) Endjin Limited. All rights reserved. // -namespace Corvus.Testing.SpecFlow +namespace Corvus.Testing.ReqnRoll { using System; using System.Collections.Generic; using System.Threading.Tasks; - using TechTalk.SpecFlow; + using Reqnroll; /// /// Enables exceptions thrown during feature and scenario teardown to be reported while still @@ -15,7 +15,7 @@ namespace Corvus.Testing.SpecFlow /// /// /// - /// SpecFlow has an unfortunate problem with exceptions in 'After' bindings. If one + /// ReqnRoll has an unfortunate problem with exceptions in 'After' bindings. If one /// of them throws an exception, that prevents any other ones from running. However, /// the only way to report errors at this stage of execution is to let them out of the /// binding. @@ -23,7 +23,7 @@ namespace Corvus.Testing.SpecFlow /// /// We want to be able to run all applicable After bindings even if some fail, and we /// also want to report all failures. To do this, we catch failures, put them in the - /// relevant SpecFlow context, and then rethrow them later in the various bindings in + /// relevant ReqnRoll context, and then rethrow them later in the various bindings in /// . /// These have an Order of int.MaxValue, meaning that they will run after any other teardown handlers. /// This way, we can report all errors that occur, without blocking any teardown methods. @@ -47,7 +47,7 @@ public static class TeardownExceptions /// Runs a method inside an exception handler that records any exception for later /// reporting by . /// - /// The SpecFlow feature context. + /// The ReqnRoll feature context. /// The method to run. public static void RunAndStoreExceptions(this FeatureContext featureContext, Action action) => RunAndStoreExceptions(featureContext, action, FeatureContextKey); @@ -56,7 +56,7 @@ public static void RunAndStoreExceptions(this FeatureContext featureContext, Act /// Runs a method inside an exception handler that records any exception for later /// reporting by . /// - /// The SpecFlow feature context. + /// The ReqnRoll feature context. /// The method to run. /// A task that completes once the work is complete. Note that this will report success even /// if the underlying action fails (because that's the point of this method). @@ -67,7 +67,7 @@ public static Task RunAndStoreExceptionsAsync(this FeatureContext featureContext /// Runs a method inside an exception handler that records any exception for later /// reporting by . /// - /// The SpecFlow scenario context. + /// The ReqnRoll scenario context. /// The method to run. public static void RunAndStoreExceptions(this ScenarioContext scenarioContext, Action action) => RunAndStoreExceptions(scenarioContext, action, ScenarioContextKey); @@ -76,14 +76,14 @@ public static void RunAndStoreExceptions(this ScenarioContext scenarioContext, A /// Runs a method inside an exception handler that records any exception for later /// reporting by . /// - /// The SpecFlow scenario context. + /// The ReqnRoll scenario context. /// The method to run. /// A task that completes once the work is complete. Note that this will report success even /// if the underlying action fails (because that's the point of this method). public static Task RunAndStoreExceptionsAsync(this ScenarioContext scenarioContext, Func action) => RunAndStoreExceptionsAsync(scenarioContext, action, ScenarioContextKey); - private static void RunAndStoreExceptions(this SpecFlowContext context, Action action, string key) + private static void RunAndStoreExceptions(this ReqnrollContext context, Action action, string key) { TeardownExceptionsBindings.VerifyBindingAvailable(context); try @@ -96,7 +96,7 @@ private static void RunAndStoreExceptions(this SpecFlowContext context, Action a } } - private static async Task RunAndStoreExceptionsAsync(this SpecFlowContext context, Func action, string key) + private static async Task RunAndStoreExceptionsAsync(this ReqnrollContext context, Func action, string key) { TeardownExceptionsBindings.VerifyBindingAvailable(context); try @@ -109,7 +109,7 @@ private static async Task RunAndStoreExceptionsAsync(this SpecFlowContext contex } } - private static void StoreExceptionInContext(SpecFlowContext context, Exception x, string key) + private static void StoreExceptionInContext(ReqnrollContext context, Exception x, string key) { if (!context.TryGetValue(key, out List elist)) { diff --git a/Solutions/Corvus.Testing.SpecFlow/Corvus/Testing/SpecFlow/TeardownExceptionsBindings.cs b/Solutions/Corvus.Testing.ReqnRoll/Corvus/Testing/SpecFlow/TeardownExceptionsBindings.cs similarity index 83% rename from Solutions/Corvus.Testing.SpecFlow/Corvus/Testing/SpecFlow/TeardownExceptionsBindings.cs rename to Solutions/Corvus.Testing.ReqnRoll/Corvus/Testing/SpecFlow/TeardownExceptionsBindings.cs index 407c05b8..b700aa2d 100644 --- a/Solutions/Corvus.Testing.SpecFlow/Corvus/Testing/SpecFlow/TeardownExceptionsBindings.cs +++ b/Solutions/Corvus.Testing.ReqnRoll/Corvus/Testing/SpecFlow/TeardownExceptionsBindings.cs @@ -2,11 +2,11 @@ // Copyright (c) Endjin Limited. All rights reserved. // -namespace Corvus.Testing.SpecFlow +namespace Corvus.Testing.ReqnRoll { using System; using System.Collections.Generic; - using TechTalk.SpecFlow; + using Reqnroll; /// /// Rethrows any exceptions detected by . @@ -19,7 +19,7 @@ public static class TeardownExceptionsBindings /// /// Sets a flag in the feature context to confirm that rethrow support is available. /// - /// SpecFlow feature context. + /// ReqnRoll feature context. [AfterFeature(Order = 0)] public static void RethrowFeatureBindingAvailableValidation(FeatureContext featureContext) { @@ -29,7 +29,7 @@ public static void RethrowFeatureBindingAvailableValidation(FeatureContext featu /// /// Sets a flag in the scenario context to confirm that rethrow support is available. /// - /// SpecFlow scenario context. + /// ReqnRoll scenario context. [AfterScenario(Order = 0)] public static void RethrowScenarioBindingAvailableValidation(ScenarioContext scenarioContext) { @@ -40,7 +40,7 @@ public static void RethrowScenarioBindingAvailableValidation(ScenarioContext sce /// Detects whether any feature teardown exceptions were detected by , /// and rethrows them. /// - /// SpecFlow feature context. + /// ReqnRoll feature context. [AfterFeature(Order = int.MaxValue)] public static void RethrowFeatureTeardownExceptions(FeatureContext featureContext) => RethrowTeardownExceptions(featureContext, TeardownExceptions.FeatureContextKey); @@ -49,7 +49,7 @@ public static void RethrowFeatureTeardownExceptions(FeatureContext featureContex /// Detects whether any scenario teardown exceptions were detected by , /// and rethrows them. /// - /// SpecFlow scenario context. + /// ReqnRoll scenario context. [AfterScenario(Order = int.MaxValue)] public static void RethrowScenarioTeardownExceptions(ScenarioContext scenarioContext) => RethrowTeardownExceptions(scenarioContext, TeardownExceptions.ScenarioContextKey); @@ -57,13 +57,13 @@ public static void RethrowScenarioTeardownExceptions(ScenarioContext scenarioCon /// /// Called by helpers that only work if this binding is in place. /// - /// The SpecFlow context. - internal static void VerifyBindingAvailable(SpecFlowContext context) + /// The ReqnRoll context. + internal static void VerifyBindingAvailable(ReqnrollContext context) { if (!context.TryGetValue(TeardownBindingPhaseKey, out bool exceptionsNotYetRethrown)) { throw new InvalidOperationException( - $"This method requires {typeof(TeardownExceptionsBindings).FullName} to be registered with SpecFlow"); + $"This method requires {typeof(TeardownExceptionsBindings).FullName} to be registered with ReqnRoll"); } if (!exceptionsNotYetRethrown) @@ -73,7 +73,7 @@ internal static void VerifyBindingAvailable(SpecFlowContext context) } } - private static void RethrowTeardownExceptions(SpecFlowContext context, string key) + private static void RethrowTeardownExceptions(ReqnrollContext context, string key) { context.Set(false, TeardownBindingPhaseKey); diff --git a/Solutions/Corvus.Testing.SpecFlow.Specs/packages.lock.json b/Solutions/Corvus.Testing.SpecFlow.Specs/packages.lock.json deleted file mode 100644 index 6b435a02..00000000 --- a/Solutions/Corvus.Testing.SpecFlow.Specs/packages.lock.json +++ /dev/null @@ -1,1334 +0,0 @@ -{ - "version": 1, - "dependencies": { - "net8.0": { - "Endjin.RecommendedPractices.GitHub": { - "type": "Direct", - "requested": "[2.1.9, )", - "resolved": "2.1.9", - "contentHash": "gFCDZOu96fU+TfsAkZ7zLUzm8NX1/k3hWt7lbyf5HOn95+hYJQZ+g4bjs/Awx7JODsvNZpON8QlstZQVjPnRxg==", - "dependencies": { - "Endjin.RecommendedPractices": "2.1.9", - "Microsoft.SourceLink.GitHub": "1.1.1" - } - }, - "Roslynator.Analyzers": { - "type": "Direct", - "requested": "[4.9.0, )", - "resolved": "4.9.0", - "contentHash": "lFd4MmkllYR0dKlPWDokRwAvQnjNoPJztlncyzvnCG/wvGr5FzHAencngcJna/wkyDE0xIv7AnUccgCLsoIXTw==" - }, - "StyleCop.Analyzers": { - "type": "Direct", - "requested": "[1.2.0-beta.556, )", - "resolved": "1.2.0-beta.556", - "contentHash": "llRPgmA1fhC0I0QyFLEcjvtM2239QzKr/tcnbsjArLMJxJlu0AA5G7Fft0OI30pHF3MW63Gf4aSSsjc5m82J1Q==", - "dependencies": { - "StyleCop.Analyzers.Unstable": "1.2.0.556" - } - }, - "BoDi": { - "type": "Transitive", - "resolved": "1.5.0", - "contentHash": "CzIPzdIAFSd2zuLxI+0K9s48Qv3HQDbWiApn9h96j284rHs2bSPrn/PMca3mi4q3xLSEqOp+GUJ6+mXDD9prKg==" - }, - "coverlet.msbuild": { - "type": "Transitive", - "resolved": "6.0.0", - "contentHash": "cUKI50VSVBqDQDFIdBnjN0Jk5JYhjtD0geP2BZZv71/ZrKORJXcLRswFsojI+cHdV+rFUL2XDJEpuhK3x1YqLA==" - }, - "Endjin.RecommendedPractices": { - "type": "Transitive", - "resolved": "2.1.9", - "contentHash": "LzppiBrlPBj5TmVsQVxWoGv/MWfq+sAz0qkdB/ozUDS2hq31Pu8j2Cvk+BVlhvrb9eDUQxxHaLL4gbE7LiSAfQ==", - "dependencies": { - "Microsoft.Build.Tasks.Git": "1.1.1" - } - }, - "Gherkin": { - "type": "Transitive", - "resolved": "19.0.3", - "contentHash": "kq9feqMojMj9aABrHb/ABEPaH2Y4dSclseSahAru6qxCeqVQNLLTgw/6vZMauzI1yBUL2fz03ub5yEd5btLfvg==" - }, - "Microsoft.Build.Tasks.Git": { - "type": "Transitive", - "resolved": "1.1.1", - "contentHash": "AT3HlgTjsqHnWpBHSNeR0KxbLZD7bztlZVj7I8vgeYG9SYqbeFGh0TM/KVtC6fg53nrWHl3VfZFvb5BiQFcY6Q==" - }, - "Microsoft.CodeCoverage": { - "type": "Transitive", - "resolved": "17.8.0", - "contentHash": "KC8SXWbGIdoFVdlxKk9WHccm0llm9HypcHMLUUFabRiTS3SO2fQXNZfdiF3qkEdTJhbRrxhdRxjL4jbtwPq4Ew==" - }, - "Microsoft.DotNet.InternalAbstractions": { - "type": "Transitive", - "resolved": "1.0.0", - "contentHash": "AAguUq7YyKk3yDWPoWA8DrLZvURxB/LrDdTn1h5lmPeznkFUpfC3p459w5mQYQE0qpquf/CkSQZ0etiV5vRHFA==", - "dependencies": { - "System.AppContext": "4.1.0", - "System.Collections": "4.0.11", - "System.IO": "4.1.0", - "System.IO.FileSystem": "4.0.1", - "System.Reflection.TypeExtensions": "4.1.0", - "System.Runtime.Extensions": "4.1.0", - "System.Runtime.InteropServices": "4.1.0", - "System.Runtime.InteropServices.RuntimeInformation": "4.0.0" - } - }, - "Microsoft.DotNet.PlatformAbstractions": { - "type": "Transitive", - "resolved": "1.0.3", - "contentHash": "rF92Gp5L2asYrFNf0cKNBxzzGLh1krHuj6TRDk9wdjN2qdvJLaNYOn1s9oYkMlptYX436KiEFqxhLB+I5veXvQ==", - "dependencies": { - "System.AppContext": "4.1.0", - "System.Collections": "4.0.11", - "System.IO": "4.1.0", - "System.IO.FileSystem": "4.0.1", - "System.Reflection.TypeExtensions": "4.1.0", - "System.Runtime.Extensions": "4.1.0", - "System.Runtime.InteropServices": "4.1.0", - "System.Runtime.InteropServices.RuntimeInformation": "4.0.0" - } - }, - "Microsoft.Extensions.Configuration.Abstractions": { - "type": "Transitive", - "resolved": "6.0.0", - "contentHash": "qWzV9o+ZRWq+pGm+1dF+R7qTgTYoXvbyowRoBxQJGfqTpqDun2eteerjRQhq5PQ/14S+lqto3Ft4gYaRyl4rdQ==", - "dependencies": { - "Microsoft.Extensions.Primitives": "6.0.0" - } - }, - "Microsoft.Extensions.DependencyInjection": { - "type": "Transitive", - "resolved": "6.0.1", - "contentHash": "vWXPg3HJQIpZkENn1KWq8SfbqVujVD7S7vIAyFXXqK5xkf1Vho+vG0bLBCHxU36lD1cLLtmGpfYf0B3MYFi9tQ==", - "dependencies": { - "Microsoft.Extensions.DependencyInjection.Abstractions": "6.0.0", - "System.Runtime.CompilerServices.Unsafe": "6.0.0" - } - }, - "Microsoft.Extensions.DependencyInjection.Abstractions": { - "type": "Transitive", - "resolved": "6.0.0", - "contentHash": "xlzi2IYREJH3/m6+lUrQlujzX8wDitm4QGnUu6kUXTQAWPuZY8i+ticFJbzfqaetLA6KR/rO6Ew/HuYD+bxifg==" - }, - "Microsoft.Extensions.DependencyModel": { - "type": "Transitive", - "resolved": "1.0.3", - "contentHash": "Z3o19EnheuegmvgpCzwoSlnCWxYA6qIUhvKJ7ifKHHvU7U+oYR/gliLiL3LVYOOeGMEEzkpJ5W67sOcXizGtlw==", - "dependencies": { - "Microsoft.DotNet.PlatformAbstractions": "1.0.3", - "Newtonsoft.Json": "9.0.1", - "System.Diagnostics.Debug": "4.0.11", - "System.Dynamic.Runtime": "4.0.11", - "System.Linq": "4.1.0" - } - }, - "Microsoft.Extensions.Primitives": { - "type": "Transitive", - "resolved": "6.0.0", - "contentHash": "9+PnzmQFfEFNR9J2aDTfJGGupShHjOuGw4VUv+JB044biSHrnmCIMD+mJHmb2H7YryrfBEXDurxQ47gJZdCKNQ==", - "dependencies": { - "System.Runtime.CompilerServices.Unsafe": "6.0.0" - } - }, - "Microsoft.NET.Test.Sdk": { - "type": "Transitive", - "resolved": "17.8.0", - "contentHash": "BmTYGbD/YuDHmApIENdoyN1jCk0Rj1fJB0+B/fVekyTdVidr91IlzhqzytiUgaEAzL1ZJcYCme0MeBMYvJVzvw==", - "dependencies": { - "Microsoft.CodeCoverage": "17.8.0", - "Microsoft.TestPlatform.TestHost": "17.8.0" - } - }, - "Microsoft.NETCore.Platforms": { - "type": "Transitive", - "resolved": "3.1.0", - "contentHash": "z7aeg8oHln2CuNulfhiLYxCVMPEwBl3rzicjvIX+4sUuCwvXw5oXQEtbiU2c0z4qYL5L3Kmx0mMA/+t/SbY67w==" - }, - "Microsoft.NETCore.Targets": { - "type": "Transitive", - "resolved": "1.1.0", - "contentHash": "aOZA3BWfz9RXjpzt0sRJJMjAscAUm3Hoa4UWAfceV9UTYxgwZ1lZt5nO2myFf+/jetYQo4uTP7zS8sJY67BBxg==" - }, - "Microsoft.SourceLink.Common": { - "type": "Transitive", - "resolved": "1.1.1", - "contentHash": "WMcGpWKrmJmzrNeuaEb23bEMnbtR/vLmvZtkAP5qWu7vQsY59GqfRJd65sFpBszbd2k/bQ8cs8eWawQKAabkVg==" - }, - "Microsoft.SourceLink.GitHub": { - "type": "Transitive", - "resolved": "1.1.1", - "contentHash": "IaJGnOv/M7UQjRJks7B6p7pbPnOwisYGOIzqCz5ilGFTApZ3ktOR+6zJ12ZRPInulBmdAf1SrGdDG2MU8g6XTw==", - "dependencies": { - "Microsoft.Build.Tasks.Git": "1.1.1", - "Microsoft.SourceLink.Common": "1.1.1" - } - }, - "Microsoft.TestPlatform.ObjectModel": { - "type": "Transitive", - "resolved": "17.8.0", - "contentHash": "AYy6vlpGMfz5kOFq99L93RGbqftW/8eQTqjT9iGXW6s9MRP3UdtY8idJ8rJcjeSja8A18IhIro5YnH3uv1nz4g==", - "dependencies": { - "NuGet.Frameworks": "6.5.0", - "System.Reflection.Metadata": "1.6.0" - } - }, - "Microsoft.TestPlatform.TestHost": { - "type": "Transitive", - "resolved": "17.8.0", - "contentHash": "9ivcl/7SGRmOT0YYrHQGohWiT5YCpkmy/UEzldfVisLm6QxbLaK3FAJqZXI34rnRLmqqDCeMQxKINwmKwAPiDw==", - "dependencies": { - "Microsoft.TestPlatform.ObjectModel": "17.8.0", - "Newtonsoft.Json": "13.0.1" - } - }, - "Microsoft.Win32.Primitives": { - "type": "Transitive", - "resolved": "4.3.0", - "contentHash": "9ZQKCWxH7Ijp9BfahvL2Zyf1cJIk8XYLF6Yjzr2yi0b2cOut/HQ31qf1ThHAgCc3WiZMdnWcfJCgN82/0UunxA==", - "dependencies": { - "Microsoft.NETCore.Platforms": "1.1.0", - "Microsoft.NETCore.Targets": "1.1.0", - "System.Runtime": "4.3.0" - } - }, - "Microsoft.Win32.Registry": { - "type": "Transitive", - "resolved": "4.7.0", - "contentHash": "KSrRMb5vNi0CWSGG1++id2ZOs/1QhRqROt+qgbEAdQuGjGrFcl4AOl4/exGPUYz2wUnU42nvJqon1T3U0kPXLA==", - "dependencies": { - "System.Security.AccessControl": "4.7.0", - "System.Security.Principal.Windows": "4.7.0" - } - }, - "NETStandard.Library": { - "type": "Transitive", - "resolved": "2.0.0", - "contentHash": "7jnbRU+L08FXKMxqUflxEXtVymWvNOrS8yHgu9s6EM8Anr6T/wIX4nZ08j/u3Asz+tCufp3YVwFSEvFTPYmBPA==", - "dependencies": { - "Microsoft.NETCore.Platforms": "1.1.0" - } - }, - "Newtonsoft.Json": { - "type": "Transitive", - "resolved": "13.0.1", - "contentHash": "ppPFpBcvxdsfUonNcvITKqLl3bqxWbDCZIzDWHzjpdAHRFfZe0Dw9HmA0+za13IdyrgJwpkDTDA9fHaxOrt20A==" - }, - "NuGet.Frameworks": { - "type": "Transitive", - "resolved": "6.5.0", - "contentHash": "QWINE2x3MbTODsWT1Gh71GaGb5icBz4chS8VYvTgsBnsi8esgN6wtHhydd7fvToWECYGq7T4cgBBDiKD/363fg==" - }, - "NUnit": { - "type": "Transitive", - "resolved": "3.14.0", - "contentHash": "R7iPwD7kbOaP3o2zldWJbWeMQAvDKD0uld27QvA3PAALl1unl7x0v2J7eGiJOYjimV/BuGT4VJmr45RjS7z4LA==", - "dependencies": { - "NETStandard.Library": "2.0.0" - } - }, - "NUnit.Console": { - "type": "Transitive", - "resolved": "3.12.0", - "contentHash": "9KXFnViEIKQjz4vqiYFpLV9sntfHxixQomLCJzDMXC6WDo9DP2GhDQiBND6we6MRStMSNzoAWgourbLKwo7utQ==", - "dependencies": { - "NUnit.ConsoleRunner": "3.12.0", - "NUnit.Extension.NUnitProjectLoader": "3.6.0", - "NUnit.Extension.NUnitV2Driver": "3.8.0", - "NUnit.Extension.NUnitV2ResultWriter": "3.6.0", - "NUnit.Extension.TeamCityEventListener": "1.0.7", - "NUnit.Extension.VSProjectLoader": "3.8.0" - } - }, - "NUnit.ConsoleRunner": { - "type": "Transitive", - "resolved": "3.12.0", - "contentHash": "ZUtI8leU9ozCjLy4ZZ2X6ClU0hxfQtb95VOdmMA4SxIUvf62rIPxoHXS+jghvo5QxgRihGGcEp8xT3vCfgDdsA==" - }, - "NUnit.Extension.NUnitProjectLoader": { - "type": "Transitive", - "resolved": "3.6.0", - "contentHash": "ev2+dCJShMNIATkYNm/vHEuieBfbismr9DcUfBvafJZf5vNyugXPuMXO/MaOFcJaoW9j6/zjMmXKG7R5umWzXA==" - }, - "NUnit.Extension.NUnitV2Driver": { - "type": "Transitive", - "resolved": "3.8.0", - "contentHash": "l6MgFJPTnrlDaMXWfbUZ82h1uvtj0C1ExPpqm6HrYOBa5Z4MBwmFLqj85rnv9JMhu/Ju7jQB/FIaMbfoXInI2A==" - }, - "NUnit.Extension.NUnitV2ResultWriter": { - "type": "Transitive", - "resolved": "3.6.0", - "contentHash": "P/Nc+wgFRe3dT59/VjhiIT0SWfLMbb/Vc9AtBU3L71VOCs8zQnuNjCOEFLQL/Mq6XSaZeB2Sug9tUgTfCnQk9w==" - }, - "NUnit.Extension.TeamCityEventListener": { - "type": "Transitive", - "resolved": "1.0.7", - "contentHash": "bw+ZwHsUmxqb9leo91qLEF7ggtdpawY2V6wNqHI6+ATa2SHxHxoxiV5UV07ZWDRpf/qlQJELNlZu7wIB3+w2qQ==" - }, - "NUnit.Extension.VSProjectLoader": { - "type": "Transitive", - "resolved": "3.8.0", - "contentHash": "CIScV9a7+wUu6Ylb+WO0q/WGWQVoB05TUj3XZHa1CO+2BInDdfIVkqtlrSguhy6D/AGIMaLVrCZpQkQ2m0bbzQ==" - }, - "NUnit3TestAdapter": { - "type": "Transitive", - "resolved": "3.17.0", - "contentHash": "I9MNvK+GM2yXrHPitwZkAZKU9sYI2OO/8wKC+VuBD7V3z+ySQ1pSopX/urr0ooedI8/TIcajYPRO4vGRr7AM8A==", - "dependencies": { - "Microsoft.DotNet.InternalAbstractions": "1.0.0", - "System.ComponentModel.EventBasedAsync": "4.3.0", - "System.ComponentModel.TypeConverter": "4.3.0", - "System.Diagnostics.Process": "4.3.0", - "System.Reflection": "4.3.0", - "System.Runtime.InteropServices.RuntimeInformation": "4.3.0", - "System.Threading.Thread": "4.3.0", - "System.Xml.XPath.XmlDocument": "4.3.0", - "System.Xml.XmlDocument": "4.3.0" - } - }, - "runtime.debian.8-x64.runtime.native.System.Security.Cryptography.OpenSsl": { - "type": "Transitive", - "resolved": "4.3.2", - "contentHash": "7VSGO0URRKoMEAq0Sc9cRz8mb6zbyx/BZDEWhgPdzzpmFhkam3fJ1DAGWFXBI4nGlma+uPKpfuMQP5LXRnOH5g==" - }, - "runtime.fedora.23-x64.runtime.native.System.Security.Cryptography.OpenSsl": { - "type": "Transitive", - "resolved": "4.3.2", - "contentHash": "0oAaTAm6e2oVH+/Zttt0cuhGaePQYKII1dY8iaqP7CvOpVKgLybKRFvQjXR2LtxXOXTVPNv14j0ot8uV+HrUmw==" - }, - "runtime.fedora.24-x64.runtime.native.System.Security.Cryptography.OpenSsl": { - "type": "Transitive", - "resolved": "4.3.2", - "contentHash": "G24ibsCNi5Kbz0oXWynBoRgtGvsw5ZSVEWjv13/KiCAM8C6wz9zzcCniMeQFIkJ2tasjo2kXlvlBZhplL51kGg==" - }, - "runtime.native.System": { - "type": "Transitive", - "resolved": "4.3.0", - "contentHash": "c/qWt2LieNZIj1jGnVNsE2Kl23Ya2aSTBuXMD6V7k9KWr6l16Tqdwq+hJScEpWER9753NWC8h96PaVNY5Ld7Jw==", - "dependencies": { - "Microsoft.NETCore.Platforms": "1.1.0", - "Microsoft.NETCore.Targets": "1.1.0" - } - }, - "runtime.native.System.Net.Http": { - "type": "Transitive", - "resolved": "4.3.0", - "contentHash": "ZVuZJqnnegJhd2k/PtAbbIcZ3aZeITq3sj06oKfMBSfphW3HDmk/t4ObvbOk/JA/swGR0LNqMksAh/f7gpTROg==", - "dependencies": { - "Microsoft.NETCore.Platforms": "1.1.0", - "Microsoft.NETCore.Targets": "1.1.0" - } - }, - "runtime.native.System.Security.Cryptography.Apple": { - "type": "Transitive", - "resolved": "4.3.0", - "contentHash": "DloMk88juo0OuOWr56QG7MNchmafTLYWvABy36izkrLI5VledI0rq28KGs1i9wbpeT9NPQrx/wTf8U2vazqQ3Q==", - "dependencies": { - "runtime.osx.10.10-x64.runtime.native.System.Security.Cryptography.Apple": "4.3.0" - } - }, - "runtime.native.System.Security.Cryptography.OpenSsl": { - "type": "Transitive", - "resolved": "4.3.2", - "contentHash": "QR1OwtwehHxSeQvZKXe+iSd+d3XZNkEcuWMFYa2i0aG1l+lR739HPicKMlTbJst3spmeekDVBUS7SeS26s4U/g==", - "dependencies": { - "runtime.debian.8-x64.runtime.native.System.Security.Cryptography.OpenSsl": "4.3.2", - "runtime.fedora.23-x64.runtime.native.System.Security.Cryptography.OpenSsl": "4.3.2", - "runtime.fedora.24-x64.runtime.native.System.Security.Cryptography.OpenSsl": "4.3.2", - "runtime.opensuse.13.2-x64.runtime.native.System.Security.Cryptography.OpenSsl": "4.3.2", - "runtime.opensuse.42.1-x64.runtime.native.System.Security.Cryptography.OpenSsl": "4.3.2", - "runtime.osx.10.10-x64.runtime.native.System.Security.Cryptography.OpenSsl": "4.3.2", - "runtime.rhel.7-x64.runtime.native.System.Security.Cryptography.OpenSsl": "4.3.2", - "runtime.ubuntu.14.04-x64.runtime.native.System.Security.Cryptography.OpenSsl": "4.3.2", - "runtime.ubuntu.16.04-x64.runtime.native.System.Security.Cryptography.OpenSsl": "4.3.2", - "runtime.ubuntu.16.10-x64.runtime.native.System.Security.Cryptography.OpenSsl": "4.3.2" - } - }, - "runtime.opensuse.13.2-x64.runtime.native.System.Security.Cryptography.OpenSsl": { - "type": "Transitive", - "resolved": "4.3.2", - "contentHash": "I+GNKGg2xCHueRd1m9PzeEW7WLbNNLznmTuEi8/vZX71HudUbx1UTwlGkiwMri7JLl8hGaIAWnA/GONhu+LOyQ==" - }, - "runtime.opensuse.42.1-x64.runtime.native.System.Security.Cryptography.OpenSsl": { - "type": "Transitive", - "resolved": "4.3.2", - "contentHash": "1Z3TAq1ytS1IBRtPXJvEUZdVsfWfeNEhBkbiOCGEl9wwAfsjP2lz3ZFDx5tq8p60/EqbS0HItG5piHuB71RjoA==" - }, - "runtime.osx.10.10-x64.runtime.native.System.Security.Cryptography.Apple": { - "type": "Transitive", - "resolved": "4.3.0", - "contentHash": "kVXCuMTrTlxq4XOOMAysuNwsXWpYeboGddNGpIgNSZmv1b6r/s/DPk0fYMB7Q5Qo4bY68o48jt4T4y5BVecbCQ==" - }, - "runtime.osx.10.10-x64.runtime.native.System.Security.Cryptography.OpenSsl": { - "type": "Transitive", - "resolved": "4.3.2", - "contentHash": "6mU/cVmmHtQiDXhnzUImxIcDL48GbTk+TsptXyJA+MIOG9LRjPoAQC/qBFB7X+UNyK86bmvGwC8t+M66wsYC8w==" - }, - "runtime.rhel.7-x64.runtime.native.System.Security.Cryptography.OpenSsl": { - "type": "Transitive", - "resolved": "4.3.2", - "contentHash": "vjwG0GGcTW/PPg6KVud8F9GLWYuAV1rrw1BKAqY0oh4jcUqg15oYF1+qkGR2x2ZHM4DQnWKQ7cJgYbfncz/lYg==" - }, - "runtime.ubuntu.14.04-x64.runtime.native.System.Security.Cryptography.OpenSsl": { - "type": "Transitive", - "resolved": "4.3.2", - "contentHash": "7KMFpTkHC/zoExs+PwP8jDCWcrK9H6L7soowT80CUx3e+nxP/AFnq0AQAW5W76z2WYbLAYCRyPfwYFG6zkvQRw==" - }, - "runtime.ubuntu.16.04-x64.runtime.native.System.Security.Cryptography.OpenSsl": { - "type": "Transitive", - "resolved": "4.3.2", - "contentHash": "xrlmRCnKZJLHxyyLIqkZjNXqgxnKdZxfItrPkjI+6pkRo5lHX8YvSZlWrSI5AVwLMi4HbNWP7064hcAWeZKp5w==" - }, - "runtime.ubuntu.16.10-x64.runtime.native.System.Security.Cryptography.OpenSsl": { - "type": "Transitive", - "resolved": "4.3.2", - "contentHash": "leXiwfiIkW7Gmn7cgnNcdtNAU70SjmKW3jxGj1iKHOvdn0zRWsgv/l2OJUO5zdGdiv2VRFnAsxxhDgMzofPdWg==" - }, - "SpecFlow": { - "type": "Transitive", - "resolved": "3.9.74", - "contentHash": "n6kcg9ZeQWxqJFoT23SsFT89U1QQNwvcN9pAX5alB6ZPr6K0p5D5nGIJ1PZsSaFaRFutiwQ+DicmxBCPAZVYIA==", - "dependencies": { - "BoDi": "1.5.0", - "Gherkin": "19.0.3", - "Microsoft.Extensions.DependencyModel": "1.0.3", - "SpecFlow.Internal.Json": "1.0.8", - "System.Configuration.ConfigurationManager": "4.5.0", - "System.Net.Http": "4.3.4", - "System.Runtime.Loader": "4.3.0" - } - }, - "SpecFlow.Internal.Json": { - "type": "Transitive", - "resolved": "1.0.8", - "contentHash": "lVCC/Rie7N5rFoc7YxPS0nneLfsWSTIMMlkndwxhaD8MxBp3Bsv1HeiVjVwXCjWaQeoqZcvIy52fF5Xit00ZLw==" - }, - "SpecFlow.NUnit": { - "type": "Transitive", - "resolved": "3.9.74", - "contentHash": "nMPLztTT5IZDMnvNCUxklqaM+agn4kjuNy/qAcYQQOxau2G1MF73UxhL9OXjJQaEuPuyT8gJvXudOYCFZWztxA==", - "dependencies": { - "NUnit": "3.13.1", - "SpecFlow": "[3.9.74]", - "SpecFlow.Tools.MsBuild.Generation": "[3.9.74]" - } - }, - "SpecFlow.NUnit.Runners": { - "type": "Transitive", - "resolved": "3.9.74", - "contentHash": "m595x3GM7CYco+KsXo96irQ2jcjC6+1+41bKdmnTdl3RAvnC4jUZ9f5B5FhGuaVK4+j4GwWi8MZtGMrT//zHLA==", - "dependencies": { - "NUnit.Console": "3.12.0", - "NUnit3TestAdapter": "3.17.0", - "SpecFlow.NUnit": "[3.9.74]" - } - }, - "SpecFlow.Tools.MsBuild.Generation": { - "type": "Transitive", - "resolved": "3.9.74", - "contentHash": "I/9OvmKOohJqIUNJ0xGYJCWfL6WKDaes8OoOAD/2yhGX+tzC5ofs9yqkP9Cu/xfnIx+11IR3pZs7YhBhGAcgWQ==", - "dependencies": { - "SpecFlow": "[3.9.74]" - } - }, - "StyleCop.Analyzers.Unstable": { - "type": "Transitive", - "resolved": "1.2.0.556", - "contentHash": "zvn9Mqs/ox/83cpYPignI8hJEM2A93s2HkHs8HYMOAQW0PkampyoErAiIyKxgTLqbbad29HX/shv/6LGSjPJNQ==" - }, - "System.AppContext": { - "type": "Transitive", - "resolved": "4.1.0", - "contentHash": "3QjO4jNV7PdKkmQAVp9atA+usVnKRwI3Kx1nMwJ93T0LcQfx7pKAYk0nKz5wn1oP5iqlhZuy6RXOFdhr7rDwow==", - "dependencies": { - "System.Runtime": "4.1.0" - } - }, - "System.CodeDom": { - "type": "Transitive", - "resolved": "4.7.0", - "contentHash": "Hs9pw/kmvH3lXaZ1LFKj3pLQsiGfj2xo3sxSzwiLlRL6UcMZUTeCfoJ9Udalvn3yq5dLlPEZzYegrTQ1/LhPOQ==" - }, - "System.Collections": { - "type": "Transitive", - "resolved": "4.3.0", - "contentHash": "3Dcj85/TBdVpL5Zr+gEEBUuFe2icOnLalmEh9hfck1PTYbbyWuZgh4fmm2ysCLTrqLQw6t3TgTyJ+VLp+Qb+Lw==", - "dependencies": { - "Microsoft.NETCore.Platforms": "1.1.0", - "Microsoft.NETCore.Targets": "1.1.0", - "System.Runtime": "4.3.0" - } - }, - "System.Collections.Concurrent": { - "type": "Transitive", - "resolved": "4.3.0", - "contentHash": "ztl69Xp0Y/UXCL+3v3tEU+lIy+bvjKNUmopn1wep/a291pVPK7dxBd6T7WnlQqRog+d1a/hSsgRsmFnIBKTPLQ==", - "dependencies": { - "System.Collections": "4.3.0", - "System.Diagnostics.Debug": "4.3.0", - "System.Diagnostics.Tracing": "4.3.0", - "System.Globalization": "4.3.0", - "System.Reflection": "4.3.0", - "System.Resources.ResourceManager": "4.3.0", - "System.Runtime": "4.3.0", - "System.Runtime.Extensions": "4.3.0", - "System.Threading": "4.3.0", - "System.Threading.Tasks": "4.3.0" - } - }, - "System.Collections.NonGeneric": { - "type": "Transitive", - "resolved": "4.3.0", - "contentHash": "prtjIEMhGUnQq6RnPEYLpFt8AtLbp9yq2zxOSrY7KJJZrw25Fi97IzBqY7iqssbM61Ek5b8f3MG/sG1N2sN5KA==", - "dependencies": { - "System.Diagnostics.Debug": "4.3.0", - "System.Globalization": "4.3.0", - "System.Resources.ResourceManager": "4.3.0", - "System.Runtime": "4.3.0", - "System.Runtime.Extensions": "4.3.0", - "System.Threading": "4.3.0" - } - }, - "System.Collections.Specialized": { - "type": "Transitive", - "resolved": "4.3.0", - "contentHash": "Epx8PoVZR0iuOnJJDzp7pWvdfMMOAvpUo95pC4ScH2mJuXkKA2Y4aR3cG9qt2klHgSons1WFh4kcGW7cSXvrxg==", - "dependencies": { - "System.Collections.NonGeneric": "4.3.0", - "System.Globalization": "4.3.0", - "System.Globalization.Extensions": "4.3.0", - "System.Resources.ResourceManager": "4.3.0", - "System.Runtime": "4.3.0", - "System.Runtime.Extensions": "4.3.0", - "System.Threading": "4.3.0" - } - }, - "System.ComponentModel": { - "type": "Transitive", - "resolved": "4.3.0", - "contentHash": "VyGn1jGRZVfxnh8EdvDCi71v3bMXrsu8aYJOwoV7SNDLVhiEqwP86pPMyRGsDsxhXAm2b3o9OIqeETfN5qfezw==", - "dependencies": { - "System.Runtime": "4.3.0" - } - }, - "System.ComponentModel.EventBasedAsync": { - "type": "Transitive", - "resolved": "4.3.0", - "contentHash": "fCFl8f0XdwA/BuoNrVBB5D0Y48/hv2J+w4xSDdXQitXZsR6UCSOrDVE7TCUraY802ENwcHUnUCv4En8CupDU1g==", - "dependencies": { - "System.Resources.ResourceManager": "4.3.0", - "System.Runtime": "4.3.0", - "System.Threading": "4.3.0", - "System.Threading.Tasks": "4.3.0" - } - }, - "System.ComponentModel.Primitives": { - "type": "Transitive", - "resolved": "4.3.0", - "contentHash": "j8GUkCpM8V4d4vhLIIoBLGey2Z5bCkMVNjEZseyAlm4n5arcsJOeI3zkUP+zvZgzsbLTYh4lYeP/ZD/gdIAPrw==", - "dependencies": { - "System.ComponentModel": "4.3.0", - "System.Resources.ResourceManager": "4.3.0", - "System.Runtime": "4.3.0" - } - }, - "System.ComponentModel.TypeConverter": { - "type": "Transitive", - "resolved": "4.3.0", - "contentHash": "16pQ6P+EdhcXzPiEK4kbA953Fu0MNG2ovxTZU81/qsCd1zPRsKc3uif5NgvllCY598k6bI0KUyKW8fanlfaDQg==", - "dependencies": { - "System.Collections": "4.3.0", - "System.Collections.NonGeneric": "4.3.0", - "System.Collections.Specialized": "4.3.0", - "System.ComponentModel": "4.3.0", - "System.ComponentModel.Primitives": "4.3.0", - "System.Globalization": "4.3.0", - "System.Linq": "4.3.0", - "System.Reflection": "4.3.0", - "System.Reflection.Extensions": "4.3.0", - "System.Reflection.Primitives": "4.3.0", - "System.Reflection.TypeExtensions": "4.3.0", - "System.Resources.ResourceManager": "4.3.0", - "System.Runtime": "4.3.0", - "System.Runtime.Extensions": "4.3.0", - "System.Threading": "4.3.0" - } - }, - "System.Configuration.ConfigurationManager": { - "type": "Transitive", - "resolved": "4.5.0", - "contentHash": "UIFvaFfuKhLr9u5tWMxmVoDPkFeD+Qv8gUuap4aZgVGYSYMdERck4OhLN/2gulAc0nYTEigWXSJNNWshrmxnng==", - "dependencies": { - "System.Security.Cryptography.ProtectedData": "4.5.0", - "System.Security.Permissions": "4.5.0" - } - }, - "System.Diagnostics.Debug": { - "type": "Transitive", - "resolved": "4.3.0", - "contentHash": "ZUhUOdqmaG5Jk3Xdb8xi5kIyQYAA4PnTNlHx1mu9ZY3qv4ELIdKbnL/akbGaKi2RnNUWaZsAs31rvzFdewTj2g==", - "dependencies": { - "Microsoft.NETCore.Platforms": "1.1.0", - "Microsoft.NETCore.Targets": "1.1.0", - "System.Runtime": "4.3.0" - } - }, - "System.Diagnostics.DiagnosticSource": { - "type": "Transitive", - "resolved": "4.3.0", - "contentHash": "tD6kosZnTAGdrEa0tZSuFyunMbt/5KYDnHdndJYGqZoNy00XVXyACd5d6KnE1YgYv3ne2CjtAfNXo/fwEhnKUA==", - "dependencies": { - "System.Collections": "4.3.0", - "System.Diagnostics.Tracing": "4.3.0", - "System.Reflection": "4.3.0", - "System.Runtime": "4.3.0", - "System.Threading": "4.3.0" - } - }, - "System.Diagnostics.Process": { - "type": "Transitive", - "resolved": "4.3.0", - "contentHash": "J0wOX07+QASQblsfxmIMFc9Iq7KTXYL3zs2G/Xc704Ylv3NpuVdo6gij6V3PGiptTxqsK0K7CdXenRvKUnkA2g==", - "dependencies": { - "Microsoft.NETCore.Platforms": "1.1.0", - "Microsoft.Win32.Primitives": "4.3.0", - "Microsoft.Win32.Registry": "4.3.0", - "System.Collections": "4.3.0", - "System.Diagnostics.Debug": "4.3.0", - "System.Globalization": "4.3.0", - "System.IO": "4.3.0", - "System.IO.FileSystem": "4.3.0", - "System.IO.FileSystem.Primitives": "4.3.0", - "System.Resources.ResourceManager": "4.3.0", - "System.Runtime": "4.3.0", - "System.Runtime.Extensions": "4.3.0", - "System.Runtime.Handles": "4.3.0", - "System.Runtime.InteropServices": "4.3.0", - "System.Text.Encoding": "4.3.0", - "System.Text.Encoding.Extensions": "4.3.0", - "System.Threading": "4.3.0", - "System.Threading.Tasks": "4.3.0", - "System.Threading.Thread": "4.3.0", - "System.Threading.ThreadPool": "4.3.0", - "runtime.native.System": "4.3.0" - } - }, - "System.Diagnostics.Tracing": { - "type": "Transitive", - "resolved": "4.3.0", - "contentHash": "rswfv0f/Cqkh78rA5S8eN8Neocz234+emGCtTF3lxPY96F+mmmUen6tbn0glN6PMvlKQb9bPAY5e9u7fgPTkKw==", - "dependencies": { - "Microsoft.NETCore.Platforms": "1.1.0", - "Microsoft.NETCore.Targets": "1.1.0", - "System.Runtime": "4.3.0" - } - }, - "System.Dynamic.Runtime": { - "type": "Transitive", - "resolved": "4.0.11", - "contentHash": "db34f6LHYM0U0JpE+sOmjar27BnqTVkbLJhgfwMpTdgTigG/Hna3m2MYVwnFzGGKnEJk2UXFuoVTr8WUbU91/A==", - "dependencies": { - "System.Collections": "4.0.11", - "System.Diagnostics.Debug": "4.0.11", - "System.Globalization": "4.0.11", - "System.Linq": "4.1.0", - "System.Linq.Expressions": "4.1.0", - "System.ObjectModel": "4.0.12", - "System.Reflection": "4.1.0", - "System.Reflection.Emit": "4.0.1", - "System.Reflection.Emit.ILGeneration": "4.0.1", - "System.Reflection.Primitives": "4.0.1", - "System.Reflection.TypeExtensions": "4.1.0", - "System.Resources.ResourceManager": "4.0.1", - "System.Runtime": "4.1.0", - "System.Runtime.Extensions": "4.1.0", - "System.Threading": "4.0.11" - } - }, - "System.Globalization": { - "type": "Transitive", - "resolved": "4.3.0", - "contentHash": "kYdVd2f2PAdFGblzFswE4hkNANJBKRmsfa2X5LG2AcWE1c7/4t0pYae1L8vfZ5xvE2nK/R9JprtToA61OSHWIg==", - "dependencies": { - "Microsoft.NETCore.Platforms": "1.1.0", - "Microsoft.NETCore.Targets": "1.1.0", - "System.Runtime": "4.3.0" - } - }, - "System.Globalization.Calendars": { - "type": "Transitive", - "resolved": "4.3.0", - "contentHash": "GUlBtdOWT4LTV3I+9/PJW+56AnnChTaOqqTLFtdmype/L500M2LIyXgmtd9X2P2VOkmJd5c67H5SaC2QcL1bFA==", - "dependencies": { - "Microsoft.NETCore.Platforms": "1.1.0", - "Microsoft.NETCore.Targets": "1.1.0", - "System.Globalization": "4.3.0", - "System.Runtime": "4.3.0" - } - }, - "System.Globalization.Extensions": { - "type": "Transitive", - "resolved": "4.3.0", - "contentHash": "FhKmdR6MPG+pxow6wGtNAWdZh7noIOpdD5TwQ3CprzgIE1bBBoim0vbR1+AWsWjQmU7zXHgQo4TWSP6lCeiWcQ==", - "dependencies": { - "Microsoft.NETCore.Platforms": "1.1.0", - "System.Globalization": "4.3.0", - "System.Resources.ResourceManager": "4.3.0", - "System.Runtime": "4.3.0", - "System.Runtime.Extensions": "4.3.0", - "System.Runtime.InteropServices": "4.3.0" - } - }, - "System.IO": { - "type": "Transitive", - "resolved": "4.3.0", - "contentHash": "3qjaHvxQPDpSOYICjUoTsmoq5u6QJAFRUITgeT/4gqkF1bajbSmb1kwSxEA8AHlofqgcKJcM8udgieRNhaJ5Cg==", - "dependencies": { - "Microsoft.NETCore.Platforms": "1.1.0", - "Microsoft.NETCore.Targets": "1.1.0", - "System.Runtime": "4.3.0", - "System.Text.Encoding": "4.3.0", - "System.Threading.Tasks": "4.3.0" - } - }, - "System.IO.FileSystem": { - "type": "Transitive", - "resolved": "4.3.0", - "contentHash": "3wEMARTnuio+ulnvi+hkRNROYwa1kylvYahhcLk4HSoVdl+xxTFVeVlYOfLwrDPImGls0mDqbMhrza8qnWPTdA==", - "dependencies": { - "Microsoft.NETCore.Platforms": "1.1.0", - "Microsoft.NETCore.Targets": "1.1.0", - "System.IO": "4.3.0", - "System.IO.FileSystem.Primitives": "4.3.0", - "System.Runtime": "4.3.0", - "System.Runtime.Handles": "4.3.0", - "System.Text.Encoding": "4.3.0", - "System.Threading.Tasks": "4.3.0" - } - }, - "System.IO.FileSystem.Primitives": { - "type": "Transitive", - "resolved": "4.3.0", - "contentHash": "6QOb2XFLch7bEc4lIcJH49nJN2HV+OC3fHDgsLVsBVBk3Y4hFAnOBGzJ2lUu7CyDDFo9IBWkSsnbkT6IBwwiMw==", - "dependencies": { - "System.Runtime": "4.3.0" - } - }, - "System.Linq": { - "type": "Transitive", - "resolved": "4.3.0", - "contentHash": "5DbqIUpsDp0dFftytzuMmc0oeMdQwjcP/EWxsksIz/w1TcFRkZ3yKKz0PqiYFMmEwPSWw+qNVqD7PJ889JzHbw==", - "dependencies": { - "System.Collections": "4.3.0", - "System.Diagnostics.Debug": "4.3.0", - "System.Resources.ResourceManager": "4.3.0", - "System.Runtime": "4.3.0", - "System.Runtime.Extensions": "4.3.0" - } - }, - "System.Linq.Expressions": { - "type": "Transitive", - "resolved": "4.1.0", - "contentHash": "I+y02iqkgmCAyfbqOmSDOgqdZQ5tTj80Akm5BPSS8EeB0VGWdy6X1KCoYe8Pk6pwDoAKZUOdLVxnTJcExiv5zw==", - "dependencies": { - "System.Collections": "4.0.11", - "System.Diagnostics.Debug": "4.0.11", - "System.Globalization": "4.0.11", - "System.IO": "4.1.0", - "System.Linq": "4.1.0", - "System.ObjectModel": "4.0.12", - "System.Reflection": "4.1.0", - "System.Reflection.Emit": "4.0.1", - "System.Reflection.Emit.ILGeneration": "4.0.1", - "System.Reflection.Emit.Lightweight": "4.0.1", - "System.Reflection.Extensions": "4.0.1", - "System.Reflection.Primitives": "4.0.1", - "System.Reflection.TypeExtensions": "4.1.0", - "System.Resources.ResourceManager": "4.0.1", - "System.Runtime": "4.1.0", - "System.Runtime.Extensions": "4.1.0", - "System.Threading": "4.0.11" - } - }, - "System.Management": { - "type": "Transitive", - "resolved": "4.7.0", - "contentHash": "IY+uuGhgzWiCg21i8IvQeY/Z7m1tX8VuPF+ludfn7iTCaccTtJo5HkjZbBEL8kbBubKhAKKtNXr7uMtmAc28Pw==", - "dependencies": { - "Microsoft.NETCore.Platforms": "3.1.0", - "Microsoft.Win32.Registry": "4.7.0", - "System.CodeDom": "4.7.0" - } - }, - "System.Net.Http": { - "type": "Transitive", - "resolved": "4.3.4", - "contentHash": "aOa2d51SEbmM+H+Csw7yJOuNZoHkrP2XnAurye5HWYgGVVU54YZDvsLUYRv6h18X3sPnjNCANmN7ZhIPiqMcjA==", - "dependencies": { - "Microsoft.NETCore.Platforms": "1.1.1", - "System.Collections": "4.3.0", - "System.Diagnostics.Debug": "4.3.0", - "System.Diagnostics.DiagnosticSource": "4.3.0", - "System.Diagnostics.Tracing": "4.3.0", - "System.Globalization": "4.3.0", - "System.Globalization.Extensions": "4.3.0", - "System.IO": "4.3.0", - "System.IO.FileSystem": "4.3.0", - "System.Net.Primitives": "4.3.0", - "System.Resources.ResourceManager": "4.3.0", - "System.Runtime": "4.3.0", - "System.Runtime.Extensions": "4.3.0", - "System.Runtime.Handles": "4.3.0", - "System.Runtime.InteropServices": "4.3.0", - "System.Security.Cryptography.Algorithms": "4.3.0", - "System.Security.Cryptography.Encoding": "4.3.0", - "System.Security.Cryptography.OpenSsl": "4.3.0", - "System.Security.Cryptography.Primitives": "4.3.0", - "System.Security.Cryptography.X509Certificates": "4.3.0", - "System.Text.Encoding": "4.3.0", - "System.Threading": "4.3.0", - "System.Threading.Tasks": "4.3.0", - "runtime.native.System": "4.3.0", - "runtime.native.System.Net.Http": "4.3.0", - "runtime.native.System.Security.Cryptography.OpenSsl": "4.3.2" - } - }, - "System.Net.Primitives": { - "type": "Transitive", - "resolved": "4.3.0", - "contentHash": "qOu+hDwFwoZPbzPvwut2qATe3ygjeQBDQj91xlsaqGFQUI5i4ZnZb8yyQuLGpDGivEPIt8EJkd1BVzVoP31FXA==", - "dependencies": { - "Microsoft.NETCore.Platforms": "1.1.0", - "Microsoft.NETCore.Targets": "1.1.0", - "System.Runtime": "4.3.0", - "System.Runtime.Handles": "4.3.0" - } - }, - "System.ObjectModel": { - "type": "Transitive", - "resolved": "4.0.12", - "contentHash": "tAgJM1xt3ytyMoW4qn4wIqgJYm7L7TShRZG4+Q4Qsi2PCcj96pXN7nRywS9KkB3p/xDUjc2HSwP9SROyPYDYKQ==", - "dependencies": { - "System.Collections": "4.0.11", - "System.Diagnostics.Debug": "4.0.11", - "System.Resources.ResourceManager": "4.0.1", - "System.Runtime": "4.1.0", - "System.Threading": "4.0.11" - } - }, - "System.Reflection": { - "type": "Transitive", - "resolved": "4.3.0", - "contentHash": "KMiAFoW7MfJGa9nDFNcfu+FpEdiHpWgTcS2HdMpDvt9saK3y/G4GwprPyzqjFH9NTaGPQeWNHU+iDlDILj96aQ==", - "dependencies": { - "Microsoft.NETCore.Platforms": "1.1.0", - "Microsoft.NETCore.Targets": "1.1.0", - "System.IO": "4.3.0", - "System.Reflection.Primitives": "4.3.0", - "System.Runtime": "4.3.0" - } - }, - "System.Reflection.Emit": { - "type": "Transitive", - "resolved": "4.0.1", - "contentHash": "P2wqAj72fFjpP6wb9nSfDqNBMab+2ovzSDzUZK7MVIm54tBJEPr9jWfSjjoTpPwj1LeKcmX3vr0ttyjSSFM47g==", - "dependencies": { - "System.IO": "4.1.0", - "System.Reflection": "4.1.0", - "System.Reflection.Emit.ILGeneration": "4.0.1", - "System.Reflection.Primitives": "4.0.1", - "System.Runtime": "4.1.0" - } - }, - "System.Reflection.Emit.ILGeneration": { - "type": "Transitive", - "resolved": "4.0.1", - "contentHash": "Ov6dU8Bu15Bc7zuqttgHF12J5lwSWyTf1S+FJouUXVMSqImLZzYaQ+vRr1rQ0OZ0HqsrwWl4dsKHELckQkVpgA==", - "dependencies": { - "System.Reflection": "4.1.0", - "System.Reflection.Primitives": "4.0.1", - "System.Runtime": "4.1.0" - } - }, - "System.Reflection.Emit.Lightweight": { - "type": "Transitive", - "resolved": "4.0.1", - "contentHash": "sSzHHXueZ5Uh0OLpUQprhr+ZYJrLPA2Cmr4gn0wj9+FftNKXx8RIMKvO9qnjk2ebPYUjZ+F2ulGdPOsvj+MEjA==", - "dependencies": { - "System.Reflection": "4.1.0", - "System.Reflection.Emit.ILGeneration": "4.0.1", - "System.Reflection.Primitives": "4.0.1", - "System.Runtime": "4.1.0" - } - }, - "System.Reflection.Extensions": { - "type": "Transitive", - "resolved": "4.3.0", - "contentHash": "rJkrJD3kBI5B712aRu4DpSIiHRtr6QlfZSQsb0hYHrDCZORXCFjQfoipo2LaMUHoT9i1B7j7MnfaEKWDFmFQNQ==", - "dependencies": { - "Microsoft.NETCore.Platforms": "1.1.0", - "Microsoft.NETCore.Targets": "1.1.0", - "System.Reflection": "4.3.0", - "System.Runtime": "4.3.0" - } - }, - "System.Reflection.Metadata": { - "type": "Transitive", - "resolved": "1.6.0", - "contentHash": "COC1aiAJjCoA5GBF+QKL2uLqEBew4JsCkQmoHKbN3TlOZKa2fKLz5CpiRQKDz0RsAOEGsVKqOD5bomsXq/4STQ==" - }, - "System.Reflection.Primitives": { - "type": "Transitive", - "resolved": "4.3.0", - "contentHash": "5RXItQz5As4xN2/YUDxdpsEkMhvw3e6aNveFXUn4Hl/udNTCNhnKp8lT9fnc3MhvGKh1baak5CovpuQUXHAlIA==", - "dependencies": { - "Microsoft.NETCore.Platforms": "1.1.0", - "Microsoft.NETCore.Targets": "1.1.0", - "System.Runtime": "4.3.0" - } - }, - "System.Reflection.TypeExtensions": { - "type": "Transitive", - "resolved": "4.3.0", - "contentHash": "7u6ulLcZbyxB5Gq0nMkQttcdBTx57ibzw+4IOXEfR+sXYQoHvjW5LTLyNr8O22UIMrqYbchJQJnos4eooYzYJA==", - "dependencies": { - "System.Reflection": "4.3.0", - "System.Runtime": "4.3.0" - } - }, - "System.Resources.ResourceManager": { - "type": "Transitive", - "resolved": "4.3.0", - "contentHash": "/zrcPkkWdZmI4F92gL/TPumP98AVDu/Wxr3CSJGQQ+XN6wbRZcyfSKVoPo17ilb3iOr0cCRqJInGwNMolqhS8A==", - "dependencies": { - "Microsoft.NETCore.Platforms": "1.1.0", - "Microsoft.NETCore.Targets": "1.1.0", - "System.Globalization": "4.3.0", - "System.Reflection": "4.3.0", - "System.Runtime": "4.3.0" - } - }, - "System.Runtime": { - "type": "Transitive", - "resolved": "4.3.0", - "contentHash": "JufQi0vPQ0xGnAczR13AUFglDyVYt4Kqnz1AZaiKZ5+GICq0/1MH/mO/eAJHt/mHW1zjKBJd7kV26SrxddAhiw==", - "dependencies": { - "Microsoft.NETCore.Platforms": "1.1.0", - "Microsoft.NETCore.Targets": "1.1.0" - } - }, - "System.Runtime.CompilerServices.Unsafe": { - "type": "Transitive", - "resolved": "6.0.0", - "contentHash": "/iUeP3tq1S0XdNNoMz5C9twLSrM/TH+qElHkXWaPvuNOt+99G75NrV0OS2EqHx5wMN7popYjpc8oTjC1y16DLg==" - }, - "System.Runtime.Extensions": { - "type": "Transitive", - "resolved": "4.3.0", - "contentHash": "guW0uK0fn5fcJJ1tJVXYd7/1h5F+pea1r7FLSOz/f8vPEqbR2ZAknuRDvTQ8PzAilDveOxNjSfr0CHfIQfFk8g==", - "dependencies": { - "Microsoft.NETCore.Platforms": "1.1.0", - "Microsoft.NETCore.Targets": "1.1.0", - "System.Runtime": "4.3.0" - } - }, - "System.Runtime.Handles": { - "type": "Transitive", - "resolved": "4.3.0", - "contentHash": "OKiSUN7DmTWeYb3l51A7EYaeNMnvxwE249YtZz7yooT4gOZhmTjIn48KgSsw2k2lYdLgTKNJw/ZIfSElwDRVgg==", - "dependencies": { - "Microsoft.NETCore.Platforms": "1.1.0", - "Microsoft.NETCore.Targets": "1.1.0", - "System.Runtime": "4.3.0" - } - }, - "System.Runtime.InteropServices": { - "type": "Transitive", - "resolved": "4.3.0", - "contentHash": "uv1ynXqiMK8mp1GM3jDqPCFN66eJ5w5XNomaK2XD+TuCroNTLFGeZ+WCmBMcBDyTFKou3P6cR6J/QsaqDp7fGQ==", - "dependencies": { - "Microsoft.NETCore.Platforms": "1.1.0", - "Microsoft.NETCore.Targets": "1.1.0", - "System.Reflection": "4.3.0", - "System.Reflection.Primitives": "4.3.0", - "System.Runtime": "4.3.0", - "System.Runtime.Handles": "4.3.0" - } - }, - "System.Runtime.InteropServices.RuntimeInformation": { - "type": "Transitive", - "resolved": "4.3.0", - "contentHash": "cbz4YJMqRDR7oLeMRbdYv7mYzc++17lNhScCX0goO2XpGWdvAt60CGN+FHdePUEHCe/Jy9jUlvNAiNdM+7jsOw==", - "dependencies": { - "System.Reflection": "4.3.0", - "System.Reflection.Extensions": "4.3.0", - "System.Resources.ResourceManager": "4.3.0", - "System.Runtime": "4.3.0", - "System.Runtime.InteropServices": "4.3.0", - "System.Threading": "4.3.0", - "runtime.native.System": "4.3.0" - } - }, - "System.Runtime.Loader": { - "type": "Transitive", - "resolved": "4.3.0", - "contentHash": "DHMaRn8D8YCK2GG2pw+UzNxn/OHVfaWx7OTLBD/hPegHZZgcZh3H6seWegrC4BYwsfuGrywIuT+MQs+rPqRLTQ==", - "dependencies": { - "System.IO": "4.3.0", - "System.Reflection": "4.3.0", - "System.Runtime": "4.3.0" - } - }, - "System.Runtime.Numerics": { - "type": "Transitive", - "resolved": "4.3.0", - "contentHash": "yMH+MfdzHjy17l2KESnPiF2dwq7T+xLnSJar7slyimAkUh/gTrS9/UQOtv7xarskJ2/XDSNvfLGOBQPjL7PaHQ==", - "dependencies": { - "System.Globalization": "4.3.0", - "System.Resources.ResourceManager": "4.3.0", - "System.Runtime": "4.3.0", - "System.Runtime.Extensions": "4.3.0" - } - }, - "System.Security.AccessControl": { - "type": "Transitive", - "resolved": "4.7.0", - "contentHash": "JECvTt5aFF3WT3gHpfofL2MNNP6v84sxtXxpqhLBCcDRzqsPBmHhQ6shv4DwwN2tRlzsUxtb3G9M3763rbXKDg==", - "dependencies": { - "Microsoft.NETCore.Platforms": "3.1.0", - "System.Security.Principal.Windows": "4.7.0" - } - }, - "System.Security.Cryptography.Algorithms": { - "type": "Transitive", - "resolved": "4.3.0", - "contentHash": "W1kd2Y8mYSCgc3ULTAZ0hOP2dSdG5YauTb1089T0/kRcN2MpSAW1izOFROrJgxSlMn3ArsgHXagigyi+ibhevg==", - "dependencies": { - "Microsoft.NETCore.Platforms": "1.1.0", - "System.Collections": "4.3.0", - "System.IO": "4.3.0", - "System.Resources.ResourceManager": "4.3.0", - "System.Runtime": "4.3.0", - "System.Runtime.Extensions": "4.3.0", - "System.Runtime.Handles": "4.3.0", - "System.Runtime.InteropServices": "4.3.0", - "System.Runtime.Numerics": "4.3.0", - "System.Security.Cryptography.Encoding": "4.3.0", - "System.Security.Cryptography.Primitives": "4.3.0", - "System.Text.Encoding": "4.3.0", - "runtime.native.System.Security.Cryptography.Apple": "4.3.0", - "runtime.native.System.Security.Cryptography.OpenSsl": "4.3.0" - } - }, - "System.Security.Cryptography.Cng": { - "type": "Transitive", - "resolved": "4.3.0", - "contentHash": "03idZOqFlsKRL4W+LuCpJ6dBYDUWReug6lZjBa3uJWnk5sPCUXckocevTaUA8iT/MFSrY/2HXkOt753xQ/cf8g==", - "dependencies": { - "Microsoft.NETCore.Platforms": "1.1.0", - "System.IO": "4.3.0", - "System.Resources.ResourceManager": "4.3.0", - "System.Runtime": "4.3.0", - "System.Runtime.Extensions": "4.3.0", - "System.Runtime.Handles": "4.3.0", - "System.Runtime.InteropServices": "4.3.0", - "System.Security.Cryptography.Algorithms": "4.3.0", - "System.Security.Cryptography.Encoding": "4.3.0", - "System.Security.Cryptography.Primitives": "4.3.0", - "System.Text.Encoding": "4.3.0" - } - }, - "System.Security.Cryptography.Csp": { - "type": "Transitive", - "resolved": "4.3.0", - "contentHash": "X4s/FCkEUnRGnwR3aSfVIkldBmtURMhmexALNTwpjklzxWU7yjMk7GHLKOZTNkgnWnE0q7+BCf9N2LVRWxewaA==", - "dependencies": { - "Microsoft.NETCore.Platforms": "1.1.0", - "System.IO": "4.3.0", - "System.Reflection": "4.3.0", - "System.Resources.ResourceManager": "4.3.0", - "System.Runtime": "4.3.0", - "System.Runtime.Extensions": "4.3.0", - "System.Runtime.Handles": "4.3.0", - "System.Runtime.InteropServices": "4.3.0", - "System.Security.Cryptography.Algorithms": "4.3.0", - "System.Security.Cryptography.Encoding": "4.3.0", - "System.Security.Cryptography.Primitives": "4.3.0", - "System.Text.Encoding": "4.3.0", - "System.Threading": "4.3.0" - } - }, - "System.Security.Cryptography.Encoding": { - "type": "Transitive", - "resolved": "4.3.0", - "contentHash": "1DEWjZZly9ae9C79vFwqaO5kaOlI5q+3/55ohmq/7dpDyDfc8lYe7YVxJUZ5MF/NtbkRjwFRo14yM4OEo9EmDw==", - "dependencies": { - "Microsoft.NETCore.Platforms": "1.1.0", - "System.Collections": "4.3.0", - "System.Collections.Concurrent": "4.3.0", - "System.Linq": "4.3.0", - "System.Resources.ResourceManager": "4.3.0", - "System.Runtime": "4.3.0", - "System.Runtime.Extensions": "4.3.0", - "System.Runtime.Handles": "4.3.0", - "System.Runtime.InteropServices": "4.3.0", - "System.Security.Cryptography.Primitives": "4.3.0", - "System.Text.Encoding": "4.3.0", - "runtime.native.System.Security.Cryptography.OpenSsl": "4.3.0" - } - }, - "System.Security.Cryptography.OpenSsl": { - "type": "Transitive", - "resolved": "4.3.0", - "contentHash": "h4CEgOgv5PKVF/HwaHzJRiVboL2THYCou97zpmhjghx5frc7fIvlkY1jL+lnIQyChrJDMNEXS6r7byGif8Cy4w==", - "dependencies": { - "System.Collections": "4.3.0", - "System.IO": "4.3.0", - "System.Resources.ResourceManager": "4.3.0", - "System.Runtime": "4.3.0", - "System.Runtime.Extensions": "4.3.0", - "System.Runtime.Handles": "4.3.0", - "System.Runtime.InteropServices": "4.3.0", - "System.Runtime.Numerics": "4.3.0", - "System.Security.Cryptography.Algorithms": "4.3.0", - "System.Security.Cryptography.Encoding": "4.3.0", - "System.Security.Cryptography.Primitives": "4.3.0", - "System.Text.Encoding": "4.3.0", - "runtime.native.System.Security.Cryptography.OpenSsl": "4.3.0" - } - }, - "System.Security.Cryptography.Primitives": { - "type": "Transitive", - "resolved": "4.3.0", - "contentHash": "7bDIyVFNL/xKeFHjhobUAQqSpJq9YTOpbEs6mR233Et01STBMXNAc/V+BM6dwYGc95gVh/Zf+iVXWzj3mE8DWg==", - "dependencies": { - "System.Diagnostics.Debug": "4.3.0", - "System.Globalization": "4.3.0", - "System.IO": "4.3.0", - "System.Resources.ResourceManager": "4.3.0", - "System.Runtime": "4.3.0", - "System.Threading": "4.3.0", - "System.Threading.Tasks": "4.3.0" - } - }, - "System.Security.Cryptography.ProtectedData": { - "type": "Transitive", - "resolved": "4.5.0", - "contentHash": "wLBKzFnDCxP12VL9ANydSYhk59fC4cvOr9ypYQLPnAj48NQIhqnjdD2yhP8yEKyBJEjERWS9DisKL7rX5eU25Q==" - }, - "System.Security.Cryptography.X509Certificates": { - "type": "Transitive", - "resolved": "4.3.0", - "contentHash": "t2Tmu6Y2NtJ2um0RtcuhP7ZdNNxXEgUm2JeoA/0NvlMjAhKCnM1NX07TDl3244mVp3QU6LPEhT3HTtH1uF7IYw==", - "dependencies": { - "Microsoft.NETCore.Platforms": "1.1.0", - "System.Collections": "4.3.0", - "System.Diagnostics.Debug": "4.3.0", - "System.Globalization": "4.3.0", - "System.Globalization.Calendars": "4.3.0", - "System.IO": "4.3.0", - "System.IO.FileSystem": "4.3.0", - "System.IO.FileSystem.Primitives": "4.3.0", - "System.Resources.ResourceManager": "4.3.0", - "System.Runtime": "4.3.0", - "System.Runtime.Extensions": "4.3.0", - "System.Runtime.Handles": "4.3.0", - "System.Runtime.InteropServices": "4.3.0", - "System.Runtime.Numerics": "4.3.0", - "System.Security.Cryptography.Algorithms": "4.3.0", - "System.Security.Cryptography.Cng": "4.3.0", - "System.Security.Cryptography.Csp": "4.3.0", - "System.Security.Cryptography.Encoding": "4.3.0", - "System.Security.Cryptography.OpenSsl": "4.3.0", - "System.Security.Cryptography.Primitives": "4.3.0", - "System.Text.Encoding": "4.3.0", - "System.Threading": "4.3.0", - "runtime.native.System": "4.3.0", - "runtime.native.System.Net.Http": "4.3.0", - "runtime.native.System.Security.Cryptography.OpenSsl": "4.3.0" - } - }, - "System.Security.Permissions": { - "type": "Transitive", - "resolved": "4.5.0", - "contentHash": "9gdyuARhUR7H+p5CjyUB/zPk7/Xut3wUSP8NJQB6iZr8L3XUXTMdoLeVAg9N4rqF8oIpE7MpdqHdDHQ7XgJe0g==", - "dependencies": { - "System.Security.AccessControl": "4.5.0" - } - }, - "System.Security.Principal.Windows": { - "type": "Transitive", - "resolved": "4.7.0", - "contentHash": "ojD0PX0XhneCsUbAZVKdb7h/70vyYMDYs85lwEI+LngEONe/17A0cFaRFqZU+sOEidcVswYWikYOQ9PPfjlbtQ==" - }, - "System.Text.Encoding": { - "type": "Transitive", - "resolved": "4.3.0", - "contentHash": "BiIg+KWaSDOITze6jGQynxg64naAPtqGHBwDrLaCtixsa5bKiR8dpPOHA7ge3C0JJQizJE+sfkz1wV+BAKAYZw==", - "dependencies": { - "Microsoft.NETCore.Platforms": "1.1.0", - "Microsoft.NETCore.Targets": "1.1.0", - "System.Runtime": "4.3.0" - } - }, - "System.Text.Encoding.Extensions": { - "type": "Transitive", - "resolved": "4.3.0", - "contentHash": "YVMK0Bt/A43RmwizJoZ22ei2nmrhobgeiYwFzC4YAN+nue8RF6djXDMog0UCn+brerQoYVyaS+ghy9P/MUVcmw==", - "dependencies": { - "Microsoft.NETCore.Platforms": "1.1.0", - "Microsoft.NETCore.Targets": "1.1.0", - "System.Runtime": "4.3.0", - "System.Text.Encoding": "4.3.0" - } - }, - "System.Text.RegularExpressions": { - "type": "Transitive", - "resolved": "4.3.0", - "contentHash": "RpT2DA+L660cBt1FssIE9CAGpLFdFPuheB7pLpKpn6ZXNby7jDERe8Ua/Ne2xGiwLVG2JOqziiaVCGDon5sKFA==", - "dependencies": { - "System.Runtime": "4.3.0" - } - }, - "System.Threading": { - "type": "Transitive", - "resolved": "4.3.0", - "contentHash": "VkUS0kOBcUf3Wwm0TSbrevDDZ6BlM+b/HRiapRFWjM5O0NS0LviG0glKmFK+hhPDd1XFeSdU1GmlLhb2CoVpIw==", - "dependencies": { - "System.Runtime": "4.3.0", - "System.Threading.Tasks": "4.3.0" - } - }, - "System.Threading.Tasks": { - "type": "Transitive", - "resolved": "4.3.0", - "contentHash": "LbSxKEdOUhVe8BezB/9uOGGppt+nZf6e1VFyw6v3DN6lqitm0OSn2uXMOdtP0M3W4iMcqcivm2J6UgqiwwnXiA==", - "dependencies": { - "Microsoft.NETCore.Platforms": "1.1.0", - "Microsoft.NETCore.Targets": "1.1.0", - "System.Runtime": "4.3.0" - } - }, - "System.Threading.Tasks.Extensions": { - "type": "Transitive", - "resolved": "4.3.0", - "contentHash": "npvJkVKl5rKXrtl1Kkm6OhOUaYGEiF9wFbppFRWSMoApKzt2PiPHT2Bb8a5sAWxprvdOAtvaARS9QYMznEUtug==", - "dependencies": { - "System.Collections": "4.3.0", - "System.Runtime": "4.3.0", - "System.Threading.Tasks": "4.3.0" - } - }, - "System.Threading.Thread": { - "type": "Transitive", - "resolved": "4.3.0", - "contentHash": "OHmbT+Zz065NKII/ZHcH9XO1dEuLGI1L2k7uYss+9C1jLxTC9kTZZuzUOyXHayRk+dft9CiDf3I/QZ0t8JKyBQ==", - "dependencies": { - "System.Runtime": "4.3.0" - } - }, - "System.Threading.ThreadPool": { - "type": "Transitive", - "resolved": "4.3.0", - "contentHash": "k/+g4b7vjdd4aix83sTgC9VG6oXYKAktSfNIJUNGxPEj7ryEOfzHHhfnmsZvjxawwcD9HyWXKCXmPjX8U4zeSw==", - "dependencies": { - "System.Runtime": "4.3.0", - "System.Runtime.Handles": "4.3.0" - } - }, - "System.Xml.ReaderWriter": { - "type": "Transitive", - "resolved": "4.3.0", - "contentHash": "GrprA+Z0RUXaR4N7/eW71j1rgMnEnEVlgii49GZyAjTH7uliMnrOU3HNFBr6fEDBCJCIdlVNq9hHbaDR621XBA==", - "dependencies": { - "System.Collections": "4.3.0", - "System.Diagnostics.Debug": "4.3.0", - "System.Globalization": "4.3.0", - "System.IO": "4.3.0", - "System.IO.FileSystem": "4.3.0", - "System.IO.FileSystem.Primitives": "4.3.0", - "System.Resources.ResourceManager": "4.3.0", - "System.Runtime": "4.3.0", - "System.Runtime.Extensions": "4.3.0", - "System.Runtime.InteropServices": "4.3.0", - "System.Text.Encoding": "4.3.0", - "System.Text.Encoding.Extensions": "4.3.0", - "System.Text.RegularExpressions": "4.3.0", - "System.Threading.Tasks": "4.3.0", - "System.Threading.Tasks.Extensions": "4.3.0" - } - }, - "System.Xml.XmlDocument": { - "type": "Transitive", - "resolved": "4.3.0", - "contentHash": "lJ8AxvkX7GQxpC6GFCeBj8ThYVyQczx2+f/cWHJU8tjS7YfI6Cv6bon70jVEgs2CiFbmmM8b9j1oZVx0dSI2Ww==", - "dependencies": { - "System.Collections": "4.3.0", - "System.Diagnostics.Debug": "4.3.0", - "System.Globalization": "4.3.0", - "System.IO": "4.3.0", - "System.Resources.ResourceManager": "4.3.0", - "System.Runtime": "4.3.0", - "System.Runtime.Extensions": "4.3.0", - "System.Text.Encoding": "4.3.0", - "System.Threading": "4.3.0", - "System.Xml.ReaderWriter": "4.3.0" - } - }, - "System.Xml.XPath": { - "type": "Transitive", - "resolved": "4.3.0", - "contentHash": "v1JQ5SETnQusqmS3RwStF7vwQ3L02imIzl++sewmt23VGygix04pEH+FCj1yWb+z4GDzKiljr1W7Wfvrx0YwgA==", - "dependencies": { - "System.Collections": "4.3.0", - "System.Diagnostics.Debug": "4.3.0", - "System.Globalization": "4.3.0", - "System.IO": "4.3.0", - "System.Resources.ResourceManager": "4.3.0", - "System.Runtime": "4.3.0", - "System.Runtime.Extensions": "4.3.0", - "System.Threading": "4.3.0", - "System.Xml.ReaderWriter": "4.3.0" - } - }, - "System.Xml.XPath.XmlDocument": { - "type": "Transitive", - "resolved": "4.3.0", - "contentHash": "A/uxsWi/Ifzkmd4ArTLISMbfFs6XpRPsXZonrIqyTY70xi8t+mDtvSM5Os0RqyRDobjMBwIDHDL4NOIbkDwf7A==", - "dependencies": { - "System.Collections": "4.3.0", - "System.Globalization": "4.3.0", - "System.IO": "4.3.0", - "System.Resources.ResourceManager": "4.3.0", - "System.Runtime": "4.3.0", - "System.Runtime.Extensions": "4.3.0", - "System.Threading": "4.3.0", - "System.Xml.ReaderWriter": "4.3.0", - "System.Xml.XPath": "4.3.0", - "System.Xml.XmlDocument": "4.3.0" - } - }, - "corvus.testing.specflow": { - "type": "Project", - "dependencies": { - "Microsoft.Extensions.Configuration.Abstractions": "[6.0.0, )", - "Microsoft.Extensions.DependencyInjection": "[6.0.1, )", - "Microsoft.Extensions.DependencyInjection.Abstractions": "[6.0.0, )", - "NUnit": "[3.14.0, )", - "SpecFlow": "[3.9.74, )", - "System.Management": "[4.7.*, )" - } - }, - "corvus.testing.specflow.nunit": { - "type": "Project", - "dependencies": { - "Corvus.Testing.SpecFlow": "[1.0.0, )", - "Microsoft.NET.Test.Sdk": "[17.8.0, )", - "SpecFlow.NUnit.Runners": "[3.9.74, )", - "coverlet.msbuild": "[6.0.0, )" - } - } - } - } -} \ No newline at end of file diff --git a/Solutions/Corvus.Testing.SpecFlow.Specs/specflow.json b/Solutions/Corvus.Testing.SpecFlow.Specs/specflow.json deleted file mode 100644 index 0261c528..00000000 --- a/Solutions/Corvus.Testing.SpecFlow.Specs/specflow.json +++ /dev/null @@ -1,5 +0,0 @@ -{ - "stepAssemblies": [ - { "assembly": "Corvus.Testing.SpecFlow" } - ] -} \ No newline at end of file diff --git a/Solutions/Corvus.Testing.sln b/Solutions/Corvus.Testing.sln index 21839479..188f83ee 100644 --- a/Solutions/Corvus.Testing.sln +++ b/Solutions/Corvus.Testing.sln @@ -5,8 +5,6 @@ VisualStudioVersion = 17.8.34408.163 MinimumVisualStudioVersion = 10.0.40219.1 Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "DevOps", "DevOps", "{B5276693-CCCC-4EB4-AA78-909D9C5F656E}" ProjectSection(SolutionItems) = preProject - ..\azure-pipelines.release.yml = ..\azure-pipelines.release.yml - ..\azure-pipelines.yml = ..\azure-pipelines.yml ..\GitVersion.yml = ..\GitVersion.yml ..\imm.yaml = ..\imm.yaml EndProjectSection @@ -25,19 +23,19 @@ Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Corvus.Testing.AzureFunctio EndProject Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Corvus.Testing.AzureFunctions.Xunit.Demo", "Corvus.Testing.AzureFunctions.Xunit.Demo\Corvus.Testing.AzureFunctions.Xunit.Demo.csproj", "{BA7AE471-5DFA-4204-BB59-B4EFAC624086}" EndProject -Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Corvus.Testing.AzureFunctions.SpecFlow.Demo", "Corvus.Testing.AzureFunctions.SpecFlow.Demo\Corvus.Testing.AzureFunctions.SpecFlow.Demo.csproj", "{4F726825-01C5-4BCF-B82B-E26C14565EEF}" +Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Corvus.Testing.AzureFunctions.ReqnRoll.Demo", "Corvus.Testing.AzureFunctions.ReqnRoll.Demo\Corvus.Testing.AzureFunctions.ReqnRoll.Demo.csproj", "{4F726825-01C5-4BCF-B82B-E26C14565EEF}" EndProject -Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Corvus.Testing.AzureFunctions.SpecFlow", "Corvus.Testing.AzureFunctions.SpecFlow\Corvus.Testing.AzureFunctions.SpecFlow.csproj", "{A3C7BB3D-5C1B-4A59-9D1F-CC13BAEFCF45}" +Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Corvus.Testing.AzureFunctions.ReqnRoll", "Corvus.Testing.AzureFunctions.ReqnRoll\Corvus.Testing.AzureFunctions.ReqnRoll.csproj", "{A3C7BB3D-5C1B-4A59-9D1F-CC13BAEFCF45}" EndProject Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Corvus.Testing.AzureFunctions.DemoFunctions.InProcess", "Corvus.Testing.AzureFunctions.DemoFunction.InProcess\Corvus.Testing.AzureFunctions.DemoFunctions.InProcess.csproj", "{A82AEA52-81AA-4AAA-BEFE-8E28013E2A7A}" EndProject -Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Corvus.Testing.SpecFlow", "Corvus.Testing.SpecFlow\Corvus.Testing.SpecFlow.csproj", "{687664B5-226D-4CE7-B3AC-491F49990AA7}" +Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Corvus.Testing.ReqnRoll", "Corvus.Testing.ReqnRoll\Corvus.Testing.ReqnRoll.csproj", "{687664B5-226D-4CE7-B3AC-491F49990AA7}" EndProject -Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Corvus.Testing.SpecFlow.Specs", "Corvus.Testing.SpecFlow.Specs\Corvus.Testing.SpecFlow.Specs.csproj", "{18EB9E01-82BC-4B4F-BB22-ED91D36D368F}" +Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Corvus.Testing.ReqnRoll.Specs", "Corvus.Testing.ReqnRoll.Specs\Corvus.Testing.ReqnRoll.Specs.csproj", "{18EB9E01-82BC-4B4F-BB22-ED91D36D368F}" EndProject -Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Corvus.Testing.SpecFlow.NUnit", "Corvus.Testing.SpecFlow.NUnit\Corvus.Testing.SpecFlow.NUnit.csproj", "{34AE7429-5F5E-4E47-9D21-841757243F78}" +Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Corvus.Testing.ReqnRoll.NUnit", "Corvus.Testing.ReqnRoll.NUnit\Corvus.Testing.ReqnRoll.NUnit.csproj", "{34AE7429-5F5E-4E47-9D21-841757243F78}" EndProject -Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Corvus.Testing.AzureFunctions.SpecFlow.NUnit", "Corvus.Testing.AzureFunctions.SpecFlow.NUnit\Corvus.Testing.AzureFunctions.SpecFlow.NUnit.csproj", "{DC1B7B5A-8417-4696-B061-9C03EE933C02}" +Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Corvus.Testing.AzureFunctions.ReqnRoll.NUnit", "Corvus.Testing.AzureFunctions.ReqnRoll.NUnit\Corvus.Testing.AzureFunctions.ReqnRoll.NUnit.csproj", "{DC1B7B5A-8417-4696-B061-9C03EE933C02}" EndProject Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Corvus.Testing.AzureFunctions.DemoFunctions.Isolated", "Corvus.Testing.AzureFunctions.DemoFunctions.Isolated\Corvus.Testing.AzureFunctions.DemoFunctions.Isolated.csproj", "{492124E6-F290-4C0E-AF91-C7E26BF83B2B}" EndProject diff --git a/azure-pipelines.release.yml b/azure-pipelines.release.yml deleted file mode 100644 index 6879ac1d..00000000 --- a/azure-pipelines.release.yml +++ /dev/null @@ -1,15 +0,0 @@ -trigger: none -pr: none - -resources: - repositories: - - repository: recommended_practices - type: github - name: endjin/Endjin.RecommendedPractices.AzureDevopsPipelines.GitHub - endpoint: corvus-dotnet-github - -jobs: -- template: templates/tag.for.release.yml@recommended_practices - parameters: - vmImage: 'windows-latest' - service_connection_github: $(Endjin_Service_Connection_GitHub) \ No newline at end of file diff --git a/azure-pipelines.yml b/azure-pipelines.yml deleted file mode 100644 index ee8f498e..00000000 --- a/azure-pipelines.yml +++ /dev/null @@ -1,38 +0,0 @@ -trigger: - branches: - include: - - master - - main - - feature/* - tags: - include: - - '*' - -resources: - repositories: - - repository: recommended_practices - type: github - name: endjin/Endjin.RecommendedPractices.AzureDevopsPipelines.GitHub - endpoint: corvus-dotnet-github - -jobs: -- template: templates/build.and.release.scripted.yml@recommended_practices - parameters: - vmImage: 'windows-latest' - service_connection_nuget_org: $(Endjin_Service_Connection_NuGet_Org) - service_connection_github: $(Endjin_Service_Connection_GitHub) - solution_to_build: $(Endjin_Solution_To_Build) - postCustomEnvironmentVariables: - - task: Npm@1 - displayName: 'Install Latest Azure Functions V4 Runtime' - inputs: - command: custom - verbose: false - customCommand: 'install -g azure-functions-core-tools@ --unsafe-perm true --verbose' - - task: UseDotNet@2 - # Although we build on the .NET 8.0 SDK, the dotnet-covenant tool requires 6.0 to be installed - displayName: Install .NET 6.0 runtime - inputs: - packageType: 'runtime' - version: '6.x' - netSdkVersion: '8.x' \ No newline at end of file diff --git a/docs/ReleaseNotes/Corvus.Testing.v3.md b/docs/ReleaseNotes/Corvus.Testing.v3.md index da9f723c..4add769f 100644 --- a/docs/ReleaseNotes/Corvus.Testing.v3.md +++ b/docs/ReleaseNotes/Corvus.Testing.v3.md @@ -9,7 +9,7 @@ The main changes are: There are also breaking changes: -* `Corvus.Testing.SpecFlow.NUnit` no longer references Moq; projects that were relying on this package to supply that dependency will now need to add their own reference if they want to continue using Moq +* `Corvus.Testing.ReqnRoll.NUnit` no longer references Moq; projects that were relying on this package to supply that dependency will now need to add their own reference if they want to continue using Moq * if a process is already listening on the port you want the hosted function to use, we now throw an exception instead of ploughing on * The `CopyToEnvironmentVariables` extension method for `FunctionConfiguration` now takes an enumerable of `KeyValuePair` - the value type is now a nullable string for reasons described in https://github.com/corvus-dotnet/Corvus.Testing/issues/368 From 8c5912693944810a70a469a4157b0e3b1112333a Mon Sep 17 00:00:00 2001 From: Howard van Rooijen Date: Tue, 6 Aug 2024 16:40:45 +0100 Subject: [PATCH 02/25] Update config files to ReqnRoll expected format --- .../{specflow.json => reqnroll.json} | 1 + .../{specflow.json => reqnroll.json} | 1 + 2 files changed, 2 insertions(+) rename Solutions/Corvus.Testing.AzureFunctions.ReqnRoll.Demo/{specflow.json => reqnroll.json} (65%) rename Solutions/Corvus.Testing.ReqnRoll.Specs/{specflow.json => reqnroll.json} (50%) diff --git a/Solutions/Corvus.Testing.AzureFunctions.ReqnRoll.Demo/specflow.json b/Solutions/Corvus.Testing.AzureFunctions.ReqnRoll.Demo/reqnroll.json similarity index 65% rename from Solutions/Corvus.Testing.AzureFunctions.ReqnRoll.Demo/specflow.json rename to Solutions/Corvus.Testing.AzureFunctions.ReqnRoll.Demo/reqnroll.json index 98aad087..4403f576 100644 --- a/Solutions/Corvus.Testing.AzureFunctions.ReqnRoll.Demo/specflow.json +++ b/Solutions/Corvus.Testing.AzureFunctions.ReqnRoll.Demo/reqnroll.json @@ -1,4 +1,5 @@ { + "$schema": "https://schemas.reqnroll.net/reqnroll-config-latest.json", "stepAssemblies": [ { "assembly": "Corvus.Testing.ReqnRoll" }, { "assembly": "Corvus.Testing.AzureFunctions.ReqnRoll" } diff --git a/Solutions/Corvus.Testing.ReqnRoll.Specs/specflow.json b/Solutions/Corvus.Testing.ReqnRoll.Specs/reqnroll.json similarity index 50% rename from Solutions/Corvus.Testing.ReqnRoll.Specs/specflow.json rename to Solutions/Corvus.Testing.ReqnRoll.Specs/reqnroll.json index 9a16c7db..5a3e93ed 100644 --- a/Solutions/Corvus.Testing.ReqnRoll.Specs/specflow.json +++ b/Solutions/Corvus.Testing.ReqnRoll.Specs/reqnroll.json @@ -1,4 +1,5 @@ { + "$schema": "https://schemas.reqnroll.net/reqnroll-config-latest.json", "stepAssemblies": [ { "assembly": "Corvus.Testing.ReqnRoll" } ] From 88607880427ce75e0a1f7ae12b54090b662e7aee Mon Sep 17 00:00:00 2001 From: Howard van Rooijen Date: Tue, 6 Aug 2024 17:29:33 +0100 Subject: [PATCH 03/25] Update scripted build --- .github/workflows/build.yml | 92 +++++++++++++++++++++++++++++++++++++ build.ps1 | 6 +++ 2 files changed, 98 insertions(+) create mode 100644 .github/workflows/build.yml diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml new file mode 100644 index 00000000..1d7a9261 --- /dev/null +++ b/.github/workflows/build.yml @@ -0,0 +1,92 @@ +name: build +on: + push: + branches: + - main + tags: + - '*' + pull_request: + branches: + - main + workflow_dispatch: + inputs: + forcePublish: + description: When true the Publish stage will always be run, otherwise it only runs for tagged versions. + required: false + default: false + type: boolean + skipCleanup: + description: When true the pipeline clean-up stage will not be run. For example, the cache used between pipeline stages will be retained. + required: false + default: false + type: boolean + +concurrency: + group: ${{ github.workflow }}-${{ github.ref }} + cancel-in-progress: true + +permissions: + actions: write # enable cache clean-up + checks: write # enable test result annotations + contents: write # enable creating releases + issues: read + packages: write # enable publishing packages + pull-requests: write # enable test result annotations + +jobs: + prepareConfig: + name: Prepare Configuration + runs-on: ubuntu-latest + outputs: + RESOLVED_ENV_VARS: ${{ steps.prepareEnvVarsAndSecrets.outputs.environmentVariablesYamlBase64 }} + RESOLVED_SECRETS: ${{ steps.prepareEnvVarsAndSecrets.outputs.secretsYamlBase64 }} + steps: + # Declare any environment variables and/or secrets that need to be available inside the build process + - uses: endjin/Endjin.RecommendedPractices.GitHubActions/actions/prepare-env-vars-and-secrets@main + id: prepareEnvVarsAndSecrets + with: + # BUILDVAR_NuGetPublishSource: + # When publishing NuGet packages only tagged versions get pushed to nuget.org, otherwise + # they are pushed to GitHub Packages + # BUILDVAR_UseAcrTasks: + # Due to the build phases running as separate jobs the container images built via 'docker build' + # in the Package phase are not available to the Publish phase. Therefore, we use ACR Tasks to + # build the images instead. + environmentVariablesYaml: | + BUILDVAR_NuGetPublishSource: "${{ startsWith(github.ref, 'refs/tags/') && 'https://api.nuget.org/v3/index.json' || 'https://nuget.pkg.github.com/endjin/index.json' }}" + BUILDVAR_ContainerRegistryFqdn: endjin.azurecr.io + BUILDVAR_UseAcrTasks: true + secretsYaml: | + NUGET_API_KEY: "${{ startsWith(github.ref, 'refs/tags/') && secrets.ENDJIN_NUGET_APIKEY || secrets.ENDJIN_GITHUB_PUBLISHER_PAT }}" + + build: + needs: prepareConfig + uses: endjin/Endjin.RecommendedPractices.GitHubActions/.github/workflows/scripted-build-pipeline.yml@main + with: + netSdkVersion: '8.x' + # workflow_dispatch inputs are always strings, the type property is just for the UI + forcePublish: ${{ github.event.inputs.forcePublish == 'true' }} + skipCleanup: ${{ github.event.inputs.skipCleanup == 'true' }} + + # These pass arbitrary environment variables to each of the build pipeline phases, + # as defined in the 'environmentVariablesYaml' property above. + compilePhaseEnv: ${{ needs.prepareConfig.outputs.RESOLVED_ENV_VARS }} + testPhaseEnv: ${{ needs.prepareConfig.outputs.RESOLVED_ENV_VARS }} + packagePhaseEnv: ${{ needs.prepareConfig.outputs.RESOLVED_ENV_VARS }} + publishPhaseEnv: ${{ needs.prepareConfig.outputs.RESOLVED_ENV_VARS }} + secrets: + # Ensures the build pipeline has access to pull images from the ACR and write SBOMs to storage + compilePhaseAzureCredentials: ${{ secrets.ENDJIN_PROD_ACR_READER_CREDENTIALS }} + # Ensures the build pipeline has access to run ACR Tasks + packagePhaseAzureCredentials: ${{ secrets.ENDJIN_PROD_ACR_PUBLISH_CREDENTIALS }} + # Ensures the build pipeline has access to push/re-tag images to the ACR + publishPhaseAzureCredentials: ${{ secrets.ENDJIN_PROD_ACR_PUBLISH_CREDENTIALS }} + + # Uncomment the following to pass arbitrary secrets to the required build pipeline phases, + # as defined in the 'secretsYaml' property above. They will be available to the + # scripted build process as environment variables. + # + # compilePhaseSecrets: ${{ needs.prepareConfig.outputs.RESOLVED_SECRETS }} + # testPhaseSecrets: ${{ needs.prepareConfig.outputs.RESOLVED_SECRETS }} + packagePhaseSecrets: ${{ needs.prepareConfig.outputs.RESOLVED_SECRETS }} + publishPhaseSecrets: ${{ needs.prepareConfig.outputs.RESOLVED_SECRETS }} diff --git a/build.ps1 b/build.ps1 index 48ab31b5..ce62efc2 100644 --- a/build.ps1 +++ b/build.ps1 @@ -1,3 +1,4 @@ +#Requires -Version 7 <# .SYNOPSIS Runs a .NET flavoured build process. @@ -133,6 +134,11 @@ $SkipPackage = $false $SkipPublish = $false +# NOTE: Install the 'Endjin.RecommendedPractices.Build' VS Code extension to get handy +# snippets for enabling & configuring features in this build script. +# Once installed will open the snippet picker and you can type 'build' +# to see the available snippets. + # # Build process configuration # From a7fd43f4c8bbc7c071bf252bbb53a4bd5f6f1a0e Mon Sep 17 00:00:00 2001 From: Howard van Rooijen Date: Tue, 6 Aug 2024 22:47:06 +0100 Subject: [PATCH 04/25] Update build to install functions runtime --- .../SampleFunction.cs | 2 +- build.ps1 | 4 +++- 2 files changed, 4 insertions(+), 2 deletions(-) diff --git a/Solutions/Corvus.Testing.AzureFunctions.DemoFunction.InProcess/SampleFunction.cs b/Solutions/Corvus.Testing.AzureFunctions.DemoFunction.InProcess/SampleFunction.cs index d2cfcda8..7d8b1b53 100644 --- a/Solutions/Corvus.Testing.AzureFunctions.DemoFunction.InProcess/SampleFunction.cs +++ b/Solutions/Corvus.Testing.AzureFunctions.DemoFunction.InProcess/SampleFunction.cs @@ -60,4 +60,4 @@ public async Task SampleGetHandler( : new BadRequestObjectResult("Please pass a name on the query string or in the request body"); } } -} +} \ No newline at end of file diff --git a/build.ps1 b/build.ps1 index ce62efc2..234d3795 100644 --- a/build.ps1 +++ b/build.ps1 @@ -168,7 +168,9 @@ task PreInit {} task PostInit {} task PreVersion {} task PostVersion {} -task PreBuild {} +task PreBuild { + Start-Process -FilePath "npm" -ArgumentList "install -g azure-functions-core-tools@ --unsafe-perm true" -NoNewWindow -Wait +} task PostBuild {} task PreTest {} task PostTest {} From d7bf3477c3a155be279f7ef980b506d817df8593 Mon Sep 17 00:00:00 2001 From: Howard van Rooijen Date: Tue, 6 Aug 2024 22:52:45 +0100 Subject: [PATCH 05/25] Move to pre-test step --- .../Program.cs | 2 +- build.ps1 | 6 +++--- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/Solutions/Corvus.Testing.AzureFunctions.DemoFunctions.Isolated/Program.cs b/Solutions/Corvus.Testing.AzureFunctions.DemoFunctions.Isolated/Program.cs index 51336f3d..cd97ae1f 100644 --- a/Solutions/Corvus.Testing.AzureFunctions.DemoFunctions.Isolated/Program.cs +++ b/Solutions/Corvus.Testing.AzureFunctions.DemoFunctions.Isolated/Program.cs @@ -4,4 +4,4 @@ .ConfigureFunctionsWorkerDefaults() .Build(); -host.Run(); +host.Run(); \ No newline at end of file diff --git a/build.ps1 b/build.ps1 index 234d3795..db2e6715 100644 --- a/build.ps1 +++ b/build.ps1 @@ -168,11 +168,11 @@ task PreInit {} task PostInit {} task PreVersion {} task PostVersion {} -task PreBuild { +task PreBuild {} +task PostBuild {} +task PreTest { Start-Process -FilePath "npm" -ArgumentList "install -g azure-functions-core-tools@ --unsafe-perm true" -NoNewWindow -Wait } -task PostBuild {} -task PreTest {} task PostTest {} task PreTestReport {} task PostTestReport {} From 5494204a81fc8a897ab03b34700abf46e69799c5 Mon Sep 17 00:00:00 2001 From: Howard van Rooijen Date: Tue, 6 Aug 2024 23:03:36 +0100 Subject: [PATCH 06/25] Extend PreTest --- .../GlobalSuppressions.cs | 2 +- build.ps1 | 11 ++++++++--- 2 files changed, 9 insertions(+), 4 deletions(-) diff --git a/Solutions/Corvus.Testing.AzureFunctions.ReqnRoll.Demo/GlobalSuppressions.cs b/Solutions/Corvus.Testing.AzureFunctions.ReqnRoll.Demo/GlobalSuppressions.cs index 972293f6..7e8e5a38 100644 --- a/Solutions/Corvus.Testing.AzureFunctions.ReqnRoll.Demo/GlobalSuppressions.cs +++ b/Solutions/Corvus.Testing.AzureFunctions.ReqnRoll.Demo/GlobalSuppressions.cs @@ -10,4 +10,4 @@ [assembly: System.Diagnostics.CodeAnalysis.SuppressMessage( "StyleCop.CSharp.OrderingRules", "SA1633:Using directives should be ordered alphabetically by namespace", - Justification = "We need this until https://github.com/ReqnRollOSS/ReqnRoll/issues/1828 is fixed")] + Justification = "We need this until https://github.com/ReqnRollOSS/ReqnRoll/issues/1828 is fixed")] \ No newline at end of file diff --git a/build.ps1 b/build.ps1 index db2e6715..11943490 100644 --- a/build.ps1 +++ b/build.ps1 @@ -158,6 +158,13 @@ $NuSpecFilesToPackage = @( # $ExcludeFilesFromCodeCoverage = "" +task Install-AzureFunctionsSDK { + Write-Build White "Installing Azure Functions Core Tools..." + Start-Process -FilePath "npm" -ArgumentList "install -g azure-functions-core-tools@ --unsafe-perm true" -NoNewWindow -Wait +} + +task PreTest, Install-AzureFunctionsSDK + # Synopsis: Build, Test and Package task . FullBuild @@ -170,9 +177,7 @@ task PreVersion {} task PostVersion {} task PreBuild {} task PostBuild {} -task PreTest { - Start-Process -FilePath "npm" -ArgumentList "install -g azure-functions-core-tools@ --unsafe-perm true" -NoNewWindow -Wait -} +task PreTest {} task PostTest {} task PreTestReport {} task PostTestReport {} From 1eb3056f48ba3f38d25e62f745cbda9f81d9dc24 Mon Sep 17 00:00:00 2001 From: Howard van Rooijen Date: Tue, 6 Aug 2024 23:09:53 +0100 Subject: [PATCH 07/25] Update build script --- .../AzureFunctionsTesting/DemoFunctionConfig.cs | 2 +- build.ps1 | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/Solutions/Corvus.Testing.AzureFunctions.ReqnRoll.Demo/AzureFunctionsTesting/DemoFunctionConfig.cs b/Solutions/Corvus.Testing.AzureFunctions.ReqnRoll.Demo/AzureFunctionsTesting/DemoFunctionConfig.cs index 228a7e10..a6b324d2 100644 --- a/Solutions/Corvus.Testing.AzureFunctions.ReqnRoll.Demo/AzureFunctionsTesting/DemoFunctionConfig.cs +++ b/Solutions/Corvus.Testing.AzureFunctions.ReqnRoll.Demo/AzureFunctionsTesting/DemoFunctionConfig.cs @@ -28,4 +28,4 @@ public static void SetupTestConfig(ReqnrollContext context) functionConfiguration.CopyToEnvironmentVariables(config); } } -} +} \ No newline at end of file diff --git a/build.ps1 b/build.ps1 index 11943490..4d31e735 100644 --- a/build.ps1 +++ b/build.ps1 @@ -163,7 +163,7 @@ task Install-AzureFunctionsSDK { Start-Process -FilePath "npm" -ArgumentList "install -g azure-functions-core-tools@ --unsafe-perm true" -NoNewWindow -Wait } -task PreTest, Install-AzureFunctionsSDK +task PreTest Init, Install-AzureFunctionsSDK # Synopsis: Build, Test and Package task . FullBuild From c9d02bf758afe97963befe3d25ef7b100f9203b7 Mon Sep 17 00:00:00 2001 From: Howard van Rooijen Date: Wed, 7 Aug 2024 07:23:59 +0100 Subject: [PATCH 08/25] Consolidate System.Management packages --- .../packages.lock.json | 20 ------ .../packages.lock.json | 69 ++++++++++--------- .../packages.lock.json | 32 ++------- .../Corvus.Testing.AzureFunctions.csproj | 2 +- .../packages.lock.json | 61 ++++++++-------- .../Corvus.Testing.ReqnRoll.csproj | 2 +- 6 files changed, 78 insertions(+), 108 deletions(-) diff --git a/Solutions/Corvus.Testing.AzureFunctions.DemoFunction.InProcess/packages.lock.json b/Solutions/Corvus.Testing.AzureFunctions.DemoFunction.InProcess/packages.lock.json index ab578035..3d9e6d29 100644 --- a/Solutions/Corvus.Testing.AzureFunctions.DemoFunction.InProcess/packages.lock.json +++ b/Solutions/Corvus.Testing.AzureFunctions.DemoFunction.InProcess/packages.lock.json @@ -29,21 +29,6 @@ "System.Text.RegularExpressions": "4.3.1" } }, - "Roslynator.Analyzers": { - "type": "Direct", - "requested": "[4.12.3, )", - "resolved": "4.12.3", - "contentHash": "6+O9GwAxOxJr1rZ4aaLiBiSH3pxDkJuXLE8qjo/JXLvGkZhKRLbAz30WA32RmJb5Nn1TmjZ2T3kWt3GJmEDj1w==" - }, - "StyleCop.Analyzers": { - "type": "Direct", - "requested": "[1.2.0-beta.556, )", - "resolved": "1.2.0-beta.556", - "contentHash": "llRPgmA1fhC0I0QyFLEcjvtM2239QzKr/tcnbsjArLMJxJlu0AA5G7Fft0OI30pHF3MW63Gf4aSSsjc5m82J1Q==", - "dependencies": { - "StyleCop.Analyzers.Unstable": "1.2.0.556" - } - }, "Endjin.RecommendedPractices": { "type": "Transitive", "resolved": "2.1.12", @@ -762,11 +747,6 @@ "resolved": "4.3.2", "contentHash": "leXiwfiIkW7Gmn7cgnNcdtNAU70SjmKW3jxGj1iKHOvdn0zRWsgv/l2OJUO5zdGdiv2VRFnAsxxhDgMzofPdWg==" }, - "StyleCop.Analyzers.Unstable": { - "type": "Transitive", - "resolved": "1.2.0.556", - "contentHash": "zvn9Mqs/ox/83cpYPignI8hJEM2A93s2HkHs8HYMOAQW0PkampyoErAiIyKxgTLqbbad29HX/shv/6LGSjPJNQ==" - }, "System.AppContext": { "type": "Transitive", "resolved": "4.3.0", diff --git a/Solutions/Corvus.Testing.AzureFunctions.ReqnRoll.Demo/packages.lock.json b/Solutions/Corvus.Testing.AzureFunctions.ReqnRoll.Demo/packages.lock.json index d2e49f7e..a8fa1f76 100644 --- a/Solutions/Corvus.Testing.AzureFunctions.ReqnRoll.Demo/packages.lock.json +++ b/Solutions/Corvus.Testing.AzureFunctions.ReqnRoll.Demo/packages.lock.json @@ -49,21 +49,6 @@ "Reqnroll.Tools.MsBuild.Generation": "[2.0.3]" } }, - "Roslynator.Analyzers": { - "type": "Direct", - "requested": "[4.12.3, )", - "resolved": "4.12.3", - "contentHash": "6+O9GwAxOxJr1rZ4aaLiBiSH3pxDkJuXLE8qjo/JXLvGkZhKRLbAz30WA32RmJb5Nn1TmjZ2T3kWt3GJmEDj1w==" - }, - "StyleCop.Analyzers": { - "type": "Direct", - "requested": "[1.2.0-beta.556, )", - "resolved": "1.2.0-beta.556", - "contentHash": "llRPgmA1fhC0I0QyFLEcjvtM2239QzKr/tcnbsjArLMJxJlu0AA5G7Fft0OI30pHF3MW63Gf4aSSsjc5m82J1Q==", - "dependencies": { - "StyleCop.Analyzers.Unstable": "1.2.0.556" - } - }, "coverlet.msbuild": { "type": "Transitive", "resolved": "6.0.2", @@ -150,10 +135,10 @@ }, "Microsoft.Extensions.Logging.Abstractions": { "type": "Transitive", - "resolved": "8.0.0", - "contentHash": "arDBqTgFCyS0EvRV7O3MZturChstm50OJ0y9bDJvAcmEPJm0FFpFyjU/JLYyStNGGey081DvnQYlncNX5SJJGA==", + "resolved": "8.0.1", + "contentHash": "RIFgaqoaINxkM2KTOw72dmilDmTrYA0ns2KW4lDz4gZ2+o6IQ894CzmdL3StM2oh7QQq44nCWiqKqc4qUI9Jmg==", "dependencies": { - "Microsoft.Extensions.DependencyInjection.Abstractions": "8.0.0" + "Microsoft.Extensions.DependencyInjection.Abstractions": "8.0.1" } }, "Microsoft.Extensions.Logging.Configuration": { @@ -212,8 +197,8 @@ }, "Microsoft.NETCore.Platforms": { "type": "Transitive", - "resolved": "1.1.0", - "contentHash": "kz0PEW2lhqygehI/d6XsPCQzD7ff7gUJaVGPVETX611eadGsA3A877GdSlU0LRVMCTH/+P3o2iDTak+S08V2+A==" + "resolved": "3.1.0", + "contentHash": "z7aeg8oHln2CuNulfhiLYxCVMPEwBl3rzicjvIX+4sUuCwvXw5oXQEtbiU2c0z4qYL5L3Kmx0mMA/+t/SbY67w==" }, "Microsoft.NETCore.Targets": { "type": "Transitive", @@ -251,6 +236,15 @@ "Newtonsoft.Json": "13.0.1" } }, + "Microsoft.Win32.Registry": { + "type": "Transitive", + "resolved": "4.7.0", + "contentHash": "KSrRMb5vNi0CWSGG1++id2ZOs/1QhRqROt+qgbEAdQuGjGrFcl4AOl4/exGPUYz2wUnU42nvJqon1T3U0kPXLA==", + "dependencies": { + "System.Security.AccessControl": "4.7.0", + "System.Security.Principal.Windows": "4.7.0" + } + }, "Newtonsoft.Json": { "type": "Transitive", "resolved": "13.0.1", @@ -286,11 +280,6 @@ "resolved": "1.0.8", "contentHash": "lVCC/Rie7N5rFoc7YxPS0nneLfsWSTIMMlkndwxhaD8MxBp3Bsv1HeiVjVwXCjWaQeoqZcvIy52fF5Xit00ZLw==" }, - "StyleCop.Analyzers.Unstable": { - "type": "Transitive", - "resolved": "1.2.0.556", - "contentHash": "zvn9Mqs/ox/83cpYPignI8hJEM2A93s2HkHs8HYMOAQW0PkampyoErAiIyKxgTLqbbad29HX/shv/6LGSjPJNQ==" - }, "System.Buffers": { "type": "Transitive", "resolved": "4.5.1", @@ -298,8 +287,8 @@ }, "System.CodeDom": { "type": "Transitive", - "resolved": "8.0.0", - "contentHash": "WTlRjL6KWIMr/pAaq3rYqh0TJlzpouaQ/W1eelssHgtlwHAH25jXTkUphTYx9HaIIf7XA6qs/0+YhtLEQRkJ+Q==" + "resolved": "4.7.0", + "contentHash": "Hs9pw/kmvH3lXaZ1LFKj3pLQsiGfj2xo3sxSzwiLlRL6UcMZUTeCfoJ9Udalvn3yq5dLlPEZzYegrTQ1/LhPOQ==" }, "System.IO": { "type": "Transitive", @@ -315,10 +304,12 @@ }, "System.Management": { "type": "Transitive", - "resolved": "8.0.0", - "contentHash": "jrK22i5LRzxZCfGb+tGmke2VH7oE0DvcDlJ1HAKYU8cPmD8XnpUT0bYn2Gy98GEhGjtfbR/sxKTVb+dE770pfA==", + "resolved": "4.7.0", + "contentHash": "IY+uuGhgzWiCg21i8IvQeY/Z7m1tX8VuPF+ludfn7iTCaccTtJo5HkjZbBEL8kbBubKhAKKtNXr7uMtmAc28Pw==", "dependencies": { - "System.CodeDom": "8.0.0" + "Microsoft.NETCore.Platforms": "3.1.0", + "Microsoft.Win32.Registry": "4.7.0", + "System.CodeDom": "4.7.0" } }, "System.Memory": { @@ -377,6 +368,20 @@ "System.Runtime": "4.3.0" } }, + "System.Security.AccessControl": { + "type": "Transitive", + "resolved": "4.7.0", + "contentHash": "JECvTt5aFF3WT3gHpfofL2MNNP6v84sxtXxpqhLBCcDRzqsPBmHhQ6shv4DwwN2tRlzsUxtb3G9M3763rbXKDg==", + "dependencies": { + "Microsoft.NETCore.Platforms": "3.1.0", + "System.Security.Principal.Windows": "4.7.0" + } + }, + "System.Security.Principal.Windows": { + "type": "Transitive", + "resolved": "4.7.0", + "contentHash": "ojD0PX0XhneCsUbAZVKdb7h/70vyYMDYs85lwEI+LngEONe/17A0cFaRFqZU+sOEidcVswYWikYOQ9PPfjlbtQ==" + }, "System.Text.Encoding": { "type": "Transitive", "resolved": "4.3.0", @@ -413,7 +418,7 @@ "corvus.testing.azurefunctions": { "type": "Project", "dependencies": { - "Microsoft.Extensions.Logging.Abstractions": "[6.0.4, )", + "Microsoft.Extensions.Logging.Abstractions": "[8.0.1, )", "System.Management": "[4.7.*, )" } }, @@ -443,7 +448,7 @@ "Microsoft.Extensions.DependencyInjection.Abstractions": "[8.0.1, )", "NUnit": "[4.1.0, )", "Reqnroll": "[2.0.3, )", - "System.Management": "[8.0.0, )" + "System.Management": "[4.7.*, )" } } } diff --git a/Solutions/Corvus.Testing.AzureFunctions.Xunit.Demo/packages.lock.json b/Solutions/Corvus.Testing.AzureFunctions.Xunit.Demo/packages.lock.json index 6ec7aff0..000e03b4 100644 --- a/Solutions/Corvus.Testing.AzureFunctions.Xunit.Demo/packages.lock.json +++ b/Solutions/Corvus.Testing.AzureFunctions.Xunit.Demo/packages.lock.json @@ -33,12 +33,6 @@ "Microsoft.TestPlatform.TestHost": "17.10.0" } }, - "Roslynator.Analyzers": { - "type": "Direct", - "requested": "[4.12.3, )", - "resolved": "4.12.3", - "contentHash": "6+O9GwAxOxJr1rZ4aaLiBiSH3pxDkJuXLE8qjo/JXLvGkZhKRLbAz30WA32RmJb5Nn1TmjZ2T3kWt3GJmEDj1w==" - }, "Serilog.Extensions.Logging": { "type": "Direct", "requested": "[8.0.0, )", @@ -70,15 +64,6 @@ "xunit.extensibility.execution": "2.4.2" } }, - "StyleCop.Analyzers": { - "type": "Direct", - "requested": "[1.2.0-beta.556, )", - "resolved": "1.2.0-beta.556", - "contentHash": "llRPgmA1fhC0I0QyFLEcjvtM2239QzKr/tcnbsjArLMJxJlu0AA5G7Fft0OI30pHF3MW63Gf4aSSsjc5m82J1Q==", - "dependencies": { - "StyleCop.Analyzers.Unstable": "1.2.0.556" - } - }, "xunit": { "type": "Direct", "requested": "[2.9.0, )", @@ -124,15 +109,15 @@ }, "Microsoft.Extensions.DependencyInjection.Abstractions": { "type": "Transitive", - "resolved": "8.0.0", - "contentHash": "cjWrLkJXK0rs4zofsK4bSdg+jhDLTaxrkXu4gS6Y7MAlCvRyNNgwY/lJi5RDlQOnSZweHqoyvgvbdvQsRIW+hg==" + "resolved": "8.0.1", + "contentHash": "fGLiCRLMYd00JYpClraLjJTNKLmMJPnqxMaiRzEBIIvevlzxz33mXy39Lkd48hu1G+N21S7QpaO5ZzKsI6FRuA==" }, "Microsoft.Extensions.Logging.Abstractions": { "type": "Transitive", - "resolved": "8.0.0", - "contentHash": "arDBqTgFCyS0EvRV7O3MZturChstm50OJ0y9bDJvAcmEPJm0FFpFyjU/JLYyStNGGey081DvnQYlncNX5SJJGA==", + "resolved": "8.0.1", + "contentHash": "RIFgaqoaINxkM2KTOw72dmilDmTrYA0ns2KW4lDz4gZ2+o6IQ894CzmdL3StM2oh7QQq44nCWiqKqc4qUI9Jmg==", "dependencies": { - "Microsoft.Extensions.DependencyInjection.Abstractions": "8.0.0" + "Microsoft.Extensions.DependencyInjection.Abstractions": "8.0.1" } }, "Microsoft.Extensions.Options": { @@ -204,11 +189,6 @@ "resolved": "4.0.0", "contentHash": "2jDkUrSh5EofOp7Lx5Zgy0EB+7hXjjxE2ktTb1WVQmU00lDACR2TdROGKU0K1pDTBSJBN1PqgYpgOZF8mL7NJw==" }, - "StyleCop.Analyzers.Unstable": { - "type": "Transitive", - "resolved": "1.2.0.556", - "contentHash": "zvn9Mqs/ox/83cpYPignI8hJEM2A93s2HkHs8HYMOAQW0PkampyoErAiIyKxgTLqbbad29HX/shv/6LGSjPJNQ==" - }, "System.CodeDom": { "type": "Transitive", "resolved": "4.7.0", @@ -286,7 +266,7 @@ "corvus.testing.azurefunctions": { "type": "Project", "dependencies": { - "Microsoft.Extensions.Logging.Abstractions": "[6.0.4, )", + "Microsoft.Extensions.Logging.Abstractions": "[8.0.1, )", "System.Management": "[4.7.*, )" } } diff --git a/Solutions/Corvus.Testing.AzureFunctions/Corvus.Testing.AzureFunctions.csproj b/Solutions/Corvus.Testing.AzureFunctions/Corvus.Testing.AzureFunctions.csproj index 43424cba..0eca612b 100644 --- a/Solutions/Corvus.Testing.AzureFunctions/Corvus.Testing.AzureFunctions.csproj +++ b/Solutions/Corvus.Testing.AzureFunctions/Corvus.Testing.AzureFunctions.csproj @@ -27,7 +27,7 @@ all runtime; build; native; contentfiles; analyzers; buildtransitive - + diff --git a/Solutions/Corvus.Testing.ReqnRoll.Specs/packages.lock.json b/Solutions/Corvus.Testing.ReqnRoll.Specs/packages.lock.json index 8d5252a4..67011ba8 100644 --- a/Solutions/Corvus.Testing.ReqnRoll.Specs/packages.lock.json +++ b/Solutions/Corvus.Testing.ReqnRoll.Specs/packages.lock.json @@ -39,21 +39,6 @@ "Reqnroll.Tools.MsBuild.Generation": "[2.0.3]" } }, - "Roslynator.Analyzers": { - "type": "Direct", - "requested": "[4.12.3, )", - "resolved": "4.12.3", - "contentHash": "6+O9GwAxOxJr1rZ4aaLiBiSH3pxDkJuXLE8qjo/JXLvGkZhKRLbAz30WA32RmJb5Nn1TmjZ2T3kWt3GJmEDj1w==" - }, - "StyleCop.Analyzers": { - "type": "Direct", - "requested": "[1.2.0-beta.556, )", - "resolved": "1.2.0-beta.556", - "contentHash": "llRPgmA1fhC0I0QyFLEcjvtM2239QzKr/tcnbsjArLMJxJlu0AA5G7Fft0OI30pHF3MW63Gf4aSSsjc5m82J1Q==", - "dependencies": { - "StyleCop.Analyzers.Unstable": "1.2.0.556" - } - }, "coverlet.msbuild": { "type": "Transitive", "resolved": "6.0.2", @@ -127,8 +112,8 @@ }, "Microsoft.NETCore.Platforms": { "type": "Transitive", - "resolved": "1.1.0", - "contentHash": "kz0PEW2lhqygehI/d6XsPCQzD7ff7gUJaVGPVETX611eadGsA3A877GdSlU0LRVMCTH/+P3o2iDTak+S08V2+A==" + "resolved": "3.1.0", + "contentHash": "z7aeg8oHln2CuNulfhiLYxCVMPEwBl3rzicjvIX+4sUuCwvXw5oXQEtbiU2c0z4qYL5L3Kmx0mMA/+t/SbY67w==" }, "Microsoft.NETCore.Targets": { "type": "Transitive", @@ -166,6 +151,15 @@ "Newtonsoft.Json": "13.0.1" } }, + "Microsoft.Win32.Registry": { + "type": "Transitive", + "resolved": "4.7.0", + "contentHash": "KSrRMb5vNi0CWSGG1++id2ZOs/1QhRqROt+qgbEAdQuGjGrFcl4AOl4/exGPUYz2wUnU42nvJqon1T3U0kPXLA==", + "dependencies": { + "System.Security.AccessControl": "4.7.0", + "System.Security.Principal.Windows": "4.7.0" + } + }, "Newtonsoft.Json": { "type": "Transitive", "resolved": "13.0.1", @@ -201,11 +195,6 @@ "resolved": "1.0.8", "contentHash": "lVCC/Rie7N5rFoc7YxPS0nneLfsWSTIMMlkndwxhaD8MxBp3Bsv1HeiVjVwXCjWaQeoqZcvIy52fF5Xit00ZLw==" }, - "StyleCop.Analyzers.Unstable": { - "type": "Transitive", - "resolved": "1.2.0.556", - "contentHash": "zvn9Mqs/ox/83cpYPignI8hJEM2A93s2HkHs8HYMOAQW0PkampyoErAiIyKxgTLqbbad29HX/shv/6LGSjPJNQ==" - }, "System.Buffers": { "type": "Transitive", "resolved": "4.5.1", @@ -213,8 +202,8 @@ }, "System.CodeDom": { "type": "Transitive", - "resolved": "8.0.0", - "contentHash": "WTlRjL6KWIMr/pAaq3rYqh0TJlzpouaQ/W1eelssHgtlwHAH25jXTkUphTYx9HaIIf7XA6qs/0+YhtLEQRkJ+Q==" + "resolved": "4.7.0", + "contentHash": "Hs9pw/kmvH3lXaZ1LFKj3pLQsiGfj2xo3sxSzwiLlRL6UcMZUTeCfoJ9Udalvn3yq5dLlPEZzYegrTQ1/LhPOQ==" }, "System.IO": { "type": "Transitive", @@ -230,10 +219,12 @@ }, "System.Management": { "type": "Transitive", - "resolved": "8.0.0", - "contentHash": "jrK22i5LRzxZCfGb+tGmke2VH7oE0DvcDlJ1HAKYU8cPmD8XnpUT0bYn2Gy98GEhGjtfbR/sxKTVb+dE770pfA==", + "resolved": "4.7.0", + "contentHash": "IY+uuGhgzWiCg21i8IvQeY/Z7m1tX8VuPF+ludfn7iTCaccTtJo5HkjZbBEL8kbBubKhAKKtNXr7uMtmAc28Pw==", "dependencies": { - "System.CodeDom": "8.0.0" + "Microsoft.NETCore.Platforms": "3.1.0", + "Microsoft.Win32.Registry": "4.7.0", + "System.CodeDom": "4.7.0" } }, "System.Memory": { @@ -292,6 +283,20 @@ "System.Runtime": "4.3.0" } }, + "System.Security.AccessControl": { + "type": "Transitive", + "resolved": "4.7.0", + "contentHash": "JECvTt5aFF3WT3gHpfofL2MNNP6v84sxtXxpqhLBCcDRzqsPBmHhQ6shv4DwwN2tRlzsUxtb3G9M3763rbXKDg==", + "dependencies": { + "Microsoft.NETCore.Platforms": "3.1.0", + "System.Security.Principal.Windows": "4.7.0" + } + }, + "System.Security.Principal.Windows": { + "type": "Transitive", + "resolved": "4.7.0", + "contentHash": "ojD0PX0XhneCsUbAZVKdb7h/70vyYMDYs85lwEI+LngEONe/17A0cFaRFqZU+sOEidcVswYWikYOQ9PPfjlbtQ==" + }, "System.Text.Encoding": { "type": "Transitive", "resolved": "4.3.0", @@ -337,7 +342,7 @@ "Microsoft.Extensions.DependencyInjection.Abstractions": "[8.0.1, )", "NUnit": "[4.1.0, )", "Reqnroll": "[2.0.3, )", - "System.Management": "[8.0.0, )" + "System.Management": "[4.7.*, )" } }, "corvus.testing.reqnroll.nunit": { diff --git a/Solutions/Corvus.Testing.ReqnRoll/Corvus.Testing.ReqnRoll.csproj b/Solutions/Corvus.Testing.ReqnRoll/Corvus.Testing.ReqnRoll.csproj index b73dee07..44a16d68 100644 --- a/Solutions/Corvus.Testing.ReqnRoll/Corvus.Testing.ReqnRoll.csproj +++ b/Solutions/Corvus.Testing.ReqnRoll/Corvus.Testing.ReqnRoll.csproj @@ -35,7 +35,7 @@ - + From 6425804f7f04d1e810bccbd8e8ea4b17a5c994fd Mon Sep 17 00:00:00 2001 From: Mike Evans-Larah Date: Wed, 7 Aug 2024 13:53:54 +0100 Subject: [PATCH 09/25] Update build.ps1 --- build.ps1 | 4 +--- 1 file changed, 1 insertion(+), 3 deletions(-) diff --git a/build.ps1 b/build.ps1 index 4d31e735..9154dd8b 100644 --- a/build.ps1 +++ b/build.ps1 @@ -163,8 +163,6 @@ task Install-AzureFunctionsSDK { Start-Process -FilePath "npm" -ArgumentList "install -g azure-functions-core-tools@ --unsafe-perm true" -NoNewWindow -Wait } -task PreTest Init, Install-AzureFunctionsSDK - # Synopsis: Build, Test and Package task . FullBuild @@ -177,7 +175,7 @@ task PreVersion {} task PostVersion {} task PreBuild {} task PostBuild {} -task PreTest {} +task PreTest Init, Install-AzureFunctionsSDK {} task PostTest {} task PreTestReport {} task PostTestReport {} From b4a09a2ba349209b5bd223bc8f637e0b71775fac Mon Sep 17 00:00:00 2001 From: Mike Evans-Larah Date: Wed, 7 Aug 2024 14:02:31 +0100 Subject: [PATCH 10/25] Missing comma --- build.ps1 | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/build.ps1 b/build.ps1 index 9154dd8b..675946fb 100644 --- a/build.ps1 +++ b/build.ps1 @@ -175,7 +175,7 @@ task PreVersion {} task PostVersion {} task PreBuild {} task PostBuild {} -task PreTest Init, Install-AzureFunctionsSDK {} +task PreTest Init, Install-AzureFunctionsSDK, {} task PostTest {} task PreTestReport {} task PostTestReport {} From cbd69d58449af1d9a7b80ce8a865e6c7fb6bfce7 Mon Sep 17 00:00:00 2001 From: Howard van Rooijen Date: Wed, 7 Aug 2024 23:15:00 +0100 Subject: [PATCH 11/25] Touch file --- .../AzureFunctionsTesting/DemoFunctionPerScenarioHooks.cs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Solutions/Corvus.Testing.AzureFunctions.ReqnRoll.Demo/AzureFunctionsTesting/DemoFunctionPerScenarioHooks.cs b/Solutions/Corvus.Testing.AzureFunctions.ReqnRoll.Demo/AzureFunctionsTesting/DemoFunctionPerScenarioHooks.cs index 1ca50bed..a52cc7cb 100644 --- a/Solutions/Corvus.Testing.AzureFunctions.ReqnRoll.Demo/AzureFunctionsTesting/DemoFunctionPerScenarioHooks.cs +++ b/Solutions/Corvus.Testing.AzureFunctions.ReqnRoll.Demo/AzureFunctionsTesting/DemoFunctionPerScenarioHooks.cs @@ -64,4 +64,4 @@ public static void StopFunction(ScenarioContext scenarioContext) functionsController.TeardownFunctions(); } } -} +} \ No newline at end of file From 497853e6b1d8cad2d73c86ac5835360d2fb3683d Mon Sep 17 00:00:00 2001 From: Howard van Rooijen Date: Wed, 7 Aug 2024 23:30:58 +0100 Subject: [PATCH 12/25] Point to .NET 8.0 folder --- .../AzureFunctionsTesting/DemoFunctionPerFeatureHooks.cs | 2 +- .../AzureFunctionsTesting/DemoFunctionPerScenarioHooks.cs | 2 +- .../AzureFunctionFixture.cs | 2 +- .../ConfiguredAzureFunctionFixture.cs | 2 +- .../FunctionPerTestFacts.cs | 2 +- 5 files changed, 5 insertions(+), 5 deletions(-) diff --git a/Solutions/Corvus.Testing.AzureFunctions.ReqnRoll.Demo/AzureFunctionsTesting/DemoFunctionPerFeatureHooks.cs b/Solutions/Corvus.Testing.AzureFunctions.ReqnRoll.Demo/AzureFunctionsTesting/DemoFunctionPerFeatureHooks.cs index 5069e1bb..7aa8debe 100644 --- a/Solutions/Corvus.Testing.AzureFunctions.ReqnRoll.Demo/AzureFunctionsTesting/DemoFunctionPerFeatureHooks.cs +++ b/Solutions/Corvus.Testing.AzureFunctions.ReqnRoll.Demo/AzureFunctionsTesting/DemoFunctionPerFeatureHooks.cs @@ -24,7 +24,7 @@ public static Task StartInProcessFunctionsAsync(FeatureContext featureContext) return functionsController.StartFunctionsInstance( "Corvus.Testing.AzureFunctions.DemoFunction.InProcess", 7075, - "net6.0", + "net8.0", configuration: functionConfiguration); } diff --git a/Solutions/Corvus.Testing.AzureFunctions.ReqnRoll.Demo/AzureFunctionsTesting/DemoFunctionPerScenarioHooks.cs b/Solutions/Corvus.Testing.AzureFunctions.ReqnRoll.Demo/AzureFunctionsTesting/DemoFunctionPerScenarioHooks.cs index a52cc7cb..808474de 100644 --- a/Solutions/Corvus.Testing.AzureFunctions.ReqnRoll.Demo/AzureFunctionsTesting/DemoFunctionPerScenarioHooks.cs +++ b/Solutions/Corvus.Testing.AzureFunctions.ReqnRoll.Demo/AzureFunctionsTesting/DemoFunctionPerScenarioHooks.cs @@ -22,7 +22,7 @@ public static Task StartInProcessFunctionsAsync(ScenarioContext scenarioContext) return functionsController.StartFunctionsInstance( "Corvus.Testing.AzureFunctions.DemoFunction.InProcess", 7075, - "net6.0", + "net8.0", configuration: functionConfiguration); } diff --git a/Solutions/Corvus.Testing.AzureFunctions.Xunit.Demo/AzureFunctionFixture.cs b/Solutions/Corvus.Testing.AzureFunctions.Xunit.Demo/AzureFunctionFixture.cs index ff8357e7..f65e34a8 100644 --- a/Solutions/Corvus.Testing.AzureFunctions.Xunit.Demo/AzureFunctionFixture.cs +++ b/Solutions/Corvus.Testing.AzureFunctions.Xunit.Demo/AzureFunctionFixture.cs @@ -40,7 +40,7 @@ public async Task InitializeAsync() await this.function.StartFunctionsInstance( "Corvus.Testing.AzureFunctions.DemoFunction.InProcess", Port, - "net6.0"); + "net8.0"); } public Task DisposeAsync() diff --git a/Solutions/Corvus.Testing.AzureFunctions.Xunit.Demo/ConfiguredAzureFunctionFixture.cs b/Solutions/Corvus.Testing.AzureFunctions.Xunit.Demo/ConfiguredAzureFunctionFixture.cs index 7382680c..897a7089 100644 --- a/Solutions/Corvus.Testing.AzureFunctions.Xunit.Demo/ConfiguredAzureFunctionFixture.cs +++ b/Solutions/Corvus.Testing.AzureFunctions.Xunit.Demo/ConfiguredAzureFunctionFixture.cs @@ -41,7 +41,7 @@ public async Task InitializeAsync() await this.function.StartFunctionsInstance( "Corvus.Testing.AzureFunctions.DemoFunction.InProcess", Port, - "net6.0", + "net8.0", configuration: configuration); } diff --git a/Solutions/Corvus.Testing.AzureFunctions.Xunit.Demo/FunctionPerTestFacts.cs b/Solutions/Corvus.Testing.AzureFunctions.Xunit.Demo/FunctionPerTestFacts.cs index bd6b6c37..193a6a62 100644 --- a/Solutions/Corvus.Testing.AzureFunctions.Xunit.Demo/FunctionPerTestFacts.cs +++ b/Solutions/Corvus.Testing.AzureFunctions.Xunit.Demo/FunctionPerTestFacts.cs @@ -102,7 +102,7 @@ public async Task InitializeAsync() await this.function.StartFunctionsInstance( "Corvus.Testing.AzureFunctions.DemoFunction.InProcess", this.Port, - "net6.0"); + "net8.0"); } public Task DisposeAsync() From 03a64f69956aef5891be6bd612b3257c5bf74076 Mon Sep 17 00:00:00 2001 From: Howard van Rooijen Date: Thu, 8 Aug 2024 06:52:10 +0100 Subject: [PATCH 13/25] Use Path.Combine to construct path in platform independent way. --- .../Corvus/Testing/AzureFunctions/FunctionProject.cs | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/Solutions/Corvus.Testing.AzureFunctions/Corvus/Testing/AzureFunctions/FunctionProject.cs b/Solutions/Corvus.Testing.AzureFunctions/Corvus/Testing/AzureFunctions/FunctionProject.cs index 4ef028a1..e5505f56 100644 --- a/Solutions/Corvus.Testing.AzureFunctions/Corvus/Testing/AzureFunctions/FunctionProject.cs +++ b/Solutions/Corvus.Testing.AzureFunctions/Corvus/Testing/AzureFunctions/FunctionProject.cs @@ -43,10 +43,11 @@ public static string ResolvePath(string pathFragment, string runtime, ILogger? l string currentDirectory = Environment.CurrentDirectory.ToLowerInvariant(); - string directoryExtension = @$"bin\release\{runtime}"; + string directoryExtension = Path.Combine("bin","release", runtime); + if (currentDirectory.Contains("debug")) { - directoryExtension = @$"bin\debug\{runtime}"; + directoryExtension = Path.Combine("bin", "debug", runtime); } logger.LogDebug("Working directory is {WorkingDirectory}", currentDirectory); From 45ff7acff8d4df005dd95a6472091f01f83dd19f Mon Sep 17 00:00:00 2001 From: Howard van Rooijen Date: Thu, 8 Aug 2024 06:52:34 +0100 Subject: [PATCH 14/25] Endjin.RecommendedPractices.GitHub to 2.1.13 --- ...reFunctions.DemoFunctions.InProcess.csproj | 2 +- .../packages.lock.json | 32 +++++++++++++++---- ...ureFunctions.DemoFunctions.Isolated.csproj | 2 +- ...esting.AzureFunctions.ReqnRoll.Demo.csproj | 2 +- .../packages.lock.json | 32 +++++++++++++++---- ...vus.Testing.AzureFunctions.ReqnRoll.csproj | 2 +- ...s.Testing.AzureFunctions.Xunit.Demo.csproj | 2 +- .../packages.lock.json | 32 +++++++++++++++---- .../Corvus.Testing.AzureFunctions.csproj | 2 +- .../Corvus.Testing.ReqnRoll.Specs.csproj | 2 +- .../packages.lock.json | 32 +++++++++++++++---- .../Corvus.Testing.ReqnRoll.csproj | 2 +- 12 files changed, 112 insertions(+), 32 deletions(-) diff --git a/Solutions/Corvus.Testing.AzureFunctions.DemoFunction.InProcess/Corvus.Testing.AzureFunctions.DemoFunctions.InProcess.csproj b/Solutions/Corvus.Testing.AzureFunctions.DemoFunction.InProcess/Corvus.Testing.AzureFunctions.DemoFunctions.InProcess.csproj index 92b5cb67..7efd0c38 100644 --- a/Solutions/Corvus.Testing.AzureFunctions.DemoFunction.InProcess/Corvus.Testing.AzureFunctions.DemoFunctions.InProcess.csproj +++ b/Solutions/Corvus.Testing.AzureFunctions.DemoFunction.InProcess/Corvus.Testing.AzureFunctions.DemoFunctions.InProcess.csproj @@ -39,7 +39,7 @@ - + all runtime; build; native; contentfiles; analyzers; buildtransitive diff --git a/Solutions/Corvus.Testing.AzureFunctions.DemoFunction.InProcess/packages.lock.json b/Solutions/Corvus.Testing.AzureFunctions.DemoFunction.InProcess/packages.lock.json index 3d9e6d29..6a1a3e4d 100644 --- a/Solutions/Corvus.Testing.AzureFunctions.DemoFunction.InProcess/packages.lock.json +++ b/Solutions/Corvus.Testing.AzureFunctions.DemoFunction.InProcess/packages.lock.json @@ -4,11 +4,11 @@ "net6.0": { "Endjin.RecommendedPractices.GitHub": { "type": "Direct", - "requested": "[2.1.12, )", - "resolved": "2.1.12", - "contentHash": "JEOlUQymdvrI6OeVHPTpakLhOJvkLdvmH+wJNNdjqSq3FtZ2LnqKei+4AMFUzTdJcL6RF3KGD3x0AqUfhYgWcw==", + "requested": "[2.1.13, )", + "resolved": "2.1.13", + "contentHash": "ZefZtlE4NE4ajKMzUtdeb9+SSWv95gutAykQmTEuj2Ln13/1etgxha9QFhrALHr+ewvUH7M3X1qh9HBmWMLRFg==", "dependencies": { - "Endjin.RecommendedPractices": "2.1.12", + "Endjin.RecommendedPractices": "2.1.13", "Microsoft.SourceLink.GitHub": "1.1.1" } }, @@ -29,10 +29,25 @@ "System.Text.RegularExpressions": "4.3.1" } }, + "Roslynator.Analyzers": { + "type": "Direct", + "requested": "[4.12.4, )", + "resolved": "4.12.4", + "contentHash": "isl8hAh7yFNjyBEC4YlTSi+xGBblqBUC/2MCMmnBPwuXPewb7XYnMRzT3vXbP/gOGwT8hZUOy1g/aRH3lAF/NQ==" + }, + "StyleCop.Analyzers": { + "type": "Direct", + "requested": "[1.2.0-beta.556, )", + "resolved": "1.2.0-beta.556", + "contentHash": "llRPgmA1fhC0I0QyFLEcjvtM2239QzKr/tcnbsjArLMJxJlu0AA5G7Fft0OI30pHF3MW63Gf4aSSsjc5m82J1Q==", + "dependencies": { + "StyleCop.Analyzers.Unstable": "1.2.0.556" + } + }, "Endjin.RecommendedPractices": { "type": "Transitive", - "resolved": "2.1.12", - "contentHash": "OZObdtlvF6isizGzO0Vydwmj2IR8GxydcTMGCoA9lmejnlCRWYPuyJXr3ULknlJ23hHDkyLFnu/xNA4duMr2SQ==", + "resolved": "2.1.13", + "contentHash": "ZXMVKFaBJYaAfRKS/Uv8kUANDsEj2L9H5L4XVXyZULI0UANqZ/ROVTpOqulkukf3UFc/jnnVG2EfByynTiztDg==", "dependencies": { "Microsoft.Build.Tasks.Git": "1.1.1" } @@ -747,6 +762,11 @@ "resolved": "4.3.2", "contentHash": "leXiwfiIkW7Gmn7cgnNcdtNAU70SjmKW3jxGj1iKHOvdn0zRWsgv/l2OJUO5zdGdiv2VRFnAsxxhDgMzofPdWg==" }, + "StyleCop.Analyzers.Unstable": { + "type": "Transitive", + "resolved": "1.2.0.556", + "contentHash": "zvn9Mqs/ox/83cpYPignI8hJEM2A93s2HkHs8HYMOAQW0PkampyoErAiIyKxgTLqbbad29HX/shv/6LGSjPJNQ==" + }, "System.AppContext": { "type": "Transitive", "resolved": "4.3.0", diff --git a/Solutions/Corvus.Testing.AzureFunctions.DemoFunctions.Isolated/Corvus.Testing.AzureFunctions.DemoFunctions.Isolated.csproj b/Solutions/Corvus.Testing.AzureFunctions.DemoFunctions.Isolated/Corvus.Testing.AzureFunctions.DemoFunctions.Isolated.csproj index 6fa3339c..782499b3 100644 --- a/Solutions/Corvus.Testing.AzureFunctions.DemoFunctions.Isolated/Corvus.Testing.AzureFunctions.DemoFunctions.Isolated.csproj +++ b/Solutions/Corvus.Testing.AzureFunctions.DemoFunctions.Isolated/Corvus.Testing.AzureFunctions.DemoFunctions.Isolated.csproj @@ -16,7 +16,7 @@ - + diff --git a/Solutions/Corvus.Testing.AzureFunctions.ReqnRoll.Demo/Corvus.Testing.AzureFunctions.ReqnRoll.Demo.csproj b/Solutions/Corvus.Testing.AzureFunctions.ReqnRoll.Demo/Corvus.Testing.AzureFunctions.ReqnRoll.Demo.csproj index d51b410a..3d759571 100644 --- a/Solutions/Corvus.Testing.AzureFunctions.ReqnRoll.Demo/Corvus.Testing.AzureFunctions.ReqnRoll.Demo.csproj +++ b/Solutions/Corvus.Testing.AzureFunctions.ReqnRoll.Demo/Corvus.Testing.AzureFunctions.ReqnRoll.Demo.csproj @@ -46,7 +46,7 @@ - + all runtime; build; native; contentfiles; analyzers; buildtransitive diff --git a/Solutions/Corvus.Testing.AzureFunctions.ReqnRoll.Demo/packages.lock.json b/Solutions/Corvus.Testing.AzureFunctions.ReqnRoll.Demo/packages.lock.json index a8fa1f76..92b45584 100644 --- a/Solutions/Corvus.Testing.AzureFunctions.ReqnRoll.Demo/packages.lock.json +++ b/Solutions/Corvus.Testing.AzureFunctions.ReqnRoll.Demo/packages.lock.json @@ -4,11 +4,11 @@ "net8.0": { "Endjin.RecommendedPractices.GitHub": { "type": "Direct", - "requested": "[2.1.12, )", - "resolved": "2.1.12", - "contentHash": "JEOlUQymdvrI6OeVHPTpakLhOJvkLdvmH+wJNNdjqSq3FtZ2LnqKei+4AMFUzTdJcL6RF3KGD3x0AqUfhYgWcw==", + "requested": "[2.1.13, )", + "resolved": "2.1.13", + "contentHash": "ZefZtlE4NE4ajKMzUtdeb9+SSWv95gutAykQmTEuj2Ln13/1etgxha9QFhrALHr+ewvUH7M3X1qh9HBmWMLRFg==", "dependencies": { - "Endjin.RecommendedPractices": "2.1.12", + "Endjin.RecommendedPractices": "2.1.13", "Microsoft.SourceLink.GitHub": "1.1.1" } }, @@ -49,6 +49,21 @@ "Reqnroll.Tools.MsBuild.Generation": "[2.0.3]" } }, + "Roslynator.Analyzers": { + "type": "Direct", + "requested": "[4.12.4, )", + "resolved": "4.12.4", + "contentHash": "isl8hAh7yFNjyBEC4YlTSi+xGBblqBUC/2MCMmnBPwuXPewb7XYnMRzT3vXbP/gOGwT8hZUOy1g/aRH3lAF/NQ==" + }, + "StyleCop.Analyzers": { + "type": "Direct", + "requested": "[1.2.0-beta.556, )", + "resolved": "1.2.0-beta.556", + "contentHash": "llRPgmA1fhC0I0QyFLEcjvtM2239QzKr/tcnbsjArLMJxJlu0AA5G7Fft0OI30pHF3MW63Gf4aSSsjc5m82J1Q==", + "dependencies": { + "StyleCop.Analyzers.Unstable": "1.2.0.556" + } + }, "coverlet.msbuild": { "type": "Transitive", "resolved": "6.0.2", @@ -61,8 +76,8 @@ }, "Endjin.RecommendedPractices": { "type": "Transitive", - "resolved": "2.1.12", - "contentHash": "OZObdtlvF6isizGzO0Vydwmj2IR8GxydcTMGCoA9lmejnlCRWYPuyJXr3ULknlJ23hHDkyLFnu/xNA4duMr2SQ==", + "resolved": "2.1.13", + "contentHash": "ZXMVKFaBJYaAfRKS/Uv8kUANDsEj2L9H5L4XVXyZULI0UANqZ/ROVTpOqulkukf3UFc/jnnVG2EfByynTiztDg==", "dependencies": { "Microsoft.Build.Tasks.Git": "1.1.1" } @@ -280,6 +295,11 @@ "resolved": "1.0.8", "contentHash": "lVCC/Rie7N5rFoc7YxPS0nneLfsWSTIMMlkndwxhaD8MxBp3Bsv1HeiVjVwXCjWaQeoqZcvIy52fF5Xit00ZLw==" }, + "StyleCop.Analyzers.Unstable": { + "type": "Transitive", + "resolved": "1.2.0.556", + "contentHash": "zvn9Mqs/ox/83cpYPignI8hJEM2A93s2HkHs8HYMOAQW0PkampyoErAiIyKxgTLqbbad29HX/shv/6LGSjPJNQ==" + }, "System.Buffers": { "type": "Transitive", "resolved": "4.5.1", diff --git a/Solutions/Corvus.Testing.AzureFunctions.ReqnRoll/Corvus.Testing.AzureFunctions.ReqnRoll.csproj b/Solutions/Corvus.Testing.AzureFunctions.ReqnRoll/Corvus.Testing.AzureFunctions.ReqnRoll.csproj index 10bb499e..e9597e12 100644 --- a/Solutions/Corvus.Testing.AzureFunctions.ReqnRoll/Corvus.Testing.AzureFunctions.ReqnRoll.csproj +++ b/Solutions/Corvus.Testing.AzureFunctions.ReqnRoll/Corvus.Testing.AzureFunctions.ReqnRoll.csproj @@ -26,7 +26,7 @@ - + all runtime; build; native; contentfiles; analyzers; buildtransitive diff --git a/Solutions/Corvus.Testing.AzureFunctions.Xunit.Demo/Corvus.Testing.AzureFunctions.Xunit.Demo.csproj b/Solutions/Corvus.Testing.AzureFunctions.Xunit.Demo/Corvus.Testing.AzureFunctions.Xunit.Demo.csproj index e53139cc..0b62de94 100644 --- a/Solutions/Corvus.Testing.AzureFunctions.Xunit.Demo/Corvus.Testing.AzureFunctions.Xunit.Demo.csproj +++ b/Solutions/Corvus.Testing.AzureFunctions.Xunit.Demo/Corvus.Testing.AzureFunctions.Xunit.Demo.csproj @@ -40,7 +40,7 @@ - + all runtime; build; native; contentfiles; analyzers; buildtransitive diff --git a/Solutions/Corvus.Testing.AzureFunctions.Xunit.Demo/packages.lock.json b/Solutions/Corvus.Testing.AzureFunctions.Xunit.Demo/packages.lock.json index 000e03b4..f4e8146d 100644 --- a/Solutions/Corvus.Testing.AzureFunctions.Xunit.Demo/packages.lock.json +++ b/Solutions/Corvus.Testing.AzureFunctions.Xunit.Demo/packages.lock.json @@ -4,11 +4,11 @@ "net8.0": { "Endjin.RecommendedPractices.GitHub": { "type": "Direct", - "requested": "[2.1.12, )", - "resolved": "2.1.12", - "contentHash": "JEOlUQymdvrI6OeVHPTpakLhOJvkLdvmH+wJNNdjqSq3FtZ2LnqKei+4AMFUzTdJcL6RF3KGD3x0AqUfhYgWcw==", + "requested": "[2.1.13, )", + "resolved": "2.1.13", + "contentHash": "ZefZtlE4NE4ajKMzUtdeb9+SSWv95gutAykQmTEuj2Ln13/1etgxha9QFhrALHr+ewvUH7M3X1qh9HBmWMLRFg==", "dependencies": { - "Endjin.RecommendedPractices": "2.1.12", + "Endjin.RecommendedPractices": "2.1.13", "Microsoft.SourceLink.GitHub": "1.1.1" } }, @@ -33,6 +33,12 @@ "Microsoft.TestPlatform.TestHost": "17.10.0" } }, + "Roslynator.Analyzers": { + "type": "Direct", + "requested": "[4.12.4, )", + "resolved": "4.12.4", + "contentHash": "isl8hAh7yFNjyBEC4YlTSi+xGBblqBUC/2MCMmnBPwuXPewb7XYnMRzT3vXbP/gOGwT8hZUOy1g/aRH3lAF/NQ==" + }, "Serilog.Extensions.Logging": { "type": "Direct", "requested": "[8.0.0, )", @@ -64,6 +70,15 @@ "xunit.extensibility.execution": "2.4.2" } }, + "StyleCop.Analyzers": { + "type": "Direct", + "requested": "[1.2.0-beta.556, )", + "resolved": "1.2.0-beta.556", + "contentHash": "llRPgmA1fhC0I0QyFLEcjvtM2239QzKr/tcnbsjArLMJxJlu0AA5G7Fft0OI30pHF3MW63Gf4aSSsjc5m82J1Q==", + "dependencies": { + "StyleCop.Analyzers.Unstable": "1.2.0.556" + } + }, "xunit": { "type": "Direct", "requested": "[2.9.0, )", @@ -83,8 +98,8 @@ }, "Endjin.RecommendedPractices": { "type": "Transitive", - "resolved": "2.1.12", - "contentHash": "OZObdtlvF6isizGzO0Vydwmj2IR8GxydcTMGCoA9lmejnlCRWYPuyJXr3ULknlJ23hHDkyLFnu/xNA4duMr2SQ==", + "resolved": "2.1.13", + "contentHash": "ZXMVKFaBJYaAfRKS/Uv8kUANDsEj2L9H5L4XVXyZULI0UANqZ/ROVTpOqulkukf3UFc/jnnVG2EfByynTiztDg==", "dependencies": { "Microsoft.Build.Tasks.Git": "1.1.1" } @@ -189,6 +204,11 @@ "resolved": "4.0.0", "contentHash": "2jDkUrSh5EofOp7Lx5Zgy0EB+7hXjjxE2ktTb1WVQmU00lDACR2TdROGKU0K1pDTBSJBN1PqgYpgOZF8mL7NJw==" }, + "StyleCop.Analyzers.Unstable": { + "type": "Transitive", + "resolved": "1.2.0.556", + "contentHash": "zvn9Mqs/ox/83cpYPignI8hJEM2A93s2HkHs8HYMOAQW0PkampyoErAiIyKxgTLqbbad29HX/shv/6LGSjPJNQ==" + }, "System.CodeDom": { "type": "Transitive", "resolved": "4.7.0", diff --git a/Solutions/Corvus.Testing.AzureFunctions/Corvus.Testing.AzureFunctions.csproj b/Solutions/Corvus.Testing.AzureFunctions/Corvus.Testing.AzureFunctions.csproj index 0eca612b..6d3a3f0a 100644 --- a/Solutions/Corvus.Testing.AzureFunctions/Corvus.Testing.AzureFunctions.csproj +++ b/Solutions/Corvus.Testing.AzureFunctions/Corvus.Testing.AzureFunctions.csproj @@ -23,7 +23,7 @@ - + all runtime; build; native; contentfiles; analyzers; buildtransitive diff --git a/Solutions/Corvus.Testing.ReqnRoll.Specs/Corvus.Testing.ReqnRoll.Specs.csproj b/Solutions/Corvus.Testing.ReqnRoll.Specs/Corvus.Testing.ReqnRoll.Specs.csproj index 6f4c4945..73d88b6d 100644 --- a/Solutions/Corvus.Testing.ReqnRoll.Specs/Corvus.Testing.ReqnRoll.Specs.csproj +++ b/Solutions/Corvus.Testing.ReqnRoll.Specs/Corvus.Testing.ReqnRoll.Specs.csproj @@ -46,7 +46,7 @@ - + all runtime; build; native; contentfiles; analyzers; buildtransitive diff --git a/Solutions/Corvus.Testing.ReqnRoll.Specs/packages.lock.json b/Solutions/Corvus.Testing.ReqnRoll.Specs/packages.lock.json index 67011ba8..ad40a3ca 100644 --- a/Solutions/Corvus.Testing.ReqnRoll.Specs/packages.lock.json +++ b/Solutions/Corvus.Testing.ReqnRoll.Specs/packages.lock.json @@ -4,11 +4,11 @@ "net8.0": { "Endjin.RecommendedPractices.GitHub": { "type": "Direct", - "requested": "[2.1.12, )", - "resolved": "2.1.12", - "contentHash": "JEOlUQymdvrI6OeVHPTpakLhOJvkLdvmH+wJNNdjqSq3FtZ2LnqKei+4AMFUzTdJcL6RF3KGD3x0AqUfhYgWcw==", + "requested": "[2.1.13, )", + "resolved": "2.1.13", + "contentHash": "ZefZtlE4NE4ajKMzUtdeb9+SSWv95gutAykQmTEuj2Ln13/1etgxha9QFhrALHr+ewvUH7M3X1qh9HBmWMLRFg==", "dependencies": { - "Endjin.RecommendedPractices": "2.1.12", + "Endjin.RecommendedPractices": "2.1.13", "Microsoft.SourceLink.GitHub": "1.1.1" } }, @@ -39,6 +39,21 @@ "Reqnroll.Tools.MsBuild.Generation": "[2.0.3]" } }, + "Roslynator.Analyzers": { + "type": "Direct", + "requested": "[4.12.4, )", + "resolved": "4.12.4", + "contentHash": "isl8hAh7yFNjyBEC4YlTSi+xGBblqBUC/2MCMmnBPwuXPewb7XYnMRzT3vXbP/gOGwT8hZUOy1g/aRH3lAF/NQ==" + }, + "StyleCop.Analyzers": { + "type": "Direct", + "requested": "[1.2.0-beta.556, )", + "resolved": "1.2.0-beta.556", + "contentHash": "llRPgmA1fhC0I0QyFLEcjvtM2239QzKr/tcnbsjArLMJxJlu0AA5G7Fft0OI30pHF3MW63Gf4aSSsjc5m82J1Q==", + "dependencies": { + "StyleCop.Analyzers.Unstable": "1.2.0.556" + } + }, "coverlet.msbuild": { "type": "Transitive", "resolved": "6.0.2", @@ -51,8 +66,8 @@ }, "Endjin.RecommendedPractices": { "type": "Transitive", - "resolved": "2.1.12", - "contentHash": "OZObdtlvF6isizGzO0Vydwmj2IR8GxydcTMGCoA9lmejnlCRWYPuyJXr3ULknlJ23hHDkyLFnu/xNA4duMr2SQ==", + "resolved": "2.1.13", + "contentHash": "ZXMVKFaBJYaAfRKS/Uv8kUANDsEj2L9H5L4XVXyZULI0UANqZ/ROVTpOqulkukf3UFc/jnnVG2EfByynTiztDg==", "dependencies": { "Microsoft.Build.Tasks.Git": "1.1.1" } @@ -195,6 +210,11 @@ "resolved": "1.0.8", "contentHash": "lVCC/Rie7N5rFoc7YxPS0nneLfsWSTIMMlkndwxhaD8MxBp3Bsv1HeiVjVwXCjWaQeoqZcvIy52fF5Xit00ZLw==" }, + "StyleCop.Analyzers.Unstable": { + "type": "Transitive", + "resolved": "1.2.0.556", + "contentHash": "zvn9Mqs/ox/83cpYPignI8hJEM2A93s2HkHs8HYMOAQW0PkampyoErAiIyKxgTLqbbad29HX/shv/6LGSjPJNQ==" + }, "System.Buffers": { "type": "Transitive", "resolved": "4.5.1", diff --git a/Solutions/Corvus.Testing.ReqnRoll/Corvus.Testing.ReqnRoll.csproj b/Solutions/Corvus.Testing.ReqnRoll/Corvus.Testing.ReqnRoll.csproj index 44a16d68..dbcd46a2 100644 --- a/Solutions/Corvus.Testing.ReqnRoll/Corvus.Testing.ReqnRoll.csproj +++ b/Solutions/Corvus.Testing.ReqnRoll/Corvus.Testing.ReqnRoll.csproj @@ -26,7 +26,7 @@ - + all runtime; build; native; contentfiles; analyzers; buildtransitive From 15997db14999bbe3db21f703cc1e326febcf4c78 Mon Sep 17 00:00:00 2001 From: Howard van Rooijen Date: Thu, 8 Aug 2024 07:03:30 +0100 Subject: [PATCH 15/25] Update folder path to be case sensitive (important on *nix) and ensure InProcess are running as .NET 6.0 --- .../AzureFunctionsTesting/DemoFunctionPerFeatureHooks.cs | 2 +- .../AzureFunctionsTesting/DemoFunctionPerScenarioHooks.cs | 2 +- .../Corvus/Testing/AzureFunctions/FunctionProject.cs | 2 +- 3 files changed, 3 insertions(+), 3 deletions(-) diff --git a/Solutions/Corvus.Testing.AzureFunctions.ReqnRoll.Demo/AzureFunctionsTesting/DemoFunctionPerFeatureHooks.cs b/Solutions/Corvus.Testing.AzureFunctions.ReqnRoll.Demo/AzureFunctionsTesting/DemoFunctionPerFeatureHooks.cs index 7aa8debe..5069e1bb 100644 --- a/Solutions/Corvus.Testing.AzureFunctions.ReqnRoll.Demo/AzureFunctionsTesting/DemoFunctionPerFeatureHooks.cs +++ b/Solutions/Corvus.Testing.AzureFunctions.ReqnRoll.Demo/AzureFunctionsTesting/DemoFunctionPerFeatureHooks.cs @@ -24,7 +24,7 @@ public static Task StartInProcessFunctionsAsync(FeatureContext featureContext) return functionsController.StartFunctionsInstance( "Corvus.Testing.AzureFunctions.DemoFunction.InProcess", 7075, - "net8.0", + "net6.0", configuration: functionConfiguration); } diff --git a/Solutions/Corvus.Testing.AzureFunctions.ReqnRoll.Demo/AzureFunctionsTesting/DemoFunctionPerScenarioHooks.cs b/Solutions/Corvus.Testing.AzureFunctions.ReqnRoll.Demo/AzureFunctionsTesting/DemoFunctionPerScenarioHooks.cs index 808474de..a52cc7cb 100644 --- a/Solutions/Corvus.Testing.AzureFunctions.ReqnRoll.Demo/AzureFunctionsTesting/DemoFunctionPerScenarioHooks.cs +++ b/Solutions/Corvus.Testing.AzureFunctions.ReqnRoll.Demo/AzureFunctionsTesting/DemoFunctionPerScenarioHooks.cs @@ -22,7 +22,7 @@ public static Task StartInProcessFunctionsAsync(ScenarioContext scenarioContext) return functionsController.StartFunctionsInstance( "Corvus.Testing.AzureFunctions.DemoFunction.InProcess", 7075, - "net8.0", + "net6.0", configuration: functionConfiguration); } diff --git a/Solutions/Corvus.Testing.AzureFunctions/Corvus/Testing/AzureFunctions/FunctionProject.cs b/Solutions/Corvus.Testing.AzureFunctions/Corvus/Testing/AzureFunctions/FunctionProject.cs index e5505f56..6060b397 100644 --- a/Solutions/Corvus.Testing.AzureFunctions/Corvus/Testing/AzureFunctions/FunctionProject.cs +++ b/Solutions/Corvus.Testing.AzureFunctions/Corvus/Testing/AzureFunctions/FunctionProject.cs @@ -43,7 +43,7 @@ public static string ResolvePath(string pathFragment, string runtime, ILogger? l string currentDirectory = Environment.CurrentDirectory.ToLowerInvariant(); - string directoryExtension = Path.Combine("bin","release", runtime); + string directoryExtension = Path.Combine("bin", "Release", runtime); if (currentDirectory.Contains("debug")) { From d59d17f95dd37a90361cd4f624ef389e5177e31c Mon Sep 17 00:00:00 2001 From: Howard van Rooijen Date: Thu, 8 Aug 2024 07:15:37 +0100 Subject: [PATCH 16/25] This PR is a major breaking change and should be a major version increment --- GitVersion.yml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/GitVersion.yml b/GitVersion.yml index d0c1e5c3..b84eaa40 100644 --- a/GitVersion.yml +++ b/GitVersion.yml @@ -15,10 +15,10 @@ branches: tag: dependabot source-branches: - develop - - master + - main - release - feature - support - hotfix -next-version: "3.0" +next-version: "4.0" From e66a9f1dbf571511f895185038a0fde48854b15b Mon Sep 17 00:00:00 2001 From: Howard van Rooijen Date: Thu, 8 Aug 2024 07:15:53 +0100 Subject: [PATCH 17/25] Fix .net runtime version for isolated tests --- .../packages.lock.json | 20 ------------------- .../packages.lock.json | 20 ------------------- .../AzureFunctionFixture.cs | 2 +- .../ConfiguredAzureFunctionFixture.cs | 2 +- .../FunctionPerTestFacts.cs | 2 +- .../packages.lock.json | 20 ------------------- .../packages.lock.json | 20 ------------------- 7 files changed, 3 insertions(+), 83 deletions(-) diff --git a/Solutions/Corvus.Testing.AzureFunctions.DemoFunction.InProcess/packages.lock.json b/Solutions/Corvus.Testing.AzureFunctions.DemoFunction.InProcess/packages.lock.json index 6a1a3e4d..3319e79f 100644 --- a/Solutions/Corvus.Testing.AzureFunctions.DemoFunction.InProcess/packages.lock.json +++ b/Solutions/Corvus.Testing.AzureFunctions.DemoFunction.InProcess/packages.lock.json @@ -29,21 +29,6 @@ "System.Text.RegularExpressions": "4.3.1" } }, - "Roslynator.Analyzers": { - "type": "Direct", - "requested": "[4.12.4, )", - "resolved": "4.12.4", - "contentHash": "isl8hAh7yFNjyBEC4YlTSi+xGBblqBUC/2MCMmnBPwuXPewb7XYnMRzT3vXbP/gOGwT8hZUOy1g/aRH3lAF/NQ==" - }, - "StyleCop.Analyzers": { - "type": "Direct", - "requested": "[1.2.0-beta.556, )", - "resolved": "1.2.0-beta.556", - "contentHash": "llRPgmA1fhC0I0QyFLEcjvtM2239QzKr/tcnbsjArLMJxJlu0AA5G7Fft0OI30pHF3MW63Gf4aSSsjc5m82J1Q==", - "dependencies": { - "StyleCop.Analyzers.Unstable": "1.2.0.556" - } - }, "Endjin.RecommendedPractices": { "type": "Transitive", "resolved": "2.1.13", @@ -762,11 +747,6 @@ "resolved": "4.3.2", "contentHash": "leXiwfiIkW7Gmn7cgnNcdtNAU70SjmKW3jxGj1iKHOvdn0zRWsgv/l2OJUO5zdGdiv2VRFnAsxxhDgMzofPdWg==" }, - "StyleCop.Analyzers.Unstable": { - "type": "Transitive", - "resolved": "1.2.0.556", - "contentHash": "zvn9Mqs/ox/83cpYPignI8hJEM2A93s2HkHs8HYMOAQW0PkampyoErAiIyKxgTLqbbad29HX/shv/6LGSjPJNQ==" - }, "System.AppContext": { "type": "Transitive", "resolved": "4.3.0", diff --git a/Solutions/Corvus.Testing.AzureFunctions.ReqnRoll.Demo/packages.lock.json b/Solutions/Corvus.Testing.AzureFunctions.ReqnRoll.Demo/packages.lock.json index 92b45584..872d3dda 100644 --- a/Solutions/Corvus.Testing.AzureFunctions.ReqnRoll.Demo/packages.lock.json +++ b/Solutions/Corvus.Testing.AzureFunctions.ReqnRoll.Demo/packages.lock.json @@ -49,21 +49,6 @@ "Reqnroll.Tools.MsBuild.Generation": "[2.0.3]" } }, - "Roslynator.Analyzers": { - "type": "Direct", - "requested": "[4.12.4, )", - "resolved": "4.12.4", - "contentHash": "isl8hAh7yFNjyBEC4YlTSi+xGBblqBUC/2MCMmnBPwuXPewb7XYnMRzT3vXbP/gOGwT8hZUOy1g/aRH3lAF/NQ==" - }, - "StyleCop.Analyzers": { - "type": "Direct", - "requested": "[1.2.0-beta.556, )", - "resolved": "1.2.0-beta.556", - "contentHash": "llRPgmA1fhC0I0QyFLEcjvtM2239QzKr/tcnbsjArLMJxJlu0AA5G7Fft0OI30pHF3MW63Gf4aSSsjc5m82J1Q==", - "dependencies": { - "StyleCop.Analyzers.Unstable": "1.2.0.556" - } - }, "coverlet.msbuild": { "type": "Transitive", "resolved": "6.0.2", @@ -295,11 +280,6 @@ "resolved": "1.0.8", "contentHash": "lVCC/Rie7N5rFoc7YxPS0nneLfsWSTIMMlkndwxhaD8MxBp3Bsv1HeiVjVwXCjWaQeoqZcvIy52fF5Xit00ZLw==" }, - "StyleCop.Analyzers.Unstable": { - "type": "Transitive", - "resolved": "1.2.0.556", - "contentHash": "zvn9Mqs/ox/83cpYPignI8hJEM2A93s2HkHs8HYMOAQW0PkampyoErAiIyKxgTLqbbad29HX/shv/6LGSjPJNQ==" - }, "System.Buffers": { "type": "Transitive", "resolved": "4.5.1", diff --git a/Solutions/Corvus.Testing.AzureFunctions.Xunit.Demo/AzureFunctionFixture.cs b/Solutions/Corvus.Testing.AzureFunctions.Xunit.Demo/AzureFunctionFixture.cs index f65e34a8..ff8357e7 100644 --- a/Solutions/Corvus.Testing.AzureFunctions.Xunit.Demo/AzureFunctionFixture.cs +++ b/Solutions/Corvus.Testing.AzureFunctions.Xunit.Demo/AzureFunctionFixture.cs @@ -40,7 +40,7 @@ public async Task InitializeAsync() await this.function.StartFunctionsInstance( "Corvus.Testing.AzureFunctions.DemoFunction.InProcess", Port, - "net8.0"); + "net6.0"); } public Task DisposeAsync() diff --git a/Solutions/Corvus.Testing.AzureFunctions.Xunit.Demo/ConfiguredAzureFunctionFixture.cs b/Solutions/Corvus.Testing.AzureFunctions.Xunit.Demo/ConfiguredAzureFunctionFixture.cs index 897a7089..7382680c 100644 --- a/Solutions/Corvus.Testing.AzureFunctions.Xunit.Demo/ConfiguredAzureFunctionFixture.cs +++ b/Solutions/Corvus.Testing.AzureFunctions.Xunit.Demo/ConfiguredAzureFunctionFixture.cs @@ -41,7 +41,7 @@ public async Task InitializeAsync() await this.function.StartFunctionsInstance( "Corvus.Testing.AzureFunctions.DemoFunction.InProcess", Port, - "net8.0", + "net6.0", configuration: configuration); } diff --git a/Solutions/Corvus.Testing.AzureFunctions.Xunit.Demo/FunctionPerTestFacts.cs b/Solutions/Corvus.Testing.AzureFunctions.Xunit.Demo/FunctionPerTestFacts.cs index 193a6a62..bd6b6c37 100644 --- a/Solutions/Corvus.Testing.AzureFunctions.Xunit.Demo/FunctionPerTestFacts.cs +++ b/Solutions/Corvus.Testing.AzureFunctions.Xunit.Demo/FunctionPerTestFacts.cs @@ -102,7 +102,7 @@ public async Task InitializeAsync() await this.function.StartFunctionsInstance( "Corvus.Testing.AzureFunctions.DemoFunction.InProcess", this.Port, - "net8.0"); + "net6.0"); } public Task DisposeAsync() diff --git a/Solutions/Corvus.Testing.AzureFunctions.Xunit.Demo/packages.lock.json b/Solutions/Corvus.Testing.AzureFunctions.Xunit.Demo/packages.lock.json index f4e8146d..15173eeb 100644 --- a/Solutions/Corvus.Testing.AzureFunctions.Xunit.Demo/packages.lock.json +++ b/Solutions/Corvus.Testing.AzureFunctions.Xunit.Demo/packages.lock.json @@ -33,12 +33,6 @@ "Microsoft.TestPlatform.TestHost": "17.10.0" } }, - "Roslynator.Analyzers": { - "type": "Direct", - "requested": "[4.12.4, )", - "resolved": "4.12.4", - "contentHash": "isl8hAh7yFNjyBEC4YlTSi+xGBblqBUC/2MCMmnBPwuXPewb7XYnMRzT3vXbP/gOGwT8hZUOy1g/aRH3lAF/NQ==" - }, "Serilog.Extensions.Logging": { "type": "Direct", "requested": "[8.0.0, )", @@ -70,15 +64,6 @@ "xunit.extensibility.execution": "2.4.2" } }, - "StyleCop.Analyzers": { - "type": "Direct", - "requested": "[1.2.0-beta.556, )", - "resolved": "1.2.0-beta.556", - "contentHash": "llRPgmA1fhC0I0QyFLEcjvtM2239QzKr/tcnbsjArLMJxJlu0AA5G7Fft0OI30pHF3MW63Gf4aSSsjc5m82J1Q==", - "dependencies": { - "StyleCop.Analyzers.Unstable": "1.2.0.556" - } - }, "xunit": { "type": "Direct", "requested": "[2.9.0, )", @@ -204,11 +189,6 @@ "resolved": "4.0.0", "contentHash": "2jDkUrSh5EofOp7Lx5Zgy0EB+7hXjjxE2ktTb1WVQmU00lDACR2TdROGKU0K1pDTBSJBN1PqgYpgOZF8mL7NJw==" }, - "StyleCop.Analyzers.Unstable": { - "type": "Transitive", - "resolved": "1.2.0.556", - "contentHash": "zvn9Mqs/ox/83cpYPignI8hJEM2A93s2HkHs8HYMOAQW0PkampyoErAiIyKxgTLqbbad29HX/shv/6LGSjPJNQ==" - }, "System.CodeDom": { "type": "Transitive", "resolved": "4.7.0", diff --git a/Solutions/Corvus.Testing.ReqnRoll.Specs/packages.lock.json b/Solutions/Corvus.Testing.ReqnRoll.Specs/packages.lock.json index ad40a3ca..8f179164 100644 --- a/Solutions/Corvus.Testing.ReqnRoll.Specs/packages.lock.json +++ b/Solutions/Corvus.Testing.ReqnRoll.Specs/packages.lock.json @@ -39,21 +39,6 @@ "Reqnroll.Tools.MsBuild.Generation": "[2.0.3]" } }, - "Roslynator.Analyzers": { - "type": "Direct", - "requested": "[4.12.4, )", - "resolved": "4.12.4", - "contentHash": "isl8hAh7yFNjyBEC4YlTSi+xGBblqBUC/2MCMmnBPwuXPewb7XYnMRzT3vXbP/gOGwT8hZUOy1g/aRH3lAF/NQ==" - }, - "StyleCop.Analyzers": { - "type": "Direct", - "requested": "[1.2.0-beta.556, )", - "resolved": "1.2.0-beta.556", - "contentHash": "llRPgmA1fhC0I0QyFLEcjvtM2239QzKr/tcnbsjArLMJxJlu0AA5G7Fft0OI30pHF3MW63Gf4aSSsjc5m82J1Q==", - "dependencies": { - "StyleCop.Analyzers.Unstable": "1.2.0.556" - } - }, "coverlet.msbuild": { "type": "Transitive", "resolved": "6.0.2", @@ -210,11 +195,6 @@ "resolved": "1.0.8", "contentHash": "lVCC/Rie7N5rFoc7YxPS0nneLfsWSTIMMlkndwxhaD8MxBp3Bsv1HeiVjVwXCjWaQeoqZcvIy52fF5Xit00ZLw==" }, - "StyleCop.Analyzers.Unstable": { - "type": "Transitive", - "resolved": "1.2.0.556", - "contentHash": "zvn9Mqs/ox/83cpYPignI8hJEM2A93s2HkHs8HYMOAQW0PkampyoErAiIyKxgTLqbbad29HX/shv/6LGSjPJNQ==" - }, "System.Buffers": { "type": "Transitive", "resolved": "4.5.1", From 59d37b283dc9e8a59cc9f2829330e46660925e26 Mon Sep 17 00:00:00 2001 From: Howard van Rooijen Date: Thu, 8 Aug 2024 07:57:53 +0100 Subject: [PATCH 18/25] All tests pass locally --- .../packages.lock.json | 20 +++++++++++++++++++ .../packages.lock.json | 20 +++++++++++++++++++ .../packages.lock.json | 20 +++++++++++++++++++ .../packages.lock.json | 20 +++++++++++++++++++ 4 files changed, 80 insertions(+) diff --git a/Solutions/Corvus.Testing.AzureFunctions.DemoFunction.InProcess/packages.lock.json b/Solutions/Corvus.Testing.AzureFunctions.DemoFunction.InProcess/packages.lock.json index 3319e79f..6a1a3e4d 100644 --- a/Solutions/Corvus.Testing.AzureFunctions.DemoFunction.InProcess/packages.lock.json +++ b/Solutions/Corvus.Testing.AzureFunctions.DemoFunction.InProcess/packages.lock.json @@ -29,6 +29,21 @@ "System.Text.RegularExpressions": "4.3.1" } }, + "Roslynator.Analyzers": { + "type": "Direct", + "requested": "[4.12.4, )", + "resolved": "4.12.4", + "contentHash": "isl8hAh7yFNjyBEC4YlTSi+xGBblqBUC/2MCMmnBPwuXPewb7XYnMRzT3vXbP/gOGwT8hZUOy1g/aRH3lAF/NQ==" + }, + "StyleCop.Analyzers": { + "type": "Direct", + "requested": "[1.2.0-beta.556, )", + "resolved": "1.2.0-beta.556", + "contentHash": "llRPgmA1fhC0I0QyFLEcjvtM2239QzKr/tcnbsjArLMJxJlu0AA5G7Fft0OI30pHF3MW63Gf4aSSsjc5m82J1Q==", + "dependencies": { + "StyleCop.Analyzers.Unstable": "1.2.0.556" + } + }, "Endjin.RecommendedPractices": { "type": "Transitive", "resolved": "2.1.13", @@ -747,6 +762,11 @@ "resolved": "4.3.2", "contentHash": "leXiwfiIkW7Gmn7cgnNcdtNAU70SjmKW3jxGj1iKHOvdn0zRWsgv/l2OJUO5zdGdiv2VRFnAsxxhDgMzofPdWg==" }, + "StyleCop.Analyzers.Unstable": { + "type": "Transitive", + "resolved": "1.2.0.556", + "contentHash": "zvn9Mqs/ox/83cpYPignI8hJEM2A93s2HkHs8HYMOAQW0PkampyoErAiIyKxgTLqbbad29HX/shv/6LGSjPJNQ==" + }, "System.AppContext": { "type": "Transitive", "resolved": "4.3.0", diff --git a/Solutions/Corvus.Testing.AzureFunctions.ReqnRoll.Demo/packages.lock.json b/Solutions/Corvus.Testing.AzureFunctions.ReqnRoll.Demo/packages.lock.json index 872d3dda..92b45584 100644 --- a/Solutions/Corvus.Testing.AzureFunctions.ReqnRoll.Demo/packages.lock.json +++ b/Solutions/Corvus.Testing.AzureFunctions.ReqnRoll.Demo/packages.lock.json @@ -49,6 +49,21 @@ "Reqnroll.Tools.MsBuild.Generation": "[2.0.3]" } }, + "Roslynator.Analyzers": { + "type": "Direct", + "requested": "[4.12.4, )", + "resolved": "4.12.4", + "contentHash": "isl8hAh7yFNjyBEC4YlTSi+xGBblqBUC/2MCMmnBPwuXPewb7XYnMRzT3vXbP/gOGwT8hZUOy1g/aRH3lAF/NQ==" + }, + "StyleCop.Analyzers": { + "type": "Direct", + "requested": "[1.2.0-beta.556, )", + "resolved": "1.2.0-beta.556", + "contentHash": "llRPgmA1fhC0I0QyFLEcjvtM2239QzKr/tcnbsjArLMJxJlu0AA5G7Fft0OI30pHF3MW63Gf4aSSsjc5m82J1Q==", + "dependencies": { + "StyleCop.Analyzers.Unstable": "1.2.0.556" + } + }, "coverlet.msbuild": { "type": "Transitive", "resolved": "6.0.2", @@ -280,6 +295,11 @@ "resolved": "1.0.8", "contentHash": "lVCC/Rie7N5rFoc7YxPS0nneLfsWSTIMMlkndwxhaD8MxBp3Bsv1HeiVjVwXCjWaQeoqZcvIy52fF5Xit00ZLw==" }, + "StyleCop.Analyzers.Unstable": { + "type": "Transitive", + "resolved": "1.2.0.556", + "contentHash": "zvn9Mqs/ox/83cpYPignI8hJEM2A93s2HkHs8HYMOAQW0PkampyoErAiIyKxgTLqbbad29HX/shv/6LGSjPJNQ==" + }, "System.Buffers": { "type": "Transitive", "resolved": "4.5.1", diff --git a/Solutions/Corvus.Testing.AzureFunctions.Xunit.Demo/packages.lock.json b/Solutions/Corvus.Testing.AzureFunctions.Xunit.Demo/packages.lock.json index 15173eeb..f4e8146d 100644 --- a/Solutions/Corvus.Testing.AzureFunctions.Xunit.Demo/packages.lock.json +++ b/Solutions/Corvus.Testing.AzureFunctions.Xunit.Demo/packages.lock.json @@ -33,6 +33,12 @@ "Microsoft.TestPlatform.TestHost": "17.10.0" } }, + "Roslynator.Analyzers": { + "type": "Direct", + "requested": "[4.12.4, )", + "resolved": "4.12.4", + "contentHash": "isl8hAh7yFNjyBEC4YlTSi+xGBblqBUC/2MCMmnBPwuXPewb7XYnMRzT3vXbP/gOGwT8hZUOy1g/aRH3lAF/NQ==" + }, "Serilog.Extensions.Logging": { "type": "Direct", "requested": "[8.0.0, )", @@ -64,6 +70,15 @@ "xunit.extensibility.execution": "2.4.2" } }, + "StyleCop.Analyzers": { + "type": "Direct", + "requested": "[1.2.0-beta.556, )", + "resolved": "1.2.0-beta.556", + "contentHash": "llRPgmA1fhC0I0QyFLEcjvtM2239QzKr/tcnbsjArLMJxJlu0AA5G7Fft0OI30pHF3MW63Gf4aSSsjc5m82J1Q==", + "dependencies": { + "StyleCop.Analyzers.Unstable": "1.2.0.556" + } + }, "xunit": { "type": "Direct", "requested": "[2.9.0, )", @@ -189,6 +204,11 @@ "resolved": "4.0.0", "contentHash": "2jDkUrSh5EofOp7Lx5Zgy0EB+7hXjjxE2ktTb1WVQmU00lDACR2TdROGKU0K1pDTBSJBN1PqgYpgOZF8mL7NJw==" }, + "StyleCop.Analyzers.Unstable": { + "type": "Transitive", + "resolved": "1.2.0.556", + "contentHash": "zvn9Mqs/ox/83cpYPignI8hJEM2A93s2HkHs8HYMOAQW0PkampyoErAiIyKxgTLqbbad29HX/shv/6LGSjPJNQ==" + }, "System.CodeDom": { "type": "Transitive", "resolved": "4.7.0", diff --git a/Solutions/Corvus.Testing.ReqnRoll.Specs/packages.lock.json b/Solutions/Corvus.Testing.ReqnRoll.Specs/packages.lock.json index 8f179164..ad40a3ca 100644 --- a/Solutions/Corvus.Testing.ReqnRoll.Specs/packages.lock.json +++ b/Solutions/Corvus.Testing.ReqnRoll.Specs/packages.lock.json @@ -39,6 +39,21 @@ "Reqnroll.Tools.MsBuild.Generation": "[2.0.3]" } }, + "Roslynator.Analyzers": { + "type": "Direct", + "requested": "[4.12.4, )", + "resolved": "4.12.4", + "contentHash": "isl8hAh7yFNjyBEC4YlTSi+xGBblqBUC/2MCMmnBPwuXPewb7XYnMRzT3vXbP/gOGwT8hZUOy1g/aRH3lAF/NQ==" + }, + "StyleCop.Analyzers": { + "type": "Direct", + "requested": "[1.2.0-beta.556, )", + "resolved": "1.2.0-beta.556", + "contentHash": "llRPgmA1fhC0I0QyFLEcjvtM2239QzKr/tcnbsjArLMJxJlu0AA5G7Fft0OI30pHF3MW63Gf4aSSsjc5m82J1Q==", + "dependencies": { + "StyleCop.Analyzers.Unstable": "1.2.0.556" + } + }, "coverlet.msbuild": { "type": "Transitive", "resolved": "6.0.2", @@ -195,6 +210,11 @@ "resolved": "1.0.8", "contentHash": "lVCC/Rie7N5rFoc7YxPS0nneLfsWSTIMMlkndwxhaD8MxBp3Bsv1HeiVjVwXCjWaQeoqZcvIy52fF5Xit00ZLw==" }, + "StyleCop.Analyzers.Unstable": { + "type": "Transitive", + "resolved": "1.2.0.556", + "contentHash": "zvn9Mqs/ox/83cpYPignI8hJEM2A93s2HkHs8HYMOAQW0PkampyoErAiIyKxgTLqbbad29HX/shv/6LGSjPJNQ==" + }, "System.Buffers": { "type": "Transitive", "resolved": "4.5.1", From 9c0b08d69417bfbef83a73299e3de2e6e88bd466 Mon Sep 17 00:00:00 2001 From: Howard van Rooijen Date: Thu, 8 Aug 2024 10:21:51 +0100 Subject: [PATCH 19/25] Ensure the working directory is resolved as an absolute path --- README.md | 11 +++++----- .../packages.lock.json | 20 ------------------- .../packages.lock.json | 20 ------------------- .../packages.lock.json | 20 ------------------- .../Testing/AzureFunctions/FunctionProject.cs | 3 ++- .../packages.lock.json | 20 ------------------- 6 files changed, 8 insertions(+), 86 deletions(-) diff --git a/README.md b/README.md index 3891020a..5045688a 100644 --- a/README.md +++ b/README.md @@ -3,14 +3,15 @@ [![GitHub license](https://img.shields.io/badge/License-Apache%202-blue.svg)](https://raw.githubusercontent.com/corvus-dotnet/Corvus.Testing/main/LICENSE) [![IMM](https://imm.endjin.com/api/imm/github/corvus-dotnet/Corvus.Testing/total?cache=false)](https://imm.endjin.com/api/imm/github/corvus-dotnet/Corvus.Testing/total?cache=false) -This provides a library of useful testing extensions, primarily focussed on ReqnRoll operations. +This provides a library of useful testing extensions, primarily focussed on ReqnRoll operations in v4. v3 focuses on SpecFlow. It is built for .NET 6.0, and we support use on both .NET 6.0 and .NET 8.0. (If you require .NET Standard 2.0, use `Corvus.Testing` v1.) -The ReqnRoll specific libraries contain additional bindings; to use these, you will need to add a `ReqnRoll.json` file to any project wishing to use them. Add entries to the `stepAssemblies` array for each of the Corvus libraries you need to use: +The ReqnRoll specific libraries contain additional bindings; to use these, you will need to add a `reqnroll.json` file to any project wishing to use them. Add entries to the `stepAssemblies` array for each of the Corvus libraries you need to use: ```json { + "$schema": "https://schemas.reqnroll.net/reqnroll-config-latest.json", "stepAssemblies": [ { "assembly": "Corvus.Testing.ReqnRoll" }, { "assembly": "Corvus.Testing.AzureFunctions.ReqnRoll" }, @@ -153,7 +154,7 @@ choco install nodejs npm install -g azure-functions-core-tools@ ``` ->NOTE: You may need to reboot to get Visual Studio to 'see' the NodeJS installation. +> NOTE: You may need to reboot to get Visual Studio to 'see' the NodeJS installation. The tests can be run from the command-line using: ``` @@ -171,13 +172,13 @@ For any licensing questions, please email [licens&# ## Project Sponsor -This project is sponsored by [endjin](https://endjin.com), a UK based Microsoft Gold Partner for Cloud Platform, Data Platform, Data Analytics, DevOps, and a Power BI Partner. +This project is sponsored by [endjin](https://endjin.com), a UK based Microsoft Partner. For more information about our products and services, or for commercial support of this project, please [contact us](https://endjin.com/contact-us). We produce two free weekly newsletters; [Azure Weekly](https://azureweekly.info) for all things about the Microsoft Azure Platform, and [Power BI Weekly](https://powerbiweekly.info). -Keep up with everything that's going on at endjin via our [blog](https://blogs.endjin.com/), follow us on [Twitter](https://twitter.com/endjin), or [LinkedIn](https://www.linkedin.com/company/1671851/). +Keep up with everything that's going on at endjin via our [blog](https://endjin.com/blog), follow us on [X](https://x.com/endjin), or [LinkedIn](https://www.linkedin.com/company/endjin/). Our other Open Source projects can be found on [GitHub](https://endjin.com/open-source) diff --git a/Solutions/Corvus.Testing.AzureFunctions.DemoFunction.InProcess/packages.lock.json b/Solutions/Corvus.Testing.AzureFunctions.DemoFunction.InProcess/packages.lock.json index 6a1a3e4d..3319e79f 100644 --- a/Solutions/Corvus.Testing.AzureFunctions.DemoFunction.InProcess/packages.lock.json +++ b/Solutions/Corvus.Testing.AzureFunctions.DemoFunction.InProcess/packages.lock.json @@ -29,21 +29,6 @@ "System.Text.RegularExpressions": "4.3.1" } }, - "Roslynator.Analyzers": { - "type": "Direct", - "requested": "[4.12.4, )", - "resolved": "4.12.4", - "contentHash": "isl8hAh7yFNjyBEC4YlTSi+xGBblqBUC/2MCMmnBPwuXPewb7XYnMRzT3vXbP/gOGwT8hZUOy1g/aRH3lAF/NQ==" - }, - "StyleCop.Analyzers": { - "type": "Direct", - "requested": "[1.2.0-beta.556, )", - "resolved": "1.2.0-beta.556", - "contentHash": "llRPgmA1fhC0I0QyFLEcjvtM2239QzKr/tcnbsjArLMJxJlu0AA5G7Fft0OI30pHF3MW63Gf4aSSsjc5m82J1Q==", - "dependencies": { - "StyleCop.Analyzers.Unstable": "1.2.0.556" - } - }, "Endjin.RecommendedPractices": { "type": "Transitive", "resolved": "2.1.13", @@ -762,11 +747,6 @@ "resolved": "4.3.2", "contentHash": "leXiwfiIkW7Gmn7cgnNcdtNAU70SjmKW3jxGj1iKHOvdn0zRWsgv/l2OJUO5zdGdiv2VRFnAsxxhDgMzofPdWg==" }, - "StyleCop.Analyzers.Unstable": { - "type": "Transitive", - "resolved": "1.2.0.556", - "contentHash": "zvn9Mqs/ox/83cpYPignI8hJEM2A93s2HkHs8HYMOAQW0PkampyoErAiIyKxgTLqbbad29HX/shv/6LGSjPJNQ==" - }, "System.AppContext": { "type": "Transitive", "resolved": "4.3.0", diff --git a/Solutions/Corvus.Testing.AzureFunctions.ReqnRoll.Demo/packages.lock.json b/Solutions/Corvus.Testing.AzureFunctions.ReqnRoll.Demo/packages.lock.json index 92b45584..872d3dda 100644 --- a/Solutions/Corvus.Testing.AzureFunctions.ReqnRoll.Demo/packages.lock.json +++ b/Solutions/Corvus.Testing.AzureFunctions.ReqnRoll.Demo/packages.lock.json @@ -49,21 +49,6 @@ "Reqnroll.Tools.MsBuild.Generation": "[2.0.3]" } }, - "Roslynator.Analyzers": { - "type": "Direct", - "requested": "[4.12.4, )", - "resolved": "4.12.4", - "contentHash": "isl8hAh7yFNjyBEC4YlTSi+xGBblqBUC/2MCMmnBPwuXPewb7XYnMRzT3vXbP/gOGwT8hZUOy1g/aRH3lAF/NQ==" - }, - "StyleCop.Analyzers": { - "type": "Direct", - "requested": "[1.2.0-beta.556, )", - "resolved": "1.2.0-beta.556", - "contentHash": "llRPgmA1fhC0I0QyFLEcjvtM2239QzKr/tcnbsjArLMJxJlu0AA5G7Fft0OI30pHF3MW63Gf4aSSsjc5m82J1Q==", - "dependencies": { - "StyleCop.Analyzers.Unstable": "1.2.0.556" - } - }, "coverlet.msbuild": { "type": "Transitive", "resolved": "6.0.2", @@ -295,11 +280,6 @@ "resolved": "1.0.8", "contentHash": "lVCC/Rie7N5rFoc7YxPS0nneLfsWSTIMMlkndwxhaD8MxBp3Bsv1HeiVjVwXCjWaQeoqZcvIy52fF5Xit00ZLw==" }, - "StyleCop.Analyzers.Unstable": { - "type": "Transitive", - "resolved": "1.2.0.556", - "contentHash": "zvn9Mqs/ox/83cpYPignI8hJEM2A93s2HkHs8HYMOAQW0PkampyoErAiIyKxgTLqbbad29HX/shv/6LGSjPJNQ==" - }, "System.Buffers": { "type": "Transitive", "resolved": "4.5.1", diff --git a/Solutions/Corvus.Testing.AzureFunctions.Xunit.Demo/packages.lock.json b/Solutions/Corvus.Testing.AzureFunctions.Xunit.Demo/packages.lock.json index f4e8146d..15173eeb 100644 --- a/Solutions/Corvus.Testing.AzureFunctions.Xunit.Demo/packages.lock.json +++ b/Solutions/Corvus.Testing.AzureFunctions.Xunit.Demo/packages.lock.json @@ -33,12 +33,6 @@ "Microsoft.TestPlatform.TestHost": "17.10.0" } }, - "Roslynator.Analyzers": { - "type": "Direct", - "requested": "[4.12.4, )", - "resolved": "4.12.4", - "contentHash": "isl8hAh7yFNjyBEC4YlTSi+xGBblqBUC/2MCMmnBPwuXPewb7XYnMRzT3vXbP/gOGwT8hZUOy1g/aRH3lAF/NQ==" - }, "Serilog.Extensions.Logging": { "type": "Direct", "requested": "[8.0.0, )", @@ -70,15 +64,6 @@ "xunit.extensibility.execution": "2.4.2" } }, - "StyleCop.Analyzers": { - "type": "Direct", - "requested": "[1.2.0-beta.556, )", - "resolved": "1.2.0-beta.556", - "contentHash": "llRPgmA1fhC0I0QyFLEcjvtM2239QzKr/tcnbsjArLMJxJlu0AA5G7Fft0OI30pHF3MW63Gf4aSSsjc5m82J1Q==", - "dependencies": { - "StyleCop.Analyzers.Unstable": "1.2.0.556" - } - }, "xunit": { "type": "Direct", "requested": "[2.9.0, )", @@ -204,11 +189,6 @@ "resolved": "4.0.0", "contentHash": "2jDkUrSh5EofOp7Lx5Zgy0EB+7hXjjxE2ktTb1WVQmU00lDACR2TdROGKU0K1pDTBSJBN1PqgYpgOZF8mL7NJw==" }, - "StyleCop.Analyzers.Unstable": { - "type": "Transitive", - "resolved": "1.2.0.556", - "contentHash": "zvn9Mqs/ox/83cpYPignI8hJEM2A93s2HkHs8HYMOAQW0PkampyoErAiIyKxgTLqbbad29HX/shv/6LGSjPJNQ==" - }, "System.CodeDom": { "type": "Transitive", "resolved": "4.7.0", diff --git a/Solutions/Corvus.Testing.AzureFunctions/Corvus/Testing/AzureFunctions/FunctionProject.cs b/Solutions/Corvus.Testing.AzureFunctions/Corvus/Testing/AzureFunctions/FunctionProject.cs index 6060b397..b47ebf96 100644 --- a/Solutions/Corvus.Testing.AzureFunctions/Corvus/Testing/AzureFunctions/FunctionProject.cs +++ b/Solutions/Corvus.Testing.AzureFunctions/Corvus/Testing/AzureFunctions/FunctionProject.cs @@ -74,7 +74,8 @@ public static string ResolvePath(string pathFragment, string runtime, ILogger? l string root = candidate.FullName; logger.LogDebug("Function root directory is {RootDirectory}", root); - return Path.Combine(root, pathFragment, directoryExtension); + + return Path.GetFullPath(Path.Combine(root, pathFragment, directoryExtension)); } } } \ No newline at end of file diff --git a/Solutions/Corvus.Testing.ReqnRoll.Specs/packages.lock.json b/Solutions/Corvus.Testing.ReqnRoll.Specs/packages.lock.json index ad40a3ca..8f179164 100644 --- a/Solutions/Corvus.Testing.ReqnRoll.Specs/packages.lock.json +++ b/Solutions/Corvus.Testing.ReqnRoll.Specs/packages.lock.json @@ -39,21 +39,6 @@ "Reqnroll.Tools.MsBuild.Generation": "[2.0.3]" } }, - "Roslynator.Analyzers": { - "type": "Direct", - "requested": "[4.12.4, )", - "resolved": "4.12.4", - "contentHash": "isl8hAh7yFNjyBEC4YlTSi+xGBblqBUC/2MCMmnBPwuXPewb7XYnMRzT3vXbP/gOGwT8hZUOy1g/aRH3lAF/NQ==" - }, - "StyleCop.Analyzers": { - "type": "Direct", - "requested": "[1.2.0-beta.556, )", - "resolved": "1.2.0-beta.556", - "contentHash": "llRPgmA1fhC0I0QyFLEcjvtM2239QzKr/tcnbsjArLMJxJlu0AA5G7Fft0OI30pHF3MW63Gf4aSSsjc5m82J1Q==", - "dependencies": { - "StyleCop.Analyzers.Unstable": "1.2.0.556" - } - }, "coverlet.msbuild": { "type": "Transitive", "resolved": "6.0.2", @@ -210,11 +195,6 @@ "resolved": "1.0.8", "contentHash": "lVCC/Rie7N5rFoc7YxPS0nneLfsWSTIMMlkndwxhaD8MxBp3Bsv1HeiVjVwXCjWaQeoqZcvIy52fF5Xit00ZLw==" }, - "StyleCop.Analyzers.Unstable": { - "type": "Transitive", - "resolved": "1.2.0.556", - "contentHash": "zvn9Mqs/ox/83cpYPignI8hJEM2A93s2HkHs8HYMOAQW0PkampyoErAiIyKxgTLqbbad29HX/shv/6LGSjPJNQ==" - }, "System.Buffers": { "type": "Transitive", "resolved": "4.5.1", From 3b5ce7cbdc50f75324fb18b293d06ff2854be06f Mon Sep 17 00:00:00 2001 From: Howard van Rooijen Date: Thu, 8 Aug 2024 10:31:48 +0100 Subject: [PATCH 20/25] Try rooting the path --- .../Corvus/Testing/AzureFunctions/FunctionProject.cs | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/Solutions/Corvus.Testing.AzureFunctions/Corvus/Testing/AzureFunctions/FunctionProject.cs b/Solutions/Corvus.Testing.AzureFunctions/Corvus/Testing/AzureFunctions/FunctionProject.cs index b47ebf96..be96a8f8 100644 --- a/Solutions/Corvus.Testing.AzureFunctions/Corvus/Testing/AzureFunctions/FunctionProject.cs +++ b/Solutions/Corvus.Testing.AzureFunctions/Corvus/Testing/AzureFunctions/FunctionProject.cs @@ -73,6 +73,11 @@ public static string ResolvePath(string pathFragment, string runtime, ILogger? l string root = candidate.FullName; + if (!Path.IsPathRooted(root)) + { + root = Path.GetFullPath(Path.Combine(Directory.GetCurrentDirectory(), root)); + } + logger.LogDebug("Function root directory is {RootDirectory}", root); return Path.GetFullPath(Path.Combine(root, pathFragment, directoryExtension)); From 40748a16abab53c03d15300f5f9020077e6a33ff Mon Sep 17 00:00:00 2001 From: Howard van Rooijen Date: Thu, 8 Aug 2024 10:43:20 +0100 Subject: [PATCH 21/25] hard code path to see if this resolves --- .../Corvus/Testing/AzureFunctions/FunctionProject.cs | 7 +------ 1 file changed, 1 insertion(+), 6 deletions(-) diff --git a/Solutions/Corvus.Testing.AzureFunctions/Corvus/Testing/AzureFunctions/FunctionProject.cs b/Solutions/Corvus.Testing.AzureFunctions/Corvus/Testing/AzureFunctions/FunctionProject.cs index be96a8f8..8a90e285 100644 --- a/Solutions/Corvus.Testing.AzureFunctions/Corvus/Testing/AzureFunctions/FunctionProject.cs +++ b/Solutions/Corvus.Testing.AzureFunctions/Corvus/Testing/AzureFunctions/FunctionProject.cs @@ -73,14 +73,9 @@ public static string ResolvePath(string pathFragment, string runtime, ILogger? l string root = candidate.FullName; - if (!Path.IsPathRooted(root)) - { - root = Path.GetFullPath(Path.Combine(Directory.GetCurrentDirectory(), root)); - } - logger.LogDebug("Function root directory is {RootDirectory}", root); - return Path.GetFullPath(Path.Combine(root, pathFragment, directoryExtension)); + return Path.GetFullPath(Path.Combine("/home/runner/work/Corvus.Testing/Corvus.Testing/Solutions", root, pathFragment, directoryExtension)); } } } \ No newline at end of file From d8eea1493397a06b16c8521ef8abe1b677938254 Mon Sep 17 00:00:00 2001 From: James Dawson Date: Thu, 8 Aug 2024 15:46:39 +0100 Subject: [PATCH 22/25] Fix working directory path resolution issue on Linux Update how we install the Azure Function SDK installer Fail early when running on Linux as this not currently supported Ensure GHA workflow runs on Windows --- .github/workflows/build.yml | 3 ++- .../Testing/AzureFunctions/FunctionProject.cs | 8 +++---- build.ps1 | 22 +++++++++++++++++-- 3 files changed, 26 insertions(+), 7 deletions(-) diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml index 1d7a9261..3efdf5e0 100644 --- a/.github/workflows/build.yml +++ b/.github/workflows/build.yml @@ -61,8 +61,9 @@ jobs: build: needs: prepareConfig - uses: endjin/Endjin.RecommendedPractices.GitHubActions/.github/workflows/scripted-build-pipeline.yml@main + uses: endjin/Endjin.RecommendedPractices.GitHubActions/.github/workflows/scripted-build-pipeline.yml@feature/add-matrix-build with: + runsOn: 'windows-latest' netSdkVersion: '8.x' # workflow_dispatch inputs are always strings, the type property is just for the UI forcePublish: ${{ github.event.inputs.forcePublish == 'true' }} diff --git a/Solutions/Corvus.Testing.AzureFunctions/Corvus/Testing/AzureFunctions/FunctionProject.cs b/Solutions/Corvus.Testing.AzureFunctions/Corvus/Testing/AzureFunctions/FunctionProject.cs index 8a90e285..7872fb48 100644 --- a/Solutions/Corvus.Testing.AzureFunctions/Corvus/Testing/AzureFunctions/FunctionProject.cs +++ b/Solutions/Corvus.Testing.AzureFunctions/Corvus/Testing/AzureFunctions/FunctionProject.cs @@ -1,4 +1,4 @@ -// +// // Copyright (c) Endjin Limited. All rights reserved. // @@ -41,13 +41,13 @@ public static string ResolvePath(string pathFragment, string runtime, ILogger? l { logger ??= NullLogger.Instance; - string currentDirectory = Environment.CurrentDirectory.ToLowerInvariant(); + string currentDirectory = Environment.CurrentDirectory; string directoryExtension = Path.Combine("bin", "Release", runtime); - if (currentDirectory.Contains("debug")) + if (currentDirectory.Contains("Debug")) { - directoryExtension = Path.Combine("bin", "debug", runtime); + directoryExtension = Path.Combine("bin", "Debug", runtime); } logger.LogDebug("Working directory is {WorkingDirectory}", currentDirectory); diff --git a/build.ps1 b/build.ps1 index 675946fb..097ec288 100644 --- a/build.ps1 +++ b/build.ps1 @@ -159,8 +159,26 @@ $NuSpecFilesToPackage = @( $ExcludeFilesFromCodeCoverage = "" task Install-AzureFunctionsSDK { - Write-Build White "Installing Azure Functions Core Tools..." - Start-Process -FilePath "npm" -ArgumentList "install -g azure-functions-core-tools@ --unsafe-perm true" -NoNewWindow -Wait + + if ($IsWindows) { + $existingVersion = exec { & func --version } -ErrorAction SilentlyContinue + if (!$existingVersion -or $existingVersion -notlike "4.*") { + Write-Build White "Installing/updating Azure Functions Core Tools..." + exec { & npm install -g azure-functions-core-tools@ --unsafe-perm true } + } + else { + Write-Build Green "Azure Functions Core Tools already installed" + } + } + else { + # For the moment fail early when not running on Windows - currently there is + # a dependency on System.Management which is only available on Windows. + throw "Using the Azure Functions Core Tools to run Specs is currently only supoprted on Windows." + + # NOTE: Slightly different install logic retained for future use, once above is resolved. + # Write-Build Yellow "Requires 'sudo' on Linux/MacOS" + # exec { & sudo npm install -g azure-functions-core-tools@ --unsafe-perm true } + } } # Synopsis: Build, Test and Package From 7119c9041fd36696c4b5700573b79800d9aea070 Mon Sep 17 00:00:00 2001 From: James Dawson Date: Thu, 8 Aug 2024 18:16:00 +0100 Subject: [PATCH 23/25] Additional 'func' detection logic --- build.ps1 | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/build.ps1 b/build.ps1 index 097ec288..bf137a57 100644 --- a/build.ps1 +++ b/build.ps1 @@ -161,7 +161,11 @@ $ExcludeFilesFromCodeCoverage = "" task Install-AzureFunctionsSDK { if ($IsWindows) { - $existingVersion = exec { & func --version } -ErrorAction SilentlyContinue + $existingVersion = "" + if ((Get-Command func -ErrorAction Ignore)) { + $existingVersion = exec { & func --version } + } + if (!$existingVersion -or $existingVersion -notlike "4.*") { Write-Build White "Installing/updating Azure Functions Core Tools..." exec { & npm install -g azure-functions-core-tools@ --unsafe-perm true } From cfb874cec5b1cb5c667d80b32bb7684e47ab2c55 Mon Sep 17 00:00:00 2001 From: James Dawson Date: Wed, 21 Aug 2024 15:05:46 +0100 Subject: [PATCH 24/25] Update the 'access denied' handling within KillProcessAndChildren to cope with AggregateExceptions --- .../AzureFunctions/FunctionsController.cs | 19 +++++++++++++++++++ 1 file changed, 19 insertions(+) diff --git a/Solutions/Corvus.Testing.AzureFunctions/Corvus/Testing/AzureFunctions/FunctionsController.cs b/Solutions/Corvus.Testing.AzureFunctions/Corvus/Testing/AzureFunctions/FunctionsController.cs index 1c3e47f4..06eafc09 100644 --- a/Solutions/Corvus.Testing.AzureFunctions/Corvus/Testing/AzureFunctions/FunctionsController.cs +++ b/Solutions/Corvus.Testing.AzureFunctions/Corvus/Testing/AzureFunctions/FunctionsController.cs @@ -230,6 +230,25 @@ private static void KillProcessAndChildren(int pid) { proc.Kill(); } + catch (AggregateException ex) + { + Console.WriteLine("Caught an AggregateException: " + ex.Message); + foreach (var innerEx in ex.InnerExceptions) + { + if (innerEx is Win32Exception win32Ex) + { + if (win32Ex.ErrorCode == E_ACCESSDENIED) + { + Console.Error.WriteLine($"Access denied when trying to kill process id {pid}, '{proc.ProcessName}'"); + failedDueToAccessDenied = true; + } + } + else + { + throw; + } + } + } catch (Win32Exception x) when (x.ErrorCode == E_ACCESSDENIED) { From c3761b0a503fe1adcfae3c67fdb47bb0b7487a43 Mon Sep 17 00:00:00 2001 From: James Dawson Date: Wed, 21 Aug 2024 18:08:35 +0100 Subject: [PATCH 25/25] Update build to support running tests on Linux and Windows, now that we support the former. --- .github/workflows/build.yml | 9 +++++++-- build.ps1 | 31 +++++++++++++------------------ 2 files changed, 20 insertions(+), 20 deletions(-) diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml index 3efdf5e0..cde48129 100644 --- a/.github/workflows/build.yml +++ b/.github/workflows/build.yml @@ -61,9 +61,8 @@ jobs: build: needs: prepareConfig - uses: endjin/Endjin.RecommendedPractices.GitHubActions/.github/workflows/scripted-build-pipeline.yml@feature/add-matrix-build + uses: endjin/Endjin.RecommendedPractices.GitHubActions/.github/workflows/scripted-build-matrix-pipeline.yml@feature/add-matrix-build with: - runsOn: 'windows-latest' netSdkVersion: '8.x' # workflow_dispatch inputs are always strings, the type property is just for the UI forcePublish: ${{ github.event.inputs.forcePublish == 'true' }} @@ -73,6 +72,12 @@ jobs: # as defined in the 'environmentVariablesYaml' property above. compilePhaseEnv: ${{ needs.prepareConfig.outputs.RESOLVED_ENV_VARS }} testPhaseEnv: ${{ needs.prepareConfig.outputs.RESOLVED_ENV_VARS }} + testPhaseMatrixJson: | + { + "os": ["ubuntu-latest", "windows-latest"], + "dotnetFramework": ["net8.0"], + "exclude": [] + } packagePhaseEnv: ${{ needs.prepareConfig.outputs.RESOLVED_ENV_VARS }} publishPhaseEnv: ${{ needs.prepareConfig.outputs.RESOLVED_ENV_VARS }} secrets: diff --git a/build.ps1 b/build.ps1 index 7de10c57..65309214 100644 --- a/build.ps1 +++ b/build.ps1 @@ -158,31 +158,26 @@ $NuSpecFilesToPackage = @( # $ExcludeFilesFromCodeCoverage = "" +# Bump version to one that supports installing on .NET 8.0 +$covenantVersion = "0.19.0" + task Install-AzureFunctionsSDK { - if ($IsWindows) { - $existingVersion = "" - if ((Get-Command func -ErrorAction Ignore)) { - $existingVersion = exec { & func --version } - } + $existingVersion = "" + if ((Get-Command func -ErrorAction Ignore)) { + $existingVersion = exec { & func --version } + } - if (!$existingVersion -or $existingVersion -notlike "4.*") { - Write-Build White "Installing/updating Azure Functions Core Tools..." + if (!$existingVersion -or $existingVersion -notlike "4.*") { + Write-Build White "Installing/updating Azure Functions Core Tools..." + if ($IsWindows) { exec { & npm install -g azure-functions-core-tools@ --unsafe-perm true } } else { - Write-Build Green "Azure Functions Core Tools already installed" + Write-Build Yellow "NOTE: May require 'sudo' on Linux/MacOS" + exec { & sudo npm install -g azure-functions-core-tools@ --unsafe-perm true } } - } - else { - # For the moment fail early when not running on Windows - currently there is - # a dependency on System.Management which is only available on Windows. - throw "Using the Azure Functions Core Tools to run Specs is currently only supoprted on Windows." - - # NOTE: Slightly different install logic retained for future use, once above is resolved. - # Write-Build Yellow "Requires 'sudo' on Linux/MacOS" - # exec { & sudo npm install -g azure-functions-core-tools@ --unsafe-perm true } - } + } } # Synopsis: Build, Test and Package