// Copyright 2024, the Dart project authors. Please see the AUTHORS file
// for details. All rights reserved. Use of this source code is governed by a
// BSD-style license that can be found in the LICENSE file.

import 'dart:io' as io;

import 'package:deps/command.dart';
import 'package:deps/provenance.dart';
import 'package:test/test.dart';

import 'command_test.dart';

void main() {
  test('provenance stage', () async {
    final expectedExecutable = 'snoopy_broker';
    final expectedArguments = ['-report-stage', '-stage', 'start'];
    await mockedRun(io.ProcessResult(123, 0, null, ''), expectedExecutable,
        expectedArguments, () => provenanceReportStage('start'));
  });
}
