inspectResolverBackendContract function

Future<ResolverBackendContractReport> inspectResolverBackendContract({
  1. required ResolverBackendTestFactory createBackend,
  2. ResolverBackendDisposalProbeFactory? createDisposalProbe,
})

Run every ResolverBackend scenario and return a detailed report.

Every scenario receives a fresh backend and closes it in finally. Execution overlays and native disposal callbacks are optional capabilities; their scenarios are reported as skipped when the matching factory is absent.

Implementation

Future<ResolverBackendContractReport> inspectResolverBackendContract({
  required ResolverBackendTestFactory createBackend,
  ResolverBackendDisposalProbeFactory? createDisposalProbe,
}) async {
  final probe = createBackend();
  final backendType = probe.runtimeType;
  await Future<void>.sync(probe.close);

  final results = <ResolverBackendContractResult>[];
  for (final scenario in ResolverBackendContractCase.values) {
    results.add(
      await _runBackendScenario(
        createBackend,
        scenario,
        createDisposalProbe: createDisposalProbe,
      ),
    );
  }

  return ResolverBackendContractReport(
    backendType: backendType,
    results: results,
  );
}