expectArchitecture function

Future<ArchAnalysis> expectArchitecture({
  1. String projectPath = '.',
  2. bool failOnCycle = true,
  3. bool useBaseline = true,
  4. List<String> scanDirs = const ['lib'],
  5. List<String> exclude = const [],
  6. bool enableWorkspace = true,
  7. String? since,
})

Runs arch_guard on projectPath and throws ArchitectureViolationException if it finds problems.

Returns the ArchAnalysis for further assertions. Options mirror the CLI flags (--no-fail-on-cycle, --scan-dir, --exclude, --no-workspace, --since). With since, only problems touching files changed since this git ref count. Throws FormatException if the baseline file exists but is invalid, and GitException if since is set and git fails.

Implementation

Future<ArchAnalysis> expectArchitecture({
  String projectPath = '.',
  bool failOnCycle = true,
  bool useBaseline = true,
  List<String> scanDirs = const ['lib'],
  List<String> exclude = const [],
  bool enableWorkspace = true,
  String? since,
}) async {
  final analysis = await ArchAnalysis.run(
    projectPath: projectPath,
    scanDirs: scanDirs,
    exclude: exclude,
    enableWorkspace: enableWorkspace,
    useBaseline: useBaseline,
    since: since,
  );
  final failures = analysis.failures(failOnCycle: failOnCycle);
  if (failures.isNotEmpty) {
    throw ArchitectureViolationException(failures, analysis);
  }
  return analysis;
}