Adding runs all reporters in CI #10
GitHub Actions / flutter-json report
succeeded
Jan 15, 2024 in 0s
268 passed, 1 failed and 0 skipped
❌ ./tests/fixtures/external/flutter/provider-test-results.json
269 tests were completed in 0ms with 268 passed, 1 failed and 0 skipped.
✅ /__w/provider/provider/test/builder_test.dart
ChangeNotifierProvider
✅ default
✅ .value
ListenableProvider
✅ default
✅ .value
Provider
✅ default
✅ .value
ProxyProvider
✅ 0
✅ 1
✅ 2
✅ 3
✅ 4
✅ 5
✅ 6
MultiProvider
✅ with 1 ChangeNotifierProvider default
✅ with 2 ChangeNotifierProvider default
✅ with ListenableProvider default
✅ with Provider default
✅ with ProxyProvider0
✅ with ProxyProvider1
✅ with ProxyProvider2
✅ with ProxyProvider3
✅ with ProxyProvider4
✅ with ProxyProvider5
✅ with ProxyProvider6
✅ /__w/provider/provider/test/change_notifier_provider_test.dart
✅ Use builder property, not child
ChangeNotifierProvider
✅ value
✅ builder
✅ builder1
✅ builder2
✅ builder3
✅ builder4
✅ builder5
✅ builder6
✅ builder0
✅ /__w/provider/provider/test/consumer_test.dart
consumer
✅ obtains value from Provider<T>
✅ crashed with no builder
✅ can be used inside MultiProvider
consumer2
✅ obtains value from Provider<T>
✅ crashed with no builder
✅ can be used inside MultiProvider
consumer3
✅ obtains value from Provider<T>
✅ crashed with no builder
✅ can be used inside MultiProvider
consumer4
✅ obtains value from Provider<T>
✅ crashed with no builder
✅ can be used inside MultiProvider
consumer5
✅ obtains value from Provider<T>
✅ crashed with no builder
✅ can be used inside MultiProvider
consumer6
✅ obtains value from Provider<T>
✅ crashed with no builder
✅ can be used inside MultiProvider
✅ /__w/provider/provider/test/context_test.dart
✅ watch in layoutbuilder
✅ select in layoutbuilder
✅ cannot select in listView
✅ watch in listView
✅ watch in gridView
✅ clears select dependencies for all dependents
BuildContext
✅ internal selected value is updated
✅ create can use read without being lazy
✅ watch can be used inside InheritedProvider.update
✅ select doesn't fail if it loads a provider that depends on other providers
✅ don't call old selectors if the child rebuilds individually
✅ selects throws inside click handlers
✅ select throws if try to read dynamic
✅ select throws ProviderNotFoundException
✅ select throws if watch called inside the callback from build
✅ select throws if read called inside the callback from build
✅ select throws if select called inside the callback from build
✅ select throws if read called inside the callback on dependency change
✅ select throws if watch called inside the callback on dependency change
✅ select throws if select called inside the callback on dependency change
✅ can call read inside didChangeDependencies
✅ select cannot be called inside didChangeDependencies
✅ select in initState throws
✅ watch in initState throws
✅ read in initState works
✅ consumer can be removed and selector stops to be called
✅ context.select deeply compares maps
✅ context.select deeply compares lists
✅ context.select deeply compares iterables
✅ context.select deeply compares sets
✅ context.watch listens to value changes
✅ /__w/provider/provider/test/future_provider_test.dart
✅ works with MultiProvider
✅ (catchError) previous future completes after transition is no-op
✅ previous future completes after transition is no-op
✅ transition from future to future preserve state
✅ throws if future has error and catchError is missing
✅ calls catchError if present and future has error
✅ works with null
✅ create and dispose future with builder
✅ FutureProvider() crashes if builder is null
FutureProvider()
✅ crashes if builder is null
✅ /__w/provider/provider/test/inherited_provider_test.dart
✅ regression test #377
✅ rebuild on dependency flags update
✅ properly update debug flags if a create triggers another deferred create
✅ properly update debug flags if a create triggers another deferred create
✅ properly update debug flags if an update triggers another create/update
✅ properly update debug flags if a create triggers another create/update
✅ Provider.of(listen: false) outside of build works when it loads a provider
✅ new value is available in didChangeDependencies
✅ builder receives the current value and updates independently from `update`
✅ builder can _not_ rebuild when provider updates
✅ builder rebuilds if provider is recreated
✅ provider.of throws if listen:true outside of the widget tree
✅ InheritedProvider throws if no child is provided with default constructor
✅ InheritedProvider throws if no child is provided with value constructor
✅ DeferredInheritedProvider throws if no child is provided with default constructor
✅ DeferredInheritedProvider throws if no child is provided with value constructor
✅ startListening markNeedsNotifyDependents
✅ InheritedProvider can be subclassed
✅ DeferredInheritedProvider can be subclassed
✅ can be used with MultiProvider
✅ throw if the widget ctor changes
✅ InheritedProvider lazy loading can be disabled
✅ InheritedProvider.value lazy loading can be disabled
✅ InheritedProvider subclass don't have to specify default lazy value
✅ DeferredInheritedProvider lazy loading can be disabled
✅ DeferredInheritedProvider.value lazy loading can be disabled
✅ selector
✅ can select multiple types from same provider
✅ can select same type on two different providers
✅ can select same type twice on same provider
✅ Provider.of has a proper error message if context is null
diagnostics
✅ InheritedProvider.value
✅ InheritedProvider doesn't break lazy loading
✅ InheritedProvider show if listening
✅ DeferredInheritedProvider.value
✅ DeferredInheritedProvider
InheritedProvider.value()
✅ markNeedsNotifyDependents during startListening is noop
✅ startListening called again when create returns new value
✅ startListening
✅ stopListening not called twice if rebuild doesn't have listeners
✅ removeListener cannot be null
✅ pass down current value
✅ default updateShouldNotify
✅ custom updateShouldNotify
InheritedProvider()
✅ hasValue
✅ provider calls update if rebuilding only due to didChangeDependencies
✅ provider notifying dependents doesn't call update
✅ update can call Provider.of with listen:true
✅ update lazy loaded can call Provider.of with listen:true
✅ markNeedsNotifyDependents during startListening is noop
✅ update can obtain parent of the same type than self
✅ _debugCheckInvalidValueType
✅ startListening
✅ startListening called again when create returns new value
✅ stopListening not called twice if rebuild doesn't have listeners
✅ removeListener cannot be null
✅ fails if initialValueBuilder calls inheritFromElement/inheritFromWiggetOfExactType
✅ builder is called on every rebuild and after a dependency change
✅ builder with no updateShouldNotify use ==
✅ builder calls updateShouldNotify callback
✅ initialValue is transmitted to valueBuilder
✅ calls builder again if dependencies change
✅ exposes initialValue if valueBuilder is null
✅ call dispose on unmount
✅ builder unmount, dispose not called if value never read
✅ call dispose after new value
✅ valueBuilder works without initialBuilder
✅ calls initialValueBuilder lazily once
✅ throws if both builder and initialBuilder are missing
DeferredInheritedProvider.value()
✅ hasValue
✅ startListening
✅ stopListening cannot be null
✅ startListening doesn't need setState if already initialized
✅ setState without updateShouldNotify
✅ setState with updateShouldNotify
✅ startListening never leave the widget uninitialized
✅ startListening called again on controller change
DeferredInheritedProvider()
✅ create can't call inherited widgets
✅ creates the value lazily
✅ dispose
✅ dispose no-op if never built
✅ /__w/provider/provider/test/listenable_provider_test.dart
ListenableProvider
✅ works with MultiProvider
✅ asserts that the created notifier can have listeners
✅ don't listen again if listenable instance doesn't change
✅ works with null (default)
✅ works with null (create)
✅ stateful create called once
✅ dispose called on unmount
✅ dispose can be null
✅ changing listenable rebuilds descendants
✅ rebuilding with the same provider don't rebuilds descendants
✅ notifylistener rebuilds descendants
ListenableProvider value constructor
✅ pass down key
✅ changing the Listenable instance rebuilds dependents
ListenableProvider stateful constructor
✅ called with context
✅ pass down key
✅ throws if create is null
✅ /__w/provider/provider/test/listenable_proxy_provider_test.dart
ListenableProxyProvider
✅ throws if update is missing
✅ asserts that the created notifier has no listener
✅ asserts that the created notifier has no listener after rebuild
✅ rebuilds dependendents when listeners are called
✅ update returning a new Listenable disposes the previously created value and update dependents
✅ disposes of created value
ListenableProxyProvider variants
✅ ListenableProxyProvider
✅ ListenableProxyProvider2
✅ ListenableProxyProvider3
✅ ListenableProxyProvider4
✅ ListenableProxyProvider5
✅ ListenableProxyProvider6
✅ /__w/provider/provider/test/multi_provider_test.dart
MultiProvider
✅ throw if providers is null
✅ MultiProvider children can only access parent providers
✅ MultiProvider.providers with ignored child
✅ /__w/provider/provider/test/provider_test.dart
✅ works with MultiProvider
Provider.of
✅ throws if T is dynamic
✅ listen defaults to true when building widgets
✅ listen defaults to false outside of the widget tree
✅ listen:false doesn't trigger rebuild
✅ listen:true outside of the widget tree throws
Provider
✅ throws if the provided value is a Listenable/Stream
✅ debugCheckInvalidValueType can be disabled
✅ simple usage
✅ throws an error if no provider found
✅ update should notify
✅ /__w/provider/provider/test/proxy_provider_test.dart
ProxyProvider
✅ throws if the provided value is a Listenable/Stream
✅ debugCheckInvalidValueType can be disabled
✅ create creates initial value
✅ consume another providers
✅ rebuild descendants if value change
✅ call dispose when unmounted with the latest result
✅ don't rebuild descendants if value doesn't change
✅ pass down updateShouldNotify
✅ works with MultiProvider
✅ update callback can trigger descendants setState synchronously
✅ throws if update is null
ProxyProvider variants
✅ ProxyProvider2
✅ ProxyProvider3
✅ ProxyProvider4
✅ ProxyProvider5
✅ ProxyProvider6
✅ /__w/provider/provider/test/reassemble_test.dart
✅ ReassembleHandler
✅ unevaluated create
✅ unevaluated create
✅ /__w/provider/provider/test/selector_test.dart
✅ asserts that builder/selector are not null
✅ Deep compare maps by default
✅ Deep compare iterables by default
✅ Deep compare sets by default
✅ Deep compare lists by default
✅ custom shouldRebuid
✅ passes `child` and `key`
✅ calls builder if the callback changes
✅ works with MultiProvider
✅ don't call builder again if it rebuilds but selector returns the same thing
✅ call builder again if it rebuilds abd selector returns the a different variable
✅ Selector
✅ Selector2
✅ Selector3
✅ Selector4
✅ Selector5
✅ Selector6
✅ /__w/provider/provider/test/stateful_provider_test.dart
✅ asserts
✅ works with MultiProvider
✅ calls create only once
✅ dispose
✅ /__w/provider/provider/test/stream_provider_test.dart
✅ works with MultiProvider
✅ transition from stream to stream preserve state
✅ throws if stream has error and catchError is missing
✅ calls catchError if present and stream has error
✅ works with null
✅ StreamProvider() crashes if builder is null
StreamProvider()
✅ create and dispose stream with builder
✅ crashes if builder is null
❌ /__w/provider/provider/test/value_listenable_provider_test.dart
valueListenableProvider
✅ rebuilds when value change
✅ don't rebuild dependents by default
✅ pass keys
✅ don't listen again if stream instance doesn't change
❌ pass updateShouldNotify
The following TestFailure object was thrown running a test:
Expected: <2>
Actual: <1>
Unexpected number of calls
Annotations
Check failure on line 0 in ./__tests__/fixtures/external/flutter/provider-test-results.json
github-actions / flutter-json report
/__w/provider/provider/test/value_listenable_provider_test.dart ► valueListenableProvider ► pass updateShouldNotify
Failed test found in:
./__tests__/fixtures/external/flutter/provider-test-results.json
Error:
The following TestFailure object was thrown running a test:
Expected: <2>
Actual: <1>
Unexpected number of calls
Raw output
══╡ EXCEPTION CAUGHT BY FLUTTER TEST FRAMEWORK ╞════════════════════════════════════════════════════
The following TestFailure object was thrown running a test:
Expected: <2>
Actual: <1>
Unexpected number of calls
When the exception was thrown, this was the stack:
#0 fail (package:test_api/src/frontend/expect.dart:155:31)
#1 _expect (package:test_api/src/frontend/expect.dart:150:3)
#2 expect (package:test_api/src/frontend/expect.dart:59:3)
#3 VerificationResult.called (package:mockito/src/mock.dart:853:5)
#4 main.<anonymous closure>.<anonymous closure> (file:///__w/provider/provider/test/value_listenable_provider_test.dart:112:34)
<asynchronous suspension>
<asynchronous suspension>
(elided one frame from package:stack_trace)
The test description was:
pass updateShouldNotify
════════════════════════════════════════════════════════════════════════════════════════════════════
Loading