diff --git a/packages/melos/lib/src/command_runner/format.dart b/packages/melos/lib/src/command_runner/format.dart index 796c3ec2..98ed47ae 100644 --- a/packages/melos/lib/src/command_runner/format.dart +++ b/packages/melos/lib/src/command_runner/format.dart @@ -38,6 +38,7 @@ class FormatCommand extends MelosCommand { final concurrency = int.parse(argResults!['concurrency'] as String); final lineLength = switch (argResults?['line-length']) { final int length => length, + final String length => int.tryParse(length), _ => null, }; diff --git a/packages/melos/test/commands/format_test.dart b/packages/melos/test/commands/format_test.dart index 749b7f1d..99314d25 100644 --- a/packages/melos/test/commands/format_test.dart +++ b/packages/melos/test/commands/format_test.dart @@ -263,5 +263,39 @@ $ melos format skip: 'Differ at offset 1261', ); }); + + test('should run format with --line-length flag', () async { + const code = ''' +void main() { + print('a very long line that should be wrapped with default dart settings but we use a longer line length'); +} +'''; + + writeTextFile( + p.join(aDir.path, 'main.dart'), + code, + ); + + final result = await Process.run( + 'melos', + ['format', '--set-exit-if-changed', '--line-length', '150'], + workingDirectory: workspaceDir.path, + runInShell: Platform.isWindows, + stdoutEncoding: utf8, + stderrEncoding: utf8, + ); + + expect(result.exitCode, equals(0)); + + expect( + result.stdout, + contains( + r''' +$ melos format + └> dart format --set-exit-if-changed --line-length 150 . + └> SUCCESS''', + ), + ); + }); }); }