// Copyright (c) 2020, 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'; import 'package:dartdev/src/commands/analyze.dart'; import 'package:dartdev/src/commands/compile.dart'; import 'package:dartdev/src/commands/create.dart'; import 'package:dartdev/src/commands/fix.dart'; import 'package:dartdev/src/commands/run.dart'; import 'package:dartdev/src/commands/test.dart'; import 'package:dartdev/src/core.dart'; import 'package:path/path.dart' as path; import 'package:test/test.dart'; import 'utils.dart'; void main() { initGlobalState(); group('DartdevCommand', _dartdevCommand); group('Project', _project); } void _dartdevCommand() { void assertDartdevCommandProperties( DartdevCommand command, String name, String expectedUsagePath, [int subcommandCount = 0]) { expect(command, isNotNull); expect(command.name, name); expect(command.description, isNotEmpty); expect(command.project, isNotNull); expect(command.argParser, isNotNull); expect(command.subcommands.length, subcommandCount); } test('analyze', () { assertDartdevCommandProperties(AnalyzeCommand(), 'analyze', 'analyze'); }); test('compile', () { assertDartdevCommandProperties(CompileCommand(), 'compile', 'compile', 7); }); test('compile/js', () { assertDartdevCommandProperties( CompileCommand().subcommands['js'] as DartdevCommand, 'js', 'compile/js'); }); test('compile/js-dev', () { assertDartdevCommandProperties( CompileCommand().subcommands['js-dev'] as DartdevCommand, 'js-dev', 'compile/js-dev'); }); test('compile/jit-snapshot', () { assertDartdevCommandProperties( CompileCommand().subcommands['jit-snapshot'] as DartdevCommand, 'jit-snapshot', 'compile/jit-snapshot'); }); test('compile/kernel', () { assertDartdevCommandProperties( CompileCommand().subcommands['kernel'] as DartdevCommand, 'kernel', 'compile/kernel'); }); test('compile/exe', () { assertDartdevCommandProperties( CompileCommand().subcommands['exe'] as DartdevCommand, 'exe', 'compile/exe'); }); test('compile/aot-snapshot', () { assertDartdevCommandProperties( CompileCommand().subcommands['aot-snapshot'] as DartdevCommand, 'aot-snapshot', 'compile/aot-snapshot'); }); test('compile/wasm', () { assertDartdevCommandProperties( CompileCommand().subcommands['wasm'] as DartdevCommand, 'wasm', 'compile/wasm'); }); test('create', () { assertDartdevCommandProperties(CreateCommand(), 'create', 'create'); }); test('fix', () { assertDartdevCommandProperties(FixCommand(), 'fix', 'fix'); }); test('run', () { assertDartdevCommandProperties(RunCommand(verbose: false), 'run', 'run'); }); test('test', () { assertDartdevCommandProperties(TestCommand(), 'test', 'test'); }); } void _project() { test('hasPubspecFile positive', () { final p = project(); Project coreProj = Project.fromDirectory(p.dir); expect(coreProj.hasPubspecFile, isTrue); }); test('hasPubspecFile negative', () { final p = project(); var pubspec = File(path.join(p.dirPath, 'pubspec.yaml')); pubspec.deleteSync(); Project coreProj = Project.fromDirectory(p.dir); expect(coreProj.hasPubspecFile, isFalse); }); }