Commit Graph

162 Commits

Author SHA1 Message Date
Ryan Nowak ddde4faf4f Refactor xUnit extensibility
Adds our own hook for before/after logic that's more usable, called
`ITestMethodLifecycle`. This provides access to a context object
including the information about the test and the output helper. This can
be implemented by attributes or by the class itself.

The goal (and result) of this, is that we have a single *test executor*
extensibility point that provides all of the features we need. We should
use this everywhere we need features xUnit doesn't have.

Adding a new extensibility point (`ITestMethodLifecycle`) allows us to
do this without turning all of these features into a giant monolith.

---

Also updated our existing extensibility to use this new hook.

I did as much cleanup as a could to remove duplication from logging and
keep it loosly coupled. I didn't want to tease this apart completely
because the scope of this PR is already pretty large.
\n\nCommit migrated from 1b10284a47
2019-09-23 07:37:33 -07:00
Ryan Nowak aadc979baf Add AssemblyFixture to our test infra
This is a feature that we're using in Templates and Blazor E2E tests to manage selenium.

It's a general purpose kind of thing, so it makes sense to make it more general. This requires using the
`[assembly: TestFramework()]`.
Also fixed a bug here where this feature broke collection fixtures.
\n\nCommit migrated from 208d44a985
2019-09-23 07:37:33 -07:00
Ryan Nowak b1987c75cb Add a workaround for xUnit bug
We're currently experiencing a bug where conditional skips aren't working in VS.
This is caused by https://github.com/xunit/xunit/issues/1782
\n\nCommit migrated from cbe90b8492
2019-09-23 07:37:33 -07:00
Ryan Nowak ed97d344c5 Rename file to make class
\n\nCommit migrated from b6a290771f
2019-09-23 07:37:33 -07:00
Pranav K ef2dc5024f Add support for JSInvokable methods on generic types (dotnet/extensions#2342)
* Add support for JSInvokable methods on generic types

Prior to this change, DotNetDispatcher cached the MethodInfo on the
generic type definition. Using this would have required MethodInfo.MakeGenericMethod before the method was invoked.
We could separately cache the result of this to avoid the reflection cost per invocation.

Alternatively we could cache static and non-static MethodInfo instances separately which is what this change attempts to do.
The big difference in the outcome is that this requires instance (non-static) JSInvokable methods to be only unique named within
the type hierarchy as opposed to across all static and instance JSInvokable methods in an assembly.

Fixes https://github.com/aspnet/Extensions/issues/1360
Fixes https://github.com/aspnet/AspNetCore/issues/9061
\n\nCommit migrated from 659b604fb2
2019-09-19 10:48:09 -07:00
John Luo 6371d93d18 Update ref assembly generation to use DefaultNetCoreTargetFramework property (dotnet/extensions#2359)
\n\nCommit migrated from 1f41bdc386
2019-09-17 11:17:34 -07:00
John Luo 68f3765e6d Fix packing on *nix systems (dotnet/extensions#2344)
- Without this fix, the nupkg will be missing files if packed on *nix systems\n\nCommit migrated from 51e8af72d5
2019-09-16 15:17:32 -07:00
John Luo fd2033e5d5 Support netcoreapp3.1 TFM (dotnet/extensions#2336)
* Support netcoreapp3.1 TFM

* Unpin SDK for source build

* Update to preview1 branding
\n\nCommit migrated from 32cc8162ff
2019-09-12 22:34:52 -07:00
Brennan 4643c8f350 Fix FlakyAttribute (dotnet/extensions#2245)
\n\nCommit migrated from 1983ee879c
2019-08-28 09:10:43 -07:00
Brennan 72dc1409d6 Fix ConditionalFact and ConditionalTheory (dotnet/extensions#2241)
\n\nCommit migrated from ae9d51ffeb
2019-08-27 19:41:44 -07:00
Kevin Pilch e1974283f0 Add XML Docs for pubternal types
\n\nCommit migrated from 033ea04bab
2019-08-27 13:43:50 -07:00
Doug Bunting 1153f0d1de Add switch to enable expected and unexpected arguments in any order (dotnet/extensions#2210)
- unblocks work on aspnet/AspNetCoredotnet/extensions#4923
  - arguments for inside and outside men of service reference doc gen tool are mixed by default
  - users may add either argument type to the end of the outside man's command line
- e.g. "command --unexpected unexpectedValue --expected" can now set the "expected" option
  - only "--unexpected" and "unexpectedValue" are added to RemainingArguments in that case

- default behaviour of the command-line parser is unchanged to avoid breaking existing applications
- new switch is supported only when calling `CommandLineApplication` constructor for top-level commands
  - `dotnet-getdocument` (the outside man) has no (sub)commands and expanding scope would increase churn

nits: take VS suggestions in changed files\n\nCommit migrated from e4433979b6
2019-08-22 14:25:13 -07:00
Pranav K d46d569b81 Simplify JSRuntime method signature (dotnet/extensions#2188)
\n\nCommit migrated from 9c392a92ef
2019-08-16 16:19:23 -07:00
Pranav K ef83e3359d Change JSInterop to avoid using async locals (dotnet/extensions#2163)
* Remove the use of async local JSRuntime

* Update DotNetDispatcher to accept a JSRuntime instance rather than use a ambient value.
* Modify DotNetObjectReference to start tracking it's value during serialization.
\n\nCommit migrated from ae9878bb99
2019-08-15 17:14:03 -07:00
Justin Kotalik c717230b13 Cleanup to skip/flaky attributes (dotnet/extensions#2186)
\n\nCommit migrated from cfef5e07fb
2019-08-15 09:12:53 -07:00
Pranav K 9372816b7c API Review: JSRuntime (dotnet/extensions#2166)
* API Review: JSRuntime

* Rename JSRuntimeBase -> JSRuntime
* Rename JSInProcessRuntimeBase -> JSInProcessRuntime
* Rename DotNetObjectRef -> DotNetObjectReference
* Update JSRuntime to return ValueTask
* Make InvokeAsync APIs that explicitly cancels and API that default cancels more crisp
* Introduce void invoking APIs
* Fixup method names on DotNetDispatcher

\n\nCommit migrated from 93d3ae4485
2019-08-14 12:24:35 -07:00
Pranav K edd5f54bc3 Special case Disposing DotNetObjectReferences (dotnet/extensions#2176)
* Special case Disposing DotNetObjectReferences

This removes a public JSInvokable method required for disposing DotNetObjectReferences


\n\nCommit migrated from d6bfc28e21
2019-08-14 09:44:33 -07:00
Doug Bunting 60778e8dc7 Fix unintended breaking change
- blocking aspnet/AspNetCoredotnet/extensions#1293 dependency update PR
- commit 3ec8c35e450c lost `AssemblyName` substitution
  - tasks assembly in package incorrectly named ".Manifest.Task.dll"
\n\nCommit migrated from 77403f35be
2019-08-11 14:12:42 -07:00
John Luo 42eec2cbfa Fix build break by using API that's available across net472 and netcoreapp3.0 (dotnet/extensions#2157)
\n\nCommit migrated from 6e96af8eba
2019-08-07 15:44:03 -07:00
John Luo 95746c596e Multitarget extensions packages to remove dependencies for source build (dotnet/extensions#2090)
\n\nCommit migrated from 3ec8c35e45
2019-08-07 13:26:14 -07:00
Pranav K 557bd8e011 Use Utf8JsonReader in DotNetDispatcher (dotnet/extensions#2061)
* Use Utf8JsonReader in DotNetDispatcher

Fixes https://github.com/aspnet/AspNetCore/issues/10988
\n\nCommit migrated from c24711c84d
2019-08-07 09:44:42 -07:00
Pranav K 39c052b8bc More
\n\nCommit migrated from 0cf3c01afc
2019-07-23 19:36:16 -07:00
Pranav K 950b3873b1 PR comments
\n\nCommit migrated from 791c96b143
2019-07-23 18:39:17 -07:00
Pranav K 2d2400e7fa Use JsonConverter for DotNetObjectRef
\n\nCommit migrated from 0389bf44d4
2019-07-23 18:39:17 -07:00
Javier Calvarro Nelson b4bcb1fd15 [JSInterop] Updates the JSInterop abstractions to better support logging and diagnostics. (dotnet/extensions#2043)
* Add an overload to handle .NET completion calls without going through JS interop.
* Add endInvokeHook on the client-side.
* Replace OnDotNetInvocationException with EndInvokeDotNet.\n\nCommit migrated from 4312b9a050
2019-07-17 17:12:37 +02:00
Andrew Stanton-Nurse 4c0a9d9a6b update version of SqlClient used by sql cache (dotnet/extensions#2006)
\n\nCommit migrated from b1ff0d9dc8
2019-07-16 14:42:37 -07:00
Pranav K d0a69f9860 Json Options (dotnet/extensions#1993)
\n\nCommit migrated from 912ab18694
2019-07-10 07:54:15 -07:00
Steve Sanderson 3c42f4436f Bring back required export jsCallDispatcher.findJSFunction (dotnet/extensions#2002)
\n\nCommit migrated from 5350efd2f4
2019-07-10 12:12:11 +01:00
Steve Sanderson 86b55046c9 In JSInterop calls, use expected value for 'this'. Fixes dotnet/extensions#1477 (dotnet/extensions#1990)
\n\nCommit migrated from a664ecb5b3
2019-07-09 12:40:20 +01:00
Ryan Brandenburg 97a039f154 PR feedback
\n\nCommit migrated from d656c4f7e2
2019-07-08 14:37:20 -07:00
Ryan Brandenburg f8b525f02d PR feedback
\n\nCommit migrated from 2e1cfcd1f9
2019-07-08 14:37:20 -07:00
Ryan Brandenburg 25cad453f4 More doc comment additions
\n\nCommit migrated from 551e7c269a
2019-07-08 14:37:20 -07:00
Ryan Brandenburg 109d388e5e More doc comments
\n\nCommit migrated from d3cad4c787
2019-07-08 14:37:20 -07:00
Ryan Brandenburg bd0623bf72 Fix generic <see references
\n\nCommit migrated from 72d4e3ad79
2019-07-08 14:37:20 -07:00
Ryan Brandenburg a61d9b6921 Add some missing doc comments
\n\nCommit migrated from 238b272238
2019-07-08 14:37:20 -07:00
Javier Calvarro Nelson 919734cbb2 Invoking a method with an invalid dotnetobjectref bubbles up through the wrong path (dotnet/extensions#1940)
* Handle non existing dotnet object references and returns the error through JSInterop instead of bubbling it up to the caller.
* Every other error in JSInterop is returned that way.
* It makes sure that the error gets to the client and is sanitized appropriately if necessary.\n\nCommit migrated from a30f2cbb27
2019-07-05 10:16:39 +02:00
Javier Calvarro Nelson 6069a89758 Add InvokeAsync with cancellation token overload to IJSRuntime (dotnet/extensions#1915)
Adds the InvokeAsync with cancellation token overload to IJSRuntime\n\nCommit migrated from 55f0b77464
2019-07-02 19:21:16 +02:00
Javier Calvarro Nelson 5e4f1f5fb2 Adds an opt-in default timeout for async JS calls (dotnet/extensions#1880)
* Adds the ability to configure a default timeout for JavaScript interop calls.
* Adds the ability to pass in a cancellation token to InvokeAsync that will be used instead of the default timeout.
  * A default cancellation token can be passed to signal no cancellation, but it is not recommended in remote interop scenarios.\n\nCommit migrated from e04faac7e4
2019-07-02 13:24:29 +02:00
Javier Calvarro Nelson 244ed54764 Allow sanitization of dotnet interop exceptions (dotnet/extensions#1879)
Adds the ability to sanitize exceptions during JS to .NET interop calls by overriding OnDotNetInvocationException method and returning an object to be returned to JavaScript that describes the exception.\n\nCommit migrated from d7eab7c083
2019-07-02 12:40:50 +02:00
Brennan b39ec06467 Update corefx dependencies (dotnet/extensions#1898)
\n\nCommit migrated from b398a5db3d
2019-06-27 10:21:07 -07:00
Nate McMaster 2a890a978f Set ReferenceAssemblyAttribute in reference assemblies (dotnet/extensions#1845)
\n\nCommit migrated from 9107db4823
2019-06-14 12:13:49 -07:00
Pranav K 867453a06d Resolve the JSInterop call if deserialization fails (dotnet/extensions#1802)
* Resolve the JSInterop call if deserialization fails

\n\nCommit migrated from 26cf0c9f4e
2019-06-13 21:54:05 -07:00
Nate McMaster 2dd8eb61ba Disable transitive project references in test projects (dotnet/extensions#1834)
\n\nCommit migrated from e7d5bea3bb
2019-06-13 16:27:19 -07:00
Nate McMaster 5868b65934 Use even more Arcade and other csproj cleanups (dotnet/extensions#1833)
* Use Arcade's convention for setting IsPackable (must be explicitly set)
* Use Arcade conventions for using DebugType and eng/Versions.props
* Remove dead code
* Update restore feeds in daily builds.md
* Disable UsingToolNetFrameworkReferenceAssemblies in analyzer tests
* Remove usage of TestGroupName (an obsolete KoreBuild setting)
* Use IVT as a .csproj attribute

\n\nCommit migrated from f12d709976
2019-06-12 22:39:41 -07:00
dotnet-maestro[bot] e31f189c71 [master] Update dependencies from dotnet/core-setup (dotnet/extensions#1803)
* Update dependencies from https://github.com/dotnet/core-setup build 20190605.02

- Microsoft.NETCore.App - 3.0.0-preview7-27805-02
- NETStandard.Library.Ref - 2.1.0-preview7-27805-02

Dependency coherency updates

- Microsoft.Win32.Registry - 4.6.0-preview7.19305.9 (parent: Microsoft.NETCore.App)
- System.ComponentModel.Annotations - 4.6.0-preview7.19305.9 (parent: Microsoft.NETCore.App)
- System.Data.SqlClient - 4.7.0-preview7.19305.9 (parent: Microsoft.NETCore.App)
- System.Diagnostics.DiagnosticSource - 4.6.0-preview7.19305.9 (parent: Microsoft.NETCore.App)
- System.Diagnostics.EventLog - 4.6.0-preview7.19305.9 (parent: Microsoft.NETCore.App)
- System.IO.Pipelines - 4.6.0-preview7.19305.9 (parent: Microsoft.NETCore.App)
- System.Reflection.Metadata - 1.7.0-preview7.19305.9 (parent: Microsoft.NETCore.App)
- System.Runtime.CompilerServices.Unsafe - 4.6.0-preview7.19305.9 (parent: Microsoft.NETCore.App)
- System.Security.Cryptography.Cng - 4.6.0-preview7.19305.9 (parent: Microsoft.NETCore.App)
- System.Security.Cryptography.Xml - 4.6.0-preview7.19305.9 (parent: Microsoft.NETCore.App)
- System.ServiceProcess.ServiceController - 4.6.0-preview7.19305.9 (parent: Microsoft.NETCore.App)
- System.Text.Encodings.Web - 4.6.0-preview7.19305.9 (parent: Microsoft.NETCore.App)
- System.Text.Json - 4.6.0-preview7.19305.9 (parent: Microsoft.NETCore.App)
- Microsoft.NETCore.Platforms - 3.0.0-preview7.19305.9 (parent: Microsoft.NETCore.App)

* Update dependencies from https://github.com/dotnet/core-setup build 20190523.07

- Microsoft.NETCore.App - 3.0.0-preview6-27723-07
- NETStandard.Library.Ref - 2.1.0-preview6-27723-07

Dependency coherency updates

- Microsoft.Win32.Registry - 4.6.0-preview6.19273.4 (parent: Microsoft.NETCore.App)
- System.ComponentModel.Annotations - 4.6.0-preview6.19273.4 (parent: Microsoft.NETCore.App)
- System.Data.SqlClient - 4.7.0-preview6.19273.4 (parent: Microsoft.NETCore.App)
- System.Diagnostics.DiagnosticSource - 4.6.0-preview6.19273.4 (parent: Microsoft.NETCore.App)
- System.Diagnostics.EventLog - 4.6.0-preview6.19273.4 (parent: Microsoft.NETCore.App)
- System.IO.Pipelines - 4.6.0-preview6.19273.4 (parent: Microsoft.NETCore.App)
- System.Reflection.Metadata - 1.7.0-preview6.19273.4 (parent: Microsoft.NETCore.App)
- System.Runtime.CompilerServices.Unsafe - 4.6.0-preview6.19273.4 (parent: Microsoft.NETCore.App)
- System.Security.Cryptography.Cng - 4.6.0-preview6.19273.4 (parent: Microsoft.NETCore.App)
- System.Security.Cryptography.Xml - 4.6.0-preview6.19273.4 (parent: Microsoft.NETCore.App)
- System.ServiceProcess.ServiceController - 4.6.0-preview6.19273.4 (parent: Microsoft.NETCore.App)
- System.Text.Encodings.Web - 4.6.0-preview6.19273.4 (parent: Microsoft.NETCore.App)
- System.Text.Json - 4.6.0-preview6.19273.4 (parent: Microsoft.NETCore.App)
- Microsoft.NETCore.Platforms - 3.0.0-preview6.19273.4 (parent: Microsoft.NETCore.App)

* Update dependencies from https://github.com/dotnet/core-setup build 20190606.03

- Microsoft.NETCore.App - 3.0.0-preview7-27806-03
- NETStandard.Library.Ref - 2.1.0-preview7-27806-03

Dependency coherency updates

- Microsoft.Win32.Registry - 4.6.0-preview7.19306.6 (parent: Microsoft.NETCore.App)
- System.ComponentModel.Annotations - 4.6.0-preview7.19306.6 (parent: Microsoft.NETCore.App)
- System.Data.SqlClient - 4.7.0-preview7.19306.6 (parent: Microsoft.NETCore.App)
- System.Diagnostics.DiagnosticSource - 4.6.0-preview7.19306.6 (parent: Microsoft.NETCore.App)
- System.Diagnostics.EventLog - 4.6.0-preview7.19306.6 (parent: Microsoft.NETCore.App)
- System.IO.Pipelines - 4.6.0-preview7.19306.6 (parent: Microsoft.NETCore.App)
- System.Reflection.Metadata - 1.7.0-preview7.19306.6 (parent: Microsoft.NETCore.App)
- System.Runtime.CompilerServices.Unsafe - 4.6.0-preview7.19306.6 (parent: Microsoft.NETCore.App)
- System.Security.Cryptography.Cng - 4.6.0-preview7.19306.6 (parent: Microsoft.NETCore.App)
- System.Security.Cryptography.Xml - 4.6.0-preview7.19306.6 (parent: Microsoft.NETCore.App)
- System.ServiceProcess.ServiceController - 4.6.0-preview7.19306.6 (parent: Microsoft.NETCore.App)
- System.Text.Encodings.Web - 4.6.0-preview7.19306.6 (parent: Microsoft.NETCore.App)
- System.Text.Json - 4.6.0-preview7.19306.6 (parent: Microsoft.NETCore.App)
- Microsoft.NETCore.Platforms - 3.0.0-preview7.19306.6 (parent: Microsoft.NETCore.App)

* namespace
\n\nCommit migrated from 537f0c2db7
2019-06-07 19:08:51 +00:00
Justin Kotalik 3875b0f292 Add retries to HttpClientSlim on macOS. (dotnet/extensions#1807)
\n\nCommit migrated from d4d110a838
2019-06-07 11:32:18 -07:00
Yves Marx f402cc566a ActivatorUtilities.CreateInstance: allocation optimization
\n\nCommit migrated from 689a832ced
2019-06-05 08:19:46 +02:00
John Luo 73e95c56c1 Allow flaky attribute on class and assembly (dotnet/extensions#1742)
* Allow flaky attribute on class and assembly\n\nCommit migrated from 23ba460e27
2019-05-29 16:22:17 -07:00
Pranav K 78daf0166c Use System.Text.Json in Microsoft.JSInterop (dotnet/extensions#1704)
* Use System.Text.Json in Microsoft.JSInterop
\n\nCommit migrated from f6c9258abe
2019-05-29 09:47:26 -07:00
Nate McMaster 8b068f2320 Build and publish NPM packages in CI (dotnet/extensions#1748)
\n\nCommit migrated from 92b2c76bc8
2019-05-28 18:07:58 -07:00