tree 3f4e9b329a8738cfc3f41dfb2e2d0311787237d9
parent e779df6cc280104d0ce119c202417cd62b20438f
author Nate Bosch <nbosch@google.com> 1618512257 -0700
committer GitHub <noreply@github.com> 1618512257 -0700
gpgsig -----BEGIN PGP SIGNATURE-----
 
 wsBcBAABCAAQBQJgeImBCRBK7hj4Ov3rIwAAdHIIAD5dXfrGEc1E0dnHnTBHIG/P
 tNMdpSqDI4gEEaCHhjYAWPs7OO2SeY2kSKUlVrFHv5m/S7mWyFTOlNZ7m5Ur+sZl
 hPU4Jjxuh1WqhqbNTIORTUdKhMhoarjrpN2BXi7XPKIAMLR39lp3QofRycgm/zVZ
 g3f6sXa5EswDOkBfHRQAnRb8T0+sNgGXxX8m9GoI96Pas8k5Gugs2nvrKlrcar4R
 9NvFG87NK7QOQN6RZxVclkRJDZU7JkMx4hDBkcSebuu09XJL7cFUsatQZLNNWJXb
 hssGxUNM2d4qzpatE/6PSRgDmR/wJTewhzIFcOzx3vI+tZeBAbWZ4fTWTjmrMbI=
 =+aW7
 -----END PGP SIGNATURE-----
 

Restrict imports across layers of test_api (#1492)

Allow splitting `test_api` into multiple targets in bazel. Fix imports
that would cause cycles in the targets, and shuffle some code to make
globbing easier and better reflect the use cases and library coupling.

Add more exports in `backend.dart` of types that are related to how
platforms communicate with the runner, `RemoteException`,
`RemoteListener`, `StackTraceFormatter`, and `StackTraceMapper`. Where
convenient, update imports from `test_api/src/*` to
`test_api/backend.dart` with a `show` clause.
Not all of `src/backend` is exported, including the details that are
currently used from `test_core` and `test` since future work may be able
to keep those details from leaking.

Add `pumpEventQueue` to `hooks.dart`. This allows `expect` to rely only
on `hooks` and avoid a dependency on `scaffolding`. It is an API that
should may be useful in general for async matching frameworks.

Add a test which uses the analyzer to crawl imports and enforce some
aspects of the required structure:
- `backend.dart` and `src/backend/**` may not import any other
  parts of the packages, so `backend` can be a leaf target with a simple
  glob.
- `expect` may not be imported from any of the focused entrypoints
  (`hooks.dart` or `scaffolding.dart`) and may not import any of the
  implementation details other than `hooks.dart`.

Shuffle around code and update a few imports to more narrow libraries to
fit the above criteria.
- Move the annotations like `Timeout` etc to `src/backend/configuration`
  to fix some imports that would be to `src/scaffolding` and re-export
  from `scaffolding.dart`. Not all of these are used, but they are all
  moved for consistency.
- Move `TestFailure` into backend and re-export from `hooks.dart`.
- Move `remote_exception.dart`, `remote_listener.dart`, and
  `stack_trace_mapper.dart` to `src/backend/` since they are now
  exported.
- Move `suite_channel_manager.dart` and `pretty_print.dart` into
  `src/backend/`.
- Move `anchoredHyphenatedIdentifier` into a separate utility library
  under `src/backend/`. Inline the unused private regex and update the
  doc comment avoid referencing it.