// Copyright (c) 2023, 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.

void main() {
  // TODO(pq): re-enable when we're reading from DEPS or from a stable published version
  // see: https://github.com/dart-lang/linter/issues/4756

  // group('machine output tests', () {
  //   setUp(setUpSharedTestEnvironment);
  //   test("ensure 'rules.json' is up to date", () async {
  //     var rulesFile = machineJsonFile();
  //     var onDisk = rulesFile.readAsStringSync();
  //     var generated = await generateRulesJson();
  //     expect(
  //       generated,
  //       onDisk,
  //       reason: "'rules.json' is out of date. Regenerate by running "
  //           '`dart tool/machine.dart -w`',
  //     );
  //   });
  // });
}
