Skip to content

Adding runs all reporters in CI #10

Adding runs all reporters in CI

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 failed

❌ ./tests/fixtures/external/flutter/provider-test-results.json

269 tests were completed in 0ms with 268 passed, 1 failed and 0 skipped.

Test suite Passed Failed Skipped Time
/__w/provider/provider/test/builder_test.dart 24✅ 402ms
/__w/provider/provider/test/change_notifier_provider_test.dart 10✅ 306ms
/__w/provider/provider/test/consumer_test.dart 18✅ 340ms
/__w/provider/provider/test/context_test.dart 31✅ 698ms
/__w/provider/provider/test/future_provider_test.dart 10✅ 305ms
/__w/provider/provider/test/inherited_provider_test.dart 81✅ 1s
/__w/provider/provider/test/listenable_provider_test.dart 16✅ 353ms
/__w/provider/provider/test/listenable_proxy_provider_test.dart 12✅ 373ms
/__w/provider/provider/test/multi_provider_test.dart 3✅ 198ms
/__w/provider/provider/test/provider_test.dart 11✅ 306ms
/__w/provider/provider/test/proxy_provider_test.dart 16✅ 438ms
/__w/provider/provider/test/reassemble_test.dart 3✅ 221ms
/__w/provider/provider/test/selector_test.dart 17✅ 364ms
/__w/provider/provider/test/stateful_provider_test.dart 4✅ 254ms
/__w/provider/provider/test/stream_provider_test.dart 8✅ 282ms
/__w/provider/provider/test/value_listenable_provider_test.dart 4✅ 1❌ 327ms

✅ /__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

See this annotation in the file changed.

@github-actions 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
════════════════════════════════════════════════════════════════════════════════════════════════════