profile
viewpoint

plioi/platform-compat 0

Roslyn analyzer that finds usages of APIs that will throw PlatformNotSupportedException on certain platforms.

push eventfixie/fixie

Patrick Lioi

commit sha 730626a6009dce96415b9357241fd35314658fec

Simplify command line argument passing between `dotnet fixie` and the test assembly, by no longer treating the Report option as an explicit command line parameter to the secondary process. Instead, we pass this value via an environment variable similar to all other conditionally applied listeners.

view details

Patrick Lioi

commit sha ad55f3fc5438ecddaa7715a7d9db7f1b86173d3b

The Fixie project no longer references the Fixie.Cli shared source project, since it no longer uses anything of value in it.

view details

push time in a day

push eventfixie/fixie

Patrick Lioi

commit sha f54549f45c9632f0729c4cbc7f75684991032b20

Command line argument parsing supports single letter abbreviations such as -c for --configuration, when there is an unambiguous single named argument starting with the given letter.

view details

Patrick Lioi

commit sha 7394090e5b2f52ee0b7ef4e8c8c79b2e9b1262b5

Remove support for collecting of unused command line parameters, since the feature only encouraged ambiguity. An unexpected argument strongly suggests the user has made a mistake and ought to know about it.

view details

Patrick Lioi

commit sha cf5ac312886daaea9176207717d6266ee29bd157

To enable end users to parse custom command line arguments however they see fit, such as with the library of their choice or when taking part in the IOptions<T> pattern, simply pass the custom arguments array to their convention rather than attempting to bind them to individual constructor arguments.

view details

Patrick Lioi

commit sha fee1463de18fdb5308bfa75bfb5292e5e65afcd0

Update command line usage text to include single letter shorthand.

view details

Patrick Lioi

commit sha b104a2ec2269e3d9e213c52f5c2f72d404ae0a12

Provide clear error messages for unexpected single letter command line arguments.

view details

push time in a day

issue closedfixie/fixie

IDE Support

I've read the documentation and it seems only Visual Studio is supported. Are there any plans to support other IDEs, in my case Jetbrains Rider?

Thanks :-)

