From 02bbd60a2ad83a329359e827c4b6d6c217e3f7ef Mon Sep 17 00:00:00 2001 From: Jai Kumar Dewani Date: Wed, 17 Nov 2021 22:36:00 +0530 Subject: [PATCH 001/596] Add example for repeat attribute (#600) * Add example for repeat attribute * Update repeat.md Co-authored-by: Sean Killeen --- .../articles/nunit/writing-tests/attributes/repeat.md | 11 +++++++++++ 1 file changed, 11 insertions(+) diff --git a/docs/articles/nunit/writing-tests/attributes/repeat.md b/docs/articles/nunit/writing-tests/attributes/repeat.md index 83bb7b4ba..086bb908f 100644 --- a/docs/articles/nunit/writing-tests/attributes/repeat.md +++ b/docs/articles/nunit/writing-tests/attributes/repeat.md @@ -10,3 +10,14 @@ not run and a failure is reported. test case created for that method is repeated. 2. It is not currently possible to use RepeatAttribute on a TestFixture or any higher level suite. Only test cases may be repeated. + +## Examples + +```csharp +[Test] +[Repeat(25)] +public void MyTest() +{ + /* The contents of this test will be run 25 times. */ +} +``` From ce5faf27357d5bdf58b2d5fa32812962d97408bd Mon Sep 17 00:00:00 2001 From: Arnaud TAMAILLON Date: Wed, 17 Nov 2021 19:28:02 +0100 Subject: [PATCH 002/596] Update RandomAttribute doc to add Guid support (#599) * Update RandomAttribute doc to add Guid support * Add note about the minimum version to support Guid * Update docs/articles/nunit/writing-tests/attributes/random.md Co-authored-by: Sean Killeen --- docs/articles/nunit/writing-tests/attributes/random.md | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/docs/articles/nunit/writing-tests/attributes/random.md b/docs/articles/nunit/writing-tests/attributes/random.md index 9c8daa76f..70ef334dd 100644 --- a/docs/articles/nunit/writing-tests/attributes/random.md +++ b/docs/articles/nunit/writing-tests/attributes/random.md @@ -5,7 +5,7 @@ uid: randomattribute # Random The **RandomAttribute** is used to specify a set of random values to be provided -for an individual numeric parameter of a parameterized test method. Since +for an individual numeric parameter, or `Guid` of a parameterized test method. Since NUnit combines the data provided for each parameter into a set of test cases, data must be provided for all parameters if it is provided for any of them. @@ -31,7 +31,7 @@ public Random(double min, double max, int count); public Random(float min, float max, int count); ``` -In the first form, without minimum and maximum values, the attribute automatically generates values of the appropriate numeric Type for the argument provided, using the `Randomizer` object associated with the current context. See [Randomizer Methods](xref:randomizermethods) for details. +In the first form, without minimum and maximum values, the attribute automatically generates values of the appropriate numeric Type or `Guid` for the argument provided, using the `Randomizer` object associated with the current context. See [Randomizer Methods](xref:randomizermethods) for details. In general, the forms that specify a minimum and maximum should be used on arguments of the same type. However, the following exceptions are supported: @@ -41,6 +41,9 @@ In general, the forms that specify a minimum and maximum should be used on argum Note that there is no constructor taking decimal values for min and max. This is because .NET does not support use of decimal in an attribute constructor. +> [!NOTE] +> `Guid` support for `RandomAttribute` is available from version 4.0 onwards. + ## Example The following test will be executed fifteen times, three times From 341844fe3e971f21ebc964dc18e205e9bf8bd0bd Mon Sep 17 00:00:00 2001 From: Andrea Catalini Date: Wed, 17 Nov 2021 20:01:13 +0100 Subject: [PATCH 003/596] Update Getting-Started-in-Visual-Studio.md (#598) Just a missing r --- .../xamarin-runners/Getting-Started-in-Visual-Studio.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/articles/xamarin-runners/Getting-Started-in-Visual-Studio.md b/docs/articles/xamarin-runners/Getting-Started-in-Visual-Studio.md index 61bafddb1..eb01c2206 100644 --- a/docs/articles/xamarin-runners/Getting-Started-in-Visual-Studio.md +++ b/docs/articles/xamarin-runners/Getting-Started-in-Visual-Studio.md @@ -12,7 +12,7 @@ In your solution; 2. Write your unit tests in this project, in a portable project, or in a shared project, referencing the project with the tests. 3. Build and run the tests on your device or emulator -If you tests are in a separate portable project, note that: +If your tests are in a separate portable project, note that: * You need to add that assembly to the `NUnit.Runner.App` in the startup code From 8411fe9d3f14a1faef10777fb3a80ddddd69f0c1 Mon Sep 17 00:00:00 2001 From: Ty Mick Date: Wed, 17 Nov 2021 13:15:00 -0800 Subject: [PATCH 004/596] Split Test Adapter V4 release notes into separate page (#602) * Split V4 release notes into separate page The page being called "Release Notes V3" in the table of contents made it difficult for me to find the V4 release notes for a while. This commit also explicitly mentions the version number in each release notes file name, to make it more difficult to forget to create a new file for the next major version's release notes (the previous V3 release notes file was just named `Adapter-Release-Notes.md`). * Add client-side redirect for old URL --- .../Adapter-Release-Notes.html | 3 + ...se-Notes.md => AdapterV3-Release-Notes.md} | 93 +------------------ .../AdapterV4-Release-Notes.md | 90 ++++++++++++++++++ docs/articles/vs-test-adapter/toc.yml | 4 +- docs/docfx.json | 10 +- 5 files changed, 105 insertions(+), 95 deletions(-) create mode 100644 docs/articles/vs-test-adapter/Adapter-Release-Notes.html rename docs/articles/vs-test-adapter/{Adapter-Release-Notes.md => AdapterV3-Release-Notes.md} (84%) create mode 100644 docs/articles/vs-test-adapter/AdapterV4-Release-Notes.md diff --git a/docs/articles/vs-test-adapter/Adapter-Release-Notes.html b/docs/articles/vs-test-adapter/Adapter-Release-Notes.html new file mode 100644 index 000000000..898c7495f --- /dev/null +++ b/docs/articles/vs-test-adapter/Adapter-Release-Notes.html @@ -0,0 +1,3 @@ + + + diff --git a/docs/articles/vs-test-adapter/Adapter-Release-Notes.md b/docs/articles/vs-test-adapter/AdapterV3-Release-Notes.md similarity index 84% rename from docs/articles/vs-test-adapter/Adapter-Release-Notes.md rename to docs/articles/vs-test-adapter/AdapterV3-Release-Notes.md index a881d85a1..0d735b594 100644 --- a/docs/articles/vs-test-adapter/Adapter-Release-Notes.md +++ b/docs/articles/vs-test-adapter/AdapterV3-Release-Notes.md @@ -1,95 +1,4 @@ -# Adapter Release Notes - -## NUnit3 Test Adapter for Visual Studio - Version 4.1.0 - Nov 8, 2021 - -This is a bug fix release, with the following fixes: - -* [516](https://github.com/nunit/nunit3-vs-adapter/issues/516) ArgumentException when whitespace sent to logger. Thanks to [Matt Jones - mthjones](https://github.com/mthjones) for a very good repro, that helped nail this down! - -* [865](https://github.com/nunit/nunit3-vs-adapter/issues/865) Breaking changing in 3.17 on "Exception encountered unloading application domain" - -* [869](https://github.com/nunit/nunit3-vs-adapter/issues/869) NUnitTestAdapter - Discovery exception - -* [884](https://github.com/nunit/nunit3-vs-adapter/issues/884) NUnit3TestAdapter 4.0.0 - DiscoveryException: Not a TestFixture, SetUpFixture or TestSuite, but ParameterizedFixture - -## NUnit3 Test Adapter for Visual Studio - Version 4.0.0 - June 6, 2021 - -This major release contains a series of changes, and also underlying changes in the adapter. - -This is currently the version that will support Visual Studio 2022. The earlier versions will initially not support VS 2022. - -(There is a currently unknown issue that blocks the 3.X series for VS 2022. It is currently unclear if the Visual Studio team may be able to fix this issue. Any fix from the adapter side will include an upgrade, and then the 4.X series is the solution for that.) - -* [**Explicit**](https://github.com/nunit/nunit3-vs-adapter/issues?q=is%3Aissue+is%3Aclosed+project%3Anunit%2Fnunit3-vs-adapter%2F3) works now for all versions of Visual Studio. This is covered by several issues, see below on alpha and beta release notes. - -See the alpha and beta release notes below for more issues and features that have been resolved and is included in this major release. - -The following additional features have been implemented in the final release. - -* [671](https://github.com/nunit/nunit3-vs-adapter/issues/671) Exception in OneTimeSetUp has no stack trace - -* [843](https://github.com/nunit/nunit3-vs-adapter/issues/843) Reporting random seed for a test case - -* [863](https://github.com/nunit/nunit3-vs-adapter/pull/863) The Test Name is by default added to the console output for tests. It can be turned off by the [UseTestNameInConsoleOutput](https://docs.nunit.org/articles/vs-test-adapter/Tips-And-Tricks.html#usetestnameinconsoleoutput) property. - -The following additional issue has been resolved: - -* [779](https://github.com/nunit/nunit3-vs-adapter/issues/779) Filtering tests with any "PropertyAttribute" - -* [852](https://github.com/nunit/nunit3-vs-adapter/issues/852) NullReferenceException in ExtractTestFixture in v4.0.0-beta2. - -## NUnit3 Test Adapter for Visual Studio - Version 4.0.0-beta.2 - April 6, 2021 - -This will be a short beta.2, given we don't hit on any intricate issues. - -A major change in this version is the upgrade of the NUnit.Engine to version 3.12, and thus Mono.Cecil is no longer used. Instead it has a reduced version (based on Mono.Cecil) packed into TestCentric.engine.metadata doing the same job with navigation data. - -The following issues have been resolved: - -* [824](https://github.com/nunit/nunit3-vs-adapter/issues/824 ) "Not a TestFixture or TestSuite, but SetUpFixture" exception is being thrown in case of more than one SetUpFixture -* [811](https://github.com/nunit/nunit3-vs-adapter/issues/811) "System.FormatException: The UTC representation of the date falls outside the year range 1-9999" from skipped test in Eastern European time zone. Thanks to [KalleOlaviNiemitalo](https://github.com/KalleOlaviNiemitalo) for suggesting the fix. - -Also a performance improvement was done, thanks to [Pakrym](https://github.com/pakrym) for the [PR 821](https://github.com/nunit/nunit3-vs-adapter/pull/821) - -## NUnit3 Test Adapter for Visual Studio - Version 4.0.0-beta.1 - Nov 20, 2020 - -This beta is based on the earlier alpha version, and includes new fixes, some reported in the alpha. A great thank you to those who reported and checked out the fixes in the alpha! - -The alpha has more than 32000 downloads, with only a few issues reported, so we feel safe to move up to a beta. The time for beta will be much shorter, so we might be able to release a final 4.0.0 version before end of 2020. - -We have also been able to shoehorn some new features into the release. - -* [770](https://github.com/nunit/nunit3-vs-adapter/issues/770) "Not a TestFixture, but TestSuite" error when using un-namespaced SetupFixture. -* [774](https://github.com/nunit/nunit3-vs-adapter/issues/774) Tests not executed if Console.WriteLine() is used. -* [780](https://github.com/nunit/nunit3-vs-adapter/issues/780) NUnit3TestAdapter 3.17.0 empty output file regression? -* [781](https://github.com/nunit/nunit3-vs-adapter/issues/781) An exception occurred while test discoverer 'NUnit3TestDiscoverer' was loading tests. Exception: Object reference not set to an instance of an object, with VS2015. -* [785](https://github.com/nunit/nunit3-vs-adapter/issues/785) Seemingly redundant dependency on Microsoft.DotNet.InternalAbstractions. Thanks to [teo-tsirpanis](https://github.com/teo-tsirpanis) for [PR 790](https://github.com/nunit/nunit3-vs-adapter/pull/790). -* [786](https://github.com/nunit/nunit3-vs-adapter/issues/786) When using TRX logger, should warn about incompatible test adapter across .NET Framework and .NET Core and/or log where an adapter is located. -* [788](https://github.com/nunit/nunit3-vs-adapter/issues/788) Documentation: Broken links in user guide [vs-test-adapter/Resources.html]. -* [797](https://github.com/nunit/nunit3-vs-adapter/issues/797) Proprietary licensed files -* [800](https://github.com/nunit/nunit3-vs-adapter/issues/800) Rerun in azure devops overwrites last test results xml. Thanks to [netcorefactory](https://github.com/netcorefactory) for [PR 799](https://github.com/nunit/nunit3-vs-adapter/pull/799). - -## NUnit3 Test Adapter for Visual Studio - Version 4.0.0-alpha.1 - July 12, 2020 - -This is an early pre-release version. - -The code has been rewritten/refactored in order to get some of the more complex issues fixed. It does pass all the automatic tests we have, but there are still more tests we would like to take it through, before we release a beta. - -We would really appreciate it if you give this alpha a spin. and [report](https://github.com/nunit/nunit3-vs-adapter/issues) whatever you find back to us. - -The major fixes now are Explicit runs are fully back, both in Visual Studio and on command line with dotnet test and vstest.console. - -Further there has been a significant performance improvement for large test sets, and in particular when you run with categories or other filters. - -For those interested in details, some of this has been achieved by converting the VSTest type of filters to NUnit native filters (Thanks to [Charlie Poole](https://github.com/CharliePoole) for his excellent contribution here.). - -* [497](https://github.com/nunit/nunit3-vs-adapter/issues/497) Dotnet test with category filter is slow with a lot of tests -* [545](https://github.com/nunit/nunit3-vs-adapter/issues/545) Setting `TestCaseSource` to `Explicit` makes other tests in fixture explicit -* [612](https://github.com/nunit/nunit3-vs-adapter/issues/612) It is not possible to run an explicit test from Test Explorer -* [658](https://github.com/nunit/nunit3-vs-adapter/issues/658) Explicit tests are automatically run in Visual Studio 2019 -* [767](https://github.com/nunit/nunit3-vs-adapter/issues/767) Replace use of VSTest filters with NUnit filters - ------ +# Adapter V3 Release Notes ## NUnit3 Test Adapter for Visual Studio - Version 3.17.0 - July 11, 2020 diff --git a/docs/articles/vs-test-adapter/AdapterV4-Release-Notes.md b/docs/articles/vs-test-adapter/AdapterV4-Release-Notes.md new file mode 100644 index 000000000..162fc6c64 --- /dev/null +++ b/docs/articles/vs-test-adapter/AdapterV4-Release-Notes.md @@ -0,0 +1,90 @@ +# Adapter V4 Release Notes + +## NUnit3 Test Adapter for Visual Studio - Version 4.1.0 - Nov 8, 2021 + +This is a bug fix release, with the following fixes: + +* [516](https://github.com/nunit/nunit3-vs-adapter/issues/516) ArgumentException when whitespace sent to logger. Thanks to [Matt Jones - mthjones](https://github.com/mthjones) for a very good repro, that helped nail this down! + +* [865](https://github.com/nunit/nunit3-vs-adapter/issues/865) Breaking changing in 3.17 on "Exception encountered unloading application domain" + +* [869](https://github.com/nunit/nunit3-vs-adapter/issues/869) NUnitTestAdapter - Discovery exception + +* [884](https://github.com/nunit/nunit3-vs-adapter/issues/884) NUnit3TestAdapter 4.0.0 - DiscoveryException: Not a TestFixture, SetUpFixture or TestSuite, but ParameterizedFixture + +## NUnit3 Test Adapter for Visual Studio - Version 4.0.0 - June 6, 2021 + +This major release contains a series of changes, and also underlying changes in the adapter. + +This is currently the version that will support Visual Studio 2022. The earlier versions will initially not support VS 2022. + +(There is a currently unknown issue that blocks the 3.X series for VS 2022. It is currently unclear if the Visual Studio team may be able to fix this issue. Any fix from the adapter side will include an upgrade, and then the 4.X series is the solution for that.) + +* [**Explicit**](https://github.com/nunit/nunit3-vs-adapter/issues?q=is%3Aissue+is%3Aclosed+project%3Anunit%2Fnunit3-vs-adapter%2F3) works now for all versions of Visual Studio. This is covered by several issues, see below on alpha and beta release notes. + +See the alpha and beta release notes below for more issues and features that have been resolved and is included in this major release. + +The following additional features have been implemented in the final release. + +* [671](https://github.com/nunit/nunit3-vs-adapter/issues/671) Exception in OneTimeSetUp has no stack trace + +* [843](https://github.com/nunit/nunit3-vs-adapter/issues/843) Reporting random seed for a test case + +* [863](https://github.com/nunit/nunit3-vs-adapter/pull/863) The Test Name is by default added to the console output for tests. It can be turned off by the [UseTestNameInConsoleOutput](https://docs.nunit.org/articles/vs-test-adapter/Tips-And-Tricks.html#usetestnameinconsoleoutput) property. + +The following additional issue has been resolved: + +* [779](https://github.com/nunit/nunit3-vs-adapter/issues/779) Filtering tests with any "PropertyAttribute" + +* [852](https://github.com/nunit/nunit3-vs-adapter/issues/852) NullReferenceException in ExtractTestFixture in v4.0.0-beta2. + +## NUnit3 Test Adapter for Visual Studio - Version 4.0.0-beta.2 - April 6, 2021 + +This will be a short beta.2, given we don't hit on any intricate issues. + +A major change in this version is the upgrade of the NUnit.Engine to version 3.12, and thus Mono.Cecil is no longer used. Instead it has a reduced version (based on Mono.Cecil) packed into TestCentric.engine.metadata doing the same job with navigation data. + +The following issues have been resolved: + +* [824](https://github.com/nunit/nunit3-vs-adapter/issues/824 ) "Not a TestFixture or TestSuite, but SetUpFixture" exception is being thrown in case of more than one SetUpFixture +* [811](https://github.com/nunit/nunit3-vs-adapter/issues/811) "System.FormatException: The UTC representation of the date falls outside the year range 1-9999" from skipped test in Eastern European time zone. Thanks to [KalleOlaviNiemitalo](https://github.com/KalleOlaviNiemitalo) for suggesting the fix. + +Also a performance improvement was done, thanks to [Pakrym](https://github.com/pakrym) for the [PR 821](https://github.com/nunit/nunit3-vs-adapter/pull/821) + +## NUnit3 Test Adapter for Visual Studio - Version 4.0.0-beta.1 - Nov 20, 2020 + +This beta is based on the earlier alpha version, and includes new fixes, some reported in the alpha. A great thank you to those who reported and checked out the fixes in the alpha! + +The alpha has more than 32000 downloads, with only a few issues reported, so we feel safe to move up to a beta. The time for beta will be much shorter, so we might be able to release a final 4.0.0 version before end of 2020. + +We have also been able to shoehorn some new features into the release. + +* [770](https://github.com/nunit/nunit3-vs-adapter/issues/770) "Not a TestFixture, but TestSuite" error when using un-namespaced SetupFixture. +* [774](https://github.com/nunit/nunit3-vs-adapter/issues/774) Tests not executed if Console.WriteLine() is used. +* [780](https://github.com/nunit/nunit3-vs-adapter/issues/780) NUnit3TestAdapter 3.17.0 empty output file regression? +* [781](https://github.com/nunit/nunit3-vs-adapter/issues/781) An exception occurred while test discoverer 'NUnit3TestDiscoverer' was loading tests. Exception: Object reference not set to an instance of an object, with VS2015. +* [785](https://github.com/nunit/nunit3-vs-adapter/issues/785) Seemingly redundant dependency on Microsoft.DotNet.InternalAbstractions. Thanks to [teo-tsirpanis](https://github.com/teo-tsirpanis) for [PR 790](https://github.com/nunit/nunit3-vs-adapter/pull/790). +* [786](https://github.com/nunit/nunit3-vs-adapter/issues/786) When using TRX logger, should warn about incompatible test adapter across .NET Framework and .NET Core and/or log where an adapter is located. +* [788](https://github.com/nunit/nunit3-vs-adapter/issues/788) Documentation: Broken links in user guide [vs-test-adapter/Resources.html]. +* [797](https://github.com/nunit/nunit3-vs-adapter/issues/797) Proprietary licensed files +* [800](https://github.com/nunit/nunit3-vs-adapter/issues/800) Rerun in azure devops overwrites last test results xml. Thanks to [netcorefactory](https://github.com/netcorefactory) for [PR 799](https://github.com/nunit/nunit3-vs-adapter/pull/799). + +## NUnit3 Test Adapter for Visual Studio - Version 4.0.0-alpha.1 - July 12, 2020 + +This is an early pre-release version. + +The code has been rewritten/refactored in order to get some of the more complex issues fixed. It does pass all the automatic tests we have, but there are still more tests we would like to take it through, before we release a beta. + +We would really appreciate it if you give this alpha a spin. and [report](https://github.com/nunit/nunit3-vs-adapter/issues) whatever you find back to us. + +The major fixes now are Explicit runs are fully back, both in Visual Studio and on command line with dotnet test and vstest.console. + +Further there has been a significant performance improvement for large test sets, and in particular when you run with categories or other filters. + +For those interested in details, some of this has been achieved by converting the VSTest type of filters to NUnit native filters (Thanks to [Charlie Poole](https://github.com/CharliePoole) for his excellent contribution here.). + +* [497](https://github.com/nunit/nunit3-vs-adapter/issues/497) Dotnet test with category filter is slow with a lot of tests +* [545](https://github.com/nunit/nunit3-vs-adapter/issues/545) Setting `TestCaseSource` to `Explicit` makes other tests in fixture explicit +* [612](https://github.com/nunit/nunit3-vs-adapter/issues/612) It is not possible to run an explicit test from Test Explorer +* [658](https://github.com/nunit/nunit3-vs-adapter/issues/658) Explicit tests are automatically run in Visual Studio 2019 +* [767](https://github.com/nunit/nunit3-vs-adapter/issues/767) Replace use of VSTest filters with NUnit filters diff --git a/docs/articles/vs-test-adapter/toc.yml b/docs/articles/vs-test-adapter/toc.yml index bd93ba68e..9e365aaa5 100644 --- a/docs/articles/vs-test-adapter/toc.yml +++ b/docs/articles/vs-test-adapter/toc.yml @@ -18,8 +18,10 @@ href: Debugging.md - name: Debugger Source-Stepping href: Adapter-Source-Stepping.md +- name: Release Notes V4 + href: AdapterV4-Release-Notes.md - name: Release Notes V3 - href: Adapter-Release-Notes.md + href: AdapterV3-Release-Notes.md - name: Release Notes V2 href: AdapterV2-Release-Notes.md - name: License diff --git a/docs/docfx.json b/docs/docfx.json index cf5ecafed..78cc160d9 100644 --- a/docs/docfx.json +++ b/docs/docfx.json @@ -12,8 +12,14 @@ ], "resource": [ { "files": "**/**", "src": "legacy", "dest": ""}, - { "files": ["CNAME","images/**", "robots.txt"]} - + { + "files": [ + "CNAME", + "images/**", + "robots.txt", + "articles/vs-test-adapter/Adapter-Release-Notes.html" + ] + } ], "dest": "_site", "globalMetadata": { From 9020716567f3b851d806b04a2f33d2181d1060b0 Mon Sep 17 00:00:00 2001 From: Terje Sandstrom Date: Sat, 27 Nov 2021 01:30:52 +0100 Subject: [PATCH 005/596] Adapter issue 916, update installation docs --- .../vs-test-adapter/Adapter-Installation.md | 69 ++++++++++++------- .../vs-test-adapter/Supported-Frameworks.md | 3 +- 2 files changed, 46 insertions(+), 26 deletions(-) diff --git a/docs/articles/vs-test-adapter/Adapter-Installation.md b/docs/articles/vs-test-adapter/Adapter-Installation.md index 4cc8ce660..2dfd4d099 100644 --- a/docs/articles/vs-test-adapter/Adapter-Installation.md +++ b/docs/articles/vs-test-adapter/Adapter-Installation.md @@ -4,43 +4,62 @@ uid: vstestadapterinstallation # Adapter Installation -There are two ways of installing the adapter within Visual Studio. See below for info on how to choose. - -* Add it as a NuGet package to your solution. (Requires VS 2012 Update 1 or later) -* Use the Extension Manager (Deprecated and pending future removal; see notes below.) +The adapter is to be installed as a nuget package to each of your test projects. ## Installing the NuGet Package -To add it is a NuGet package, you must have an active solution, then follow these steps: +You will most likely want to add a new NUnit Test Project to your solution. The easiest way is to use the ```dotnet``` command on the command line. -1. From Tools menu, use Library Package Manager and select Manage NuGet packages for solution -2. In the left panel, select Online -3. Locate (search for) NUnit 3.0 Test Adapter in the center panel and highlight it -4. Click 'Install' -5. In the "Select Projects" dialog, you need to select at least one project to add the adapter to, see notes below. +Go to your project root and where you want to add your project. + +Create a folder for the project with a name matching what your new test project should be named. + +Then run the command ````dotnet new nunit``` + +You will now get a complete nunit test project with the same name as the folder. You will also have a template unit test class there as a starter. -## Installing With the Extension Manager +If you have a Visual Studio solution file in the root folder, you can go there and add the new nunit csproj easily: -> [!WARNING] -> The use of the VSIX extension manager is deprecated. It still works, but at some time support for it will be removed from Visual Studio, and also newer versions of the adapter. We recommend you try to move to nuget based adapters. +Assume you are at a solution root, and you either have a solution file, or have just been adding it with ```dotnet new sln``` -To install the NUnit Test Adapter using the Extension Manager, follow these steps: +```cmd +md Whatever.Test +dotnet new nunit +cd .. +dotnet sln add Whatever.Test\Whatever.Test.csproj +``` -1. From within Visual Studio, select Tools | Extension Manager. -1. In the left panel of the Extension Manager, select Online Extensions -1. Locate (search for) the NUnit 3.0 Test Adapter in the center panel and highlight it. -1. Click 'Download' and follow the instructions. +And you're ready to go ! -Use the Extension Manager to ensure that the NUnit 3.0 Test Adapter is enabled. -## How to choose between Extension and NuGet package +### Manually adding it as a package reference to your test projects -The use of the VSIX extension manager is deprecated. It still works, but at some time support for it will be removed from Visual Studio, and also newer versions of the adapter. +The recommended set of packages you should install is the framework, the adapter and the analyzer. The adapter and the framework is required, the analyzer will help you, but is not required to make your project work. -We recommend you try to move to nuget based adapters. +You should ensure you have the -The NuGet Package will apply to the solution, and will work for any other user too, as it follows the solution, but requires the user to have VS 2012 Update 1 or above. It will also work for any TFS 2012 Update 1 or above server build, including TF Service and requires no further installation. +1. Open your test project csproj file +2. Add the package references as shown in the snippet example below (the versions should be the latest ones, the ones below is what is current at the date of writing) -If you are testing **.NET Core or .NET Standard** you must use the NuGet package and Visual Studio 2017 or newer. Visual Studio does not support running .NET Core tests using an extension. The extension will only work with the full .NET Framework. +```xml + + + + + + +``` -The Extension will be installed to Visual Studio itself, and will work for all projects you use. All users of your solution need to install the extension. If you use TFS Build, you must also install the extension to the build system there. +**Note: You don't need to add any nunit.console or any runner package** + +### Working with the Visual Studio Nuget manager + +If you have a legacy project type, the easiest way is to use the Visual Studio 'Manage nuget packages in the solution' menu option. It can also be used for the new SDK projects, but it is actually faster to just open the csproj and copy paste the references in. + +You need to have an active solution, then follow these steps: + +1. From Tools menu, use Library Package Manager and select Manage NuGet packages for solution +2. In the left panel, select Online +3. Locate (search for) NUnit3Test Adapter in the center panel and highlight it +4. Click 'Install' +5. In the "Select Projects" dialog, select all test projects in your solution. diff --git a/docs/articles/vs-test-adapter/Supported-Frameworks.md b/docs/articles/vs-test-adapter/Supported-Frameworks.md index d2f4001e1..8de911422 100644 --- a/docs/articles/vs-test-adapter/Supported-Frameworks.md +++ b/docs/articles/vs-test-adapter/Supported-Frameworks.md @@ -11,4 +11,5 @@ The table below show which versions of frameworks are supported for the differen |Net Core 3.1|3.8 - up to latest || |Net Framework 3.5|All up to latest || |Net Framework 4.X|All up to latest || -|Net 5 preview|Works with 3.15.1 and upwards|May also work with earlier versions, but not tested| +|Net 5|Works with 3.15.1 and upwards|May also work with earlier versions, but not tested| +|Net 6|Works with 4.1 and upwards|May also work with earlier versions, but not tested| From 208396018248c019c0ff61ed7fff00ab5d94fb90 Mon Sep 17 00:00:00 2001 From: Terje Sandstrom Date: Sat, 27 Nov 2021 01:35:10 +0100 Subject: [PATCH 006/596] Adapter issue 916, update installation docs --- docs/articles/vs-test-adapter/Adapter-Installation.md | 9 ++++----- 1 file changed, 4 insertions(+), 5 deletions(-) diff --git a/docs/articles/vs-test-adapter/Adapter-Installation.md b/docs/articles/vs-test-adapter/Adapter-Installation.md index 2dfd4d099..71c78a2bc 100644 --- a/docs/articles/vs-test-adapter/Adapter-Installation.md +++ b/docs/articles/vs-test-adapter/Adapter-Installation.md @@ -31,15 +31,14 @@ dotnet sln add Whatever.Test\Whatever.Test.csproj And you're ready to go ! - ### Manually adding it as a package reference to your test projects -The recommended set of packages you should install is the framework, the adapter and the analyzer. The adapter and the framework is required, the analyzer will help you, but is not required to make your project work. +The recommended set of packages you should install is the framework, the adapter and the analyzer. The adapter and the framework is required, the analyzer will help you, but is not required to make your project work. The coverlet.collector is the recommended code coverage package you should go for. -You should ensure you have the +You should ensure you have the ```Microsoft.NET.Test.Sdk``` in there too. 1. Open your test project csproj file -2. Add the package references as shown in the snippet example below (the versions should be the latest ones, the ones below is what is current at the date of writing) +2. Add the necessary package references as shown in the snippet example below (the versions should be the latest ones, the ones below is what is current at the date of writing) ```xml @@ -50,7 +49,7 @@ You should ensure you have the ``` -**Note: You don't need to add any nunit.console or any runner package** +*Note: You don't need to add any nunit.console or any runner package* ### Working with the Visual Studio Nuget manager From 9c271f6e1dbbd7671038033cb070c4ffa88a664c Mon Sep 17 00:00:00 2001 From: Terje Sandstrom Date: Sat, 27 Nov 2021 01:36:48 +0100 Subject: [PATCH 007/596] Adapter issue 916, update installation docs --- docs/articles/vs-test-adapter/Adapter-Installation.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/articles/vs-test-adapter/Adapter-Installation.md b/docs/articles/vs-test-adapter/Adapter-Installation.md index 71c78a2bc..a0c543c1d 100644 --- a/docs/articles/vs-test-adapter/Adapter-Installation.md +++ b/docs/articles/vs-test-adapter/Adapter-Installation.md @@ -49,7 +49,7 @@ You should ensure you have the ```Microsoft.NET.Test.Sdk``` in there too. ``` -*Note: You don't need to add any nunit.console or any runner package* +Note: *You don't need to add any nunit.console or any runner package* ### Working with the Visual Studio Nuget manager From d76de6acb60e8e260ddf0cc64d02558f7d34c2a2 Mon Sep 17 00:00:00 2001 From: Terje Sandstrom Date: Sat, 27 Nov 2021 01:39:16 +0100 Subject: [PATCH 008/596] Adapter issue 916, update installation docs --- docs/articles/vs-test-adapter/Adapter-Installation.md | 1 + 1 file changed, 1 insertion(+) diff --git a/docs/articles/vs-test-adapter/Adapter-Installation.md b/docs/articles/vs-test-adapter/Adapter-Installation.md index a0c543c1d..5f46a5a0f 100644 --- a/docs/articles/vs-test-adapter/Adapter-Installation.md +++ b/docs/articles/vs-test-adapter/Adapter-Installation.md @@ -24,6 +24,7 @@ Assume you are at a solution root, and you either have a solution file, or have ```cmd md Whatever.Test +cd Whatever.Test dotnet new nunit cd .. dotnet sln add Whatever.Test\Whatever.Test.csproj From 656b36aa7cdb3a6b13e0ec0988a559b0cb25ce6b Mon Sep 17 00:00:00 2001 From: Terje Sandstrom Date: Sat, 27 Nov 2021 01:41:34 +0100 Subject: [PATCH 009/596] Adapter issue 916, update installation docs --- docs/articles/vs-test-adapter/Adapter-Installation.md | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/docs/articles/vs-test-adapter/Adapter-Installation.md b/docs/articles/vs-test-adapter/Adapter-Installation.md index 5f46a5a0f..23e74c632 100644 --- a/docs/articles/vs-test-adapter/Adapter-Installation.md +++ b/docs/articles/vs-test-adapter/Adapter-Installation.md @@ -36,7 +36,7 @@ And you're ready to go ! The recommended set of packages you should install is the framework, the adapter and the analyzer. The adapter and the framework is required, the analyzer will help you, but is not required to make your project work. The coverlet.collector is the recommended code coverage package you should go for. -You should ensure you have the ```Microsoft.NET.Test.Sdk``` in there too. +You should ensure you have the ```Microsoft.NET.Test.Sdk``` in there too, as it is also required. 1. Open your test project csproj file 2. Add the necessary package references as shown in the snippet example below (the versions should be the latest ones, the ones below is what is current at the date of writing) @@ -47,10 +47,11 @@ You should ensure you have the ```Microsoft.NET.Test.Sdk``` in there too. + ``` -Note: *You don't need to add any nunit.console or any runner package* +Note: *You don't need to add any nunit.console or any other runner package* ### Working with the Visual Studio Nuget manager From 1a12f96ec07a26fe0a10bf7ea6f2835a042204b7 Mon Sep 17 00:00:00 2001 From: Terje Sandstrom Date: Mon, 29 Nov 2021 12:04:51 +0100 Subject: [PATCH 010/596] V4.2 adapter --- docs/articles/vs-test-adapter/AdapterV4-Release-Notes.md | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/docs/articles/vs-test-adapter/AdapterV4-Release-Notes.md b/docs/articles/vs-test-adapter/AdapterV4-Release-Notes.md index 162fc6c64..7450ac508 100644 --- a/docs/articles/vs-test-adapter/AdapterV4-Release-Notes.md +++ b/docs/articles/vs-test-adapter/AdapterV4-Release-Notes.md @@ -1,5 +1,13 @@ # Adapter V4 Release Notes +## NUnit3 Test Adapter for Visual Studio - Version 4.2.0 - Nov 28, 2021 + +This is a bug fix release, with the following fixes: + +* [914](https://github.com/nunit/nunit3-vs-adapter/issues/914) +* [918](https://github.com/nunit/nunit3-vs-adapter/issues/918) New DiscoveryMode doesn't play nicely with TestFixtureSource - Missing GenericFixture + + ## NUnit3 Test Adapter for Visual Studio - Version 4.1.0 - Nov 8, 2021 This is a bug fix release, with the following fixes: From 3cc647a71ac3e9ff46e93106029d1fae44a775f6 Mon Sep 17 00:00:00 2001 From: CharliePoole Date: Wed, 1 Dec 2021 01:43:57 -0800 Subject: [PATCH 011/596] Update release notes for 3.13 release --- .../nunit/release-notes/console-and-engine.md | 43 +++++++++++++++++++ 1 file changed, 43 insertions(+) diff --git a/docs/articles/nunit/release-notes/console-and-engine.md b/docs/articles/nunit/release-notes/console-and-engine.md index 19fee22a8..f429b1920 100644 --- a/docs/articles/nunit/release-notes/console-and-engine.md +++ b/docs/articles/nunit/release-notes/console-and-engine.md @@ -1,5 +1,48 @@ # Console and Engine +## NUnit Console & Engine 3.13 - November 30, 2021 + +This is the first release of the NUnit Console Runner, `nunit3-console.exe`, which allows running of both .NET Framework and .NET Core tests, +either separately or in combination. The `nunit3-console.exe` runner executes under the .NET Framework but is able to launch .NET Core agents +and communicate with them over a TCP connection. + +A second major feature in this release is engine support for preemptive cancellation when the normal approach of requesting the test run to +self-terminate doesn't work. This is an engine feature, available to any runners supporting cancellation. + +* [382](https://github.com/nunit/nunit-console/issues/382) Only 1 agent running with multiple projects and --process=Multiple +* [418](https://github.com/nunit/nunit-console/issues/418) .config files not loaded when using an .nunit project file and --process=Multiple +* [551](https://github.com/nunit/nunit-console/issues/551) Make engine easier to Debug +* [609](https://github.com/nunit/nunit-console/issues/609) Run after Reload reports assemblies multipletimes +* [642](https://github.com/nunit/nunit-console/issues/642) Engine needs preemptive cancellation +* [726](https://github.com/nunit/nunit-console/issues/726) Remove .NET Standard 1.6 build +* [764](https://github.com/nunit/nunit-console/issues/764) Error: Found two different objects associated with the same URI, /xxxxx/TestAgency +* [789](https://github.com/nunit/nunit-console/issues/789) DirectoryFinder.GetDirectories throws for a path with the drive specified +* [803](https://github.com/nunit/nunit-console/issues/803) Remove CHANGES.TXT to simplify release process +* [828](https://github.com/nunit/nunit-console/issues/828) Reported issues with dependency loading in .NET Core Console +* [852](https://github.com/nunit/nunit-console/issues/852) No tests of .NET Core 3.1 packages +* [855](https://github.com/nunit/nunit-console/issues/855) Improved testability of DirectoryFinder +* [869](https://github.com/nunit/nunit-console/issues/869) Link to release notes on docs and Review uses of CHANGES.TXT +* [892](https://github.com/nunit/nunit-console/issues/892) Implement Package tests for engine and console runner +* [895](https://github.com/nunit/nunit-console/issues/895) Make sure AssemblyDefinitions are disposed after use. +* [898](https://github.com/nunit/nunit-console/issues/898) Removed support for .NET Core 1.1 +* [904](https://github.com/nunit/nunit-console/issues/904) The test-run element is missing a count of warnings +* [908](https://github.com/nunit/nunit-console/issues/908) Known Vulnerability in System.Xml.XPath.XmlDocument +* [915](https://github.com/nunit/nunit-console/issues/915) StackOverflowException in console-runner when addins-file contains "./" or ".\" +* [923](https://github.com/nunit/nunit-console/issues/923) Agent communication layer +* [933](https://github.com/nunit/nunit-console/issues/933) Update TestCentric MetaData dependency +* [943](https://github.com/nunit/nunit-console/issues/943) Remove Travis CI +* [947](https://github.com/nunit/nunit-console/issues/947) Make default TestAgency URI unique per run (v2) +* [949](https://github.com/nunit/nunit-console/issues/949) nunit.engine.tests are failing to unload on master branch +* [956](https://github.com/nunit/nunit-console/issues/956) fix for test assembly loading failure in NUnit.ConsoleRunner.NetCore +* [957](https://github.com/nunit/nunit-console/issues/957) Include pdbs with nuget and zip packges and publish source code +* [964](https://github.com/nunit/nunit-console/issues/954) Update Code of Conduct +* [1014](https://github.com/nunit/nunit-console/issues/1014) GetClrVersionForFramework throws if .Net6.0 is installed +* [1025](https://github.com/nunit/nunit-console/issues/1025) chore(pipeline): Use ubuntu-latest +* [1031](https://github.com/nunit/nunit-console/issues/1031) Fix incorrect MyGet push URL +* [1033](https://github.com/nunit/nunit-console/issues/1033) Update to current version of TestCentric.Metadata package +* [1037](https://github.com/nunit/nunit-console/issues/1037) Eliminate End of Life Check in builds +* [1039](https://github.com/nunit/nunit-console/issues/1039) Stop re-publishing deprecated packages with each new release + ## NUnit Console & Engine 3.12 - January 17, 2021 ## .NET Core NUnit Console 3.12 Beta 2 - January 17, 2021 From 01d1cb8f0a62ac78010da3931b02fa835324da4a Mon Sep 17 00:00:00 2001 From: CharliePoole Date: Wed, 1 Dec 2021 01:52:49 -0800 Subject: [PATCH 012/596] Update release notes for version 3.13 --- docs/articles/nunit/release-notes/console-and-engine.md | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/docs/articles/nunit/release-notes/console-and-engine.md b/docs/articles/nunit/release-notes/console-and-engine.md index f429b1920..cba073c22 100644 --- a/docs/articles/nunit/release-notes/console-and-engine.md +++ b/docs/articles/nunit/release-notes/console-and-engine.md @@ -10,9 +10,9 @@ A second major feature in this release is engine support for preemptive cancella self-terminate doesn't work. This is an engine feature, available to any runners supporting cancellation. * [382](https://github.com/nunit/nunit-console/issues/382) Only 1 agent running with multiple projects and --process=Multiple -* [418](https://github.com/nunit/nunit-console/issues/418) .config files not loaded when using an .nunit project file and --process=Multiple +* [418](https://github.com/nunit/nunit-console/issues/418) .config files not loaded when using an .nunit project file and --process=Multiple * [551](https://github.com/nunit/nunit-console/issues/551) Make engine easier to Debug -* [609](https://github.com/nunit/nunit-console/issues/609) Run after Reload reports assemblies multipletimes +* [609](https://github.com/nunit/nunit-console/issues/609) Run after Reload reports assemblies multiple times * [642](https://github.com/nunit/nunit-console/issues/642) Engine needs preemptive cancellation * [726](https://github.com/nunit/nunit-console/issues/726) Remove .NET Standard 1.6 build * [764](https://github.com/nunit/nunit-console/issues/764) Error: Found two different objects associated with the same URI, /xxxxx/TestAgency @@ -34,7 +34,7 @@ self-terminate doesn't work. This is an engine feature, available to any runners * [947](https://github.com/nunit/nunit-console/issues/947) Make default TestAgency URI unique per run (v2) * [949](https://github.com/nunit/nunit-console/issues/949) nunit.engine.tests are failing to unload on master branch * [956](https://github.com/nunit/nunit-console/issues/956) fix for test assembly loading failure in NUnit.ConsoleRunner.NetCore -* [957](https://github.com/nunit/nunit-console/issues/957) Include pdbs with nuget and zip packges and publish source code +* [957](https://github.com/nunit/nunit-console/issues/957) Include pdbs with nuget and zip packages and publish source code * [964](https://github.com/nunit/nunit-console/issues/954) Update Code of Conduct * [1014](https://github.com/nunit/nunit-console/issues/1014) GetClrVersionForFramework throws if .Net6.0 is installed * [1025](https://github.com/nunit/nunit-console/issues/1025) chore(pipeline): Use ubuntu-latest From aba5b1a5e7d655293a9998851fc64c2b3a4fab6a Mon Sep 17 00:00:00 2001 From: Mikkel Nylander Bundgaard Date: Thu, 9 Dec 2021 22:51:37 +0100 Subject: [PATCH 013/596] fix: Remove mention of Program.cs (#604) This functionality have not worked for years, and have now been removed in future versions by https://github.com/nunit/nunit/issues/1428 --- docs/articles/nunit/running-tests/NUnitLite-Runner.md | 5 ----- 1 file changed, 5 deletions(-) diff --git a/docs/articles/nunit/running-tests/NUnitLite-Runner.md b/docs/articles/nunit/running-tests/NUnitLite-Runner.md index 680f04211..09f27af37 100644 --- a/docs/articles/nunit/running-tests/NUnitLite-Runner.md +++ b/docs/articles/nunit/running-tests/NUnitLite-Runner.md @@ -27,11 +27,6 @@ public static int Main(string[] args) If you install the NUnitLite runner via the NuGet package, steps 2 is handled automatically. Both assemblies are installed and referenced for you. -In addition, if you are using C#, step 3 is handled as well. A file, Program.cs, is added to your project with a Main() like that above. - -> [!NOTE] -> If you are not working in C#, you should delete the Program.cs file that the NuGet package added to your test project. - ## NUnitLite Output As seen in the following screen shot, the output from an NUnitLite run is quite similar to that from the console runner. From bcd41ec3938a6f828809d7abc091872f3ca6ed49 Mon Sep 17 00:00:00 2001 From: Terje Sandstrom Date: Sat, 11 Dec 2021 15:55:13 +0100 Subject: [PATCH 014/596] Update docs/articles/vs-test-adapter/Adapter-Installation.md Co-authored-by: Sean Killeen --- docs/articles/vs-test-adapter/Adapter-Installation.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/articles/vs-test-adapter/Adapter-Installation.md b/docs/articles/vs-test-adapter/Adapter-Installation.md index 23e74c632..72a61f5fa 100644 --- a/docs/articles/vs-test-adapter/Adapter-Installation.md +++ b/docs/articles/vs-test-adapter/Adapter-Installation.md @@ -34,7 +34,7 @@ And you're ready to go ! ### Manually adding it as a package reference to your test projects -The recommended set of packages you should install is the framework, the adapter and the analyzer. The adapter and the framework is required, the analyzer will help you, but is not required to make your project work. The coverlet.collector is the recommended code coverage package you should go for. +When adding packages manually, we recommended installing the framework, the adapter, and the analyzer for optimal out-of-the-box functionality. The adapter and the framework are required. The analyzer will help during development, but is not strictly required to make your project work. `coverlet.collector` is the recommended code coverage package you should go for. You should ensure you have the ```Microsoft.NET.Test.Sdk``` in there too, as it is also required. From eb45a9cafd300ddc4705a816ee2e2da521927288 Mon Sep 17 00:00:00 2001 From: Terje Sandstrom Date: Sat, 11 Dec 2021 16:01:19 +0100 Subject: [PATCH 015/596] Update docs/articles/vs-test-adapter/Adapter-Installation.md Co-authored-by: Sean Killeen --- docs/articles/vs-test-adapter/Adapter-Installation.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/articles/vs-test-adapter/Adapter-Installation.md b/docs/articles/vs-test-adapter/Adapter-Installation.md index 72a61f5fa..b8de42209 100644 --- a/docs/articles/vs-test-adapter/Adapter-Installation.md +++ b/docs/articles/vs-test-adapter/Adapter-Installation.md @@ -61,6 +61,6 @@ You need to have an active solution, then follow these steps: 1. From Tools menu, use Library Package Manager and select Manage NuGet packages for solution 2. In the left panel, select Online -3. Locate (search for) NUnit3Test Adapter in the center panel and highlight it +3. Locate (search for) `NUnit3Test Adapter` in the center panel and highlight it 4. Click 'Install' 5. In the "Select Projects" dialog, select all test projects in your solution. From 111253d45bb221fc17930ca6f8ad86b09310dba3 Mon Sep 17 00:00:00 2001 From: Terje Sandstrom Date: Sat, 11 Dec 2021 16:01:26 +0100 Subject: [PATCH 016/596] Update docs/articles/vs-test-adapter/Adapter-Installation.md Co-authored-by: Sean Killeen --- docs/articles/vs-test-adapter/Adapter-Installation.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/articles/vs-test-adapter/Adapter-Installation.md b/docs/articles/vs-test-adapter/Adapter-Installation.md index b8de42209..120deff7a 100644 --- a/docs/articles/vs-test-adapter/Adapter-Installation.md +++ b/docs/articles/vs-test-adapter/Adapter-Installation.md @@ -62,5 +62,5 @@ You need to have an active solution, then follow these steps: 1. From Tools menu, use Library Package Manager and select Manage NuGet packages for solution 2. In the left panel, select Online 3. Locate (search for) `NUnit3Test Adapter` in the center panel and highlight it -4. Click 'Install' +4. Click `Install` 5. In the "Select Projects" dialog, select all test projects in your solution. From c2ac8d3670de3375db607affbc413eb38140894f Mon Sep 17 00:00:00 2001 From: Terje Sandstrom Date: Sat, 11 Dec 2021 16:01:39 +0100 Subject: [PATCH 017/596] Update docs/articles/vs-test-adapter/Adapter-Installation.md Co-authored-by: Sean Killeen --- docs/articles/vs-test-adapter/Adapter-Installation.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/articles/vs-test-adapter/Adapter-Installation.md b/docs/articles/vs-test-adapter/Adapter-Installation.md index 120deff7a..36df77d82 100644 --- a/docs/articles/vs-test-adapter/Adapter-Installation.md +++ b/docs/articles/vs-test-adapter/Adapter-Installation.md @@ -63,4 +63,4 @@ You need to have an active solution, then follow these steps: 2. In the left panel, select Online 3. Locate (search for) `NUnit3Test Adapter` in the center panel and highlight it 4. Click `Install` -5. In the "Select Projects" dialog, select all test projects in your solution. +5. In the `Select Projects` dialog, select all test projects in your solution. From 4ba1d99fe4d66f1549a8d0ef1aefa9627bf6c73b Mon Sep 17 00:00:00 2001 From: Terje Sandstrom Date: Sat, 11 Dec 2021 16:01:50 +0100 Subject: [PATCH 018/596] Update docs/articles/vs-test-adapter/Adapter-Installation.md Co-authored-by: Sean Killeen --- docs/articles/vs-test-adapter/Adapter-Installation.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/articles/vs-test-adapter/Adapter-Installation.md b/docs/articles/vs-test-adapter/Adapter-Installation.md index 36df77d82..d327f8f21 100644 --- a/docs/articles/vs-test-adapter/Adapter-Installation.md +++ b/docs/articles/vs-test-adapter/Adapter-Installation.md @@ -4,7 +4,7 @@ uid: vstestadapterinstallation # Adapter Installation -The adapter is to be installed as a nuget package to each of your test projects. +You'll need to install the adapter as a NuGet package for each of your test projects. ## Installing the NuGet Package From 8bc698ce725799aaf14d4a24dc798aaf349a004f Mon Sep 17 00:00:00 2001 From: Terje Sandstrom Date: Sat, 11 Dec 2021 16:03:04 +0100 Subject: [PATCH 019/596] Update docs/articles/vs-test-adapter/Adapter-Installation.md Co-authored-by: Sean Killeen --- docs/articles/vs-test-adapter/Adapter-Installation.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/articles/vs-test-adapter/Adapter-Installation.md b/docs/articles/vs-test-adapter/Adapter-Installation.md index d327f8f21..e929c8dc8 100644 --- a/docs/articles/vs-test-adapter/Adapter-Installation.md +++ b/docs/articles/vs-test-adapter/Adapter-Installation.md @@ -36,7 +36,7 @@ And you're ready to go ! When adding packages manually, we recommended installing the framework, the adapter, and the analyzer for optimal out-of-the-box functionality. The adapter and the framework are required. The analyzer will help during development, but is not strictly required to make your project work. `coverlet.collector` is the recommended code coverage package you should go for. -You should ensure you have the ```Microsoft.NET.Test.Sdk``` in there too, as it is also required. +You should ensure you also reference `Microsoft.NET.Test.Sdk` as well; it is required for test discoverability. 1. Open your test project csproj file 2. Add the necessary package references as shown in the snippet example below (the versions should be the latest ones, the ones below is what is current at the date of writing) From c7a6105bfb76d1d25403578fd348fea298c7f0e9 Mon Sep 17 00:00:00 2001 From: Terje Sandstrom Date: Sat, 11 Dec 2021 16:03:16 +0100 Subject: [PATCH 020/596] Update docs/articles/vs-test-adapter/Adapter-Installation.md Co-authored-by: Sean Killeen --- docs/articles/vs-test-adapter/Adapter-Installation.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/articles/vs-test-adapter/Adapter-Installation.md b/docs/articles/vs-test-adapter/Adapter-Installation.md index e929c8dc8..d20997718 100644 --- a/docs/articles/vs-test-adapter/Adapter-Installation.md +++ b/docs/articles/vs-test-adapter/Adapter-Installation.md @@ -32,7 +32,7 @@ dotnet sln add Whatever.Test\Whatever.Test.csproj And you're ready to go ! -### Manually adding it as a package reference to your test projects +### Manually Adding the Adapter as a Package Reference to Your Test Projects When adding packages manually, we recommended installing the framework, the adapter, and the analyzer for optimal out-of-the-box functionality. The adapter and the framework are required. The analyzer will help during development, but is not strictly required to make your project work. `coverlet.collector` is the recommended code coverage package you should go for. From 39e515a6e426de895d18676960ee3bc3d522b1f4 Mon Sep 17 00:00:00 2001 From: Terje Sandstrom Date: Sat, 11 Dec 2021 16:04:01 +0100 Subject: [PATCH 021/596] Update docs/articles/vs-test-adapter/Adapter-Installation.md Co-authored-by: Sean Killeen --- docs/articles/vs-test-adapter/Adapter-Installation.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/articles/vs-test-adapter/Adapter-Installation.md b/docs/articles/vs-test-adapter/Adapter-Installation.md index d20997718..f211f2457 100644 --- a/docs/articles/vs-test-adapter/Adapter-Installation.md +++ b/docs/articles/vs-test-adapter/Adapter-Installation.md @@ -38,7 +38,7 @@ When adding packages manually, we recommended installing the framework, the adap You should ensure you also reference `Microsoft.NET.Test.Sdk` as well; it is required for test discoverability. -1. Open your test project csproj file +1. Open your test project `csproj` file 2. Add the necessary package references as shown in the snippet example below (the versions should be the latest ones, the ones below is what is current at the date of writing) ```xml From 628051f92e21ff4209a2595ec9a82a0d479927b0 Mon Sep 17 00:00:00 2001 From: Terje Sandstrom Date: Sat, 11 Dec 2021 16:04:57 +0100 Subject: [PATCH 022/596] Update docs/articles/vs-test-adapter/Adapter-Installation.md Co-authored-by: Sean Killeen --- docs/articles/vs-test-adapter/Adapter-Installation.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/articles/vs-test-adapter/Adapter-Installation.md b/docs/articles/vs-test-adapter/Adapter-Installation.md index f211f2457..553200053 100644 --- a/docs/articles/vs-test-adapter/Adapter-Installation.md +++ b/docs/articles/vs-test-adapter/Adapter-Installation.md @@ -39,7 +39,7 @@ When adding packages manually, we recommended installing the framework, the adap You should ensure you also reference `Microsoft.NET.Test.Sdk` as well; it is required for test discoverability. 1. Open your test project `csproj` file -2. Add the necessary package references as shown in the snippet example below (the versions should be the latest ones, the ones below is what is current at the date of writing) +2. Add the necessary package references as shown in the snippet example below (NOTE: these are the current versions at time of writing; you'll want to install the latest versions.) ```xml From 39c195635756e5e4973956baebe69308adb8bfa5 Mon Sep 17 00:00:00 2001 From: Terje Sandstrom Date: Sat, 11 Dec 2021 16:05:40 +0100 Subject: [PATCH 023/596] Update docs/articles/vs-test-adapter/Adapter-Installation.md Co-authored-by: Sean Killeen --- docs/articles/vs-test-adapter/Adapter-Installation.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/articles/vs-test-adapter/Adapter-Installation.md b/docs/articles/vs-test-adapter/Adapter-Installation.md index 553200053..fb3c44047 100644 --- a/docs/articles/vs-test-adapter/Adapter-Installation.md +++ b/docs/articles/vs-test-adapter/Adapter-Installation.md @@ -55,7 +55,7 @@ Note: *You don't need to add any nunit.console or any other runner package* ### Working with the Visual Studio Nuget manager -If you have a legacy project type, the easiest way is to use the Visual Studio 'Manage nuget packages in the solution' menu option. It can also be used for the new SDK projects, but it is actually faster to just open the csproj and copy paste the references in. +If you have a legacy project type, or prefer working outside of the command line, you can also use the Visual Studio 'Manage NuGet packages in the solution' menu option. It can also be used for the new SDK projects, but you may find it faster to open the `csproj` and copy/paste the references in. You need to have an active solution, then follow these steps: From 557d830f01eadea35d68a752b4eb47e1653d725e Mon Sep 17 00:00:00 2001 From: Terje Sandstrom Date: Sat, 11 Dec 2021 16:06:15 +0100 Subject: [PATCH 024/596] Update docs/articles/vs-test-adapter/Adapter-Installation.md Co-authored-by: Sean Killeen --- docs/articles/vs-test-adapter/Adapter-Installation.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/articles/vs-test-adapter/Adapter-Installation.md b/docs/articles/vs-test-adapter/Adapter-Installation.md index fb3c44047..733a23a3b 100644 --- a/docs/articles/vs-test-adapter/Adapter-Installation.md +++ b/docs/articles/vs-test-adapter/Adapter-Installation.md @@ -57,7 +57,7 @@ Note: *You don't need to add any nunit.console or any other runner package* If you have a legacy project type, or prefer working outside of the command line, you can also use the Visual Studio 'Manage NuGet packages in the solution' menu option. It can also be used for the new SDK projects, but you may find it faster to open the `csproj` and copy/paste the references in. -You need to have an active solution, then follow these steps: +With an active solution in Visual Studio, follow these steps: 1. From Tools menu, use Library Package Manager and select Manage NuGet packages for solution 2. In the left panel, select Online From 49ecba9537245992ea00a7e5525b9b5a4c4f2556 Mon Sep 17 00:00:00 2001 From: Terje Sandstrom Date: Sat, 11 Dec 2021 16:06:32 +0100 Subject: [PATCH 025/596] Update docs/articles/vs-test-adapter/Adapter-Installation.md Co-authored-by: Sean Killeen --- docs/articles/vs-test-adapter/Adapter-Installation.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/articles/vs-test-adapter/Adapter-Installation.md b/docs/articles/vs-test-adapter/Adapter-Installation.md index 733a23a3b..0d74ec172 100644 --- a/docs/articles/vs-test-adapter/Adapter-Installation.md +++ b/docs/articles/vs-test-adapter/Adapter-Installation.md @@ -59,7 +59,7 @@ If you have a legacy project type, or prefer working outside of the command line With an active solution in Visual Studio, follow these steps: -1. From Tools menu, use Library Package Manager and select Manage NuGet packages for solution +1. From the `Tools` menu, use Library Package Manager and select `Manage NuGet packages for solution` 2. In the left panel, select Online 3. Locate (search for) `NUnit3Test Adapter` in the center panel and highlight it 4. Click `Install` From a6fb09b6e4a69c2df6984e997299c7e3cd4e5463 Mon Sep 17 00:00:00 2001 From: Terje Sandstrom Date: Sat, 11 Dec 2021 16:07:18 +0100 Subject: [PATCH 026/596] Update docs/articles/vs-test-adapter/Adapter-Installation.md Co-authored-by: Sean Killeen --- docs/articles/vs-test-adapter/Adapter-Installation.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/articles/vs-test-adapter/Adapter-Installation.md b/docs/articles/vs-test-adapter/Adapter-Installation.md index 0d74ec172..cd90a472e 100644 --- a/docs/articles/vs-test-adapter/Adapter-Installation.md +++ b/docs/articles/vs-test-adapter/Adapter-Installation.md @@ -60,7 +60,7 @@ If you have a legacy project type, or prefer working outside of the command line With an active solution in Visual Studio, follow these steps: 1. From the `Tools` menu, use Library Package Manager and select `Manage NuGet packages for solution` -2. In the left panel, select Online +2. In the left panel, select `Online` 3. Locate (search for) `NUnit3Test Adapter` in the center panel and highlight it 4. Click `Install` 5. In the `Select Projects` dialog, select all test projects in your solution. From 8a66516a7a91ad27e1dfb2724babbf163ed147b5 Mon Sep 17 00:00:00 2001 From: Terje Sandstrom Date: Sat, 11 Dec 2021 20:55:41 +0100 Subject: [PATCH 027/596] Update adapter version 4.2 information --- .../AdapterV4-Release-Notes.md | 8 ++++-- docs/articles/vs-test-adapter/Debugging.md | 25 +++++++++++++++++-- 2 files changed, 29 insertions(+), 4 deletions(-) diff --git a/docs/articles/vs-test-adapter/AdapterV4-Release-Notes.md b/docs/articles/vs-test-adapter/AdapterV4-Release-Notes.md index 7450ac508..8478c7930 100644 --- a/docs/articles/vs-test-adapter/AdapterV4-Release-Notes.md +++ b/docs/articles/vs-test-adapter/AdapterV4-Release-Notes.md @@ -1,12 +1,16 @@ # Adapter V4 Release Notes -## NUnit3 Test Adapter for Visual Studio - Version 4.2.0 - Nov 28, 2021 +## NUnit3 Test Adapter for Visual Studio - Version 4.2.0 - Des 11, 2021 This is a bug fix release, with the following fixes: -* [914](https://github.com/nunit/nunit3-vs-adapter/issues/914) +* [912](https://github.com/nunit/nunit3-vs-adapter/issues/912) Explicit runs when using NUnit-filters 'cat!=FOO' +* [914](https://github.com/nunit/nunit3-vs-adapter/issues/914) AddTestAttachment does not work anymore in VS2022 * [918](https://github.com/nunit/nunit3-vs-adapter/issues/918) New DiscoveryMode doesn't play nicely with TestFixtureSource - Missing GenericFixture +### Development + +The [debugging of an adapter](Debugging.md) has been made simpler, using just a runsetting to enable it. See [this post](http://hermit.no/debugging-the-nunit3testadapter-take-2/) for details on the process. ## NUnit3 Test Adapter for Visual Studio - Version 4.1.0 - Nov 8, 2021 diff --git a/docs/articles/vs-test-adapter/Debugging.md b/docs/articles/vs-test-adapter/Debugging.md index 2b79b63b0..e13f85883 100644 --- a/docs/articles/vs-test-adapter/Debugging.md +++ b/docs/articles/vs-test-adapter/Debugging.md @@ -1,5 +1,26 @@ # Debugging the NUnit3TestAdapter -Debugging the adapter is done by creating a debug version of the adapter and enabling the `LAUNCHDEBUGGER` symbols where appropriate in the code base. +Debugging the adapter is done by first creating a debug version of the adapter. +You can then enable a debug run by passing one of the NUnit Debug settings using runsettings. -A detailed explanation of the process can be found in [this blog post](http://hermit.no/debugging-the-nunit3testadapter/). +The symbols are: +``` +NUnit.DebugExecution +NUnit.DebugDiscovery +NUnit.Debug +``` + +The last setting is equal to setting both of the two above. + +From command line, you can set these by adding +``` +dotnet test -- NUnit.DebugExecution=true +``` + +If you want to do this using Visual Studio, you must add a runsettings file, and add these settings there to the NUnit section. + +A detailed explanation of the process can be found in [this blog post](http://hermit.no/debugging-the-nunit3testadapter-take-2/) + +### Debugging earlier versions + +See [this blog post](http://hermit.no/debugging-the-nunit3testadapter/) for details on that process. From 200356c0dd80cf7506a3a536c4d88f1325445dae Mon Sep 17 00:00:00 2001 From: Terje Sandstrom Date: Sat, 11 Dec 2021 20:56:36 +0100 Subject: [PATCH 028/596] Update adapter version 4.2 information --- docs/articles/vs-test-adapter/Debugging.md | 10 ++++++---- 1 file changed, 6 insertions(+), 4 deletions(-) diff --git a/docs/articles/vs-test-adapter/Debugging.md b/docs/articles/vs-test-adapter/Debugging.md index e13f85883..449764700 100644 --- a/docs/articles/vs-test-adapter/Debugging.md +++ b/docs/articles/vs-test-adapter/Debugging.md @@ -1,10 +1,11 @@ # Debugging the NUnit3TestAdapter Debugging the adapter is done by first creating a debug version of the adapter. -You can then enable a debug run by passing one of the NUnit Debug settings using runsettings. +You can then enable a debug run by passing one of the NUnit Debug settings using runsettings. The symbols are: -``` + +```cmd NUnit.DebugExecution NUnit.DebugDiscovery NUnit.Debug @@ -13,7 +14,8 @@ NUnit.Debug The last setting is equal to setting both of the two above. From command line, you can set these by adding -``` + +```cmd dotnet test -- NUnit.DebugExecution=true ``` @@ -21,6 +23,6 @@ If you want to do this using Visual Studio, you must add a runsettings file, and A detailed explanation of the process can be found in [this blog post](http://hermit.no/debugging-the-nunit3testadapter-take-2/) -### Debugging earlier versions +## Debugging earlier versions See [this blog post](http://hermit.no/debugging-the-nunit3testadapter/) for details on that process. From a76eefe8dc3da3667decea08abaaadf434a4ff32 Mon Sep 17 00:00:00 2001 From: Terje Sandstrom Date: Sat, 11 Dec 2021 20:57:14 +0100 Subject: [PATCH 029/596] Update adapter version 4.2 information --- docs/articles/vs-test-adapter/AdapterV4-Release-Notes.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/articles/vs-test-adapter/AdapterV4-Release-Notes.md b/docs/articles/vs-test-adapter/AdapterV4-Release-Notes.md index 8478c7930..5d21c7fae 100644 --- a/docs/articles/vs-test-adapter/AdapterV4-Release-Notes.md +++ b/docs/articles/vs-test-adapter/AdapterV4-Release-Notes.md @@ -10,7 +10,7 @@ This is a bug fix release, with the following fixes: ### Development -The [debugging of an adapter](Debugging.md) has been made simpler, using just a runsetting to enable it. See [this post](http://hermit.no/debugging-the-nunit3testadapter-take-2/) for details on the process. +The [debugging of an adapter](Debugging.md) has been made simpler, using just a runsetting to enable it. See [this post](http://hermit.no/debugging-the-nunit3testadapter-take-2/) for details on the process. ## NUnit3 Test Adapter for Visual Studio - Version 4.1.0 - Nov 8, 2021 From 47589b0ce1582cc6032aa218b9961bcb52a58c4f Mon Sep 17 00:00:00 2001 From: Terje Sandstrom Date: Sat, 11 Dec 2021 21:56:58 +0100 Subject: [PATCH 030/596] Update adapter version 4.2 information --- docs/articles/vs-test-adapter/Adapter-Release-Notes.html | 2 +- docs/articles/vs-test-adapter/AdapterV4-Release-Notes.md | 4 ++++ 2 files changed, 5 insertions(+), 1 deletion(-) diff --git a/docs/articles/vs-test-adapter/Adapter-Release-Notes.html b/docs/articles/vs-test-adapter/Adapter-Release-Notes.html index 898c7495f..81594345c 100644 --- a/docs/articles/vs-test-adapter/Adapter-Release-Notes.html +++ b/docs/articles/vs-test-adapter/Adapter-Release-Notes.html @@ -1,3 +1,3 @@ - + diff --git a/docs/articles/vs-test-adapter/AdapterV4-Release-Notes.md b/docs/articles/vs-test-adapter/AdapterV4-Release-Notes.md index 5d21c7fae..ba623a0c3 100644 --- a/docs/articles/vs-test-adapter/AdapterV4-Release-Notes.md +++ b/docs/articles/vs-test-adapter/AdapterV4-Release-Notes.md @@ -8,6 +8,10 @@ This is a bug fix release, with the following fixes: * [914](https://github.com/nunit/nunit3-vs-adapter/issues/914) AddTestAttachment does not work anymore in VS2022 * [918](https://github.com/nunit/nunit3-vs-adapter/issues/918) New DiscoveryMode doesn't play nicely with TestFixtureSource - Missing GenericFixture +### Engine update + +The NUnit.Engine has been updated to version 3.13 in this release. + ### Development The [debugging of an adapter](Debugging.md) has been made simpler, using just a runsetting to enable it. See [this post](http://hermit.no/debugging-the-nunit3testadapter-take-2/) for details on the process. From 59d1e4c187899add5d7a0696cbaeaeccea596c19 Mon Sep 17 00:00:00 2001 From: Terje Sandstrom Date: Sat, 11 Dec 2021 22:10:10 +0100 Subject: [PATCH 031/596] Update adapter version 4.2 information --- docs/articles/vs-test-adapter/AdapterV4-Release-Notes.md | 1 + 1 file changed, 1 insertion(+) diff --git a/docs/articles/vs-test-adapter/AdapterV4-Release-Notes.md b/docs/articles/vs-test-adapter/AdapterV4-Release-Notes.md index ba623a0c3..4182caac1 100644 --- a/docs/articles/vs-test-adapter/AdapterV4-Release-Notes.md +++ b/docs/articles/vs-test-adapter/AdapterV4-Release-Notes.md @@ -7,6 +7,7 @@ This is a bug fix release, with the following fixes: * [912](https://github.com/nunit/nunit3-vs-adapter/issues/912) Explicit runs when using NUnit-filters 'cat!=FOO' * [914](https://github.com/nunit/nunit3-vs-adapter/issues/914) AddTestAttachment does not work anymore in VS2022 * [918](https://github.com/nunit/nunit3-vs-adapter/issues/918) New DiscoveryMode doesn't play nicely with TestFixtureSource - Missing GenericFixture +* [818](https://github.com/nunit/nunit3-vs-adapter/issues/818) Known Vulnerability in System.Xml.XPath.XmlDocument ### Engine update From 17fa3e2c3671c77bf3a215d66aa3cef9c683e57f Mon Sep 17 00:00:00 2001 From: Terje Sandstrom Date: Sun, 12 Dec 2021 12:37:17 +0100 Subject: [PATCH 032/596] Update docs/articles/vs-test-adapter/AdapterV4-Release-Notes.md Co-authored-by: Sean Killeen --- docs/articles/vs-test-adapter/AdapterV4-Release-Notes.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/articles/vs-test-adapter/AdapterV4-Release-Notes.md b/docs/articles/vs-test-adapter/AdapterV4-Release-Notes.md index 4182caac1..ff578daf2 100644 --- a/docs/articles/vs-test-adapter/AdapterV4-Release-Notes.md +++ b/docs/articles/vs-test-adapter/AdapterV4-Release-Notes.md @@ -1,6 +1,6 @@ # Adapter V4 Release Notes -## NUnit3 Test Adapter for Visual Studio - Version 4.2.0 - Des 11, 2021 +## NUnit3 Test Adapter for Visual Studio - Version 4.2.0 - Dec 11, 2021 This is a bug fix release, with the following fixes: From 4c133b6fe8ff35d61947f70afe9d9ae5e6a80b37 Mon Sep 17 00:00:00 2001 From: Terje Sandstrom Date: Sun, 12 Dec 2021 12:37:27 +0100 Subject: [PATCH 033/596] Update docs/articles/vs-test-adapter/Debugging.md Co-authored-by: Sean Killeen --- docs/articles/vs-test-adapter/Debugging.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/articles/vs-test-adapter/Debugging.md b/docs/articles/vs-test-adapter/Debugging.md index 449764700..7c852e65d 100644 --- a/docs/articles/vs-test-adapter/Debugging.md +++ b/docs/articles/vs-test-adapter/Debugging.md @@ -1,7 +1,7 @@ # Debugging the NUnit3TestAdapter Debugging the adapter is done by first creating a debug version of the adapter. -You can then enable a debug run by passing one of the NUnit Debug settings using runsettings. +You can then enable a debug run by passing one of the NUnit debug settings using runsettings. The symbols are: From 9c039822d0fa62b408b82574ac6c4d2057c75ddb Mon Sep 17 00:00:00 2001 From: Terje Sandstrom Date: Sun, 12 Dec 2021 18:19:15 +0100 Subject: [PATCH 034/596] Added release notes info for the engine to the adapter (#606) * Added release notes info for the engine to the adapter * Change engine release noes to relative link Co-authored-by: Sean Killeen --- docs/articles/vs-test-adapter/AdapterV4-Release-Notes.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/articles/vs-test-adapter/AdapterV4-Release-Notes.md b/docs/articles/vs-test-adapter/AdapterV4-Release-Notes.md index ff578daf2..31c899907 100644 --- a/docs/articles/vs-test-adapter/AdapterV4-Release-Notes.md +++ b/docs/articles/vs-test-adapter/AdapterV4-Release-Notes.md @@ -11,7 +11,7 @@ This is a bug fix release, with the following fixes: ### Engine update -The NUnit.Engine has been updated to version 3.13 in this release. +The NUnit.Engine has been updated to version 3.13 in this release. See [engine release notes](~/articles/nunit/release-notes/console-and-engine.md) for details. ### Development From 1371a5025d3d38a747ddeaff6944953c260a12c1 Mon Sep 17 00:00:00 2001 From: Sean Killeen Date: Tue, 14 Dec 2021 07:33:05 -0500 Subject: [PATCH 035/596] Move console release notes (#611) * move release notes doc * update TOC to change to topic href * add toc link to release notes * use a topic href in the adapter V4 notes * use xref instead of topicHref I'd forgotten the syntax! * update ref * Update heading * use topicUid --- .../console-and-engine.md => nunit-engine/release-notes.md} | 6 +++++- docs/articles/nunit-engine/toc.yml | 2 ++ docs/articles/nunit/release-notes/Pre-3.5-Release-Notes.md | 2 +- docs/articles/nunit/release-notes/toc.yml | 2 +- docs/articles/vs-test-adapter/AdapterV4-Release-Notes.md | 2 +- 5 files changed, 10 insertions(+), 4 deletions(-) rename docs/articles/{nunit/release-notes/console-and-engine.md => nunit-engine/release-notes.md} (99%) diff --git a/docs/articles/nunit/release-notes/console-and-engine.md b/docs/articles/nunit-engine/release-notes.md similarity index 99% rename from docs/articles/nunit/release-notes/console-and-engine.md rename to docs/articles/nunit-engine/release-notes.md index cba073c22..8215e6a05 100644 --- a/docs/articles/nunit/release-notes/console-and-engine.md +++ b/docs/articles/nunit-engine/release-notes.md @@ -1,4 +1,8 @@ -# Console and Engine +--- +uid: consoleenginereleasenotes +--- + +# Console and Engine Release Notes ## NUnit Console & Engine 3.13 - November 30, 2021 diff --git a/docs/articles/nunit-engine/toc.yml b/docs/articles/nunit-engine/toc.yml index 0a2f56f0f..98d7a3938 100644 --- a/docs/articles/nunit-engine/toc.yml +++ b/docs/articles/nunit-engine/toc.yml @@ -7,3 +7,5 @@ - name: Engine Extensions href: extensions/toc.yml topicHref: extensions/Index.md +- name: Release Notes + href: release-notes.md diff --git a/docs/articles/nunit/release-notes/Pre-3.5-Release-Notes.md b/docs/articles/nunit/release-notes/Pre-3.5-Release-Notes.md index cfe8daf57..c3667de88 100644 --- a/docs/articles/nunit/release-notes/Pre-3.5-Release-Notes.md +++ b/docs/articles/nunit/release-notes/Pre-3.5-Release-Notes.md @@ -8,7 +8,7 @@ uid: pre35releasenotes > Combined Release Notes for the NUnit framework, console and engine, up to version 3.5. For later releases, see: > > * [Framework Release Notes](framework.md) -> * [Console Release Notes](console-and-engine.md) +> * [Console Release Notes](xref:consoleenginereleasenotes) ## NUnit 3.5 - October 3, 2016 diff --git a/docs/articles/nunit/release-notes/toc.yml b/docs/articles/nunit/release-notes/toc.yml index 40d11e23f..9e924e699 100644 --- a/docs/articles/nunit/release-notes/toc.yml +++ b/docs/articles/nunit/release-notes/toc.yml @@ -1,7 +1,7 @@ - name: Framework href: framework.md - name: Console and Engine - href: console-and-engine.md + topicUid: consoleenginereleasenotes - name: Breaking Changes topicUid: breakingchanges - name: Pre-3.5 Release notes diff --git a/docs/articles/vs-test-adapter/AdapterV4-Release-Notes.md b/docs/articles/vs-test-adapter/AdapterV4-Release-Notes.md index 31c899907..9a00a101b 100644 --- a/docs/articles/vs-test-adapter/AdapterV4-Release-Notes.md +++ b/docs/articles/vs-test-adapter/AdapterV4-Release-Notes.md @@ -11,7 +11,7 @@ This is a bug fix release, with the following fixes: ### Engine update -The NUnit.Engine has been updated to version 3.13 in this release. See [engine release notes](~/articles/nunit/release-notes/console-and-engine.md) for details. +The NUnit.Engine has been updated to version 3.13 in this release. See [engine release notes](xref:consoleenginereleasenotes) for details. ### Development From a03450938f96df11f5ed0c19a08dae2b98763597 Mon Sep 17 00:00:00 2001 From: Sean Killeen Date: Tue, 14 Dec 2021 08:50:36 -0500 Subject: [PATCH 036/596] Add MIT license to docs repo (#610) --- LICENSE.md | 21 +++++++++++++++++++++ 1 file changed, 21 insertions(+) create mode 100644 LICENSE.md diff --git a/LICENSE.md b/LICENSE.md new file mode 100644 index 000000000..4f18a59a0 --- /dev/null +++ b/LICENSE.md @@ -0,0 +1,21 @@ +MIT License + +Copyright (c) 2021 NUnit.org + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +SOFTWARE. From 2e03b3be0608d193807357f31131be78f296f82b Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?David=20Kr=C3=B6ll?= Date: Wed, 15 Dec 2021 22:41:40 +0100 Subject: [PATCH 037/596] Update Assert.Throws.md (#613) Fix brackets and semicolons to correct C# syntax --- .../assertions/classic-assertions/Assert.Throws.md | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/docs/articles/nunit/writing-tests/assertions/classic-assertions/Assert.Throws.md b/docs/articles/nunit/writing-tests/assertions/classic-assertions/Assert.Throws.md index bf70bed60..d45457f3e 100644 --- a/docs/articles/nunit/writing-tests/assertions/classic-assertions/Assert.Throws.md +++ b/docs/articles/nunit/writing-tests/assertions/classic-assertions/Assert.Throws.md @@ -113,11 +113,11 @@ types. See the following code for examples: ```csharp // Require an ApplicationException - derived types fail! Assert.Throws(typeof(ApplicationException), code); -Assert.Throws()(code); +Assert.Throws(code); // Allow both ApplicationException and any derived type -Assert.Throws(Is.InstanceOf(typeof(ApplicationException), code); -Assert.Throws(Is.InstanceOf;(), code); +Assert.Throws(Is.InstanceOf(typeof(ApplicationException)), code); +Assert.Throws(Is.InstanceOf(), code); // Allow both ApplicationException and any derived type Assert.Catch(code); From edd1608aa9ac524466d6cbd1cf16c34c6cdf979c Mon Sep 17 00:00:00 2001 From: Sean Killeen Date: Wed, 15 Dec 2021 19:08:30 -0500 Subject: [PATCH 038/596] Update docfx-action in build process to v1.6.0 (#615) * Adds wkhtmltopdf * Upgrades from 2.58.2 --> 2.58.9. [(Release Notes)](https://github.com/dotnet/docfx/releases?page=1) --- .github/workflows/build-process.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/build-process.yml b/.github/workflows/build-process.yml index 4eabf0cf9..4fd53c5fd 100644 --- a/.github/workflows/build-process.yml +++ b/.github/workflows/build-process.yml @@ -39,7 +39,7 @@ jobs: steps: - uses: actions/checkout@v2 name: Check out the code - - uses: "nunit/docfx-action@v1.5.0" + - uses: "nunit/docfx-action@v1.6.0" name: Build with Docfx with: args: docs/docfx.json --warningsAsErrors true From bf4d9949ffc8fb128fdcb89a24a79583bbc59131 Mon Sep 17 00:00:00 2001 From: Sean Killeen Date: Wed, 15 Dec 2021 19:23:21 -0500 Subject: [PATCH 039/596] Update to docfx-action to v1.7.0 (#616) * WIP: Update to docfx-action to v1.7.0-pre To see if this will work with a container running .NET 6 rather than .NET Core 3.1 * Update build-process.yml --- .github/workflows/build-process.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/build-process.yml b/.github/workflows/build-process.yml index 4fd53c5fd..3b6cfe914 100644 --- a/.github/workflows/build-process.yml +++ b/.github/workflows/build-process.yml @@ -39,7 +39,7 @@ jobs: steps: - uses: actions/checkout@v2 name: Check out the code - - uses: "nunit/docfx-action@v1.6.0" + - uses: "nunit/docfx-action@v1.7.0" name: Build with Docfx with: args: docs/docfx.json --warningsAsErrors true From b01f1c09d795262a67ecf846926f5c7c23cd0170 Mon Sep 17 00:00:00 2001 From: Terje Sandstrom Date: Fri, 17 Dec 2021 20:35:01 +0100 Subject: [PATCH 040/596] Adding information on new properties for runsettings in the adapter --- docs/articles/vs-test-adapter/Tips-And-Tricks.md | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/docs/articles/vs-test-adapter/Tips-And-Tricks.md b/docs/articles/vs-test-adapter/Tips-And-Tricks.md index 30fa3efc9..98122c10a 100644 --- a/docs/articles/vs-test-adapter/Tips-And-Tricks.md +++ b/docs/articles/vs-test-adapter/Tips-And-Tricks.md @@ -43,6 +43,7 @@ The following options are available: |[AssemblySelectLimit](#assemblyselectlimit)|int|Number of tests accepted before filters are turned off|2000| |[NewOutputXmlFileForEachRun](#newoutputxmlfileforeachrun)|bool|Creates a new file for each test run|false| |[IncludeStackTraceForSuites](#includestacktraceforsuites)|bool|Includes stack trace for failures in suites, like exceptions in OneTimeSetup|true| +|[ExplicitMode](#explicitmode)|enum|Changes handling of explicit tests|Strict| ### Visual Studio templates for runsettings @@ -156,6 +157,8 @@ Using the runsettings should be like: ``` +Note that the ```Where``` statement does not work for the Visual Studio Test Explorer, as it would generate a conflict with the test list the adapter receives. It is intended for use with command line tools, dotnet test or vstest.console. + (From version 3.16.0) #### UseParentFQNForParametrizedTests @@ -263,6 +266,12 @@ Exceptions outside test cases are reported with its stack trace included in the (From version 4.0.0) +#### ExplicitMode + +This setting can be either ```Strict``` or ```Relaxed```. The default is ```Strict```, which means that ```Explicit``` tests can only be run with other Explicit tests, and not mixed with non-Explicit tests. The ```Relaxed``` mode is the original NUnit mode, where if you select a category, a class or a set of tests, both explicit and non-explicit tests will be run. From Visual Studio Test Explorer there are no longer (since VS2019) any way of separating between a ```Run-All``` and ```run selected tests```, so Relaxed mode doesn't work properly. It may or may not work for command line tests, dependent upon how your tests are set up and run. + +(From version 4.2.0) + --- ### Some further information on directories (From [comment on issue 575](https://github.com/nunit/nunit3-vs-adapter/issues/575#issuecomment-445786421) by [Charlie](https://github.com/CharliePoole) ) From c552550ce6fcf115a939c29afc1c1c12f176eee4 Mon Sep 17 00:00:00 2001 From: Terje Sandstrom Date: Fri, 17 Dec 2021 23:21:30 +0100 Subject: [PATCH 041/596] Adding information on new properties for runsettings in the adapter (#617) * Adding information on new properties for runsettings in the adapter * Update docs/articles/vs-test-adapter/Tips-And-Tricks.md Co-authored-by: Sean Killeen --- docs/articles/vs-test-adapter/Tips-And-Tricks.md | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/docs/articles/vs-test-adapter/Tips-And-Tricks.md b/docs/articles/vs-test-adapter/Tips-And-Tricks.md index 30fa3efc9..cf36e5aa4 100644 --- a/docs/articles/vs-test-adapter/Tips-And-Tricks.md +++ b/docs/articles/vs-test-adapter/Tips-And-Tricks.md @@ -43,6 +43,7 @@ The following options are available: |[AssemblySelectLimit](#assemblyselectlimit)|int|Number of tests accepted before filters are turned off|2000| |[NewOutputXmlFileForEachRun](#newoutputxmlfileforeachrun)|bool|Creates a new file for each test run|false| |[IncludeStackTraceForSuites](#includestacktraceforsuites)|bool|Includes stack trace for failures in suites, like exceptions in OneTimeSetup|true| +|[ExplicitMode](#explicitmode)|enum|Changes handling of explicit tests|Strict| ### Visual Studio templates for runsettings @@ -156,6 +157,8 @@ Using the runsettings should be like: ``` +Note that the ```Where``` statement does not work for the Visual Studio Test Explorer, as it would generate a conflict with the test list the adapter receives. It is intended for use with command line tools, `dotnet test` or `vstest.console`. + (From version 3.16.0) #### UseParentFQNForParametrizedTests @@ -263,6 +266,12 @@ Exceptions outside test cases are reported with its stack trace included in the (From version 4.0.0) +#### ExplicitMode + +This setting can be either ```Strict``` or ```Relaxed```. The default is ```Strict```, which means that ```Explicit``` tests can only be run with other Explicit tests, and not mixed with non-Explicit tests. The ```Relaxed``` mode is the original NUnit mode, where if you select a category, a class or a set of tests, both explicit and non-explicit tests will be run. From Visual Studio Test Explorer there are no longer (since VS2019) any way of separating between a ```Run-All``` and ```run selected tests```, so Relaxed mode doesn't work properly. It may or may not work for command line tests, dependent upon how your tests are set up and run. + +(From version 4.2.0) + --- ### Some further information on directories (From [comment on issue 575](https://github.com/nunit/nunit3-vs-adapter/issues/575#issuecomment-445786421) by [Charlie](https://github.com/CharliePoole) ) From 2e0f01306287f0de46cd98342369d9b9cbe9deb9 Mon Sep 17 00:00:00 2001 From: Terje Sandstrom Date: Sun, 19 Dec 2021 21:38:21 +0100 Subject: [PATCH 042/596] updated release notes for adapter and tricks/traps --- docs/articles/vs-test-adapter/AdapterV4-Release-Notes.md | 5 +++-- docs/articles/vs-test-adapter/Tips-And-Tricks.md | 2 +- 2 files changed, 4 insertions(+), 3 deletions(-) diff --git a/docs/articles/vs-test-adapter/AdapterV4-Release-Notes.md b/docs/articles/vs-test-adapter/AdapterV4-Release-Notes.md index 9a00a101b..8d6151595 100644 --- a/docs/articles/vs-test-adapter/AdapterV4-Release-Notes.md +++ b/docs/articles/vs-test-adapter/AdapterV4-Release-Notes.md @@ -1,13 +1,14 @@ # Adapter V4 Release Notes -## NUnit3 Test Adapter for Visual Studio - Version 4.2.0 - Dec 11, 2021 +## NUnit3 Test Adapter for Visual Studio - Version 4.2.0 - Dec 19, 2021 This is a bug fix release, with the following fixes: +* [818](https://github.com/nunit/nunit3-vs-adapter/issues/818) Known Vulnerability in System.Xml.XPath.XmlDocument * [912](https://github.com/nunit/nunit3-vs-adapter/issues/912) Explicit runs when using NUnit-filters 'cat!=FOO' * [914](https://github.com/nunit/nunit3-vs-adapter/issues/914) AddTestAttachment does not work anymore in VS2022 * [918](https://github.com/nunit/nunit3-vs-adapter/issues/918) New DiscoveryMode doesn't play nicely with TestFixtureSource - Missing GenericFixture -* [818](https://github.com/nunit/nunit3-vs-adapter/issues/818) Known Vulnerability in System.Xml.XPath.XmlDocument +* [929](https://github.com/nunit/nunit3-vs-adapter/issues/929) Lots of warnings logged when filter matches no tests 'cat=BAZ', including other issues in the same. Thanks to [@runehalfdan](https://github.com/runehalfdan) for a lot of help reproducing and verifying these issues. Fixing this also improved performance, and cleared out issues with Explicit tests. ### Engine update diff --git a/docs/articles/vs-test-adapter/Tips-And-Tricks.md b/docs/articles/vs-test-adapter/Tips-And-Tricks.md index 98122c10a..aa32cba88 100644 --- a/docs/articles/vs-test-adapter/Tips-And-Tricks.md +++ b/docs/articles/vs-test-adapter/Tips-And-Tricks.md @@ -43,7 +43,7 @@ The following options are available: |[AssemblySelectLimit](#assemblyselectlimit)|int|Number of tests accepted before filters are turned off|2000| |[NewOutputXmlFileForEachRun](#newoutputxmlfileforeachrun)|bool|Creates a new file for each test run|false| |[IncludeStackTraceForSuites](#includestacktraceforsuites)|bool|Includes stack trace for failures in suites, like exceptions in OneTimeSetup|true| -|[ExplicitMode](#explicitmode)|enum|Changes handling of explicit tests|Strict| +|[ExplicitMode](#explicitmode)|enum|Changes handling of explicit tests, options are `Strict` or `Relaxed`|Strict| ### Visual Studio templates for runsettings From 20ad0d6a1da1e9d9c1218dcd67bd3b5c8fb263fc Mon Sep 17 00:00:00 2001 From: Terje Sandstrom Date: Sun, 19 Dec 2021 22:07:19 +0100 Subject: [PATCH 043/596] fix minors --- .../nunit/getting-started/dotnet-core-and-dotnet-standard.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/articles/nunit/getting-started/dotnet-core-and-dotnet-standard.md b/docs/articles/nunit/getting-started/dotnet-core-and-dotnet-standard.md index ff289d9e3..7ed110698 100644 --- a/docs/articles/nunit/getting-started/dotnet-core-and-dotnet-standard.md +++ b/docs/articles/nunit/getting-started/dotnet-core-and-dotnet-standard.md @@ -43,7 +43,7 @@ It is similar to a console application, it cannot be .NET Standard, it must targ This limitation is the same for all test adapters including xUnit and MSTest2. -#### My tests aren't showing up in Visual Studio 2017 +#### My tests aren't showing up in Visual Studio 2017, 2019, 2022 - Are you using the NuGet adapter package? - Are you using version 4.1.0 or newer of the NuGet package? From 2b68fc9b64532d124038edaf44e3bc8cde792d28 Mon Sep 17 00:00:00 2001 From: Ihor Sychevskyi Date: Mon, 20 Dec 2021 03:01:48 +0200 Subject: [PATCH 044/596] updating and adding favicons for a better UX (#614) --- .../partials/head.tmpl.partial | 12 ++++++- docs/docfx.json | 1 + docs/favicons/android-chrome-192x192.png | Bin 0 -> 18263 bytes docs/favicons/android-chrome-384x384.png | Bin 0 -> 40353 bytes docs/favicons/apple-touch-icon.png | Bin 0 -> 17016 bytes docs/favicons/browserconfig.xml | 9 +++++ docs/favicons/favicon-16x16.png | Bin 0 -> 1146 bytes docs/favicons/favicon-32x32.png | Bin 0 -> 2643 bytes docs/favicons/manifest.json | 19 ++++++++++ docs/favicons/mstile-150x150.png | Bin 0 -> 11860 bytes docs/favicons/safari-pinned-tab.svg | 34 ++++++++++++++++++ 11 files changed, 74 insertions(+), 1 deletion(-) create mode 100644 docs/favicons/android-chrome-192x192.png create mode 100644 docs/favicons/android-chrome-384x384.png create mode 100644 docs/favicons/apple-touch-icon.png create mode 100644 docs/favicons/browserconfig.xml create mode 100644 docs/favicons/favicon-16x16.png create mode 100644 docs/favicons/favicon-32x32.png create mode 100644 docs/favicons/manifest.json create mode 100644 docs/favicons/mstile-150x150.png create mode 100644 docs/favicons/safari-pinned-tab.svg diff --git a/docs/custom_template/partials/head.tmpl.partial b/docs/custom_template/partials/head.tmpl.partial index 81d60e1a8..8b0ab1b89 100644 --- a/docs/custom_template/partials/head.tmpl.partial +++ b/docs/custom_template/partials/head.tmpl.partial @@ -16,7 +16,17 @@ {{#_description}}{{/_description}} - + + + + + + + + + + + diff --git a/docs/docfx.json b/docs/docfx.json index 78cc160d9..0b273f750 100644 --- a/docs/docfx.json +++ b/docs/docfx.json @@ -16,6 +16,7 @@ "files": [ "CNAME", "images/**", + "favicons/**", "robots.txt", "articles/vs-test-adapter/Adapter-Release-Notes.html" ] diff --git a/docs/favicons/android-chrome-192x192.png b/docs/favicons/android-chrome-192x192.png new file mode 100644 index 0000000000000000000000000000000000000000..352c8ed5ed0b3f718dc0902c4a5f75221b26a635 GIT binary patch literal 18263 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%0A!Z>BqdNDU&|b@tJxC2&!sS?h zQVvMmLNH&KwL4>g^zgi5UCGmga&pRiJp0^<+ka82JlzS91tzTTU^1tM>V~eEnhrToF92gnv=OGX#Def1Rb&LDBoe)q zX#lOwGr?tiK06>m8ISc#)=d#z59ssfiB$^Zl>Kb%4r}+ zFC@qG9{9$EnEQrpcSFQbkSHNo^FSbX1rO>0=l3urC_CNI9E>BCZ;6;V}Oa_X?`NC+2qccL;kIHWT%flH-D;?7(T{({oU>3>m4E(s2jzj zE}?QgSmO;##9I87+vOaKzv0&0aX#xzi^ZJiTIIUSXUQiJ%L0Df&1dL#+`#lXCl+Bn zLCyV5`t*7%tZXiqN|xufZ$Io01qfuJlRu=4YxV~s>;?tSDEM0r9Bg}R|LJz6(R{1h z-xeOfby1)q2m+>H641eBHu|9CX|~w?Uq|1?rJFLjW8S?Pg#^z*4bAKph2pXIUv4Vl zgzkA5mRY#m>0r6P3M8_g7%9#X3x`keZ-D^)gPX}7Nnfl#Hkia@>@idu{_E-7=E)_d zp!`c`_raIV_117Z%C&b$@D7vRAaM&yMWCgTpBq4yGCQX07zti-Kp@k!Z8&I*7d9E? z%RVxDfawR?e_b$0M-(TF?LTY*QNRlDJBrr2vcHgGUeHu!0k2fk&+tnWclUG&0Khi> znaJ(ye0{)X^1h+Whz`TC7MdurUtZ%+%~6}>hTMiZTJ9mYGfk`RrSc8w+qUocHf)qQ zX>4J7=y({D(GM&U=%@8xTFQ&fAszt5rG>^0-rsYbX`mgUk%(4(?)@(XVYZSbx9{}N z>7SArl=K}-*=-efK43h3lt`9I5fn7sCYZvK@r&=+DTYrG_>ak1J~&`(hv*%IsB?XLxqo4|RTK^X<1=9KllUPW&QD))Lp(X)X%r=sv z6Ua%lCnsTPbbzMi^J-`X10bc9J-<7@p*81owT@GscNdGtiFr` zH3!*OzK?y?MU>W+Qrp&m*XQ;h8h5vPb0R)8mfym)+W+THE6xLRp)wNT&IKwV26^{sW(wKvk--h$K9j#u}6am^m_ zKROu(MR?^?G#W26)mqOZO}#UYE^vAZ0Kg~}rDr#3pV+Wf~BC4wZh6 z#e>c!Jn{vajQ6-9rjB3MLs`#7Y;`whmH-@kSH@tNSD8edvJflRVG=WdnBE@RX+j$s z>+#B$X*ND&nX9h12h?4hnF4Tx91~nRqy|lXibuXq zy|I$1)@I&zLh+efp!};d3BK-t3f)SQItqul6qC3Jm3;cuBM%0J_~iSzekE=)c>IlFQ(o9gR3+C9;h*f4{;bK%V3xymY!cOpg79E2!bh#R@e2-SSip`!% zVig%~z1`E5ubu!L%N#p28fMa!f!LKaD+UMA zMPR491VeDdJ3>d|0$MSs#E>Nz?8PT{qftnUQ9`rPz;^FfOPLRoegWtT*(M9a%&}NW zK@pkQL>7<@G82_F6p;+X3V{QJ9f1vjSqNbgf@A!YrIZpwN~t07A@P88Nl81A`7ua2Zai87{-4d1Rrk6OW|6w{NhY ze){RBpMLu3r=QcD{|_#TKG-S( zIy5jkGchYLFgh?WpVpsW0000PbVXQnQ*UN;cVTj606}DLVr3vnZDD6+Qe|Oed2z{Q zJOBUyS9(-fbW&k=AaHVTW@&6?Aar?fWguyAbYlPjc%0+%3K74o@XUfKZ^@G1aTZ<`)K|nMmBE6Zy zfWIdIf#;mpr6vge0j!yVj3mV8 zf1gFYm8sxo;N0buq~L(aXt;D_JFLa};1@&4Ns4KD|GCKb%A(fF?%2`L;_;Z{Q+_Hd z$iw1;hYFR|#PIMiydxY42GGTX@}1X+jMn~05xX5gPIW^S%6FUN(fSQ~cOjC@l>6&( zzP)L9eMdeI;Hd1Y(SHay_QxRp|9)ViW7t6w6VGK>gXlAFDTF7K%zB*?X_JT^PqHht zD`Xq)5fbnB2PwCfn729>oQn~PzdIJ{yLJD~si>-{shT=p<5V18Q5uGikno)#TPn9X zJ2?qokkW}nm`Z|2w@`#lSHn<+lN{ItBCf=xN0IL9-lg`$Uf*`>h!Da>wG6RApx#75 zX?}<5*Zh|&*D*<@YnA-fRaUK8?pyP}BnnMx1+{cV3dtB%$rMp4%5W9BA=>bNCGcqC z9TA~O3+UofMRCS^J39dgS;5itN}}UbROQI#Q$=a)!SwIy^8IP9n(}-!<;2MqeB>S* zv|-JKY%PTtEtwb_!&N8L6A+G;Y4)SL-Z~}YFN6HNZ;T0$&OfLTJ8N1)z0qGNu=Rf&E6$=6;+78?3&;~CCXYwW=KV6 zM9{>rTHu7*Zj~T5(2Y~ys{Nx_fWW&&@jAnxDP1Xb^Qs&YEuvgZenyyd3~f#>5)3KB z)yf-4s%s?*AVzz_NTQTfrbIWFx8dnYR*!$q#$L3lftH$kf8Vi^YE*mCm;Lc^x2CiBRXUfJq1u^PfM4`PX5GZ zav_E@&IUw}5;qN&l#t<24Y5{SbTn5|F$e z0{UtS`U;ugMz=Dr>VfaVw7SGUf&jh-2=p{tz8TNiAi5P_H9?8dBMQr$s(dke-=~J8a)3Tm_Kh1yXel7=O^xjp3*^SMqbIQk?@|pCmSpH5 zGp<;^E1!;0YN}Yqo9NDo8%-tfi&efF_e-LalP7X86n`Vs^YBH>M!Xj=Dyfb$ zhp1pMf`qJQUDlFLKQ~Aj0d|b|bkIvHkGm@&R3KDfRQCl?hC@if01rv%DwrC&qKBHp z(1{QxDyz}@NA{daY=%s}|LJ924z+pAP{GRZ+sbmK@j3fd_A|4T6)isQ6u3{I{k$ZZ z3e`TY@J$c3JbM(|5<4kBC1UMTiX1-t%YFRgGWUX*f-#YhgducTpgR@3r7uCaHcH4K zD~$|3dtt@$vj9WXIxaF>{C3gl0H@E-N(2rA0!>?_e?QLUw6{a$*>+(o)~xML=ww|} zII^__Gk>+LHCi1p9A(T<2v8HXA4zLyh5x{2P@rE#$#2A{2r4Tqy&PY6^=BkXbUc#1 z6YGld`x@`9sa<3a-I$t5h z6~zcJTz*Iiymz~k#X=6dy}$$*xg$8~`oh>*)zk1W!%5Lux2L6n@2=(HnY&>99ee)5 zClc!~%EX#7^fEF`v@%N|h!_$?_pA6}<%~qJp>8y7m<=LYwh5L$lrvc=`h~`Ig=k?! zkMp)7Gxylz#FX8?+Msve)=}sh_nTG&`Dm`$r|l>o;e%F?Zp-!Mjbpo-d3|Uu%_tEfwoj%WL5QQDR_jKCLG@?pI98EXOyFboZ>H zEr~*qe&lSBGu?`Gz3tL&oUj7+$|TF42@#Af29lr?wRU%^J&>|vH19@p?ljtFUqiFr z5cI9@{mRK@@(t;xtK^AyD<_w4)Qz|Q$UypSnAk~3d}5)p66442AoY}-7JyPtS1!2% zBSXlYP?@6(dJw!oqMaFouJaygwuQ7>Aao-(v}ilMt7l`WoM+AW&z|RZf8eDT2S*UB zxa6lOWAH^9)9Q>~ShR)8yQ8?TH$M?11WIDn03(1#LRUQcXbhVfIqO3Q>B!lZ_zU{{ zj7PcpL0@=wefOlQ@DBwh@!jmz7&6fuZ#B?AOR~e*wZCG4di9rIsr*uOjD8Up(_QfP z#Wz;VoWWNxVyZe9M>C|P-A!s}r&PYksq>$3hn6v-=UuTlzU|=$drQCwevL-*XQWr{ z7p;HM-7-T+;=IHW2~O)M+ZDpwn#y$QiM>dx&5GXl@X^uh3~y>IG^F(`QgHJn3JKaD zrLK|H08mP0OH^}7}_RgcotGsm?#hA=5dx%m{3zKxtLgvS+89(#{n5kt@lr=ld9Wc;-_{(&m=}sBb1tsLFW!zJx7r(fQuMzm{U-Pp^?%06O`$)vw_$r9!xrM zO1eiGqaFRKv`h52u6*6GrV%yHCW*b%xpHtkP#V57kv5@Ea-MNHXPoe#AJraQ5nWLU z(ewL!q>90dNg46I=Ab#Z0$Ho(Djy=0qvMc!flFjFqK55U15#AH;;7%{J6d<2V4lZ zCu%w&o}=|jva*JnWyxxgImti$iI@K1%2$C;j-wzWZA!ARWVX~}7gke1q?~yYPt}mM z!drf3Zp}u93IEr;(3@fp)S!x1$ezmm ziM`j~T2v4z$(d9byd|0lGCX_83}GY8Z^QK5#fRwD*`udc3Ba?N3My9PzC`U&4`u5k z`UWjmK!vF8MmNJ$!r72_7HVsCsHL8+EvBnX&}qZxZ9s}$OdkGY)9_Qy2`@SgQzIvQ zh{8A0&*sdbqW)({SG}*TfUV7yZCPDIdcq#5bZDtb7KTJo&2mGdBBVP%KHDc*{#e5X zZmqd5H&0Xg$V&}oJdpH+U302cflgHz; zIRPIDyycrh{(hm|;bSN?(275vY@tjfK_#5;A`iA?6g#NYEXJg`I|=i$*Mg2rwA^0a z>n!ca?u(9Qani+Oa(?oBPfBNPUQ=Ej@Fb9a)hF z!-tFdo!M2a&5a%ZA6Fl!(qZN&OV7u_Io1B+=)rPC5=Tzo7lY;sR4Msl%B;Ica!V7< zA!?5V$vDp$fPeTb7~7Mn08+|}k0=dY9%UiZz+yV)#F$Xqj5(d5ni?QewT`%)CkE+k z*xBJ&Ax@+X`jSK|ntNlVDT}_!g^BfFz}aTvGXJ_9EA|h3NUhu)NT94xeu8n|Opy;+ z)X=%^8N$u__gd;)b;Us*+DOgsn@~Bj;>c(-h-Se` z&lI{bz1cyN5PKMie`6cn&cJW_^F=?jaZDi7ALvHK=p;d5IYk#lFGdKjvA<}5ZGqba zuGat~X9@+zO!Wc{c`Mh7(t8IB6ZhbXZQMuhD`3PsOY_aTm7ZTNLb!x1MMXv~-K`!B zern>PgMU6sh*0gFypfCT1WoMSsB#7sWQ?p?`Z0TR`uqWgLeh7QA)q;-$q6`OV>l3X zIL+xZ0UcRLc5|himDq)wcwRW2%P92JAI`yTAKXU5ts&NrBJ=fFn>MEo!(^zEp%XQ@ zc5HQGgXANozVWZT#DUQG6~C(qvXB!XvyhKpOjc$}Mc*L^resvhv(Il;Co>KeJ8iVL`lG5s^ z*&>z8Z)|JS?f>|!rQao8kOw4HA-@bVsGyAgIhMm*6AjhAOQ^K(!igsUadg=4l^gUO zvg2kj7m*8*S$5$vP}8Z)cSUybE%+x@J_%1R`xWke-&70rg~w)Y>dxrX6FkaPS+3X_ zKH3Ff&(Jr4nzNw;zL?3DBT@)zb^?k;yODSlAi3DmgQ#L4Z8Pj0fycP zH`qjB#Mc!q<0U-!@`c5<j#uQeLO1;K;WBCwGA;MgE{Yy9(mRIes{ z5VSO()(;%c50IL1-;r+i<_WD0*Z5Emtu94~*obK9@CE62_)h|vl!8eGP*?ZSKpUIx z!Pbw$!^4}Td!o~WvP5>&kSfqnNyrD8L3`fM=ND+dNA=1iDFy>i@ssLA8|c9WR<_d< zPuPWeSD6mTqQvUnlarg1(z(@f1Y57`!iCcb^fuhqQ8-4I2=z_M*#1Vk1A-3va}V)K z^u&gX3YP7dbXQo57O-LFiPX(d9Ef7sC_ zD?=lqTd=&38Qy0lrqUoAxt_r&OGCXkbEj4W$K+}ioXcuokId$UtA9x2x7Re8jj=oG z`B7>EdPBkW(^JSrq7=Cn+xL6ZtzAb*QNfhK>@cl z$c?;QRM($R>m@SUVEl&SNBD@&`7jcVAxSv(z;6E$JiJHNH1Ky^LYb^Mh!!$XE*In{ z>|eu^7;&YNT;mTfrYBApBq0N78)M}*{D-ImxaFlXwCF!D(}DcRZg|Gk|}`p}7&@P%I`gHuD7%&vMLyx2Vjx&UXjImIVDS&VjZDEFH* z%s5udjq)Cc-@kg!x4fFG{0GxC-YPgTeso;(P?bx5tu%;}lAkPIrF?TaDD*bD3(GsH zm7tm0C4>pX0BI8r8xQT$`AIZo&^i9NZkPnfYw28ubuBPW85&dQ_Ap<)g5uiElpm;E zem66M5@WZgyL9a^ySx?TqaDw}?^%0?dpRFD)i!ly46R8>!t#5b-t=_^>^y2m1*!cA zpKe-?1I4UdVYNV7n#bDe$@Xs$$75FtT^hq4r^@ z;xwNE``Bs|7N8K?XrP>NtK`4$Kf@bHvm}Yn|J#Sdd)(*xQ0RC^UdmCoww#|a@_iV* zq8e+4^Mgkc#P)yY_f|_+p13(Uxqnoj%ML!%jobusK_#WQdtr)v?#_3({Pt+-i|0Aa zexG+cPu!L`c6OqQG7`5CtbksYl#MQ_DWfV^E6@^GT4Xv(XE8B475q;LC2L6MurOc! zHE5{p?a$wFc%$ss{}e!NBb6TWdk=Fm*EbcyFKd0Kd8>I}zwzsKJgDzbW6U~By2=*vab=H%6j&`KL= zX;VW)UlU|mald2pZyW3=46DC0zu#VlKNGWIw3_;QgNlDO#6P`X!}<7Lb5!miB;p;J z=D=%F4rfa1eq+;;;?Ond3d3+dj3!saiIx*U?ojd{eFkK>?4e*J5~IZw1CFp%(Zg`$4(|q<$&sq^SLpCMjxh* zIspL&f&aQ}7FL!=#!7R&K?|^+D~<=>wMjw-blhpxvSB0W`L^!n8eGpiuj6#lwd5yv z+Jr_f``?*R0+<)OjU^IiY@PkGv-Jm?YjEH(< zGi`rJ@MC_=r!D@#;8iXJFDrpxn*Hx0ub1_ZQ*#L1E>mM!=cenguKV7{PA62If(HF( z4*oC9g(Vf<$_83DgcXC%CgJ%W-QM>eZ@$k36LLA#3nAY7r!lzaa^_vOqE zU|#!yi;sN(YFF{ylS88OIN9~Cq*tjB0c*n;YA~k?JC09!ZGKBeJ5zUx)^A2R6?qAb z{bR%EJlM16?bMy)C!)`h#vm$TjtC z`j)ZNc{^f;p*G>?V*YRl2I`;>-`2_W z&t4mYIL7%Cuvp_|sZZ=qbJ#@H@KHb;zV;mPy-I1v85&7y=)Xlz2Q!AZ?iSWSdm@3v zH=yw|cN%CqM0GU;LVgs(2f-lc0E-C)YZA-}x!LI0A<@JmD>aaKhBmXcNo(PsM?K`_ zA1svQknv1lW&t`wIJ?Jc!kt8|ctkMCKmsU*N)!VR>2`)0S4Z=2d4?=#E&pwUYn%+= z6&;7KY5tt2T<%(yjD=KZK1}~(EWRqTy#z+d%JwA!{$c4R@arGfM+Bg=xby^h2Hwm z{=d>QU+`i4C#p+y`3EBxRWPgH377C>OUo+9D>`v*7YEG#$)x@a6rMkTD3HA|So{Ib zMf;GNS{#j|!2-3g_tCA#0jMt*bK^M6ijw1}@9p@B^mdvq(sDPV4EtsHz~_bG=DkZ& z&-|Gajj<-5@|N0iVrs>GOGRQiPlZ@NPZbZluw^*)ahs+l%zxE`HnK_<*%cEof1t*5iWXC3zD2 z{(k9n;O)n(pXg-yKKO89yCp+@m^i;YpDl_}OqURj$q2{T){iS%npI zvLG_xzhLrlJx+aA66#adMBL3}S$6a%j_9?|%3-F&yl@bf_~uP+lEJYYKsLGm(s6ca zep1$%+VK$Tbu-B*G8oqrlND_ypPJG4jdbhQ3;f^#*NRaxLb8wK?=e@O9gB>RXrxIg7H_vOyWXkMn zW!yL#+)17EJ(zjwItvJV(%C#veu0CeH0Uk-GvM*~9t3yrbG9|qLQz<*^uvaIrBsjy z*Djigc5vs6XLpLK3h9`A(*vz~%8%`!YA>I(f{rqA-r$a4+i$SjJY)0o?74s3OK7lR z^)urO$}9fzm&bDFKk+s_-)tDe2g<8Du<>eCMd1~f$?ea=6@^OvQKbAX8|mJ(gX*z` z*Ti#^xAlGkwL4$N*wM|?$8ONOGx3fUa=%A3yj|LXMN2$h!YBeF4drbEG1AT)p$bPo zal$Xj3``LLb4G7F_6wv+)q@w}>Zu@#=u{qh%shQn{zShWkcXqtQ$E}D+zIK~QF4Bw z%kdZEeLR-8n6Yh|A#tjT?qfxagDL->_wW#MCZ$ky+V5xKWziw{+An{+t(JA$s%5dq z!q#9H_!b6Z;Z|FK&$#HSS-P?{Jfoh;205`(KqRoHS8#ZB`SYrmbTGzuBnwT-mT5s9 z5g(#tkb77te+ONW06C#rB<9sJbSJiywuvz!^R+dNu3}K?j%AnVx+`%S*C4d!&*ysB z9{K!LP=Oy=S0dTl!8oy_z{|W5^Uc5FjmT$fg_xjEYX*k5RN=@UgB;;yo!!xRs67+K zM-m-|qztZ%_Gs9Q;>8R>u+udei;FvR(T{qH7XCfCm@tW1Divmp!j1V<)HCZVbXZx0 zu;A>ZhcXDWohz%|A1AJC!0E%KBnV$`96++u^+3c_r(^NTCSZR;Y%4U=ixw32O4^yo z{A&{d|7GQ$oq&$01r|EHdqNvY^a_UiZ?!ZnNk_fbg%?zbe!Xl1oLV~{$Ns; z2Pi0%b{)~SKhu5xNRPS{yAGHu-!A0*zo-@uf|>i1p?tkB8GvD597M!#17NxCe-7}! z1T$Ht?iEiAz1Kg_m(%?RZb5HQDwiK{5)GEkBZF{2bmO=}SQ&}H$Cc}&&UY4cWH|ac z01YMI-_?wjQ#qSF4sg1j3>oW%77uyOVk_DmX2w-5T5aL-PK$6nQM~9Ai*|zeGqr2; z`Bnb6(*bVmLCM1O!sNg5o5^!1)8p?}nYH*XE!$u7ig6ZXA$ zzl_s54!ci$?BcHb5A1k1CK!Nw9Tlmx-!~H z=#ixF@yTyPtv&VM&*fj>IXA4-U{Xrg99FGJN5NwVY7J7&g#2vtCFg(S+MwyjP@K4D z!TMlQ5bNW0Gc;$iN{ag28tH~&+aDRP{Q@XVZ4Rb~V2b4|U|$%O3lcl(lF$Qd`Nrsf zs}1bM+mde{?+X+Lm*ax1J2c17OY7&&jQ(XZ{DiV)zQDk!=-V27I^L-(tnPJh3oQCR z%_%o|S_8v?whm1^q^TpdY>_abhwf97vjjBCT})sZgAH<4gKB;JVosJcIUCA=I1e#G zr_M!y$mtX<#(H7*<2Al%%^l-^{QaPUYi-lhAVbv9T4=}b7S10y=*PPhh%6C**IA1i z9ihsK6Y<#htw7}8*ItQUaNSPL%`sO{5BrL3g*R8y)tK`o9`1zr^6nb@M3b}w`&+8P2p=&YD69eEJqwA~j2tzpj|bzg(HwVC?1+FCp3 ziUEOd_bQ#|^IpvjAo57e(tclXNviKNCx0(#+J=;HW|ZMAEM0S3$mVp% z+IRQ)-(o5uv9y&Jemj#hM%XctUbso2b%6*GwOLc< zlKvk%0rTzuyDz%W`eMhv&lNP#RG2Z)+xjo|>H2BXKX78`g6m#)KCuL+pp~?h^`(9Q00|!k^-2G!x!X$``tDc7;+emh#9b}l@Vvp66lF1&X zGk|IA-QK8vXI_g0c9h_}^K*tmV`GfpiBW$)=!fDPQ7}7-?Xd2Qdl29D2$lNj8*O}T)0M|chZ#pZP~>xS*Ip|#=+cMK&3_-f$Z zTFMAUz}9O)U<*s1vM4!T;jodfF@)G7tHAralC$gnCPbR;LhaAIg8&hmDH#aA8kKE$ z30hj})Q0|dQb#?vfR%1)*kQ4cW}ukx=j(h+sUzMJSHvclfFjA5p?F>Iti5m-K_O3e z&VFaduak0GByijpin%BwmKJYnUaLVH@!uI)6JAeR$dE`HEA=W;vsajLPypqP zE%g2xL=PoQAdi7;^rJ_QnbJ&7Pc{ubfThrPnie#XD~$gzcnL;E{s((bx0mDncmxwy z*q(e;3^C%WXwC2I-(F;1b#?lZz|`f$P?>IqJ||-Q()|3U4ti*Col8_xP6DTVOZy3P zt^EGZ)qf5M#nNid@v8M#5md5V|Kkmr6Z#ZDu ztA;3*oy#uJjjs|TkSnP^T4!w0+zHClY@T*;r_GO_(A*Z^ke*k&`^0>(qdH|xWd14( zzvpgx`|h~m*PPv7dS&^-hhQV37&7wcTuA} zJE_`;7aTYH@NWfke=UUZOh}#G$X-((1wpc}x;{K3RiiDWW@4xQeW3bR9rY$U+sx#F z3iDjhy_1vmaI*GTR2%Q0Q55~uvwh5JffZN-TS|W*gV~bwEPNSgDa%kWw>RF;=F}!; zwwj+^qzGOsoEI}NVxykb;YNcTR|K}`4@}hbuGA;L>x!T1M8f3N&I0|^#BrZ~-&`)P z5%I6g~P3l@un#r`-%2h5upU6kvkQIDCWBDg_KIeNSqJ?|gr zp7WDgLDW&Sxg8pO@W1^~X=-=rFMT7aAd8W|R^{2WZCA_CpPLz~sUirO>TzXH;n?v0 zPWjO&!VUPAPPJ76pXr@YL|nllyd-`w4ABuxL9cV_Lw3q$drw216Z~ZOMz#gEmh8nY zjZo54vk)81U-rK;`Q@U5x0UHjN!2~dQ}a(#9!oyU|N8A140Q4TT9rVdfdq5?#d4ee zpIrNh3?t0a8<<;?IcAt~0pC>p@q>{9REq%ADzEGei?JOA;CXB=uHlrnQ&;ZWeNUBv zIMjdL9BtrTwF~h2@L5374LiNB*wJ(KvaF^t=Pb0Qs>9H*CKinU!A#V(>U7szb=``R ze8D+dz4`ZFrbkX!R*UP0o#1t%;BwOMOB&giA56k7TJ~=rrbjsQK>hZ>u!!=z63=X< zaqhdFr=TU5S6<#8QmJyMj;MSOfov^KM%$1*Y$wE)80)4|N0|#fSv!kjL^PS9^J-U+ zO|-)|ReO{HMLc5oA&n;^>Bw6j=*hNe6G98>a<}=-{vjL%K;oYQ6L2T^Us!J#9Ygz* z5PzT@u>B|Kvh~?BW44;B6!E83=1a+2k}^^IMx0HkxNjgb>12SsEHIBP12Be7v2Y`+ z5P8QDuUB)Ws@-UbIwr4I#`2uI!Yk@5lL%I!Ip3Z#pM| zA_P-@$?MnXJVORe&#ry`2l;A@Doz(RN6Y=4`IS#XM3Z-3&R}=gLB3>SJBj)4TCKy1 zBb`75EwyYz&e)0q=|>*YMiElM^IveUEvDj+~D^ z9S^NXR1|G=2q!H<;p76jPqG}hWb-2|_#Kv9Yrt=5fbm-@MPKk&d#6Vl>A;L`_X0+4@7&OvF!nTuzJ&AV` zTDy&tAT-sayPBguXZhxa%~{Qy$X5bqTUU`@CFsEknOv@O;c=jW)JzT}-gi^)M?X*B z;_su8BiINOyLy{8M240o243&7s)dX4pn$U$4K4G3Ntmf&&dUy9g*$7Z{qC5E@Rpp%s84J+Fo3l_}WSVA4PS2CGRp%!{bF!cUU;MEu zg100Be-vnZJ@6GkJZSVK>E}>lf6AQVnzl^UR3>!iEiW}C3il+-3UKi zri#UgywHeyBn(EY2$_2T`vjm%1oUrq*pO}IZJ)=OpVV<9K0f{q3;j<|J=a$bl<&>_ z^KfoNmntu9NMG&ap3C<`Jr%aAyzA7A2YV{G$#&!wR9fEa^|cOnHU4aLS`isLwq7^4 z8QLThp++KAF9=5|FtvF+u_&b&8eMgL1a4x5s(R zL({4UJ3W!?JCDxU-0Sr`VVv}RP~@=#SNa==W1csXg6{dshX+0Efio4bQ(PeNah*kld0`w1lycs34wu|>hl z%Ns|zko@)ndIh~c$}k%Xu`p*Q_JSxaDlI~6O7~+%pls=ux2M``ox-24CD&TDx{H2K zm?oUxeK&If1B3^B(|Y{}Zebtb_)V8!2EcGrcl`Ln8SXU~jW;j|E=q?2dn}Za)19Z$ zchwdwEO9Jxm)O=P6aHL27C=Ee8VrpW${3Z&5|uIfIu@P$O;;H3(-3v#qo0aWwI_Zw zJ4v(5{0AhuGIMPD6|%FqfWH&4|0>uB5>vFyaeq$3OiG@Cmw?lN8~*XOQ$YZ_4!v25 zqQ4h3DzyAMJ0VhW(-kyU7zXOHHYH3Ji8?gi%GbEu7(o&*Zs{i(X619b;>&P++{%f~ zYbE9;^@%7L1iZ$H9_mj~$ni~$l?eHJC4HYoOE9Wm6y$lc;S2*7{9K&)HTzCU4b|cJ zu&E>9_X{{J(tYg{_`d%hUe5RH^(~H30Onr}X-dlSgwixMEmtn56Qbj+()t1cYTSa* zmc*I~o_T55^8>p2kBJsJ`~$jAn~5=;b{c5FXv8K^+|BRCM??0ZB57ZaX5(`B{C0n- zb;hHZ@O6Q`B4jb4pux?F|?y6+(sq)I}*VG6ut;8MIl)XJ&4!44E-t!1isg zUwva~d(tYk1(ByL{w%Hl3|m9V7L zWN#{xGE3?AQ>Fr0a_6?-cM$)F-(YRJ25 zjFa7SoRF1RS4DySA%wm;Ro9MXecd6C1y)_K{HG*DRK%##altiw%)_)XC9K%^M*@if zi8xx*)$|4C8%sGQw~xPgZb!f)7|)?GmwL>9(Ma^F+PC(<57J0Ntj=SHOIqG}$B_&x za&0ej59!E;8?P_Uxt02y-|;~EzY2e~&Ihp)AJ)V54|$Qk0!+I%$Nofcswt&{%DJ{W z9;NFIZmo`R=LZ9DSpvYnCweDFy7NF4^!JTCYBRx%LH>=7hhu-twNo(70++p^Bhm-w zKkhj^^Tq&1L6dT`d_Vn!55^g(heJ%k+^*`f_TWDs6wigF@qw^yHz7V!oHSu_HA6!8 z$%Pt9*ni5^|2)G_?x8}b>oKtaM9}_u#R09j+^3NXg`5>sH2Dm%F@?|a%-k>Oesvf_ zb;4?!b?Hl-F2AV^5jj`V40?NC4ziRsiYQkQ`SqkL{IBJ+#Ih*B))T~u;-8c2Ro|VR z*axDVVa^evr^ZKy<6H3!Clh)w|L6fV#GMYVch1cG2->cz!nVL^a$L0q9~62odVK4ySr1_D`|)pj#cLI7MI!m*-ZPO=(Lyn7tIR#{`Gd@5 z`Rts@unVl0i29#U!P^k#g7A_7LQX(t*oji*?@+3FhVfT^6mLl-NaDMwJ*YrS2K zw5c@Y@$WnZUsu@IvnN(tub+kzGFh;lli9WTy%}i6k78F~so==>lwX_EnUYew|3iUM znwFme+9)%#r`5nV=GgTn6sgl{R6k3f9S#9G5tWq?KVihY!nJ3TA$%w+DEz7zFjvPH zRcmo>8>HSd`MqXr`L#f*o#R12DO@4$-^jWf{CWG*YQI*CVNzX&+TIH>B95mZB}5#n zomJgYi_^OzmDgI0rBc{V&zoQ1#}>;Xj0VehYeEZJ>)Udo>%*{2|6t9+UozHUUJBmV z7L}GQm(Sn8Sz*x&E*mz+6zp4>+Wgj+zFGglS=e{h-}!wT=CB;NzqqBA4Z}tdjt=IH z*^>ld`yE)vZ_hN>l$Uv@oRVExI+wBBK8(jQG8?I3>-p(V$j+Hu*8a{wNy314UA|l2 z=_ovKkh#2rg2(1e4j-DvuKMe)my2oJ3+e5LDC>eExBr(;XUF|BK8Z$nc9ypO%?V)a zU0tp~W-Byg{pk#M8J4f%ghxY7ss((sb37P!dJ)weGZ#PPWbJn+1NQM26Zg1le*QRP4p;dqNTmN+lYT{|SEcPJj@VVhk7EtB*5)zOQB?xx& za+tV;p=T|X)!#v%TQ!t&cCR;=YxL5eR7}Q38GXe^{bL;mL*PA%UR95GAGJN>kF`^UnUb({= z2x(}%9%?IPi7NhfX#{(C?czEIuzxp$p`WT$`%y3LgF}B)4G{Jn9q%x^vCIIxUwq(o zT<^W&BZ4Zo7dQVKL&x~-_@IGFtwU$o8nFCpLnv72ENrjY&ca!oct=d}xvkxR18Tp2 z=Z(z@=bH?5ENw;y7Z2EJX3)HARu(~NP6ZG1lKfwm&B&n~$p%uZQtI9v$%%#yY ziLZY9)^~j2@LB)EKyV*tJM-JLLLj_OOLyBG#7f8B4I59(-)kBzgNRmok3r5Xu<@T| z=buQ1C(H%G74RJG?{vl=2aSfmVQF*&K}Pp|H-PHL&bHenR|1sRaYM1x=ioAEN=3PE z7@q;)JG|>+X?A?n6U1$Q|H0$$$bvMD2i6jVWt@DAo^hhQCQi;m80d%}yL6=?7;}YQ zedV-UB{Ski!d=-F^{_-LkV7(}k9Ws=4{6=*dUbp-I<)V({z+eNC%^T_DPaEreyEin z_BTA^XR`RFmS>BgUHj)|ZMh2Ht!`G&)HOaViNnXV#H>48U@`Y% z5%*dXc2I#G4yaGPcShSTbDNV&v4ID*-eTkvD)ZpC{0{6O-Usufmngsdw8bD9cs*bJ zs);(2jX3HIn2*#gIsA%2u!(XoX{k>mSQl!NyT-mMxWl zOb<8D2y}zC6U+=P03@aTe6OSxOxnKI_J|iOa|`b(K13lDs3z0?!Iny{O$dX+`~23f zsBUsR1gxC4DET~LAaGog^XPgQNQm^ zAe3)XwNG9~S-Dknm#?K_IasNfdOY09^2~B1>7MW_OyS)gJiRBO8QcpmrCv<3$zmU6 zuKc_73QG0Lb89h&{y;Izc?%pS<68~fYUa|C+Dn1K)6n4D?9+e<)@Le`HIy&s@_;nCW4Ws$$^SDxUD`~4q8EKxbJV|L)OS?HZ+IR1t&wy!$ z%rVU)NpcaP#D=Xm%X45l;EWDEYhatfS3Db89s9rW;D zYsQA{dIsu|O4;~0*+Y~`rql4$_9ZxNxw5#$)RJ6qq|?ta9V+l_PmUr1p#Q$$4k1L> zxHLY%Ctmx9Hk$tB&}B0xV6?8|@77thND8LGWn1Pdbn8tX)K4{Wg)PzyqaD-iG2?PH z&3zrO`)<&FTbFV44mJhcttp{lBEwV|{W(5IuMv0o)>PN|NlW=VQ$Eo5<5Ngj0V|W! z=k*U!=XJiZwX~6Ct&|e4)seQ#{H(F5>4xBf!@b%#qqs>9KboUY5*XZOFy~&#?N|I> zOQh9YKZJEn4jbZo^PZ3xJ>>qGy6n!usdF_ad0-Z57Q7@@-Y+i0YC?U{mrp>-cQ~Ur9Cu7cXcACyU_yetIm#x{s)8(1`wNEsd zQy*)5`@;S2j;LU8y_m0JqSIk6Vm+sao5tMu)C$DKb4lQd(oJ2~PUV2OmJhM8gaw~B zd=2fVaWZnJr_NsG@;M{A{LkSe$x58l)fWUoG{o6qyP>re zu$);vK_C0;2SPl0C}XC;X@=yH9!zI6uW37oPGP=@?{k(Qd#H zgh_v?ysN``8y`^4&+Mf2;mQ9+e*cr9-FL24EXd#&QI5x*3snO zX{L_)LJ1~LPRKBkmCsjXq9yc*^}MGJRH~{Y&#ynDbifg19CW;vrNP;07(d*vo})Db z7B#%11X7PMj0ZRr_(*Wx-!~=PQ9Sh9E_zZ3!3V*3-j6&b4cAx;#0eCwYF?-d~s?;OB59N#rmngSd)zHbEfuV2tev-e?&KaT)(>oBExu?al`s`^;=-C# zAR(^&5=}6?DqM;aSI`g%^ZilzB&c*J`ua@n2&az`%qe$U?m7+zhZQh*<9a3ZvHEUz zA7Cfd);{0kxB4;482Nc;7M1G{nZrXTjN^H}sF*F+S7pc~sp77Lc|}1YS2I|0?FicO z6j|+Wl=f%f1~|4R18in4wp1WJuL5rL&c|0$jP1>N$C&5P0Hh8|GlRmxt|T^qx<(~C z2U1PP!<$zzeU1ioEuCP{t`urJX_Nh=Zp81}oL~HerG7j3A+c0Vd5QN{8r*CwZzIT} z)v!o^wdlAzgCH7?_LYzTZT78&^h(^M+Y@__<{AwRYE4~Ir1`K+pv%9YN_;X>Y(-h6kzc^u6{{zns2o)A&+kvg- z`2V%aOHAk3qgRna_5w}A8}H-jQgqu3r(iLAVT4qxDmRh7oJnXnHL3Irrkq<_uV+v*syBFQd{^S8yVP zhuz2DFLG=R53Hk?4yw6Jz)?8U6M|Qb)0hF=V_1}1q?{>9sbMROCyXIdK(EzzqbayxB8{Y39e>l5l&z@QLTGvgA2%Pu9Sg7B=t-Cg#`KArN9eG)h0I7qu z!f^Pp&Ibtp$-oU6_xUZZshkl#;aF#~ai=%*k`EFq^-c|!oqXOV8-{6+#Y*l;vN_ga~>L=)b16$(IWzYEUuDC3y zZ<0V+#dQ?yQilkQ`+=1k&yrwa=G6pCs;Hu2?d8a$&rsNH@4HsGV`gkrklY2Tqw`Qp z?%>1xfk-v)NBCB;XE70TSrzr{=aMe^P!P%8G+?RJ>EZFCf3Bax#(t<5U? zXSegLRMEu>?B=V6o~nF1vr`zVeNe+KHI?xdW&RV6 z)(P(}!QVsXDEen@yZ1$$n;A9yHL|lb4EC7Ho^Rh*IXzYBstXnPMAXk|G`%vM^5&+) z^Za|XZu8(WqsznMp)v3Or!H1tNh3}>%}Xs7KJ^!@6jxNRjaY7{uP363vQ#v&w@kL^ zF=g7Ho{yl)^}~L!9i*iu^@OiTJ5{86>fn z3im%x4iB(SZV%E!SFbC@N7m0}nNZdVSVrDh`COrTPM^g8V5*hOXzc z7y~EIHRW$g+pcpxf_;qilLRzKvePC5^;{5Z>zq{h5@w}fJmKTF*r;)@GiC0x4Z0Le z!ZR^DKtPi(AgS$LI*3XhKQGRD@7y@8-LOMLu2YOkwn++3u;?SI%2&@hu*fz-R4`o+ zFjt187b$C5ztAnvH3zU(>dU1v&W~OroJC<}`DPJfR#}_akEhbVYpLcjTqH{CP4`L5hYy-@PdA5U#g=Qj%u0r_E)+LaK&iEo|G1;Kk*T} zyhu8|iaPn?Qb=CW{M+l1@2C$S|J{_poNt!eKd9|<-ClJ#PRXRFoi3ptUu+*{k&BRkC zMrVexT;H4X97)=oZA811Da+0b)~A3Z{{hoK0(y4=RbQD3cW>VKQm*DUH9pmsNqNg9 zubme-uTw2kJG4PHK&z84neY%l z>HtI%1!2Vu)kP(9NLodSD6LZ~}q=gO&k zXqF4?c2)?1B=J?wE+#irJ z@@iCh^kq-fNUZbet<}f*O#>g;0qsKFA*nA*8M*54yk9Q{YM3Iv6_uqdz#|U`wsDs7 z_?Qf>+^$#$sjBavwO<5@ev<>TyxOsE>cpyU)mK4g;3EW|FCoAMifFmk-*4Gx(_PR7D>nirVne$UP<+hvg2C5!zAwb*e$8MlBjTaez(Sr2ci z^5A1(ZPWZ9R88G;`shWG&ips=+-GN4$|TZ$BADZ6V8%A6=wj#Snp&Ty4}r*jwX6x- zc-cz`*4O0N8|z;dIF--{kfxyqx^b51n?ks>Z=I_{CGo#0BnCp}3aNOb>d5R`f^sxn z%eS!F&EaCoM96l@_cjcY0;0mc%j4Ah6nvYQUhYzgGHzt;Tyn+6kI0+0XM~3oGJ)VS z(Dhd8Vvp+%abhQ59abQzYj9S`iLBE+T;3mFB2pQIDE~?*Tp;MIOvkgv*T~VfA9Mw( zE(YH*C1wv@@XFj8FI{SD zL{!7%ZJehk^Nn*QFh5#)E!Z^fD))MZl_bIy_+o{pw( zc<3)NT!nyVT-@RQ)dR^*Na|{5KGx->SIu(IrIg*TcM58%N?CKh(;7Srh(hHD4GdUS zOsIeFxKF?Rx7#{Tw~GDicCdK=l5=_rx;eDW@sVH^$7kXO`zh1NeNH;~HujwE znygzS3P7A|wm2}I0;0!nv-CCJrl9Lh+94(I_;!t(W!PfBa;3CC^KK!wRJax1K}w6{ zKe!_ua43g?5bDr#M(^3|wkZvANIHYO0p=9HS%N{g{u%t>KfLhbb(v7wtWt}hi|&Cu zn^)z-uNejBOZ8ucyduOO77f^*-$M_c!!Xk5p2tYa#!8)@X8q&(hgFZQM81@No}+cR zTWSGG=x(twYCPc-Z|(`2mT}CG!)DKKPp{}$5Fl!Y10(C)@Fk-*c_noVOb7!bOf{7= zQnZQ{T>X zh{SGHP#1Z5>gyg4GyzTPJlcOf!`~Vh=UR5^@Y;+`pZ<#;6d4(377^=oB zhjT^e8&V=thL_(i%p|x!Mm{PWAMO@h~D31g(5|**s z?fDuzw0448)m`r$Rw)zer)GSnYYTl85xj}-egY~0?YT&kFG_drp>oZ;Gfb}_RhTu`Fm+CKB)*%xS?bX}!1(MYSauEwEi%X=)w*zWJ^}`VGn_PHgpHoQ(E8gBXk9mJR#Cw_uH(@0+akgig zNqsb)@V62!wG5b;*DdC&_b@aDiTd_0{s zT>Z#%4me`5%&hF*JDn zJuf^WR=v^h%>#;K^=!Q=$aO-_eyY60hnuP1@Hf#bzIfV$4YK;O$@v*}^LRDKYZQ+y z+;9RZyOiYo3-4y|sX0{gQ@Wz-$5i3riR7|C5>x3TKaVUeBd=E*w@dm81O_?9%vX!O zBP~dc5z1~PSxC2uEma~DU`|EP^rlX;?zdYCqx{_X9>u<#YK&^?RMh7+BUs-o=5}0O z^#0H^~%-i_T?}VfbL*X zYN1=F&p~Ek@^d!ZB}XD0Js+&J6VqtLb z2;qImCTFF$2&b9nd}ql1mInP~Q>$~LA~YB<2!>Q4MopP?Nn@XH3|D&@MapqGA&$v! zM5M6!&_YvgmyAT-*wv|kNQ*QKBLYv#t+nSc9(2OOVm09l6c?VF2m=Fm`g;tF_XnfY z4~m}6!T#Q-c`VrHc#Pl?G^xv6#&sp%8j2mD1yh*O32^-g79u1^uR3^+@nrX-0Ip3&0qlA`u{NIFg1BscDJ+@y19n=VoEh=Tvr zA0mS`HxVV^3~i*kEu*R^MjZ68b*aec1b%G~s(QHpwh`{5rKu~rMEZ^b+p0zA7-zU_ zP1U-6aVNs#JUOs{?Wa{Z#mlP*MrfyL)eW|=CmTPitTvE&&o z4Bt|*foU++WAKjG@R}I%cjNr0;OIOtghvu;!w6`HaXctVd^krxVr0@7%cI6sdMBVL zGP;=9o~jNQXOWOz9+XIM29>d~rOh?6f+%=Nv$!smHctMcTXaF#EgnmbO_3_g(^}fn zKL#M-R~)6bbJUGtvf=R@YXW(n4pynY+UgM`)8O&^#SeI*M1g(%rb*ZgqFVe*?Z2f5 z$#+`#t!Tl;dVFYN_K}=r`|2soZ|9Jc3KsHKhN(YeQPH;$H|m3Ac+Sgmv)&MM=l4 z24>lL$rIyjczT+Vksrcr@^-4Pv_8o;NB1watoHQTT`5LPC^h;H{3=#cdF;m+lw{4s zCfM4Y5B$m-=>hVpju0-%q({qKv|vZQBs`S~tkK|uaH+S%wkd~m4pBd)La|b4v|sUk zD&^rkRPxGbvCZSEU*AM5)TJdtjf64KIiUm(Xpu)aCLszxpXQ*y?k zin6U4k?-YAY06V|MN}`gom=Wbdu_%vH8*`hvUrL4+gvmWfpZhquJ1lHvX+UeibQBr z5~^3WCKxeM@Y))zcG^x^h%FS2N}jYt$Z{-mJx*0e2Im<7fpeTvP>;bzL+I7Ydvs-FSLE)8&h`dvge|NBqyC+iR_YB*fV zU5}?bOL9CX101~CXQO~v++Z1ETB@&P2`zNK=yGLGzDP)v^F3CpDenS9~tu<5Ja)?hlS zt!OSQ)oDl6UJtp)TeG z_Z$M>Rat(PKPWHNEc+S@|ej*~OYdW|tdB=Al=s{h01|3(c8jpEJMl-vxv!H<%n3cpRt$OU;*Xle@Q$0+hocLzQ8E6}@YP-v|%dl2EM z@LHlCh^{dW>I{L6h;0+ZRcqr7=qP%G$mEg@)*iq-74uE49nkKB5#>(_Z_7$=l`PWCvvg)5sCeHBl-gd8P>=$oP&HKQ-CX=^uJb^ zDH=FH0gIST3pWRhUb0bw>Y<_G&~Jn6G8P2RA9O@Z5hDJx4wvLN<@6TXd8$AUhEENT zS+SRu3F0Y{8K0Z7*JG2ARVCi5&{Ji2c>(ok6yLtJlneYyUzx3`xw0H>I%cJXQ=H)b zcg*(Q?z0%#hcYF=t2G(v`uC0+{`=E+uwd1%Gj!C)*b=lf5$f#+gJ~3Ys)VXOda?>f zDT5Rxetd4xUX4&aq`Q1xs@g^0&dnE&iXE}j9ztpb_bQ^O$SB7zmrZZ8ZafraEDNILzxlQ%}Ldo%V`CMu_IPNL>5Gr9SAi(+}Bx z>kqBFWBNvJs{`JqcL)gGp_3$r1eXw4;Qh0(aL3AJ2-yp_q?O*Xb}lG0x5G+J$LOgW zN?bervIb#nAz{^1!43s{F-6t4_1~e9VPVq6v@SmW!|b_9-*oGJs*Xgu6`Xkh!U1L% zttgh@m_p!)QoJ2zmxIba5j$OFg58v0w^S8yH6BgvO2a-`;A^COfR($H25T>jcaUBH z#!C9;U&$3r_aooqHX&Kmfl8_ly37-cbwNoMb;UR z{di^T^CfD)L&-KJ86K@}tU@tdQJ}oa_t=<^o)CjUMjjAqNuX*koAt3afuQa3NoCc| ze0F~;X<+;s@aHnBGLDt3jpkw1dGmZG;UVCO29yBbhN`UP)!Q25g83p z9}t2&H3QsQAEnMba6dZG^C; zM{lBo{~6p~Gc%&}5<=bgFlg$FE}@@mLk6N3Y-k`Ku8StSkS0wAVsRl7nJ7nAltKv; z?O`rxVZ9?r#AKv(7R{i#@h#SBo~8x-3Jq-qYnCKXH1NBCGKj%XDYZ}S#}(Yuz+vL) zCW00+)!H^T3~}FgrkX?2O)Cu2uh7D1BrkGm05Zd5fGz7cUA)0PkJuhC;{IX9V4(tr zgL?93r@`0&V8gc&i*{I!M&Gaa>$fMs?esgFI9LpBQ$8|S|IqnMB?|!hO&e%oLTUiP ziYs7GAjAaRVt$#olcIxw6oY3v;n)t0iss;9DKcsFrz6|WYF=nZK`XE2|p_8VGA?!SlUem|w2>T}Pie3YdYa*;52P-Q8=(oal9vZhHKF36{@L zX|^apXpHZ8*!kgC7$UYH5Vw@g%@2V=A-q?<-x3QamtHp&5a`dq6=pT4qY^Ff`1?Bl ze)4V9 z!x5#?7+C68LsX`5QolD6@fNAidge)gmuEF_b-AOl+8S|Qk^nC{HqgX}&ECJSmZ&ZN z&|90RpU6wuld&9Bg5b_>>T_xj-Pil~Js2V#|7V$rPX-n*BBLAQn&+qq)VC3|K|zPY zV*)%X9QY{<#Vr~uLj74b6XOd>k_Y|6Jt!@tQzTkvkLK8Wf%pc$>oRi%GDnn3xPcr5HvyQ{bIZ73s>i43>;Vy zdX*^JzUKr*|JgcvgNKDVqgL_~hvNcH_(h-6@xr4+!$oUi_>3A}NW0Z*7@u(hxWbRq z9{hFHE(MlKqrlHLlIOuxO3Vp68GniFdqr9HAv~;idgE&4wsNK2w5GvV@IvV$YwK`I zqdA$qFlr8{Rl#GW|3=aH-GoRB*ESkj@1@SWSMz!U6Xpckwk`Yw!Ipv-Z9;z7Qc}MkLiDF$8*mBW zZy}PTr{5>F(ze`~P-(bn0+FWPRQj>(`b6Wv%gn4&8Erf%xvY>07$HPq+g-WrAe$yWA@!Z+hew5#_p8jD!dcez2r6aC*f~ z{tuL$K~~IVzDH^0v{R9J52&P#^@#y04?bsIz91qOG1KwBql#;BU?Onozg70#y6nIW$WGJe2}o9uwVA;J19?ll z{X<$7z0*HGCGc#+-9Li~B*P=r<&hT29 zDmSApiQ$Q_e2dH|B?9BoDE0>|K%bIN zT_nWS07aa6e+%5w552~8h=I*%$NO&@%yIS2)>V(fOiyEV1~mMz@fOz*KknPDeeET+ z=Y>@NJ~*#&ye0vz{Wud&9}qe%0c;ZX$ux)ECz#>ClLX{+luBO zt3q&I1W;>!>_0z&tY=p2#rcFz`AJpN7!)(Wous;^0h?j&pZ$7j<33g@5(*dRlv^Wm zgb7nuWElID;IzXKy_y^Vzd}9E9`5FYp29uq-_yoBn=x@vkE`S-Q^W!pGAbEciXjI! zhpO9|={P>vaW@=Y)PyCPtGDNg8+@-M=^Jlf zf=_IlxhMCCgd?4hqTfDYf-o%g+Eq4cUxG$aM}RJ$HsvuP%f$QFc$u{c$)!0VDl&ct0QAe?Z2@vxawtTQIWR|4BT|s z+bvEL@!2QeNhOs$T+=y{U0T+HrjduDkAOwq-?(tZ_u+I{SInFk>h?s)q&yU7M@yxW z)_+|3Q&R#k`lc7{l@8LgXtfrQgo%kr!NadM%|c{rA5mzvdf~iN^=AIDu6|-AoXMlK zvwe< zy9+;#eM6M69VxT8-$7kBR-yXbnT)uiHo4&b^Y*QmxNZm*D3|~e9B3k7L7S%VZo=aKF;sIv8D^W$eztCXEf*N_Hg50=%cnj6P6$sDf&+c2D9gU?n6cH= zWd!RdfpJ%+nb5XK@xvYG2TqH&mLTPP5RLXfQb)Sl;oU{%tpqjZXtjnyw zH*DKjYN{`{m#m8Lkq*Z)?AYZ3>@1f{H5dk*un{s0es%skJC%Qs@L={!srqM{)Qs|g z-boO{>$$RXDx@i6eM?vy`9i0i{Dyz#gNnt0L$tj`TaATjTiIe;vj<`wR}%h6RBSSD z=iW6%S-rA0RF2dE05IpD>|zC-rW}>teEikT6B$Ngxb*C7QKYl~Bs^W;U#h~uCO1s| z*EztFG}yJtk2NDQAw({e@N~QN-|mv23CS??=U&TK>@f@URUl{>mpf~iRN4}aME_8Y z>~33kx67b^Z&skF4c6}f5#Ohe=BI(D>P}{DkS|L9SM3)tkpaj?S9R3-Bm{ZY0e~45 z-)mIK3bGLb)NaHlrD9)ac&}5ZNu03rRkTMKILnoG8c3%>!bx0ErmdlkTe zfXT_G1l3y~KG--4>(P9S8=x8}xv@iiqZvKL6a&=W`QJm)!?y61vQl)2?G#6|ly;0| zeDyP~R@xyw4I7ziE;^-_jtB=GE%}mjl!q2FVy1VFJv>Y!Y}SGEB6hP0G0_I4gVPJkSu2fH9l!DRE*zNvtD0M!RhX#@nFKb6y_izc!~pkMBd}pTMjGC z8hJ=nNe!lS@NqpyAx9gQle;sgZFBh6-leeoG6~}}tSnI3T&?~nQ+z^uED6MN@1@{_jFSx9xB)yy>c{w30^-MxPwxW=PYyyI4^#m7;Oso=#``$A? zt^r_)@@zizV1fsj{!Z`^$|-f!}iZPT)rDTt!am`PS{JEjAr2^^!9)NWq{$ zl|_DAr*!%=V5T`xMJjx&{_qu_+w_7b`AlF4HHtWSW&!Zk+d`4&OzdOgA=ft02JDs8>SV#cu zCYJqiFOElM0vSX~()>Pe#|3r7W&E4DU4BYR+f<_en~P(|Ihs?Iu6%$hiC{9IuYb9t zd)ytn1f4a1B6VhhSC{{KKwOvpt7~)g7H8>OoP}EIRLZs_!)URn5!3ucrZ()xK5MX6x{@konXn*-FKHMJEnbgY`b+@}kX)61- zPI1ThK{}9+VtE*|;2wMIFd(ClhkOevhaB<-4`ea%5|&l`@4u z&bUD1I@fl_ps5|T-Qh8<$VF5*<0?$yL~1%stF4)rE_D>ei?bLQ>9U$NGe{WBz%ryShmg-~O zjtdmC8o&v{bO;KMY7&)t=j0}HMpsDPgb9-q_rw-;+xJwkJ}9c@aHJ8JC>ya&qk>+Cm}4kF)#WqkXLN+fMa*vl=43Ef?yFRJ3bP z^W}n%45hc=Jamcsl(44_{nKF#skEdzCMTZ!)6`hH1k->5Rre+VtQMiX@W;FR-kY;o zl_1NlLtc>1Aj^3FrbwWYsCp=l2CwgSuRk59mj~#v?`E~fz_#IKX7>DhT+&>Pk4uHo ze@&0}tzW`9ywfo-`Rc*g!gPxU00`ayL$ulZHDw@4O=vkhx-%y$l-PpwFOZIFJAK4S zlkBagQgj5Ce6uE!#i2mOha=CLRL**95*$(s6B)T-_qa~{r3G1Oa1HFxJ;`>u zb)Ka@ek731mc=XGNy`RhfUN{3Fh)gb13*iINzw7{-8n26TC%|t9qn~7M4Tih7EO&k z64KRXIQH}N?o7pNhO|$g)qoQg^rHZ3_=Hx1i9lc193)?Qx#7BrTVT3ZcOXf!B#VVJ zq1wd8J-H+0`KQzK?TI_OyIkx8!v)kw$P zX|KQL;nKL64X?T^;*RHRv z2V-@cUgL!As<0DJIZ5GbG{#5)+bh9qDAiv+0um$1;0IN#p2*SXQaE5TDgBLfuxdgt zMNNiUQ*Fvl8#3pqEJ}JWk2JU37F0({FW$S|OP1voD%xHChxF-a>C2b#DsfebhXmY}OWBq{ ziZ6;#(ya+6Oq>8X_2TYYXTpGOr(l%a`e2IfJ%QbVz*4f0f<4Ej0Vrv1N2^#~<$$Mv@mgfWW_&Chmoj{OkN;W0yga3N*AJuE33462nnO1jeTUhsgQcy_*lr-R5gd3OWhAFM zJyiq=ynxVdulyAIYa#ExEM9HIb#IT}(`fQ4@B%X{US&Xl1$E@fL8Rfx)F3BACGu$` z%G-Z7E%9Wf+qABngq^}SM&)-?zkcdFvn)hRr=awO(UzE?8wMfsb4+_wzEe$zJrRRV z5)igcnvrti%TNY&7(9hyEs8`sE?j`i$|`OSw;N#Ap+=9q4gp7?O__5Rt5lIwNs@8L zsU1L~nz4;2&QCQIbUNJ$x7aGP9tp2MtSBa(2^_Q`UR`TREbbJ{VTV&%@pIZdBcyes z5W{GHsV&Pc5WjhKFSk+OwZ9iIcDCCn&mjwY33YjSQau-b1zSZ&Nxv+0zNf4*bq1~l z0=jv&_i<<6Sos~*VyOI_t??qMANlmjVdTa=E&NsniZy%%Nz$=*p1A!Zccksv+z&-A zu+5!tNSge&a?B&*=3IjcC`TnpzZ*s6Zq&W1zTOeir2@{#=n4Nbw%~+!0i?&3{l^+o zR*_^^$FQVd03Iy^T9)~yt$7J^CfvVzV7_su9Zt#U9cC|3(yahp|bub-q4^Kf=H$BP@7&+OYwlhTBrL)v}>SlEtuty(WH#r9j53 zEyZ#3#*KH|>-ZN8?xpYW5asU64+Od=iItcK2AZDu{vlJtYu|AzT$k3Yoesf+y;eD_ zr*ky^B%Pw$#e7p>B=qO$a*Ei4OV3%Nz8Ex0*n4YkCZ;tI&qTRHp*4__&|4nlUvJ($ zpmznM6ewUibMOSqHxqqoK>7Zqyy23^t++h{G?eKd*%f%v{Iiwj#^(e5U$^k!HW4O= zNwcQlG~xNLrb0LCb%Jv6)Lg6ReG@>E&Hp&b>$LBUFJ;XRI5OFJW&Uw^R%m+5I z^d1G+@jnnhT=rIwG*& zDF>FUDd<|#{v6LwMRyN_+w3~^zt2%pqv5lfcqFa+^FC&b+01%cTVv62YiGcf^XktI zsJsnKWb`T&34BN)CmY2R9j1TvW*q>_GN8+s`ZKnZUGh)Xy-^vV%~ zhf?YzN!r2$^DbIW=Q;wk+J;-%jOUiMk!0`QLNQH4zNHQ$lPOm#wYr##fb6CJjlIx4 zYHV?GevV2GJ8!9D5peDTIGr^}#)23*IW187ST3b;Rs-n6zP)wDl-h_3TYUh zrNvX09bZ@+jzcoCc!(jtOuXKhSON=LW#6tl8RkE%B`wYjpt;8Q{D~H_us|ENZ*(@o zU;m8^zh;Z>2+qZy2v<~521(~l4wz>z3snP52j%j~l z$oaPBp)!h?j|N~-tx$yLhuMNv5FoKO%LwZ|nCMNn$~-+X=%GNQWXv-|g{{{D8 zpAD+wVx^(w2%vasM?R5iOVB}uDW>1Z0s=DWK~~f^?FXbwHTMoS8bZ`JXgB9!j6r?> zN&`SFjUy#Kq8~W6%iPLypNlB^VQItB$eCqIlBfO%n9-ds%4D7uXnhVS*tX0PJ!kN8x57$jH11L`fdbw#rm#8~1vWfBo#LBwm; zn4T$BhM`iiM_kAVK{oO2=ziHc`qCbO+FEbEAV+|3p%&r$`g%vkcIiZH=PavT>OXZ# zFBC1;shk5B`3drtW>3C5$$J%t?H7l6Z(|m??VHGF-|-5+9(?T?%bG)5teD0*J=0n_s~C zPv7jmY+u6&%mn5w2Hp@i=FefbX61HS$UNuxK3NaDA{=F1dX)BM_S^ECRLEP;+0$w3 zg)*?1(L@zb&P++k2O)tjbM&INW=FBAQCOkGcb|pt`q=TYkN~<6xcLCzFx8Y}|4{z1e^#=C!DnYBAum2qhAWnkM z#XC6W3FR~;0>eJ9l?QSVD8v8D$7W6~E*^Mq?f+1FvYzRCs9*Ow3oW;EL*lmeC-O#8 zr;pW{EyR6Q+7{7I>PHDnoJ-uFtl>~x*kzu%m6}XEV-_%<$p4sl@s?Ctf47|PDBT4(m^t8kU(La=NGT5>o!$6mNbgW!Fd{UHd$K{x zAlbjjKY97%h6uUpof#Mx>}*f$$i-0v-cUyg$bw7KsvhPiwS`zh@nezpEG0tLai*pbO|K^P~{d-~q@L?4V zwo~6v4j#hINBm9o?SVRnpE?!c^81h42AiUg)~8OOzUwOx35)p6L=(ne`w+!HcgU$` z3~|MifK>l4vK_cY)bvzswb&Vhd*We7v;8n4c?1{yqa_ATeuk5+zxu#9f3)^tXSpZf zvav{d$c?r~>*nG0n>3lu;ym&4;d-pPiH);!`f_N;vQvt{jf7}=JG9%Blj zniT%hk8d>~BKM8!RZ~r)!{vN&dBatsYt0^&o6^pL8N5hNF3{!m)H{M-&|1Qz9AEdq z0nNf}i?a}ShK+{WPacJwjJ;?FKkq&~P!~TsJ&YUyk4$&HVO5f`EO3z+$O+T6<{>KN^#P#sPl8NpA<2EGVb=+(d+kcip z8;>AgyfQN04e~^w8LcRD+fI+y|6rrv_VLU4n(2*~?*O?G=H0uPJ!XN)jn2<}Pg52w z!ai?0^hNU$0mK_3$a09>m{#eTR+UFu{~o)VD-Z{$=5czz>H%Of>7GeAgbKWe7avEz z(sYJK{)gD|ut?iGO-8$lrD9<*Yy3{LH=o}>MeV~K3LrGvldk-1cVsNMy(;Tp7USGM zxnN0o4=Q-1Ugxf-rdrf{i9wyv14WUSnk6bG&%TER6RJ@ys-(TVUBYj8fYmP*sSf@2 zNZja;l~c@BZSe-oHvJsvK-8wk!w`Tmi`q2_SDbA7A5^IM&hbCp^X>8<@;RwoNC~VGYf&`wET64>Yud z9u~oZSojw}g0tq?DiMTZg#!BE%!r;mAWdG8dt738ny#0`3F*G{7iHkSsJvVEDA;MN z6ti4>Ku-yIGe+(mq6WS81R1s1_H!ilWcW>Ko&)3lvddcL#`*xpw`L@e=svhQeDSbt zNv?DfLybHd&r&9q_FhqYp}Ls7X)-Iqk)E#$7j^ebMqu5)8Jcr}Ol%6)>BJXF@kuRi zOHvrPl2QW7a+)l&-+f6}{AU9Ue_W!bIxrpjeoCfT2lR^5iWPsMYgwb}Vu)mOgwPWo znrh#>AZR_k3pzxi35EP*e@FP?qoTG>p#~PFoQaKn^vG|%4G+I;V?LI6xp2Lh!=U-|;Grygxx#{^iU6)?P-Tfd0EN z`VN|$1k|!F)@=p+;_N4aL#(Gy#;U{2S5|FF8>Hjjqke_kGF6hM>XkY=8IXEhm1og{ zi%dsN4%U_CaE*wK#pMtP8MdN~q*iT$L))J?RwW|~J2r6ga@ zg<#3e9V;A{R{}b3{BFE>^)oOMNR_6d>7(W*+VUG5>f9I19zVaH-FfyGOG;|~;r7#W z^atJ+{^Wv-h}&nZa*4t=vEML@B`r01Nh_C`{(GN0x3&@NQ0`$jgyM@V(odj!Nd8w% z(60FoR*FNu_oeG)X@L()_6lO%+G2ym_>j8FsYpSixz8VqMx!?fU)SH4oFc0*+Lq4w zxC<|biL!of%nI%Lw8!d6ErtA6%JjeNAE|aEI;nh94L5l-DY2HCQY>sG@$~d_48NYS zyja^4g6>ymZ%=dle*fsPmf0~Ogx=oH-d*Fa43g~~X8bbd>Px=xXe^^NYx!;Ab?pz#TXkGk zBKg>CjB$+^E^)~t5NPZm9li~E^`TGT_*nYin+&DE)=Wvm9#J0#_OI9Pilffr==JvK zJjJM;gK3YV<`)|?Tk0yNGgZiE4OuKy2|sXHQp}FDCstT`xL;Qd zyyB9@Z}}$Z>3Zxm!YlAI>9&ztmvF}(1w>w`ZMrRg47x+;?K=Cer2cRJnG_G1*|`oG z2jym?2_~uAfob(Dw+k$!>mScje&(u#FZ-Q7x)>+B-Ea9MdU(w#fn~SUktkr6(UCE~ z8g{9~BB|ui?b4pgtn=*F|MO~SZ&!GzOC7V(p|UK75staL7C6R>%t#7!Z(N?A12A2G zry4M$e~R~OL87u{@Oj)?xd?h**_oTD!YPeN0JGWh^dT4&_o=SPs+c)OW4jo`VJ4O4GYLXol~u)?K(RedxZT)5*` zCt@jPUr>UYus1ri?9>@Fx7p)LzqQilJ6$^vAJ+MIWBIT3oZ`=`KmAX!?lN>UW1Zp` z($B{eNVW%pD3PFS+P2*9kAqVk`96 zG0BVe=!WTpbG^nFmiveIv$gQvThL2c{*hB^_Pl2KFTXuDwiuOWf}#bfC584WdimT` z>mQk5-hK*3f;K2AFC@7_TaS0bD*vge{1mc#CEhhrKO%CwyK)g`9jM^skM*BP=aEt= z472Cd#!?iu=b1a%()`~uw(KkzNTFer1A6`=l`C?!Zn*sPPX=UU^mhw9`62`VW#nt& z>u|RF3;AaFLicl2Ej8$0TYnf)c{QU+`X4n;0td%*ob6Y+-&LDfzY!OEs)>1Kc+LlN zp|PEzr4ln&BG}5>;G`uwRwES^p0}nnx|2tUu0c zp%Io`(@cm3*4~+RJZyS#xBGb{wf@J2VB(Syhc2m|%Q!`rnq<`MlTC@6>x)y=G!BYI3-Id$G0%@s4wOKC-!in17yhqo-Rf z!u{n6H4YM*?+kyTyZyH@L*Gs2?Dpmy zf)cM{exIS{HdK1XgPvS!7%f;!WIw}bj)c8!{;#j=3~Hi{)}eO@gd#S>#A@nAQqEx8?qy&(TGyw&{AXTIn5xDt&-XHhQ?99&2?3rix-QDLr z=RNP)<7W@dpzZK(Lhfj*AE!+oOl$V1|N& zCw`J0DpKw*aMzC`7D0~uH})1i{yW)stwo?!rtTRnHUzuKx%MU&jWY`?UMq>Zm1yBw zjuD8xqNI^Yj#7!3*j&s*=2RBuDV0!R_C7n8v7Eh@nkU^A z|L%Cu<9lmqUCfG9tMbNcztLa)kC8457JE-tdTUlJ24)hCxu>Xu?Z21__p3w<4gNWN z0Qvy8?U&iN3sCuwc9Qyz{5|?2MNChNf2}UuW|Vj#U+$N!jG-!)f9bg$YM9g=19m|@ zu4M}@lf+`@Aw{|BAvs%9Pj_pnRt#*eI#gZ&(C-NJ8a?On6B}n{hi3w<@Qt-Xg)E2# zhmXcsvR=zU_zcya(ha2$Z*_yX?6FqxvZT~QCHb%N9Um+n+l`n1)v;4JSN>2CA#q$i z7PRqAA1zX>R-gIjdM(ULv7R2ZJ#h(cywKYtyMV3Ji>5;EX1g3~{5=xlD+=lj2F`bH zk05~HFVE`U)<36vf5UwX`#w}7^-eEvc|UP1 zkWxM`6#m-R*v(KOVN`);ytJ}DWy6A{$?b;C8iGk3+(GATjl`@8 z{qvfcR9XyMickpEOR09@REkaKU7(?t9#umNO{PyG-$P^^;Q?eq@}M zk;LK!-6>ZqHw)hyk#{d`k;uLBgx#;y0`ZD-VfpX%S{t^fsP?>U_|{& zKg3a89cc)e&Tx_GSlt+@^u~2VW>fo5`HSyt=a4j~@E}HFs>T5INvt9Mmu{+UnNg8P zDqdj&Frh641E8=FZ?+#cr zj6E$toYPKh91#$9bIZjs%|0}C@12dalZy~Bs+OqguH`IQ3)(Qf4JR{GIGovx9PBUP zs)E&zc6CM$&t4XAyk3ZmK22PG;A_)tQrtXgBN>q}i2CvC6I)WV?>fuFc6oAuqI{pf z4Fs;v)qcnq?lgBLEG0a8_C_-D;!9areZu^{e7?$~uTd^sWM-T={UK?5Rk?oky1pK- z9D%k*Yjj%>PY7Q?Wvsc|#9}Tj8)3SXrj?dbDoQr*u|hgY5LKR)Qnts&sU@>jn|ggZ zQ=;z0c-rdWR1;l8MbLtuRUTE~HJ>i$(N1vpr;_z3K){veZL6@JhHdV&T;$jMSau>Y z@~5lZ+#j(1y&~mxLx$O#G>v#>x!HVQ;yPY9hrp^|pKtIbEsjqB9YzigmFlHQSV+a~zP=|IMaNA~j>(T%-Q~L@Tq=*cFi2OC}3mGhMRgr(?O>Z>hkzTll-1JWiYMEM!$ja`j-rCaU-mN|DZ4?AD&b@U=e?%%m&5U>ARn2d* zId{+TQzff2ZTBglO7N ze`Ispzk4`vv{gEaoud$O9)6ob34lqQ#hCI14dzlLhS_lu131XW{h!npeZ&Z6bYG`O6&cw%%`d_Kixf5O2G`anY?+9ANw8HGYsOIz=8x5jEo_OfJ0VoB7 zbyg1CWr_I}%vpsNs=Ud3bW9NgWb2p$BZ$&{e#og3Q*(u^04}?MB)x=5N0cIzaTJ@m z<_~PNLbOEiBiZ;5idRj-6e!@)=7y!{rc3i_;g5yo$WbYW3ljX}cc%JQw9i_`lQ>$v z)y(zDnd`C8`G+WRCcwmk18( zi3O~au0IZ4Ow;*doM|j%kVlcV%_t(Kvt*bJu^6!MU*9G+kTn=F&TfI)w8+_|LXHM0 z5hg=ZG?;jnk~Qq+Dd>b0uj4P&A~79gB|{0TKZSmrx_5{DyW{gdpgje@HX{V@HU49` z#kt1pSQMwv%+^sminZ8aHY5df_F~WHi7v<3*&93T#vi9w-?GW-Dh=~?uOKArGvs|r z^u+P+;{L_wZqPhDoMyjK*=1hI2~=RNgNSUDbQPh;rjYWx2!+H-{P&BGRX3|A)dpVi zJvOM!ZqMA02~-QOm@rdxjm++R;eJ^io6Diw5?4$N2%cyW?5AL}1)j&XZthZ3Jtb&5s?K>0<*juk3YAo>BJ?KZxF~ z40$K}mSH{>nPrMD&Z%GyZe5P~FbJfW+Vt>2CZ|&UPp(XnW7U!9W2;Bwdgxt~L!|g} zMS#RdN=)V=ry|@_{K(NH^@b^YJyfO@6_5bq<0w#ds0jh(#na zo!5IMPsB+6r(B|ZZUj{FgTZ-sMmSb8sT7cUmKu5S`JE8>^h}(N0zqdN< z+j9HLTS6+^uv*6bWK%mWs&-8D6~9PHDfTaAUFDg3n0~u9Nwm@7HS}WJiDGV0NO(#; zRaa+%gy0S>v7q|*d$2k2dC87MmE7;WN30Jwa76GCtWhNh^Q9&CzgFt9VK?{jI*7rI z0l^{%>tRI8M(_^c(mmvEQC+F-K+o$Q8>Ndh_eChzR~gO38`F`GQqC_Il~{?LPLecP z*ibqfwRs_Of7<{0SWkApI_i@_aprRyFY_{_)}L+}skY!tB-AkY)^xHqdnmeQi` z|8nzXS37%{II0I6_*x59&&6NA!aX7mi1puB7O;Obk^Z0`liQlycVl6ogTJ=stNWQki#9ROpCOFnEUq~IyikUTa;&V~1)HU1tin>3?N2pay@+F!d zJHm~QLXPAL%Iw}w`6X}^5l9|-F{uJ;D(r3s;yAohh>`P!5*+=Dl!#0}uacFk~gWy56UYPtKD&O^dTQQMQ zDeUGUJS>(nqvgv9?P+7z2E2H&H3lEp`IWyz_2Ph~G0tEf^&P^*af;C2zSBOp3@_gt zhp*&QfW_>bK5{u2d)A&wRT$s)5M#Y@0ft-Q{WQaJ`~oomCP-`zqT`Wboy^S4#HD1&ZMcUaI-I9EU-2!p0s;lpo=M-Xw=OPn}qg- zX?-VTd&eeB&gdGJ1A;J+@=F;D8E$}oO5EXc?N_z=rRv?S5XuuAQDYL-!Vt$+{} z{5JQ=CXGmDW?}vvYb+tjY|dO`vk$!(+pDJfNcxX!o=L|^LbwN?eNlXOU1}7s8zLvp zO5lGIulE#NUf6qwDa}P>m0bWtmQ@!vxpRxZbXlTBI~~d=>O5L+QSw({cz!<*>QB!% zOF&ze8}d_@dR5qdx$%`F5*zSIg{O{mkj*1b@mn8shKBMu>4|WiyTfn0U$f&d>kZ=_ zL(dx8hZby<6=pb+--KR6RZ{bl=NSzcn*=4?hdclj700N@=DP)1KAk$yH&kO2FrrWXIY;C}y z35a$s!}x(Yhj?j6{qvnKkE*Q3O3MOBX*Oo^tR2iu@ad9XLP%K|g@ilZhivG&KAE0j zeAd0f-zr8=AF@l>zlQ`jPc1F>p^NeJL?r?YT%THuHC@wSd9DQhZJ5C5H~&bA=F`8v zQr5I-N;Gbv8@U)6H?x+^-zFe`P_e3CbHn=2MF3O--GZi^Oa;ZKZ!r<}?DODgvT`5l z+dd$%FscH-_Y$2Mt(N}SoVK$r+IP8T9LU^XaQQ`Tt0QyHz)MNK3MJ@`uB?TK$SPr) zH2OamXLJ1Vs`$7`EEH-wy|}6+K5qtL67r~){r(vUIw#%74r6eP9u8$gH!QqoGvuTp zI1gx^DyfMpCU#p@IJhCi9aUvv;jx65Iq`j# zxLl~Mjh2qH5M_SqT6Ky?^%f;LEZzs9^ zDnWY66(@t&Y!*Y_o2aH}w>x#h5DN4-(I$bM6cn zR{L?VvxhirFFBQ_9V&|S@=LfSJCSvE!aZECvtn+Wov(7e(~TH$OnHM&a>U>`#5QY*CWd~ zGkKFnC=rXHzP?c+&)-GVl6GbbQF{F}mhptcOSwWA2LGZ)&u}EITvS&taVkqat@BP~ z+oJQv%ik_+gCZXAv|?z|_u1aOdAk`KO?kz1P^0v*8@+ zS*Gaa`*($>pnC>f{d~pPUto25T^4~SZ+k5?Uw3<0ZUqAwx%h=&@gBaJ&B(IiL#a`;m$ZfFab8h8t4v#CV)l?z`ff@RZ3lg- zSyIvTNj5IynUM4Edq}J*_snPeh?Sf}Kc6{$mw>#N*I@rmg*}6kN^@Byn0r|4hz^v1 zn?>R@<{|mt-;Z`uI)%UN4+2N0M4Y@RFy(eW=;O-@n?2ZYNTJ2NuL!gEH&(=jonwn$ zwH+@LAOJ1->D6=HNye(M`E{0Hdf-BZ#T&wy09$y#zXuEfR3euurZ&4u89oALiUYIv zN3BEw#vISFD>8;BOt{2zhA%$%D>%TG+~zAeV>?cK+X6cneM|Me=q6NA4Xrtx927$d z0Hr&XDMXuzmqVlILY5vu+{!`b4@pMY*_8MudE&ym|k8yFi{kkJBXuxuxTq^T-v`f zzB0>NX?Sdmz~7hT^Gi;RkiU%2*98rmRSuHk$VI2(OGM0jom^CM*Bdes&Lc$k3pId2 zH}|0}4GKk?dx`}8A|;D3#2+UrzHP)Uf|Tc_J^6?I0TR^fv_o1 zeA+WcVKnD!3dI9Giw79(jGfGa`|}bct$%_PfWW|Ma-QkgNU$FK*%fV;B1K4S<+oTq z#~-ml(SpbPA$?GR!fd?HA9)ui#}$Zq{bYTy2DE)C zBBf~(-VKAq$UUjR!er0=9R3h~WVX-OxOJ_HQIuC3z-hTmJR??-_E^*GNN@=AyJ#cT zX@4RL5caj#-x@m)HF%ITp_=qjfYFm`3VULlSR;N9q&095Zt;*Z%EwDtk5Hb1Urk@R z9xirof`E6z$2bI7GOuHyjLoRv{A{(tzy!z{os|02tJiL=lPaAGjZk)Q5S z8Iye3fx?*qID3`Xy-i5SBPsi5Nk854^B__#u1NulHGtAKGaFD2+jGv*1fJw!kO1!K zYg{5!yPUX3Sa-oNmOBM_>8f15LBVqbBnI+=_+=b9iAf3X#>8v>oMSz2;J|I=rVePk z@EY(L@WL4k>Ru%X&DJ= zIZGKCWe8YVR$2@URtAIjlZAf%F9UC1R}Z(4|J$HszQhr4!1^D8g|8bT*f{_W&~o*4 zfpZ&pJG;Z7aA(&L|Ict${7DZ(Eo~4`=U{HX0ADu`FE}?M#1GEx;fH_$0La3hN7Us0 z*22OgW}{;U8&CidAC)AG3d9F8%4Q@2ao>-I^t%%AHCb|xew`g27#rXiARCR=FEx|| Y?6A-yjr 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 E0J*{YUH||9 literal 0 HcmV?d00001 diff --git a/docs/favicons/browserconfig.xml b/docs/favicons/browserconfig.xml new file mode 100644 index 000000000..3d14063c9 --- /dev/null +++ b/docs/favicons/browserconfig.xml @@ -0,0 +1,9 @@ + + + + + + #222222 + + + diff --git a/docs/favicons/favicon-16x16.png b/docs/favicons/favicon-16x16.png new file mode 100644 index 0000000000000000000000000000000000000000..40b78f0804e4eafbf11aa811f34f66ca726678c5 GIT binary patch literal 1146 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 B#H#=R literal 0 HcmV?d00001 diff --git a/docs/favicons/manifest.json b/docs/favicons/manifest.json new file mode 100644 index 000000000..5ef2ecb63 --- /dev/null +++ b/docs/favicons/manifest.json @@ -0,0 +1,19 @@ +{ + "name": "docs.nunit.org", + "short_name": "NUnit Docs", + "icons": [ + { + "src": "android-chrome-192x192.png", + "sizes": "192x192", + "type": "image/png" + }, + { + "src": "android-chrome-384x384.png", + "sizes": "384x384", + "type": "image/png" + } + ], + "theme_color": "#222222", + "background_color": "#222222", + "display": "standalone" +} diff --git a/docs/favicons/mstile-150x150.png b/docs/favicons/mstile-150x150.png new file mode 100644 index 0000000000000000000000000000000000000000..b3bb363cb7b377dd070f83f139fb853e95c0ae05 GIT binary patch literal 11860 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%0ACp?JJlR1Z)I|0}15p>l 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 literal 0 HcmV?d00001 diff --git a/docs/favicons/safari-pinned-tab.svg b/docs/favicons/safari-pinned-tab.svg new file mode 100644 index 000000000..b32298fd6 --- /dev/null +++ b/docs/favicons/safari-pinned-tab.svg @@ -0,0 +1,34 @@ + + + NUnit Icon + + + + + + + + + + + + From 7cf93ba26e947b0a4f269fc3786ad788be6059d5 Mon Sep 17 00:00:00 2001 From: Terje Sandstrom Date: Tue, 21 Dec 2021 16:37:43 +0100 Subject: [PATCH 045/596] Update docs/articles/nunit/getting-started/dotnet-core-and-dotnet-standard.md Co-authored-by: Sean Killeen --- .../nunit/getting-started/dotnet-core-and-dotnet-standard.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/articles/nunit/getting-started/dotnet-core-and-dotnet-standard.md b/docs/articles/nunit/getting-started/dotnet-core-and-dotnet-standard.md index 7ed110698..132a38a20 100644 --- a/docs/articles/nunit/getting-started/dotnet-core-and-dotnet-standard.md +++ b/docs/articles/nunit/getting-started/dotnet-core-and-dotnet-standard.md @@ -2,7 +2,7 @@ More information and getting started tutorials are available for NUnit and .NET Core targeting [C#](https://docs.microsoft.com/en-us/dotnet/core/testing/unit-testing-with-nunit), [F#](https://docs.microsoft.com/en-us/dotnet/core/testing/unit-testing-fsharp-with-nunit) and [Visual Basic](https://docs.microsoft.com/en-us/dotnet/core/testing/unit-testing-visual-basic-with-nunit) in the .NET Core documentation's [Unit Testing in .NET Core and .NET Standard](https://docs.microsoft.com/en-us/dotnet/core/testing/) page. -Each test project need to reference version 4.1.0 or later of the NUnit3 Visual Studio Test Adapter. +Each test project needs to reference version 4.1.0 or later of the NUnit3 Visual Studio Test Adapter. It is recommended to install the adapter from NuGet if you are testing .NET Core or .NET Standard projects. The VSIX adapter has been deprecated for VS2019. Latest version is 3.17.0. For VS2022 there is no VSIX adapter. From f2d6e7b45c8be03675202d50e68c57174172fb98 Mon Sep 17 00:00:00 2001 From: Terje Sandstrom Date: Tue, 21 Dec 2021 16:38:06 +0100 Subject: [PATCH 046/596] Update docs/articles/nunit/getting-started/dotnet-core-and-dotnet-standard.md Co-authored-by: Sean Killeen --- .../nunit/getting-started/dotnet-core-and-dotnet-standard.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/articles/nunit/getting-started/dotnet-core-and-dotnet-standard.md b/docs/articles/nunit/getting-started/dotnet-core-and-dotnet-standard.md index 132a38a20..6e2d09277 100644 --- a/docs/articles/nunit/getting-started/dotnet-core-and-dotnet-standard.md +++ b/docs/articles/nunit/getting-started/dotnet-core-and-dotnet-standard.md @@ -43,7 +43,7 @@ It is similar to a console application, it cannot be .NET Standard, it must targ This limitation is the same for all test adapters including xUnit and MSTest2. -#### My tests aren't showing up in Visual Studio 2017, 2019, 2022 +#### My tests aren't showing up in Visual Studio 2017 or later - Are you using the NuGet adapter package? - Are you using version 4.1.0 or newer of the NuGet package? From 2fb8f1cc0fcaf410c9ec494abcfabf04e470541b Mon Sep 17 00:00:00 2001 From: Terje Sandstrom Date: Tue, 21 Dec 2021 16:38:21 +0100 Subject: [PATCH 047/596] Update docs/articles/nunit/getting-started/dotnet-core-and-dotnet-standard.md Co-authored-by: Sean Killeen --- .../nunit/getting-started/dotnet-core-and-dotnet-standard.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/articles/nunit/getting-started/dotnet-core-and-dotnet-standard.md b/docs/articles/nunit/getting-started/dotnet-core-and-dotnet-standard.md index 6e2d09277..9de1cf945 100644 --- a/docs/articles/nunit/getting-started/dotnet-core-and-dotnet-standard.md +++ b/docs/articles/nunit/getting-started/dotnet-core-and-dotnet-standard.md @@ -69,4 +69,4 @@ dotnet test -- NUnit.TestOutputXml=yourfoldername The folder is relative to the binary test folder, or you can use an absolute path. The latter is useful in CI scenarios. -Alternatively, there is a 3rd party package, [NUnitXml.TestLogger](https://www.nuget.org/packages/NunitXml.TestLogger/) which also produce a NUnit3 xml format. Details for [use see here](https://github.com/spekt/nunit.testlogger). Note that this is a re-implementation of the NUnit3 format, and may differ. +Alternatively, there is a 3rd party package, [NUnitXml.TestLogger](https://www.nuget.org/packages/NunitXml.TestLogger/) which also produces a NUnit3 xml format. Details for [use see here](https://github.com/spekt/nunit.testlogger). Note that this is a re-implementation of the NUnit3 format, and may differ. From fdc549fe4a09d3aae2facc2e40581b331f8cb0f3 Mon Sep 17 00:00:00 2001 From: Terje Sandstrom Date: Tue, 21 Dec 2021 16:40:13 +0100 Subject: [PATCH 048/596] Update docs/articles/nunit/getting-started/dotnet-core-and-dotnet-standard.md Co-authored-by: Sean Killeen --- .../nunit/getting-started/dotnet-core-and-dotnet-standard.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/articles/nunit/getting-started/dotnet-core-and-dotnet-standard.md b/docs/articles/nunit/getting-started/dotnet-core-and-dotnet-standard.md index 9de1cf945..589bf8a72 100644 --- a/docs/articles/nunit/getting-started/dotnet-core-and-dotnet-standard.md +++ b/docs/articles/nunit/getting-started/dotnet-core-and-dotnet-standard.md @@ -29,7 +29,7 @@ For a more complete walk-through, please see [Testing .NET Core with NUnit in Vi ## Using the NUnit project templates -The NUnit test project templates comes included with `dotnet`. +The NUnit test project templates come included with `dotnet`. You can run `dotnet new nunit` to create an NUnit test project. From 7c2b901687a0e6f039115007eea09c250b46bb6b Mon Sep 17 00:00:00 2001 From: Terje Sandstrom Date: Tue, 21 Dec 2021 22:52:58 +0100 Subject: [PATCH 049/596] update --- .../vs-test-adapter/AdapterV4-Release-Notes.md | 1 + .../articles/vs-test-adapter/Tips-And-Tricks.md | 17 +++++++++++------ 2 files changed, 12 insertions(+), 6 deletions(-) diff --git a/docs/articles/vs-test-adapter/AdapterV4-Release-Notes.md b/docs/articles/vs-test-adapter/AdapterV4-Release-Notes.md index 8d6151595..ee1a27269 100644 --- a/docs/articles/vs-test-adapter/AdapterV4-Release-Notes.md +++ b/docs/articles/vs-test-adapter/AdapterV4-Release-Notes.md @@ -9,6 +9,7 @@ This is a bug fix release, with the following fixes: * [914](https://github.com/nunit/nunit3-vs-adapter/issues/914) AddTestAttachment does not work anymore in VS2022 * [918](https://github.com/nunit/nunit3-vs-adapter/issues/918) New DiscoveryMode doesn't play nicely with TestFixtureSource - Missing GenericFixture * [929](https://github.com/nunit/nunit3-vs-adapter/issues/929) Lots of warnings logged when filter matches no tests 'cat=BAZ', including other issues in the same. Thanks to [@runehalfdan](https://github.com/runehalfdan) for a lot of help reproducing and verifying these issues. Fixing this also improved performance, and cleared out issues with Explicit tests. +* [934](https://github.com/nunit/nunit3-vs-adapter/issues/934) Console output no longer output by dotnet test -v n. ### Engine update diff --git a/docs/articles/vs-test-adapter/Tips-And-Tricks.md b/docs/articles/vs-test-adapter/Tips-And-Tricks.md index ed050ea74..2073744a7 100644 --- a/docs/articles/vs-test-adapter/Tips-And-Tricks.md +++ b/docs/articles/vs-test-adapter/Tips-And-Tricks.md @@ -157,11 +157,7 @@ Using the runsettings should be like: ``` -<<<<<<< HEAD -Note that the ```Where``` statement does not work for the Visual Studio Test Explorer, as it would generate a conflict with the test list the adapter receives. It is intended for use with command line tools, dotnet test or vstest.console. -======= Note that the ```Where``` statement does not work for the Visual Studio Test Explorer, as it would generate a conflict with the test list the adapter receives. It is intended for use with command line tools, `dotnet test` or `vstest.console`. ->>>>>>> origin/master (From version 3.16.0) @@ -185,13 +181,22 @@ However, it has been seen to also have adverse effects, so use with caution. #### ConsoleOut -When set to 1, default, will send Console standard output to the Visual Studio Output/Test window, and also with dotnet test, it will appear here. (Note: You have to use the '-v n' option) +When set to 1 or 2, 2 is default, will send Console standard output to the Visual Studio Output/Test window, and also with dotnet test, it will appear in the output. Disable this by setting it to 0, which is also the default for version earlier than 3.17.0. +There seems to have been a change in dotnet test that causes ConsoleOut=1 to no longer fully work, ConsoleOut=2 reintroduces that and is the new default value. + See [Issue 343](https://github.com/nunit/nunit3-vs-adapter/issues/343) for more information and discussion -(From version 3.17.0) +In earlier versions you had to use ```-v n```, but that is no longer required. In order to silence it in ```dotnet test``` you have to do: + +```cmd +dotnet test -- NUnit.ConsoleOut=0 +``` +(Note the space after ```--```. ) + +(From version 3.17.0, Modified in 4.2.0) #### UseTestNameInConsoleOutput From 883e1d19144c060e1e3b9a5c8682cf7c4643af18 Mon Sep 17 00:00:00 2001 From: Terje Sandstrom Date: Wed, 22 Dec 2021 08:55:54 +0100 Subject: [PATCH 050/596] Update docs/articles/vs-test-adapter/Tips-And-Tricks.md Co-authored-by: Sean Killeen --- docs/articles/vs-test-adapter/Tips-And-Tricks.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/articles/vs-test-adapter/Tips-And-Tricks.md b/docs/articles/vs-test-adapter/Tips-And-Tricks.md index 2073744a7..4b4c8d268 100644 --- a/docs/articles/vs-test-adapter/Tips-And-Tricks.md +++ b/docs/articles/vs-test-adapter/Tips-And-Tricks.md @@ -181,7 +181,7 @@ However, it has been seen to also have adverse effects, so use with caution. #### ConsoleOut -When set to 1 or 2, 2 is default, will send Console standard output to the Visual Studio Output/Test window, and also with dotnet test, it will appear in the output. +When set to 1 or 2 (2 is default), will send Console standard output to the Visual Studio Output/Test window, and also with dotnet test, it will appear in the output. Disable this by setting it to 0, which is also the default for version earlier than 3.17.0. From 71a8d92ad4f9da644defa5bf3d38458729e3b036 Mon Sep 17 00:00:00 2001 From: Terje Sandstrom Date: Wed, 22 Dec 2021 08:56:16 +0100 Subject: [PATCH 051/596] Update docs/articles/vs-test-adapter/Tips-And-Tricks.md Co-authored-by: Sean Killeen --- docs/articles/vs-test-adapter/Tips-And-Tricks.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/articles/vs-test-adapter/Tips-And-Tricks.md b/docs/articles/vs-test-adapter/Tips-And-Tricks.md index 4b4c8d268..166e7ed1a 100644 --- a/docs/articles/vs-test-adapter/Tips-And-Tricks.md +++ b/docs/articles/vs-test-adapter/Tips-And-Tricks.md @@ -185,7 +185,7 @@ When set to 1 or 2 (2 is default), will send Console standard output to the Visu Disable this by setting it to 0, which is also the default for version earlier than 3.17.0. -There seems to have been a change in dotnet test that causes ConsoleOut=1 to no longer fully work, ConsoleOut=2 reintroduces that and is the new default value. +There seems to have been a change in `dotnet test` that causes `ConsoleOut=1` to no longer fully work; `ConsoleOut=2` reintroduces that, and is the new default value. See [Issue 343](https://github.com/nunit/nunit3-vs-adapter/issues/343) for more information and discussion From 44075158207a6b05b1f59b39b63ef3f54211a989 Mon Sep 17 00:00:00 2001 From: Terje Sandstrom Date: Wed, 22 Dec 2021 08:56:40 +0100 Subject: [PATCH 052/596] Update docs/articles/vs-test-adapter/Tips-And-Tricks.md Co-authored-by: Sean Killeen --- docs/articles/vs-test-adapter/Tips-And-Tricks.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/articles/vs-test-adapter/Tips-And-Tricks.md b/docs/articles/vs-test-adapter/Tips-And-Tricks.md index 166e7ed1a..fdc756550 100644 --- a/docs/articles/vs-test-adapter/Tips-And-Tricks.md +++ b/docs/articles/vs-test-adapter/Tips-And-Tricks.md @@ -189,7 +189,7 @@ There seems to have been a change in `dotnet test` that causes `ConsoleOut=1` to See [Issue 343](https://github.com/nunit/nunit3-vs-adapter/issues/343) for more information and discussion -In earlier versions you had to use ```-v n```, but that is no longer required. In order to silence it in ```dotnet test``` you have to do: +In earlier versions you had to use `-v n`, but that is no longer required. In order to silence it in `dotnet test` you have to do: ```cmd dotnet test -- NUnit.ConsoleOut=0 From aa36d093d1035d52b6eba342bc35254cbcfd22d7 Mon Sep 17 00:00:00 2001 From: Terje Sandstrom Date: Wed, 22 Dec 2021 08:56:52 +0100 Subject: [PATCH 053/596] Update docs/articles/nunit/getting-started/dotnet-core-and-dotnet-standard.md Co-authored-by: Sean Killeen --- .../nunit/getting-started/dotnet-core-and-dotnet-standard.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/articles/nunit/getting-started/dotnet-core-and-dotnet-standard.md b/docs/articles/nunit/getting-started/dotnet-core-and-dotnet-standard.md index 589bf8a72..8d8f61300 100644 --- a/docs/articles/nunit/getting-started/dotnet-core-and-dotnet-standard.md +++ b/docs/articles/nunit/getting-started/dotnet-core-and-dotnet-standard.md @@ -63,7 +63,7 @@ Meanwhile, you can run specific tests using the `--framework` command line optio You run it by adding the setting on the command line (or in a runsettings file): -```cmd +```console dotnet test -- NUnit.TestOutputXml=yourfoldername ``` From 74c8c72b89e32578e4d1ec038440712f12f78877 Mon Sep 17 00:00:00 2001 From: Terje Sandstrom Date: Wed, 22 Dec 2021 08:56:59 +0100 Subject: [PATCH 054/596] Update docs/articles/vs-test-adapter/Tips-And-Tricks.md Co-authored-by: Sean Killeen --- docs/articles/vs-test-adapter/Tips-And-Tricks.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/articles/vs-test-adapter/Tips-And-Tricks.md b/docs/articles/vs-test-adapter/Tips-And-Tricks.md index fdc756550..d86c5a28a 100644 --- a/docs/articles/vs-test-adapter/Tips-And-Tricks.md +++ b/docs/articles/vs-test-adapter/Tips-And-Tricks.md @@ -191,7 +191,7 @@ See [Issue 343](https://github.com/nunit/nunit3-vs-adapter/issues/343) for more In earlier versions you had to use `-v n`, but that is no longer required. In order to silence it in `dotnet test` you have to do: -```cmd +```console dotnet test -- NUnit.ConsoleOut=0 ``` (Note the space after ```--```. ) From 7b0e67e02ec778c4484f77316d78881149c3af93 Mon Sep 17 00:00:00 2001 From: Terje Sandstrom Date: Wed, 22 Dec 2021 08:57:09 +0100 Subject: [PATCH 055/596] Update docs/articles/vs-test-adapter/Tips-And-Tricks.md Co-authored-by: Sean Killeen --- docs/articles/vs-test-adapter/Tips-And-Tricks.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/articles/vs-test-adapter/Tips-And-Tricks.md b/docs/articles/vs-test-adapter/Tips-And-Tricks.md index d86c5a28a..f6df6d506 100644 --- a/docs/articles/vs-test-adapter/Tips-And-Tricks.md +++ b/docs/articles/vs-test-adapter/Tips-And-Tricks.md @@ -194,7 +194,7 @@ In earlier versions you had to use `-v n`, but that is no longer required. In o ```console dotnet test -- NUnit.ConsoleOut=0 ``` -(Note the space after ```--```. ) +(Note the space after `--`. ) (From version 3.17.0, Modified in 4.2.0) From 4b7fee5026cf260968e86a14b11327f0bfede4a8 Mon Sep 17 00:00:00 2001 From: Terje Sandstrom Date: Wed, 22 Dec 2021 09:01:38 +0100 Subject: [PATCH 056/596] upodate --- docs/articles/vs-test-adapter/Tips-And-Tricks.md | 1 + 1 file changed, 1 insertion(+) diff --git a/docs/articles/vs-test-adapter/Tips-And-Tricks.md b/docs/articles/vs-test-adapter/Tips-And-Tricks.md index 2073744a7..1a17d1bff 100644 --- a/docs/articles/vs-test-adapter/Tips-And-Tricks.md +++ b/docs/articles/vs-test-adapter/Tips-And-Tricks.md @@ -194,6 +194,7 @@ In earlier versions you had to use ```-v n```, but that is no longer required. ```cmd dotnet test -- NUnit.ConsoleOut=0 ``` + (Note the space after ```--```. ) (From version 3.17.0, Modified in 4.2.0) From b8e9b451793604c43072f072bc3115aeedfc2c0f Mon Sep 17 00:00:00 2001 From: Ihor Sychevskyi Date: Thu, 23 Dec 2021 03:30:23 +0200 Subject: [PATCH 057/596] update current year(copyright) (#621) --- docs/custom_template/partials/footer.tmpl.partial | 2 +- docs/docfx.json | 1 + docs/styles/main.js | 2 ++ 3 files changed, 4 insertions(+), 1 deletion(-) create mode 100644 docs/styles/main.js diff --git a/docs/custom_template/partials/footer.tmpl.partial b/docs/custom_template/partials/footer.tmpl.partial index 512f48a1a..ca3563d2b 100644 --- a/docs/custom_template/partials/footer.tmpl.partial +++ b/docs/custom_template/partials/footer.tmpl.partial @@ -8,7 +8,7 @@ Back to top {{{_appFooter}}} - {{^_appFooter}}Generated by DocFX | Copyright (c) 2018 The NUnit Project - Licensed under CC BY-NC-SA 4.0{{/_appFooter}} + {{^_appFooter}}Generated by DocFX | Copyright (c) 2018- The NUnit Project - Licensed under CC BY-NC-SA 4.0{{/_appFooter}} diff --git a/docs/docfx.json b/docs/docfx.json index 0b273f750..89d9bb73b 100644 --- a/docs/docfx.json +++ b/docs/docfx.json @@ -17,6 +17,7 @@ "CNAME", "images/**", "favicons/**", + "styles/*.js", "robots.txt", "articles/vs-test-adapter/Adapter-Release-Notes.html" ] diff --git a/docs/styles/main.js b/docs/styles/main.js new file mode 100644 index 000000000..444457f88 --- /dev/null +++ b/docs/styles/main.js @@ -0,0 +1,2 @@ +var currentYear= new Date().getFullYear(); +document.getElementById("currentYear").innerHTML = currentYear; \ No newline at end of file From d1f44e2aa1a3f6eab8300a4c39cc8c31e87ca6c0 Mon Sep 17 00:00:00 2001 From: Terje Sandstrom Date: Sun, 26 Dec 2021 20:40:11 +0100 Subject: [PATCH 058/596] added SkipExecutionIfNoTests found information for the adapter --- docs/articles/vs-test-adapter/Tips-And-Tricks.md | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/docs/articles/vs-test-adapter/Tips-And-Tricks.md b/docs/articles/vs-test-adapter/Tips-And-Tricks.md index 8ac36a946..1a5976870 100644 --- a/docs/articles/vs-test-adapter/Tips-And-Tricks.md +++ b/docs/articles/vs-test-adapter/Tips-And-Tricks.md @@ -44,6 +44,7 @@ The following options are available: |[NewOutputXmlFileForEachRun](#newoutputxmlfileforeachrun)|bool|Creates a new file for each test run|false| |[IncludeStackTraceForSuites](#includestacktraceforsuites)|bool|Includes stack trace for failures in suites, like exceptions in OneTimeSetup|true| |[ExplicitMode](#explicitmode)|enum|Changes handling of explicit tests, options are `Strict` or `Relaxed`|Strict| +|[SkipExecutionWhenNoTests](#skipexecutionwhennotests)|bool|Skip execution if no tests are found|false| ### Visual Studio templates for runsettings @@ -282,6 +283,12 @@ This setting can be either ```Strict``` or ```Relaxed```. The default is ```Str (From version 4.2.0) +#### SkipExecutionWhenNoTests + +If set, this setting will skip execution for an assembly if no tests are found during the pre-execution discovery phase. It will give you a small performance boost, but if you skip the execution, this assembly will not generate any log files. The default is false. + +(From version 4.2.0) + --- ### Some further information on directories (From [comment on issue 575](https://github.com/nunit/nunit3-vs-adapter/issues/575#issuecomment-445786421) by [Charlie](https://github.com/CharliePoole) ) From 58aaf414707999a9e46cbb347d6182cd47a6f97d Mon Sep 17 00:00:00 2001 From: Terje Sandstrom Date: Sun, 26 Dec 2021 20:44:19 +0100 Subject: [PATCH 059/596] more info in releasenotes for adapter --- docs/articles/vs-test-adapter/AdapterV4-Release-Notes.md | 1 + docs/articles/vs-test-adapter/Tips-And-Tricks.md | 4 ++-- 2 files changed, 3 insertions(+), 2 deletions(-) diff --git a/docs/articles/vs-test-adapter/AdapterV4-Release-Notes.md b/docs/articles/vs-test-adapter/AdapterV4-Release-Notes.md index ee1a27269..61a961594 100644 --- a/docs/articles/vs-test-adapter/AdapterV4-Release-Notes.md +++ b/docs/articles/vs-test-adapter/AdapterV4-Release-Notes.md @@ -8,6 +8,7 @@ This is a bug fix release, with the following fixes: * [912](https://github.com/nunit/nunit3-vs-adapter/issues/912) Explicit runs when using NUnit-filters 'cat!=FOO' * [914](https://github.com/nunit/nunit3-vs-adapter/issues/914) AddTestAttachment does not work anymore in VS2022 * [918](https://github.com/nunit/nunit3-vs-adapter/issues/918) New DiscoveryMode doesn't play nicely with TestFixtureSource - Missing GenericFixture +* [919](https://github.com/nunit/nunit3-vs-adapter/issues/919) VSTest test case filter does not work with parenthesis * [929](https://github.com/nunit/nunit3-vs-adapter/issues/929) Lots of warnings logged when filter matches no tests 'cat=BAZ', including other issues in the same. Thanks to [@runehalfdan](https://github.com/runehalfdan) for a lot of help reproducing and verifying these issues. Fixing this also improved performance, and cleared out issues with Explicit tests. * [934](https://github.com/nunit/nunit3-vs-adapter/issues/934) Console output no longer output by dotnet test -v n. diff --git a/docs/articles/vs-test-adapter/Tips-And-Tricks.md b/docs/articles/vs-test-adapter/Tips-And-Tricks.md index 1a5976870..2d532b681 100644 --- a/docs/articles/vs-test-adapter/Tips-And-Tricks.md +++ b/docs/articles/vs-test-adapter/Tips-And-Tricks.md @@ -6,7 +6,7 @@ uid: tipsandtricks ## NUnit 3 -### VS Test .Runsettings configuration +### DotNet test and VS Test .Runsettings configuration Certain NUnit Test Adapter settings are configurable using a .runsettings file. The following options are available: @@ -32,7 +32,7 @@ The following options are available: |[Where](#where)|string| NUnit Filter expression| |[UseParentFQNForParametrizedTests](#useparentfqnforparametrizedtests)|bool|Enable parent as FQN for parametrized tests|false| |[UseNUnitIdforTestCaseId](#usenunitidfortestcaseid) |bool|Uses NUnit test id as VSTest Testcase Id, instead of FullyQualifiedName|false| -|[ConsoleOut](#consoleout)|int|Sends standard console output to the output window|1| +|[ConsoleOut](#consoleout)|int|Sends standard console output to the output window|2| |[UseTestNameInConsoleOutput](#usetestnameinconsoleoutput)|bool|Adds name of test as a prefix in the output window for console output|true| |[StopOnError](#stoponerror)|bool|Stops on first error|false| |[SkipNonTestAssemblies](#skipnontestassemblies)|bool|Adapter supports NonTestAssemblyAttribute|true| From d4ce00f44b9a9005922841d4baf02ee3f96cebd8 Mon Sep 17 00:00:00 2001 From: Terje Sandstrom Date: Mon, 27 Dec 2021 20:31:15 +0100 Subject: [PATCH 060/596] Update docs/articles/vs-test-adapter/AdapterV4-Release-Notes.md Co-authored-by: Sean Killeen --- docs/articles/vs-test-adapter/AdapterV4-Release-Notes.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/articles/vs-test-adapter/AdapterV4-Release-Notes.md b/docs/articles/vs-test-adapter/AdapterV4-Release-Notes.md index 61a961594..ed7946f67 100644 --- a/docs/articles/vs-test-adapter/AdapterV4-Release-Notes.md +++ b/docs/articles/vs-test-adapter/AdapterV4-Release-Notes.md @@ -8,7 +8,7 @@ This is a bug fix release, with the following fixes: * [912](https://github.com/nunit/nunit3-vs-adapter/issues/912) Explicit runs when using NUnit-filters 'cat!=FOO' * [914](https://github.com/nunit/nunit3-vs-adapter/issues/914) AddTestAttachment does not work anymore in VS2022 * [918](https://github.com/nunit/nunit3-vs-adapter/issues/918) New DiscoveryMode doesn't play nicely with TestFixtureSource - Missing GenericFixture -* [919](https://github.com/nunit/nunit3-vs-adapter/issues/919) VSTest test case filter does not work with parenthesis +* [919](https://github.com/nunit/nunit3-vs-adapter/issues/919) VSTest test case filter does not work with parentheses * [929](https://github.com/nunit/nunit3-vs-adapter/issues/929) Lots of warnings logged when filter matches no tests 'cat=BAZ', including other issues in the same. Thanks to [@runehalfdan](https://github.com/runehalfdan) for a lot of help reproducing and verifying these issues. Fixing this also improved performance, and cleared out issues with Explicit tests. * [934](https://github.com/nunit/nunit3-vs-adapter/issues/934) Console output no longer output by dotnet test -v n. From 3222e853415de6d8d7ebc9caa57e425731109808 Mon Sep 17 00:00:00 2001 From: Terje Sandstrom Date: Mon, 27 Dec 2021 20:34:32 +0100 Subject: [PATCH 061/596] fix comments --- docs/articles/vs-test-adapter/Tips-And-Tricks.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/articles/vs-test-adapter/Tips-And-Tricks.md b/docs/articles/vs-test-adapter/Tips-And-Tricks.md index 2d532b681..cca7718f2 100644 --- a/docs/articles/vs-test-adapter/Tips-And-Tricks.md +++ b/docs/articles/vs-test-adapter/Tips-And-Tricks.md @@ -6,7 +6,7 @@ uid: tipsandtricks ## NUnit 3 -### DotNet test and VS Test .Runsettings configuration +### DotNet test and VS Test `.runsettings` configuration Certain NUnit Test Adapter settings are configurable using a .runsettings file. The following options are available: From 25cc2cc3aa5d8514f2b59f2f741f8d63d06dd864 Mon Sep 17 00:00:00 2001 From: Terje Sandstrom Date: Tue, 28 Dec 2021 11:42:40 +0100 Subject: [PATCH 062/596] Update docs/articles/vs-test-adapter/Tips-And-Tricks.md Co-authored-by: Sean Killeen --- docs/articles/vs-test-adapter/Tips-And-Tricks.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/articles/vs-test-adapter/Tips-And-Tricks.md b/docs/articles/vs-test-adapter/Tips-And-Tricks.md index cca7718f2..18e74ff10 100644 --- a/docs/articles/vs-test-adapter/Tips-And-Tricks.md +++ b/docs/articles/vs-test-adapter/Tips-And-Tricks.md @@ -6,7 +6,7 @@ uid: tipsandtricks ## NUnit 3 -### DotNet test and VS Test `.runsettings` configuration +### `dotnet test` and VS Test `.runsettings` configuration Certain NUnit Test Adapter settings are configurable using a .runsettings file. The following options are available: From 2ab34fde1ee24cbfda5f7b75a1f0fb933087cffb Mon Sep 17 00:00:00 2001 From: Ihor Sychevskyi Date: Thu, 6 Jan 2022 16:50:11 +0200 Subject: [PATCH 063/596] Accessibility - add lang to html (#624) * Accessibility - add lang to html * Add comment Co-authored-by: Sean Killeen --- docs/styles/main.js | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/docs/styles/main.js b/docs/styles/main.js index 444457f88..c84a5b90c 100644 --- a/docs/styles/main.js +++ b/docs/styles/main.js @@ -1,2 +1,6 @@ var currentYear= new Date().getFullYear(); -document.getElementById("currentYear").innerHTML = currentYear; \ No newline at end of file +document.getElementById("currentYear").innerHTML = currentYear; + +// NUnit docs adds the lang attribute ourselves for accessibility reasons, as docfx does not do this out of the box. +var htmlElement = document.querySelector("html"); +htmlElement.setAttribute("lang", "en"); \ No newline at end of file From 82dd69e966c5b23e3ec36867ac5546ac2c440ccd Mon Sep 17 00:00:00 2001 From: Sean Killeen Date: Thu, 20 Jan 2022 08:13:55 -0500 Subject: [PATCH 064/596] Use dockerfile from GitHub Container Registry (#628) --- .devcontainer/Dockerfile | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.devcontainer/Dockerfile b/.devcontainer/Dockerfile index 2d75550a3..59a93cca6 100644 --- a/.devcontainer/Dockerfile +++ b/.devcontainer/Dockerfile @@ -1,4 +1,4 @@ -FROM nunitdocs/docfx-action:v1.4.0 +FROM docker pull ghcr.io/nunit/docfx-action:master EXPOSE 8080 ### Installing Node into the container -- from https://github.com/nodejs/docker-node/tree/main/16/buster-slim From a27822cfe0b47ad9d9588de9df5e4865de4a13a0 Mon Sep 17 00:00:00 2001 From: Sean Killeen Date: Thu, 20 Jan 2022 08:15:04 -0500 Subject: [PATCH 065/596] Oops -- incorrect image source Follow-up to #628 --- .devcontainer/Dockerfile | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.devcontainer/Dockerfile b/.devcontainer/Dockerfile index 59a93cca6..7409c3ad5 100644 --- a/.devcontainer/Dockerfile +++ b/.devcontainer/Dockerfile @@ -1,4 +1,4 @@ -FROM docker pull ghcr.io/nunit/docfx-action:master +FROM ghcr.io/nunit/docfx-action:master EXPOSE 8080 ### Installing Node into the container -- from https://github.com/nodejs/docker-node/tree/main/16/buster-slim From 33fb7eff4f5cf249a6b4107b32f1c8221e453463 Mon Sep 17 00:00:00 2001 From: Sean Killeen Date: Thu, 20 Jan 2022 08:25:04 -0500 Subject: [PATCH 066/596] Use backtick instead of quotes (#630) --- docs/articles/nunit/writing-tests/Randomizer-Methods.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/articles/nunit/writing-tests/Randomizer-Methods.md b/docs/articles/nunit/writing-tests/Randomizer-Methods.md index 9adb949b3..ce80f4d9b 100644 --- a/docs/articles/nunit/writing-tests/Randomizer-Methods.md +++ b/docs/articles/nunit/writing-tests/Randomizer-Methods.md @@ -194,7 +194,7 @@ Returns a random enum value of the type specified as an object, which the caller ### `GetString()` -Returns a random string of default length, composed using a default set of characters. In the current implementation, the default length is hard-coded as 25 and the default characters are "abcdefghijkmnopqrstuvwxyzABCDEFGHJKLMNOPQRSTUVWXYZ0123456789_". +Returns a random string of default length, composed using a default set of characters. In the current implementation, the default length is hard-coded as 25 and the default characters are `abcdefghijkmnopqrstuvwxyzABCDEFGHJKLMNOPQRSTUVWXYZ0123456789_`. ### `GetString(int length)` From 9fb9decd0eae10dd1561536077ff8a2ab84f5189 Mon Sep 17 00:00:00 2001 From: Ihor Sychevskyi Date: Thu, 20 Jan 2022 15:34:49 +0200 Subject: [PATCH 067/596] fix legacy pages (#626) * Update the Copyright (#552) * Update copyright for the NUnit Framework project * Update the framework packaging instructions * NUnitLite doesn't support XSLT transforms (#553) * fix legacy pages * fix legacy pages Co-authored-by: Rob Prouse Co-authored-by: Chris Maddock Co-authored-by: Sean Killeen --- docs/docfx.json | 2 ++ docs/legacy/2.2.1/assertions.html | 8 ++++---- docs/legacy/2.2.1/attributes.html | 2 +- docs/legacy/2.2.1/category.html | 8 ++++---- docs/legacy/2.2.1/comparisonAsserts.html | 8 ++++---- docs/legacy/2.2.1/conditionAsserts.html | 8 ++++---- docs/legacy/2.2.1/configEditor.html | 8 ++++---- docs/legacy/2.2.1/configFiles.html | 8 ++++---- docs/legacy/2.2.1/consoleCommandLine.html | 8 ++++---- docs/legacy/2.2.1/contextMenu.html | 8 ++++---- docs/legacy/2.2.1/docHome.html | 8 ++++---- docs/legacy/2.2.1/exception.html | 8 ++++---- docs/legacy/2.2.1/explicit.html | 8 ++++---- docs/legacy/2.2.1/features.html | 8 ++++---- docs/legacy/2.2.1/fixtureSetup.html | 8 ++++---- docs/legacy/2.2.1/fixtureTeardown.html | 8 ++++---- docs/legacy/2.2.1/getStarted.html | 8 ++++---- docs/legacy/2.2.1/guiCommandLine.html | 2 +- docs/legacy/2.2.1/ignore.html | 8 ++++---- docs/legacy/2.2.1/installation.html | 8 ++++---- docs/legacy/2.2.1/license.html | 8 ++++---- docs/legacy/2.2.1/mainMenu.html | 8 ++++---- docs/legacy/2.2.1/multiAssembly.html | 8 ++++---- docs/legacy/2.2.1/nunit-console.html | 8 ++++---- docs/legacy/2.2.1/nunit-gui.html | 8 ++++---- docs/legacy/2.2.1/optionsDialog.html | 8 ++++---- docs/legacy/2.2.1/projectEditor.html | 8 ++++---- docs/legacy/2.2.1/quickStart.html | 2 +- docs/legacy/2.2.1/quickStartSource.html | 8 ++++---- docs/legacy/2.2.1/releaseNotes.html | 8 ++++---- docs/legacy/2.2.1/samples.html | 8 ++++---- docs/legacy/2.2.1/setup.html | 8 ++++---- docs/legacy/2.2.1/suite.html | 8 ++++---- docs/legacy/2.2.1/teardown.html | 8 ++++---- docs/legacy/2.2.1/test.html | 8 ++++---- docs/legacy/2.2.1/testFixture.html | 8 ++++---- docs/legacy/2.2.1/testProperties.html | 8 ++++---- docs/legacy/2.2.1/upgrade.html | 2 +- docs/legacy/2.2.1/utilityAsserts.html | 8 ++++---- docs/legacy/2.2.1/vsSupport.html | 8 ++++---- docs/legacy/2.2.2/assertions.html | 8 ++++---- docs/legacy/2.2.2/attributes.html | 8 ++++---- docs/legacy/2.2.2/category.html | 8 ++++---- docs/legacy/2.2.2/comparisonAsserts.html | 8 ++++---- docs/legacy/2.2.2/conditionAsserts.html | 8 ++++---- docs/legacy/2.2.2/configEditor.html | 8 ++++---- docs/legacy/2.2.2/configFiles.html | 8 ++++---- docs/legacy/2.2.2/consoleCommandLine.html | 8 ++++---- docs/legacy/2.2.2/contextMenu.html | 8 ++++---- docs/legacy/2.2.2/docHome.html | 8 ++++---- docs/legacy/2.2.2/exception.html | 8 ++++---- docs/legacy/2.2.2/explicit.html | 8 ++++---- docs/legacy/2.2.2/features.html | 8 ++++---- docs/legacy/2.2.2/fixtureSetup.html | 8 ++++---- docs/legacy/2.2.2/fixtureTeardown.html | 8 ++++---- docs/legacy/2.2.2/getStarted.html | 8 ++++---- docs/legacy/2.2.2/guiCommandLine.html | 8 ++++---- docs/legacy/2.2.2/ignore.html | 8 ++++---- docs/legacy/2.2.2/installation.html | 8 ++++---- docs/legacy/2.2.2/license.html | 8 ++++---- docs/legacy/2.2.2/mainMenu.html | 8 ++++---- docs/legacy/2.2.2/multiAssembly.html | 8 ++++---- docs/legacy/2.2.2/nunit-console.html | 8 ++++---- docs/legacy/2.2.2/nunit-gui.html | 8 ++++---- docs/legacy/2.2.2/optionsDialog.html | 8 ++++---- docs/legacy/2.2.2/platform.html | 8 ++++---- docs/legacy/2.2.2/projectEditor.html | 8 ++++---- docs/legacy/2.2.2/quickStart.html | 8 ++++---- docs/legacy/2.2.2/quickStartSource.html | 8 ++++---- docs/legacy/2.2.2/releaseNotes.html | 8 ++++---- docs/legacy/2.2.2/samples.html | 8 ++++---- docs/legacy/2.2.2/setup.html | 8 ++++---- docs/legacy/2.2.2/stringAssert.html | 8 ++++---- docs/legacy/2.2.2/suite.html | 8 ++++---- docs/legacy/2.2.2/teardown.html | 8 ++++---- docs/legacy/2.2.2/test.html | 8 ++++---- docs/legacy/2.2.2/testFixture.html | 8 ++++---- docs/legacy/2.2.2/testProperties.html | 8 ++++---- docs/legacy/2.2.2/upgrade.html | 8 ++++---- docs/legacy/2.2.2/utilityAsserts.html | 8 ++++---- docs/legacy/2.2.2/vsSupport.html | 8 ++++---- docs/legacy/2.2/assertions.html | 8 ++++---- docs/legacy/2.2/attributes.html | 6 +++--- docs/legacy/2.2/category.html | 8 ++++---- docs/legacy/2.2/comparisonAsserts.html | 8 ++++---- docs/legacy/2.2/conditionAsserts.html | 8 ++++---- docs/legacy/2.2/configEditor.html | 8 ++++---- docs/legacy/2.2/configFiles.html | 8 ++++---- docs/legacy/2.2/consoleCommandLine.html | 8 ++++---- docs/legacy/2.2/contextMenu.html | 8 ++++---- docs/legacy/2.2/docHome.html | 8 ++++---- docs/legacy/2.2/exception.html | 8 ++++---- docs/legacy/2.2/explicit.html | 2 +- docs/legacy/2.2/features.html | 8 ++++---- docs/legacy/2.2/fixtureSetup.html | 8 ++++---- docs/legacy/2.2/fixtureTeardown.html | 8 ++++---- docs/legacy/2.2/getStarted.html | 8 ++++---- docs/legacy/2.2/guiCommandLine.html | 8 ++++---- docs/legacy/2.2/ignore.html | 8 ++++---- docs/legacy/2.2/installation.html | 8 ++++---- docs/legacy/2.2/license.html | 8 ++++---- docs/legacy/2.2/mainMenu.html | 8 ++++---- docs/legacy/2.2/multiAssembly.html | 8 ++++---- docs/legacy/2.2/nunit-console.html | 8 ++++---- docs/legacy/2.2/nunit-gui.html | 8 ++++---- docs/legacy/2.2/optionsDialog.html | 8 ++++---- docs/legacy/2.2/projectEditor.html | 8 ++++---- docs/legacy/2.2/quickStart.html | 2 +- docs/legacy/2.2/quickStartSource.html | 8 ++++---- docs/legacy/2.2/releaseNotes.html | 8 ++++---- docs/legacy/2.2/samples.html | 2 +- docs/legacy/2.2/setup.html | 8 ++++---- docs/legacy/2.2/suite.html | 8 ++++---- docs/legacy/2.2/teardown.html | 8 ++++---- docs/legacy/2.2/test.html | 8 ++++---- docs/legacy/2.2/testFixture.html | 8 ++++---- docs/legacy/2.2/testProperties.html | 8 ++++---- docs/legacy/2.2/upgrade.html | 8 ++++---- docs/legacy/2.2/utilityAsserts.html | 8 ++++---- docs/legacy/2.2/vsSupport.html | 8 ++++---- 120 files changed, 456 insertions(+), 454 deletions(-) diff --git a/docs/docfx.json b/docs/docfx.json index 89d9bb73b..2cd0a3e29 100644 --- a/docs/docfx.json +++ b/docs/docfx.json @@ -18,6 +18,8 @@ "images/**", "favicons/**", "styles/*.js", + "css/**", + "js/**", "robots.txt", "articles/vs-test-adapter/Adapter-Release-Notes.html" ] diff --git a/docs/legacy/2.2.1/assertions.html b/docs/legacy/2.2.1/assertions.html index 06d2d119a..9edd2cdb2 100644 --- a/docs/legacy/2.2.1/assertions.html +++ b/docs/legacy/2.2.1/assertions.html @@ -9,7 +9,7 @@ NUnit.org - + @@ -116,8 +116,8 @@

Assertions

- - + +