tree 2b9c9e30b46f20127163957887c92022549c80f4
parent 61a8888294937bb7a909f161faaca3052102050c
author Nate Bosch <nbosch@google.com> 1617293271 -0700
committer GitHub <noreply@github.com> 1617293271 -0700
gpgsig -----BEGIN PGP SIGNATURE-----
 
 wsBcBAABCAAQBQJgZe/XCRBK7hj4Ov3rIwAAdHIIAJq9YcY49Cs2lO2GT/OdpWXm
 4PGpHXfpwADtwGZdI1ML2QCmb3wTEgpRHtE3vlbexivWLec9jmNa9oSfU/pz7GuE
 BT5Xk5bBNGDQrzbT3HaNBVTU8rVUpIMMkG+XNGvIBznhxC1ZOkKpNJd/Zxeg/utT
 tcZQTSFVKVpbqgleup8bUAAfYAhO5EE9HYUtUpn+/Y9N5frGcD2T+AC91oK/Z51P
 MruT5Kb8YPH8PEFQobJpz356+VLMHcjJA94R1pqEv0n2X5iVKR3CWKX2B1VCbuR7
 L6fsUqHuqMWvYVuTYlLouhS3ou/UyFZO8jOyWRws37U/OnzhMNw0Uu9pHdG21h0=
 =PZ/d
 -----END PGP SIGNATURE-----
 

Add scaffolding, expect, hooks libraries (#1460)

Shuffles code around to make a more clear distinction between the
different types of use cases that are satisfied by the "frontend"
classes. Exposing an import which does not include `expect` and the
matchers will make it possible to write alternative matching frameworks
without worrying about name conflicts.

- `scaffolding` includes the code to define test cases and high level
  utilities that user level test code might need. A test might import
  `scaffolding` instead of `test` if they want to use a different
  matching framework and don't need `expect`.
- `expect` includes the synchronous and asynchronous matchers, as well
  as `expect` and `expectAsync*`.

Add a new library `test_api/hooks` which has lower level APIs for
interacting with the test runner. `expect` is written against only
`hooks`, and an alternative matching framework could have equivalent
capabilities using the same APIs. The primary capability which was
previously only available in `Invoker` is the ability to report that
some async work has not completed, and must complete before the test can
be considered done.

- Add `hooks.dart` and refactor all of `lib/src/expect/*` to use it.
- Move most code from `src/frontend` to either `src/scaffolding` or
  `src/expect` as appropriate.
- Change the original entrypoints to export the new ones. Avoid exporting
  deprecated members, and `registerException` which is not yet deprecated
  but may not be quite the API we want in `hooks.dart`.

Fixes #1468. The new API in `hooks.dart` takes a `Future` instead of adding
and removing from a counter of unfinished callbacks. Since the handler on the
future won't run in the same Zone as the wrapped callback does, it doesn't
suffer the same issues of passing a callback to a non-test Zone.

TODO:
We fold stack frames stemming from the `test*` packages specifically,
which means that frames beneath `expect` get handled for free. An
alternative matching framework defined outside this package would not
have the same advantage, so we may need to find an API to bring that to
parity.