(Apologies if this isn't the correct place to ask questions.)

closed time in 7 days

matthewblott

issue commentfixie/fixie

IDE Support

Thanks for the interest!

v3 is under development and part of our focus is on .NET 5, its cross-platform nature, and therefore naturally the ability to really use Fixie cross platform in the most common development environments (VS Code and Rider).

There is increasing hope that JetBrains has made this feasible. It would require a dedicated R#/Rider plug-in and all the dev and maintenance hours that implies, but their documentation makes it look like one can deal with the "impedence mismatch" between their existing test model and the model that Micrsoft's dotnet test uses behind the scenes. The plug-in apparently would focus on bridging that modeling gap. A colleague has expressed some interest in pursuing this, so I'd like to give that a little time before diving in myself.

I've updated the Roadmap to include this as it has been on my mind for the v3 time frame, which I hope arrives roughly around .NET 5. I'll close this Issue as a duplicate of the Roadmap item, but I welcome your input if there's anything further to discuss.

matthewblott

comment created time in 7 days

GollumEvent
GollumEvent

issue closedfixie/fixie

Parameterized Test Classes

Is there a way for me to configure Fixie to execute a test class multiple times only varying the parameters that get passed into the constructor? I see that I can use ClassExecution.UsingFactory to build the instance with custom parameters, but I would like to be able to vary those parameters and generate multiple instance per class test cases.

closed time in 7 days

roend83

issue commentfixie/fixie

Parameterized Test Classes

Closing as I believe this is possible in v2 now. Instead of calling the built-in TestClass.Construct() helper, you can construct the TestClass.Type however you like in the middle of an Execution implementation.

roend83

comment created time in 7 days

delete branch fixie/fixie

delete branch : generic-array-item-resolution

delete time in 9 days

push eventfixie/fixie

Patrick Lioi

commit sha 7fcaa7d4185c6f2190fb02d0a98dde98dc4a050a

GenericArgumentResolver can resolve array types, such as when passing new[ ] { 1 , 2 } to a generic test parameter declared as T[ ].

view details

Patrick Lioi

commit sha 8892e6dff3d097c05d42f5317b6b871e27033d4e

Merge pull request #226 from fixie/generic-array-item-resolution GenericArgumentResolver can resolve array types, such as when passing…

view details

push time in 9 days

PR merged fixie/fixie

GenericArgumentResolver can resolve array types, such as when passing…

This augments #225 to support resolving generic test method types involving arrays such as when passing new[ ] { 1 , 2 } into a generic test parameter declared as T[].

+32 -0

0 comment

2 changed files

plioi

pr closed time in 9 days

PR opened fixie/fixie

GenericArgumentResolver can resolve array types, such as when passing…

This augments #225 to support resolving generic test method types involving arrays such as when passing new[ ] { 1 , 2 } into a generic test parameter declared as T[].

+32 -0

0 comment

2 changed files

pr created time in 9 days

create barnchfixie/fixie

branch : generic-array-item-resolution

created branch time in 9 days

delete branch fixie/fixie

delete branch : generic-argument-resolution

delete time in 9 days

push eventfixie/fixie

Patrick Lioi

commit sha 5ef4935a18fdaf64620df62e6d7f57c3bbaa9916

When resolving generic type parameters, bail out early for the ambiguous case of a user passing in an invalid number of arguments to the method in question.

view details

Patrick Lioi

commit sha 7efb26701283f4f7b9c400cd2d8a267e8543b90c

Rename `parameter` to `argument` to better distinguish parameters (compile time declarations) from arguments (run time values).

view details

Patrick Lioi

commit sha 60253d3f3e237e433e25b366151f45f9c409f502

Generic method type parameter resolution recursively considers complex generic types in order to infer the most reasonable type mappings, and to provide failure messages more in line with the equivalent compile-time type mismatches.

view details

Patrick Lioi

commit sha acfa6f3ddb69956dad9a0cf9b92e467586ae0436

Instead of resolving generic type parameters as Object when ambiguous, treat them as unresolvable, so that the user gets an idiomatic failure at invocation time.

view details

Patrick Lioi

commit sha 57eb6ec8890f3bfef8101f61100fe4adcdbec01f

Merge pull request #225 from fixie/generic-argument-resolution Improve Generic Type Argument Resolution

view details

push time in 9 days

PR merged fixie/fixie

Improve Generic Type Argument Resolution

Fixie has always supported parameterized test methods, including generic test methods. To make sense of such a generic method invocation, Fixie has to figure out what concrete types replace the generic type argumets in each invocation, comparable to the type checking that would normally happen by the compiler at runtime.

For instance, given a generic test method and some presumed attribute-based ParameterSource:

[Input(1, "A")]
[Input("B", 'C')]
public void GenericTest<T1, T2>(T1 x, T2 y) { ... }

Fixie has to nail down the meaning of T1 and T2 once for each of the two sets of inputs. In the first invocation of the test, T1 is int and T2 is string. In the second T1 is string and T2 is char.

In Fixie v1 and v2, though, the attempts to nail down each type parameter were naive. There were plenty of realistic scenarios where we'd fail to determine a useful concrete type for each generic placeholder. We would smooth over those cases by assuming object as the concrete type, which allowed for the test to be invoked, and likely fail with a relatively useful error message about type mismatches. This is less than satisfying, mostly because it goes against idiomatic C#: rarely would you ever explicitly place object in the type parameters of a method call yourself: SomeGenericMethod<object>(...).

Additionally, we would fail to inspect "deeply" when the declared parameters contained the generic placeholders: public void GenericTest<T1>(List<T1> items) { ... } would resolve T1 to object, even if the parameter value at runtime was known to be something more specific such as a List<string>. Again, the result goes against idiomatic C#: the compiler would have no trouble recognizing T1 as string when calling GenericTest(new List<string>()).

This PR reimplements the type resolution process from scratch. It considers the recursive nature of comparing types like Dictionary<T1, List<T2>> against Dictionary<string, List<int>> to resolve type parameters, and it deliberately leaves the type parameters entirely unresolved when any of them remain ambiguous, so that we can ultimately allow MethodInfo.Invoke(...) to provide the most useful ambiguity error message to the user.

+228 -106

0 comment

5 changed files

plioi

pr closed time in 9 days

PR opened fixie/fixie

Improve Generic Type Argument Resolution

Fixie has always supported parameterized test methods, including generic test methods. To make sense of such a generic method invocation, Fixie has to figure out what concrete types replace the generic type argumets in each invocation, comparable to the type checking that would normally happen by the compiler at runtime.

For instance, given a generic test method and some presumed attribute-based ParameterSource:

[Input(1, "A")]
[Input("B", 'C')]
public void GenericTest<T1, T2>(T1 x, T2 y) { ... }

Fixie has to nail down the meaning of T1 and T2 once for each of the two sets of inputs. In the first invocation of the test, T1 is int and T2 is string. In the second T1 is string and T2 is char.

In Fixie v1 and v2, though, the attempts to nail down each type parameter were naive. There were plenty of realistic scenarios where we'd fail to determine a useful concrete type for each generic placeholder. We would smooth over those cases by assuming object as the concrete type, which allowed for the test to be invoked, and likely fail with a relatively useful error message about type mismatches. This is less than satisfying, mostly because it goes against idiomatic C#: rarely would you ever explicitly place object in the type parameters of a method call yourself: SomeGenericMethod<object>(...).

Additionally, we would fail to inspect "deeply" when the declared parameters contained the generic placeholders: public void GenericTest<T1>(List<T1> items) { ... } would resolve T1 to object, even if the parameter value at runtime was known to be something more specific such as a List<string>. Again, the result goes against idiomatic C#: the compiler would have no trouble recognizing T1 as string when calling GenericTest(new List<string>()).

This PR reimplements the type resolution process from scratch. It considers the recursive nature of comparing types like Dictionary<T1, List<T2>> against Dictionary<string, List<int>> to resolve type parameters, and it deliberately leaves the type parameters entirely unresolved when any of them remain ambiguous, so that we can ultimately allow MethodInfo.Invoke(...) to provide the most useful ambiguity error message to the user.

+228 -106

0 comment

5 changed files

pr created time in 9 days

push eventfixie/fixie

Patrick Lioi

commit sha acfa6f3ddb69956dad9a0cf9b92e467586ae0436

Instead of resolving generic type parameters as Object when ambiguous, treat them as unresolvable, so that the user gets an idiomatic failure at invocation time.

view details

push time in 9 days

push eventfixie/fixie

Patrick Lioi

commit sha 88bc966925eca1b69e94587f09d2ef83ea3efbf6

Instead of resolving generic type parameters as Object when ambiguous, treat them as unresolvable, so that the user gets an idiomatic failure at invocation time.

view details

push time in 9 days

create barnchfixie/fixie

branch : generic-argument-resolution

created branch time in 9 days

push eventfixie/fixie

Patrick Lioi

commit sha 475cb1410b3ee61ae13ea5ea5952bf36bec8bc71

Improve the run time and memory footprint performance of SourceLocationProvider by switching Mono.Cecil usage from InMemory to streaming, and by processing that stream in one pass to build a small cache containing only the data we then expect to look up.

view details

Patrick Lioi

commit sha 7a22c8a9095bae14b27ff0e098cd4e82a8cbe6a3

Merge pull request #224 from fixie/source-location-provider Minimize overhead in reporting test method line numbers to Test Explorer

view details

push time in 9 days

delete branch fixie/fixie

delete branch : source-location-provider

delete time in 9 days

PR merged fixie/fixie

Minimize overhead in reporting test method line numbers to Test Explorer

SourceLocationProvider determines the declaration line number of test methods, which is reported to Test Explorer during the Discovery phase. This metadata enables 2 Test Explorer features: double clicking a test in the tree to jump to the test's implementation, and right-clicking a test to run it explicitly. SourceLocationProvider works by using the Mono.Cecil library to inspect assembly metadata.

In #166, we upgraded Mono.Cecil for .NET Core and VS2017 era PDB formats. That Mono.Cecil version bump included a breaking change in support of streaming metadata from large assembly files more efficiently, and one of their types became disposable. At the time we elected not to dispose of it, because doing so was proving difficult at the time and because thankfully they exposed a flag that lets you "preserve the old bheavior" safely even when not disposing (see http://cecil.pe/post/149243207656/mono-cecil-010-beta-1). So, we were not disposing of the newly disposable ModuleDefinition type, but we were in fact safe from shedding open file handles. This meant, though, that we were not benefitting from Mono.Cecil's own performance enhancement.

This PR completes the intended upgrade to benefit fully from Mono.Cecil's intended usage: dispose of its assembly-streaming ModuleDefinition type, and disabling the InMemory flag which had only been enabled to account for the lack of disposal. Doing so requires that we perform all of our Mono.Cecil interactions within the scope of that disposable object, though, which forced a rewrite of SourceLocationProvider's metadata caching.

Previously the cache was naive, holding onto Mono.Cecil types for the whole Discovery phase and repeatedly performing laborious array-walking lookups for each test in question. Disposing of the ModuleDefinition forced our cache to no longer hold long-lived Mono.Cecil types, which forced us to do a better job of caching the meaningful line number data for each method. The resulting cache is now much smaller and provides much faster lookups throughout the Discovery phase.

The net effect is that the Discovery phase for very large test projects will run faster and with less memory overhead.

+34 -22

0 comment

1 changed file

plioi

pr closed time in 9 days

PR opened fixie/fixie

Minimize overhead in reporting test method line numbers to Test Explorer

SourceLocationProvider determines the declaration line number of test methods, which is reported to Test Explorer during the Discovery phase. This metadata enables 2 Test Explorer features: double clicking a test in the tree to jump to the test's implementation, and right-clicking a test to run it explicitly. SourceLocationProvider works by using the Mono.Cecil library to inspect assembly metadata.

In #166, we upgraded Mono.Cecil for .NET Core and VS2017 era PDB formats. That Mono.Cecil version bump included a breaking change in support of streaming metadata from large assembly files more efficiently, and one of their types became disposable. At the time we elected not to dispose of it, because doing so was proving difficult at the time and because thankfully they exposed a flag that lets you "preserve the old bheavior" safely even when not disposing (see http://cecil.pe/post/149243207656/mono-cecil-010-beta-1). So, we were not disposing of the newly disposable ModuleDefinition type, but we were in fact safe from shedding open file handles. This meant, though, that we were not benefitting from Mono.Cecil's own performance enhancement.

This PR completes the intended upgrade to benefit fully from Mono.Cecil's intended usage: dispose of its assembly-streaming ModuleDefinition type, and disabling the InMemory flag which had only been enabled to account for the lack of disposal. Doing so requires that we perform all of our Mono.Cecil interactions within the scope of that disposable object, though, which forced a rewrite of SourceLocationProvider's metadata caching.

Previously the cache was naive, holding onto Mono.Cecil types for the whole Discovery phase and repeatedly performing laborious array-walking lookups for each test in question. Disposing of the ModuleDefinition forced our cache to no longer hold long-lived Mono.Cecil types, which forced us to do a better job of caching the meaningful line number data for each method. The resulting cache is now much smaller and provides much faster lookups throughout the Discovery phase.

The net effect is that the Discovery phase for very large test projects will run faster and with less memory overhead.

+34 -22

0 comment

1 changed file

pr created time in 9 days

delete branch fixie/fixie

delete branch : source-location-provider-efficiency

delete time in 9 days

create barnchfixie/fixie

branch : source-location-provider

created branch time in 9 days

push eventfixie/fixie

Patrick Lioi

commit sha 475cb1410b3ee61ae13ea5ea5952bf36bec8bc71

Improve the run time and memory footprint performance of SourceLocationProvider by switching Mono.Cecil usage from InMemory to streaming, and by processing that stream in one pass to build a small cache containing only the data we then expect to look up.

view details

push time in 9 days

issue openedmicrosoft/vstest

VsTest invokes the wrong ITestExecutor method when the user chooses to Run All

Description

Test adapters implement ITestExecutor, which has 2 overloads for the RunTests entry point method.

void RunTests(IEnumerable<string> sources, IRunContext runContext, IFrameworkHandle frameworkHandle)
void RunTests(IEnumerable<TestCase> tests, IRunContext runContext, IFrameworkHandle frameworkHandle)

The first is intended for "Run All", while the second is intended for when the user has selected a few specific tests to run.

At some point, VsTest stopped calling the first method for Run All, and treats all runs as if the user was selecting few tests to run. In the case of the user choosing to Run All, this amounts to the tests parameter containing an item for every single test in the assembly. This means that each test framework has to cross reference that list against their own internal reflection work in order to run tests.

This is at best a memory leak, and at worst a performance hit within each test framework, as a test project grows in size.

This also had the side effect of breaking NUnit: https://github.com/nunit/nunit3-vs-adapter/issues/658

Environment

Visual Studio Community 2019 v 16.5.4

created time in 9 days

create barnchfixie/fixie

branch : source-location-provider-efficiency

created branch time in 10 days

issue commentfixie/fixie

Custom listener - reporter

The open-ended nature of your description for th report does make me wonder whether the Listener pattern here would be good enough. I suggest you take a scan through the existing folder of *Listener classes to see what kinds of informatin they have available to them and what kinds of things they do as output.

Your screenshot example for instance might not fit here, mostly due to timing. The Handle(...) methods are called after things like a test completion takes place. Imagine a test is scripting out actions against a live browser window... the window would probably arleady be closed by the time the reporter was asked to record a test failure, and that point you'd really only have the test name/exception to work with.

To capture a screenshot, that might be more realistic in your subclass of Execution, which is really what will still be running while the (for example) browser window is still open and worthy of a screenshot.

skyflyer

comment created time in 11 days

issue commentfixie/fixie

Custom listener - reporter

This is a good idea, but not currently supported. I've been considering exposing this as a feature in Fixie 3, which is in the middle of development.

One risk is that as soon as this is public, the API involved needs to become highly stable so we don't break reporters with each release.

So that I can be sure to have a real world use case in mind, what would your reporter do, and which existing DefultExecutionListeners would you then want to suppress?

skyflyer

comment created time in 11 days

issue commentmicrosoft/vstest

Tests' build output for netcoreapp3+ mixes the system under test with VsTest implementation details.

Some of the implementation details in VsTest, as it prepares to ultimately invoke the test host, makes it look like the primary intended path is for the bin/ folder to NOT contain all these extra assemblies and support files, and that the mode everyone is experiencing was supposed to just be a fallback case.

plioi

comment created time in 12 days

Pull request review commentHeadspringLabs/building-the-better-way

Common Libraries Guidance

+---+layout: default+title: Entity Framework+parent: Libraries+grand_parent: Development Guidelines+nav_order: 5+---++# Entity Framework+{:.no_toc}++1. TOC+{:toc}++### **DO** favor EF Core over EF for new applications+{: .text-green-100 }+The EF project began on .NET Framework. The EF Core project began when .NET Core arrived, and can run on either .NET Framework or .NET Core. During 2019, EF will begin working on .NET Core as well. With .NET Framework reaching end of life in 2020 in favor of .NET Core, under the new brand “.NET 5”, that raises the question of which of these two frameworks is actually meant to survive in the long run, and therefore which we should choose for new projects.++Microsoft provides the following guidance: EF6 is a supported product, but they are not investing in new feature development. The goal of porting EF6 to run on .NET Core is merely to provide an easier path for legacy applications to migrate to .NET Core and .NET 5. EF Core is the modern alternative and first choice for new apps.++EF Core requires less customization for our typical naming conventions, performs no risky automatic migrations, and is overall a simpler framework to learn.++### **DO** `Include()` related entities purposely+{: .text-green-100 }+When you query from a `DbSet`, you have the opportunity to state which related entities should be included in the initial round trip:++```csharp+var details = context.OrderDetail+    .Include(x => x.Order)+    .Where(x => x.Order.PurchaseTime >= DateTime.Today)+    .OrderBy(x => x.Order.PurchaseTime)+    .ToArray();+```++We must call `Include()` with deliberate intent. Here, the call to `Include()` says, “We have every intention of accessing `details[n].Order` soon after this statement, so eagerly include those related entities in the single round trip to the database. Otherwise, we would be relying on lazy loading, and those `details[i].Order` accesses would each be a new query to the database.++We need to carefully consider calls to `Include()` on each query, with purpose. If we call `Include()` when we will not actually use that data, we have wasted resources fetching potentially far more data than we needed, and we have made our generated `SELECT` statement needlessly complex, which may impact SQL Server’s optimization efforts. If we fail to call `Include()` when we would benefit from it, we silently run into the “N+1” problem, meaning that the system is wastefully making many separate round trips to the database, resulting in poor performance.++### **DO NOT** share entities across multiple `DbContext`s+{: .text-red-300 }+We often have a single `DbContext` in play for a single web request. However, in tests and in long-running background processes, we are more likely to have multiple short-lived `DbContext` instances. As soon as there are multiple `DbContext`s near each other, we can very easily fall into traps as a consequence of sharing entity instances across those contexts.++One rule protects us: Entities must only be used in the `DbContext` they were queried through.++When we violate this rule, we can for instance cause unintended behavior, such as duplicate `INSERT`s or silently failing to perform an intended `UPDATE`. The second `DbContext` doesn’t recognize instances you fetched via the first `DbContext`, and cannot track new changes that were being tracked by the first. For a complete example of the problem in action, see [AttemptedChangeTrackingAcrossDbContexts()](https://bitbucket.org/headspring/headstart/src/1ac68ab3c09d02148d886593eb3e05fdd0832b38/src/16.%20ORMs/5.%20LeakyAbstractionTests.cs#lines-73)(_internal repository_) in the HeadStart solution.++In long-running processes, limit the scope and lifetime of entities fetched from a `DbContext`, so that you avoid accidentally using them in the wrong `DbContext` later.++In tests, follow the guidance in [Testing Standards](http://localhost:4000/development-guidelines/testing/) to avoid the need to manually deal with DbContexts directly.

Localhost link

william-ross

comment created time in 13 days

GollumEvent

delete branch fixie/fixie.demo

delete branch : upgrade-aspnet-core

delete time in 15 days

push eventfixie/fixie.demo

Patrick Lioi

commit sha e7bc96b1bc92e3a625ab04cff0385bfa0858032f

Rebuild the web application from the ASP.NET Core 3.1 template.

view details

Patrick Lioi

commit sha 66314f0c7c058e84962cdee0652e98e60e38e540

All projects target netcoreapp3.1

view details

Patrick Lioi

commit sha d58e679b21f535bfe3aa5b5f672835b407259ccd

Remove excess csproj details left over from the original net471 implementation.

view details

Patrick Lioi

commit sha fe3ddc978a6d77b869a2a9231c2ee929b0c5817d

Tests infer the user's diff tool from .gitconfig.

view details

Patrick Lioi

commit sha 7674b6e25b17a09395679e8b56568bbcddf6d015

Simplify the static Testing helper class by exercising the same Program.CreateHostBuilder(...) method as is used in the running application, rather than attempting to manually approximate that setup, including inclusion of possible command line arguments passed to the test run.

view details

Patrick Lioi

commit sha 44174578b87802c2951ab2db4b828f4eff771045

Tests have access to strongly typed IOptions<TOptions>.Value representing the same sources of settings as the system under test (appsettings.json, environment variables, command line arguments...). Since this can witness test runner command line arguments and naturally combine them with other settings like appsettings.json while accurately populating the TOptions model, this change proves that Fixie 3.x no longer has to provide custom command line argument parsing/binding of its own. Users are free to use any command line argument parsing approach they want to in addition to the IOptions pattern demonstrated here.

view details

Patrick Lioi

commit sha 017a10be6d323136aeeade9e3eac7c39a3ccd726

Restore protection from ever unintentionally deploying development environment settings.

view details

Patrick Lioi

commit sha aef7fde893188454a4f94c3678009a8c5f6a8e26

The build script targets netcoreapp3.1

view details

Patrick Lioi

commit sha 1a071f1c8541386e00a511d572901eafbee315d3

Merge branch 'upgrade-aspnet-core' into main

view details

push time in 15 days

push eventfixie/fixie.demo

Patrick Lioi

commit sha aef7fde893188454a4f94c3678009a8c5f6a8e26

The build script targets netcoreapp3.1

view details

push time in 15 days

push eventfixie/fixie.demo

Patrick Lioi

commit sha 017a10be6d323136aeeade9e3eac7c39a3ccd726

Restore protection from ever unintentionally deploying development environment settings.

view details

push time in 15 days

create barnchfixie/fixie.demo

branch : upgrade-aspnet-core

created branch time in 15 days

delete branch fixie/fixie

delete branch : simplify-build

delete time in 15 days

push eventfixie/fixie

Patrick Lioi

commit sha 7ad6f6dca4aadefa56fb9a3480fa6e0e0c88a78e

Phase out regeneration of attribution and copyright information.

view details

Patrick Lioi

commit sha ca158e16c8c8153379ef65cce8aea81d5e575714

Inline $configuration, which is always Release.

view details

Patrick Lioi

commit sha 863f651387e5454b80a636528486ceb8bd8fe508

The build script is not responsible for versioning assemblies.

view details

Patrick Lioi

commit sha b3374af5430a782a30c62bfa7daf02eb64808ef3

Simplify the `exec` build helper based on actual usages.

view details

Patrick Lioi

commit sha 8226823c4522aae9ce5055eda19d758fc79fc950

The build script no longer outputs the dotnet SDK version in use. See global.json for control over the SDK version.

view details

Patrick Lioi

commit sha 0f38761efcbdf2970668f589678e1c6704942d4f

Phase out needless complexity from the build script while still guaranteeing immediate with a nonzero exit code upon any failing powershell command or executable.

view details

Patrick Lioi

commit sha 47486e628ceee4a9cbdadf9137e2aef82e939f9d

`dotnet pack` commands explicit specify the output path.

view details

Patrick Lioi

commit sha dd5748b91efcdc51d7063d817b0f1e83026f3c3a

`dotnet pack` commands omit --no-restore as it is implied by --no-build.

view details

Patrick Lioi

commit sha b93988246edc921545e4a4ebfe8e2d1841affe79

Phase out irrelevant folder path resolution.

view details

Patrick Lioi

commit sha 571cef840b288ce0fbd18d9c813167b2f3d9aea7

All build script failures surface as an uncaught exception, so it is very clear at the command line that the build has failed.

view details

Patrick Lioi

commit sha d0db273214ac9602a6a5d04edd6549dcac889263

Rename the `dotnet pack` output folder from "packages" to "artifacts" to make it clear that it contains build outputs rather than packages to be consumed by the solution.

view details

Patrick Lioi

commit sha 487d2acf8b6128d602bc2c132b3fac1620d1c927

Removing AppVeyor and Azure DevOps builds in favor of GitHub Actions.

view details

Patrick Lioi

commit sha d560cc9b3c0734ed2dff5fd1e06989476e3adde7

Official builds run on ubuntu-latest.

view details

Patrick Lioi

commit sha a4a92bf4efe26566a4f1b080bbd05ca4c28c8065

.gitignore the build output "artifacts" folder.

view details

Patrick Lioi

commit sha a8297a16af6738de94876dfcb5496a89ceb88d24

Install MinVer in all NuGet-packaged projects. These were installed via the Visual Studio UI to ensure that the special PrivateAssets and IncludeAssets values could be set automatically.

view details

Patrick Lioi

commit sha 305d4272ae55e614c8d125cfe519de7aeed5e125

Ensure that the MinVer-calculated PackageVersion works for Fixie.TestAdapter, which still uses a NuSpec.

view details

Patrick Lioi

commit sha cd9b0fd513f32e11da4bedb17e9ea62b85e77386

Rename 'main' GitHub Actions workflow to 'ci'.

view details

Patrick Lioi

commit sha 9aa1cb0fca3b942d3185f7265710be12f9cbd19f

Establish the start of the 3.x line of NuGet packages.

view details

Patrick Lioi

commit sha 319306225ad9ed7fa6bc85a4035bf183909faad6

Set user-facing names for each Step in the CI GitHub Actions workflow.

view details

Patrick Lioi

commit sha a377e592d57eb9077ff7732d86d959bf73e79fc5

Allow CI builds to produce the intended MinVer-calculated version number.

view details

push time in 15 days

PR merged fixie/fixie

Simplify build and release process using MinVer

In the past, versioning NuGet packages and publishing releases to NuGet was a highly manual process. The developer would update the build script to respect SemVer, run it passing in an intended prerelease counter if necessary, and then manually invoke pushes to NuGet. They would then have to remember to tag the commit with the same version number.

Using MinVer, we automate calculation and application of version numbers to NuGet packages. GitHub Actions is then configured so that whenever a version number tag is pushed, it triggers a corresponding build / version / package / push to NuGet.org.

+70 -169

0 comment

14 changed files

plioi

pr closed time in 15 days

push eventfixie/fixie

Patrick Lioi

commit sha b85b1b7c2606932dd1b3cfbbbd8b59476b576036

Automated releases access the NuGet API key from the corresponding secret.

view details

push time in 15 days

push eventfixie/fixie

Patrick Lioi

commit sha 32f3f3899e1a01ddc4fdf757014968e3d24895f5

Avoid provoking two redundant builds on every PR push, removing the one which gets an invalid package version calculation.

view details

push time in 15 days

push eventfixie/fixie

Patrick Lioi

commit sha c34693ddb6e9f76b27a94d8181d526fd90405d02

Release to NuGet whenever a version number tag is pushed.

view details

push time in 15 days

push eventfixie/fixie

Patrick Lioi

commit sha a377e592d57eb9077ff7732d86d959bf73e79fc5

Allow CI builds to produce the intended MinVer-calculated version number.

view details

Patrick Lioi

commit sha 45460dfc254a1a3a0304271fb8653d1a4913f42f

Release to NuGet whenever a version number tag is pushed.

view details

push time in 15 days

PR closed fixie/fixie

[WIP] Allow constructors to be parameterized like method calls

A very rough, but POC showing how code like the following could be used

class CtorClass
{
    [Input(50, "abc")]
    [Input(100, "def")]
    public ParameterizedTestClassWithParameterizedConstructorTestClass(int a, string b)
    {
    }

    public void ZeroArgs() { }

    public void IntArg(int i)
    {
        if (i != 0)
        throw new Exception("Expected 0, but was " + i);
    }

    [Input(1, 1, 2)]
    [Input(1, 2, 3)]
    [Input(5, 5, 11)]
    public void MultipleCasesFromAttributes(int a, int b, int expectedSum)
    {
        if (a + b != expectedSum)
            throw new Exception($"Expected sum of {expectedSum} but was {a + b}.");
    }
}

Which would produce the following result:

CtorClass(50, "abc").IntArg(0) passed,
CtorClass(50, "abc").MultipleCasesFromAttributes(1, 1, 2) passed,
CtorClass(50, "abc").MultipleCasesFromAttributes(1, 2, 3) passed,
CtorClass(50, "abc").MultipleCasesFromAttributes(5, 5, 11) failed: Expected sum of 11 but was 10.,
CtorClass(50, "abc").ZeroArgs passed,
CtorClass(100, "def").IntArg(0) passed,
CtorClass(100, "def").MultipleCasesFromAttributes(1, 1, 2) passed,
CtorClass(100, "def").MultipleCasesFromAttributes(1, 2, 3) passed,
CtorClass(100, "def").MultipleCasesFromAttributes(5, 5, 11) failed: Expected sum of 11 but was 10.,
CtorClass(100, "def").ZeroArgs passed
+266 -97

0 comment

13 changed files

Meberem

pr closed time in 15 days

delete branch fixie/fixie

delete branch : develop

delete time in 15 days

push eventfixie/fixie

Patrick Lioi

commit sha 319306225ad9ed7fa6bc85a4035bf183909faad6

Set user-facing names for each Step in the CI GitHub Actions workflow.

view details

push time in 15 days

push eventfixie/fixie

Patrick Lioi

commit sha 1a9df23d67b1da631fd60c99899bb54a58fc9c21

Experiment

view details

push time in 15 days

push eventfixie/fixie

Patrick Lioi

commit sha f96c9264f5961daade4c572e0d5a995732c31951

Experiment

view details

push time in 15 days

push eventfixie/fixie

Patrick Lioi

commit sha fd94314d25b7bd3b9112985965be9f39190c022e

Perform GitHub Artifacts pushes using nuget.config.

view details

push time in 15 days

push eventfixie/fixie

Patrick Lioi

commit sha 296364cf5d53d9ead2087b4aadfc51245b6f70d8

Set user-facing names for each Step in the CI GitHub Actions workflow.

view details

Patrick Lioi

commit sha 47f9545e9790439c1061c357c5ebee993853a0fb

Perform GitHub Artifacts pushes using nuget.config.

view details

push time in 15 days

PR opened fixie/fixie

Simplify build
+66 -169

0 comment

13 changed files

pr created time in 15 days

PR closed fixie/fixie

Simplify build

(Testing GitHub Actions defintion)

+66 -169

0 comment

13 changed files

plioi

pr closed time in 15 days

PR opened fixie/fixie

Simplify build

(Testing GitHub Actions defintion)

+66 -169

0 comment

13 changed files

pr created time in 15 days

push eventfixie/fixie

Patrick Lioi

commit sha 9aa1cb0fca3b942d3185f7265710be12f9cbd19f

Establish the start of the 3.x line of NuGet packages.

view details

Patrick Lioi

commit sha 356a9781f00f2e0a325cf6c127b712980d6e2436

The 'pr' GitHub Actions workflow pushes developer builds of the NuGet packages to the GitHub Packages feed for end-to-end testing.

view details

push time in 15 days

push eventfixie/fixie

Patrick Lioi

commit sha 2f56974229fd231fb95ba1d9dac2ea0d0afb4ce7

Establish the start of the 3.x line of NuGet packages.

view details

push time in 15 days

push eventfixie/fixie

Patrick Lioi

commit sha b01823c62781e661952518d443af4487e3b91044

Bump active development version to 3.0.0 beta.

view details

Patrick Lioi

commit sha 4e6c225182cd636fc57c65c5f5ceb6718baed44a

Revise misleading comments. Fixie's Azure DevOps support is handled by the AzureListener in effect during normal console test runs, not by the Test Adapter. The Test Adapter is only used by `dotnet test` and Visual Studio Test Explorer.

view details

Patrick Lioi

commit sha 4bcc1d045e3f9b45ff2bca869d9954e06e367ab8

Remove support for the TestDriven.NET Visual Studio plugin, because it does not support custom test frameworks like Fixie on .NET Core.

view details

Patrick Lioi

commit sha 43af3392d6a91e2d29cd068b276cd455c5424ea9

Remove support for the net452 target framework.

view details

Patrick Lioi

commit sha 9fd3837746af38a311ce28e61152e41f0e5c2d68

Remove support for the netcoreapp2.0 target framework.

view details

Patrick Lioi

commit sha c725d5093753a20df1976ed6e9da4310df2f0fad

Simplify top level property declarations in csproj files, now that there is no remaining conditional logic forcing separate property groups.

view details

Patrick Lioi

commit sha b34ab940ee56bee626266e9eceed0523623cb6ee

Simplify TestAssembly.Start(...) now that its `executable` argument is always the constant "dotnet".

view details

Patrick Lioi

commit sha cd133027bafbf8001fa373f1816a855a482d3d1a

Phase out obsolete method ReflectionHelper.IsInNamespace now that it is only used by a test.

view details

Patrick Lioi

commit sha be009dafb850402b83c64eacb3a3644b4adf009b

Remove obsolete entry point methods on Runner now that they are no longer used.

view details

Patrick Lioi

commit sha fca54270231228ffcaed5949d4c35593daaeff74

Simplify comment now that the corresponding behavior is consistent for all supported target frameworks.

view details

Patrick Lioi

commit sha 4cda749268df7fab847753430e3d3fc1b81f374e

Remove dead code.

view details

Patrick Lioi

commit sha 78f207d9c4763862773b21bce0bc134346e48a5c

Simplify custom exception type now that its explicitly defined ToString() is redundant. On previously-supported frameworks, this override was necessary for the stub stack trace to appear in string representations.

view details

Patrick Lioi

commit sha e7b7c88a17d986f2a9c63617f0803359c07be23d

Use singular <TargetFramework> where applicable.

view details

Patrick Lioi

commit sha fe791961c16b079b3d061a6c6c854b70562d34df

Simplify params argument now that it is only ever given a single item, the test `assemblyPath`.

view details

Patrick Lioi

commit sha 906087826b3280ab07be08f0a7ef092bab823640

Merge pull request #212 from fixie/remove-net4x-netcoreapp2-support Remove .NET Framework and .NET Core 2.x Support

view details

Patrick Lioi

commit sha 42a035141704738023f4e8282cdaecb4e745156b

Update .gitattributes to describe all current file types.

view details

Patrick Lioi

commit sha ab4bc1468bc7e9bf688c9957e9806d4fc574c2b7

Inline and rename the misleading IsAsync() method. It is no longer recommended for use by consumers, and has only one internal usage. Rather than telling whether or not a method has async semantics, it merely determines whether a method was declared with the `async` keyword in the detection of unsupported declaration `async void ...`.

view details

Patrick Lioi

commit sha 88aef7d64ec7febf86f3bca6de3ba0ef4f1be192

Remove unused overload.

view details

Patrick Lioi

commit sha 4da2f3e19b52acd05ff06b326b2f2b22334d363e

Trivial edit to .gitignore for consistency.

view details

Patrick Lioi

commit sha caa1e1f52a6ef67956905e17e2e9424789ac6116

Enable "Nullable Reference Types" across all projects.

view details

push time in 15 days

push eventfixie/fixie

Patrick Lioi

commit sha cd9b0fd513f32e11da4bedb17e9ea62b85e77386

Rename 'main' GitHub Actions workflow to 'ci'.

view details

Patrick Lioi

commit sha 3621c7a9731b5e89e392db31f55a00655969248e

The 'pr' GitHub Actions workflow pushes developer buids of the NuGet packages to the GitHub Packages feed for end-to-end testing.

view details

push time in 15 days

delete tag fixie/fixie

delete tag : v2.2.1

delete time in 15 days

created tagfixie/fixie

tag2.2.1

Modern Testing for .NET

created time in 15 days

push eventfixie/fixie

Patrick Lioi

commit sha 305d4272ae55e614c8d125cfe519de7aeed5e125

Ensure that the MinVer-calculated PackageVersion works for Fixie.TestAdapter, which still uses a NuSpec.

view details

push time in 15 days

push eventfixie/fixie

Patrick Lioi

commit sha a8297a16af6738de94876dfcb5496a89ceb88d24

Install MinVer in all NuGet-packaged projects. These were installed via the Visual Studio UI to ensure that the special PrivateAssets and IncludeAssets values could be set automatically.

view details

Patrick Lioi

commit sha 593bd98f6f0b8d580b847187d15b7d724ab731b3

Allow MinVer to detect the nearest preceding v-prefixed version tag.

view details

Patrick Lioi

commit sha 7bedb9ecdc5357ed74e799d4b33cd8333d948b5a

Pass along the MinVer-calculated PackageVersion explicitly for Fixie.TestAdapter, which still uses a NuSpec.

view details

push time in 15 days

push eventfixie/fixie

Patrick Lioi

commit sha 487d2acf8b6128d602bc2c132b3fac1620d1c927

Removing AppVeyor and Azure DevOps builds in favor of GitHub Actions.

view details

Patrick Lioi

commit sha d560cc9b3c0734ed2dff5fd1e06989476e3adde7

Official builds run on ubuntu-latest.

view details

Patrick Lioi

commit sha a4a92bf4efe26566a4f1b080bbd05ca4c28c8065

.gitignore the build output "artifacts" folder.

view details

push time in 15 days

push eventfixie/fixie.integration

Patrick Lioi

commit sha cdce941840a26c247410a98b18299d7d95897aa2

Cross-platform GitHub Actions builds.

view details

push time in 15 days

push eventfixie/fixie.integration

Patrick Lioi

commit sha 6e7e1d163566d27897b22a091327eae45498038d

Cross-platform GitHub Actions builds.

view details

push time in 15 days

push eventfixie/fixie

Patrick Lioi

commit sha d0db273214ac9602a6a5d04edd6549dcac889263

Rename the `dotnet pack` output folder from "packages" to "artifacts" to make it clear that it contains build outputs rather than packages to be consumed by the solution.

view details

push time in 15 days

push eventfixie/fixie

Patrick Lioi

commit sha 28b4a0e6e8ca613283c64470757e16139e2f9074

Temporary build breakage to be reverted.

view details

push time in 15 days

push eventfixie/fixie

Patrick Lioi

commit sha c387387f05020026144b27dcacb23989d8df9acd

Temporary build breakage to be reverted.

view details

push time in 15 days

push eventfixie/fixie

Patrick Lioi

commit sha 281a5f926c966b62db30024607f512d963a6dfd4

Temporary build breakage to be reverted.

view details

push time in 15 days

create barnchfixie/fixie

branch : simplify-build

created branch time in 15 days

push eventfixie/fixie

Patrick Lioi

commit sha 97e7d29ae5c0792a4b44512182335266ffdc4b5a

Phase out deprecated use of the difficult-to-format ProcessStartInfo.Arguments string, instead using its replacement ArgumentList property.

view details

push time in 17 days

create barnchfixie/fixie

branch : main

created branch time in 21 days

delete branch fixie/fixie.demo

delete branch : master

delete time in 21 days

create barnchfixie/fixie.demo

branch : main

created branch time in 21 days

delete branch fixie/fixie.integration

delete branch : master

delete time in 21 days

create barnchfixie/fixie.integration

branch : main

created branch time in 21 days

delete branch fixie/fixie.benchmark

delete branch : master

delete time in 21 days

create barnchfixie/fixie.benchmark

branch : main

created branch time in 21 days

push eventfixie/fixie

Patrick Lioi

commit sha 05f9af57f64857e37c5c4ac4b0bb65d81fa6b131

Characterization test coverage for generic argument resolution when generic type parameters appear as *part* of parameter types, revealing current limitations.

view details

push time in 21 days

push eventfixie/fixie

Patrick Lioi

commit sha 9fd59c3893eb75f5df7793b33e05021aa1591127

Eliminate usage of the null-forgiveness operator when getting the full folder path of the test assembly.

view details

push time in 21 days

push eventfixie/fixie

Patrick Lioi

commit sha 4caeead131b5d59d55a1446b91d0a75298739d0f

Eliminate usage of the null-forgiveness operator when calling the Lines() string-splitting test helper.

view details

Patrick Lioi

commit sha 92267c2fca780a600b3a5396dfcb0fca69a94360

Eliminate usage of the null-forgiveness operator when assembling literate stack traces, by instead detecting and reporting potential future breakages.

view details

push time in 21 days

push eventfixie/fixie

Patrick Lioi

commit sha b2e1dfb47ab621b0b176b5da640e8b46f4e94c78

CaseCompleted exposes the Test abstraction rather than the Type and MethodInfo of the test.

view details

Patrick Lioi

commit sha 0a841d22a8b603289c24ed9f0c74e086f5a268ae

CaseStarted exposes the Test abstraction rather than the Type and MethodInfo of the test.

view details

push time in 21 days

push eventfixie/fixie

Patrick Lioi

commit sha 0eb067b8f399fb06d8751e80c4f3582cb471eade

Rename MethodDiscovered to TestDiscovered, to better align with domain terminology used elsewhere.

view details

Patrick Lioi

commit sha e455830be89fd0b49a1e6801e6382c00719a9219

The TestDiscovered message provides a Test abstraction over the underlying MethodInfo, so that listeners don't have to perform that transformation themselves.

view details

Patrick Lioi

commit sha 103f7accb470b9cd2cfb00ccb1bec453816e7c39

Rename TestAssembly.DiscoverMethods to Discover, for symmetry with the corresponding Run method.

view details

Patrick Lioi

commit sha da1c8b0e5cc632c9aa3a5a974214cf16580d8f5b

Merge branch 'fix-discovery-naming' into develop

view details

push time in 22 days

delete branch fixie/fixie

delete branch : refactor-runner

delete time in 22 days

push eventfixie/fixie

Patrick Lioi

commit sha c67af77ed87c4c85ab4e4c9abba0940e712df176

Merge Discoverer into AssemblyRunner.

view details

Patrick Lioi

commit sha e7899696ab9164d481770b5cb19cb834f772ba44

Reorder lines to enable extract-method.

view details

Patrick Lioi

commit sha 50aa1e14749959121442ad00cfcfebeb1101d29f

Extract internal helper for DiscoverMethods(...), comparable to the internal helper for Run(...), to enable testability against hypothetical test suites.

view details

Patrick Lioi

commit sha df4058648cc74102296c7a46f5e37a029bca7921

Test coverage for the core logic in AssemblyRunner.DiscoverMethods(...).

view details

Patrick Lioi

commit sha a78a2db3ae8cdd812244f022bb750acc3a5aa0e1

Improve test coverage of DiscoveryListener by executing againt the same sample test suite as other MessagingTests.

view details

Patrick Lioi

commit sha c62f00ec313bb770b6547b51d7d2c3260fba4888

Simplify AssemblyRunner construction, minimizing direct usages of Bus.

view details

Patrick Lioi

commit sha 40a208b6144b44cfdfceaadede4e5289ad4a70ed

Rename TestAssembly to AssemblyPath.

view details

Patrick Lioi

commit sha f387839fb11b2b264772ba33591b531e750e5f1e

Rename AssemblyRunner to TestAssembly, to better communicate the abstraction it provides.

view details

Patrick Lioi

commit sha 54c5d4af54e53ae015f73a73bb580783e16f21e4

ShouldSatisfy eases item-by-item assertions on a collection.

view details

Patrick Lioi

commit sha c5cf2f70a81a428d1c5695b43c61a57ca0c40b07

Merge branch 'refactor-runner' into develop

view details

push time in 22 days

push eventfixie/fixie

Patrick Lioi

commit sha c62f00ec313bb770b6547b51d7d2c3260fba4888

Simplify AssemblyRunner construction, minimizing direct usages of Bus.

view details

Patrick Lioi

commit sha 40a208b6144b44cfdfceaadede4e5289ad4a70ed

Rename TestAssembly to AssemblyPath.

view details

Patrick Lioi

commit sha f387839fb11b2b264772ba33591b531e750e5f1e

Rename AssemblyRunner to TestAssembly, to better communicate the abstraction it provides.

view details

Patrick Lioi

commit sha 54c5d4af54e53ae015f73a73bb580783e16f21e4

ShouldSatisfy eases item-by-item assertions on a collection.

view details

push time in 22 days

push eventfixie/fixie

Patrick Lioi

commit sha a78a2db3ae8cdd812244f022bb750acc3a5aa0e1

Improve test coverage of DiscoveryListener by executing againt the same sample test suite as other MessagingTests.

view details

push time in 22 days

push eventfixie/fixie

Patrick Lioi

commit sha e7899696ab9164d481770b5cb19cb834f772ba44

Reorder lines to enable extract-method.

view details

Patrick Lioi

commit sha 50aa1e14749959121442ad00cfcfebeb1101d29f

Extract internal helper for DiscoverMethods(...), comparable to the internal helper for Run(...), to enable testability against hypothetical test suites.

view details

Patrick Lioi

commit sha df4058648cc74102296c7a46f5e37a029bca7921

Test coverage for the core logic in AssemblyRunner.DiscoverMethods(...).

view details

push time in 22 days

create barnchfixie/fixie

branch : refactor-runner

created branch time in 22 days

delete branch fixie/fixie

delete branch : diff-tool-for-large-assertions

delete time in 22 days

push eventfixie/fixie

Patrick Lioi

commit sha 6d189861e6bb156990e4cb271b1b9dd97eab615b

Overload Try to work with Funcs of two arguments.

view details

Patrick Lioi

commit sha 4fc7361a87f4f7da2196ca4c89aa7010b550b076

MatchException is an AssertException intended for comparing string representations of objects.

view details

Patrick Lioi

commit sha af26e63d80f0be740eb2227ac0e856cbfb8636de

ShouldMatch produces a MatchException including the expected and actual string representations of the objects being compared.

view details

Patrick Lioi

commit sha 93eda51558ea13d127859f68afc93aa282c7dd36

Fixie's self-tests run under a customized execution lifecycle: when a single test method is explicitly invoked by the the developer, MatchExceptions are presented in the developer's own gitconfig-defined diff tool.

view details

Patrick Lioi

commit sha c9f8539c6937fb25422254731bb2f721f5aa9d47

When running the self tests the PrimaryConvention executes, rather than unintentionally executing some example customization used internally by a self test.

view details

Patrick Lioi

commit sha 12f464a152dcdfb0066ae57dc98a4e021c2896db

ShouldMatch's use of JSON representations can be further refined for known types, like Type, that have no direct JSON representation but do have a useful ToString() representation.

view details

Patrick Lioi

commit sha 3e62202e597b134a36cce30df449c107a49bc476

When asserting that an IEnumerable is equivalent to some params array of like type, use ShouldMatch semantics for easier diagnosis of failures.

view details

Patrick Lioi

commit sha 2d942fe9fccdc941a1b887459439c3b04e3f389c

Remove unused ShouldBe overload.

view details

Patrick Lioi

commit sha 4da85797d79b0aa4acd1ce09be1e46140f02743f

Phase out redundant string-specific ShouldBe overload, which is better served by the ShouldMatch-based generic overload.

view details

Patrick Lioi

commit sha a33e77dc53aa383f027e82073cf596d7e48ce521

When assertion on string[] expectations, use ShouldMatch semantics for easier diagnosis of failures.

view details

Patrick Lioi

commit sha a192d0f7257b2a89d3ba3fb387b75572b5fdebc8

Simplify AssertException value formatting now that those cases are better handled by MatchException.

view details

Patrick Lioi

commit sha 5e405dc745ef4345b3b7e830524a66e825c8e01f

Remove redundant ShouldBe overload.

view details

Patrick Lioi

commit sha f7c81a381fec7b79950edf2a2df69c0611b54708

Phase out ShouldMatch overload which is made redundant by an equivalent ShouldBe overload.

view details

Patrick Lioi

commit sha 3abe088d534e7cf67fc9be642ac115521d3ad681

Improve ShouldBeEmpty by implementing it in terms of ShouldMatch.

view details

Patrick Lioi

commit sha e00e0fa0849c5cb921a835202edb8aff7fbcbd45

Improve string?.ShouldBe(string?) by throwing a MatchException upon failure.

view details

Patrick Lioi

commit sha cf1fa1e6de7b6fc42247d34f78d87c9c12ea7639

MatchException provides a compact Message when the expected and actual values are short and contain no NewLine sequences.

view details

Patrick Lioi

commit sha 82a5b896b666a3d5583ce8db8dfa3c24f2788d2a

Improve ShouldBeGreaterThan* assertions by having them throw MatchException.

view details

Patrick Lioi

commit sha fdb5d222fc5ee35be0371dd0385812bf3f500cb6

Improve object?.ShouldBe(object?) catch-all assertion by having it throw MatchException.

view details

Patrick Lioi

commit sha 41bb8beb82dcaea97596447c168fb5aaa94cbefd

Improve ShouldBe<T>() type assertion by having it throw MatchException.

view details

Patrick Lioi

commit sha a2be180a776fc7325304a9f54fe4285153c831d5

Improve ShouldThrow by having it throw MatchException.

view details

push time in 22 days

push eventfixie/fixie

Patrick Lioi

commit sha 82a5b896b666a3d5583ce8db8dfa3c24f2788d2a

Improve ShouldBeGreaterThan* assertions by having them throw MatchException.

view details

Patrick Lioi

commit sha fdb5d222fc5ee35be0371dd0385812bf3f500cb6

Improve object?.ShouldBe(object?) catch-all assertion by having it throw MatchException.

view details

Patrick Lioi

commit sha 41bb8beb82dcaea97596447c168fb5aaa94cbefd

Improve ShouldBe<T>() type assertion by having it throw MatchException.

view details

Patrick Lioi

commit sha a2be180a776fc7325304a9f54fe4285153c831d5

Improve ShouldThrow by having it throw MatchException.

view details

Patrick Lioi

commit sha 3b65c788b1e8f301f0fac19f90dd1e00fd681cd3

Improve IEquatable<T>.ShouldBe(IEquatable<T>) catch-all assertion by having it throw MatchException.

view details

Patrick Lioi

commit sha f148cbd633f079ffccab110a85d69b0351679bb2

Remove unused members from AssertException.

view details

Patrick Lioi

commit sha fdd1bb67bfd93efb875d693385deda8de2c7d709

Merge MatchException into AssertException.

view details

Patrick Lioi

commit sha 079da6ba36a1d37fe94ee80327808075c2e1a7f6

Only launch the diff tool when an assertion's Expected/Actual values are nontrivial.

view details

push time in 22 days

push eventfixie/fixie

Patrick Lioi

commit sha f7c81a381fec7b79950edf2a2df69c0611b54708

Phase out ShouldMatch overload which is made redundant by an equivalent ShouldBe overload.

view details

Patrick Lioi

commit sha 3abe088d534e7cf67fc9be642ac115521d3ad681

Improve ShouldBeEmpty by implementing it in terms of ShouldMatch.

view details

Patrick Lioi

commit sha e00e0fa0849c5cb921a835202edb8aff7fbcbd45

Improve string?.ShouldBe(string?) by throwing a MatchException upon failure.

view details

Patrick Lioi

commit sha cf1fa1e6de7b6fc42247d34f78d87c9c12ea7639

MatchException provides a compact Message when the expected and actual values are short and contain no NewLine sequences.

view details

push time in 22 days

create barnchfixie/fixie

branch : diff-tool-for-large-assertions

created branch time in 22 days

push eventfixie/fixie

Patrick Lioi

commit sha b026ce94a97df2e1ac0977aff317d11b2945db19

The solution builds reliably on operating systems that have case sensitive filesystems.

view details

push time in a month

delete branch fixie/fixie

delete branch : passing-build-on-ubuntu

delete time in a month

push eventfixie/fixie

Patrick Lioi

commit sha 35aa12eac01017f3947a66ac34d1262ceef46c99

Build script refers correctly to case-senstive file name Directory.Build.props.

view details

push time in a month

push eventfixie/fixie

Patrick Lioi

commit sha ae96ed03ab512e0418de5e141af20558b5cfe54c

Revert "Disable only ubuntu-latest." This reverts commit 13a3a570835b666800bf33b0eae2b3a1ac299d7a.

view details

push time in a month

more