diff --git a/packages/freezed/CHANGELOG.md b/packages/freezed/CHANGELOG.md index da139a99..7cc906e6 100644 --- a/packages/freezed/CHANGELOG.md +++ b/packages/freezed/CHANGELOG.md @@ -1,6 +1,7 @@ -## Unreleased minor +## Unreleased patch -Added `when`/`map` back +- Added `when`/`map` back +- Stop writing `// dart format width=80` to the generated freezed files. ## 3.0.6 - 2025-04-05 diff --git a/packages/freezed/lib/builder.dart b/packages/freezed/lib/builder.dart index 535b5f88..1330bab7 100644 --- a/packages/freezed/lib/builder.dart +++ b/packages/freezed/lib/builder.dart @@ -1,5 +1,7 @@ import 'package:build/build.dart'; +import 'package:dart_style/dart_style.dart' show DartFormatter; import 'package:freezed_annotation/freezed_annotation.dart'; +import 'package:pub_semver/pub_semver.dart' show Version; import 'package:source_gen/source_gen.dart'; import 'src/freezed_generator.dart'; @@ -14,6 +16,7 @@ Builder freezed(BuilderOptions options) { ), ], '.freezed.dart', + formatOutput: _defaultFormatOutput, header: ''' // coverage:ignore-file // GENERATED CODE - DO NOT MODIFY BY HAND @@ -23,3 +26,6 @@ Builder freezed(BuilderOptions options) { options: options, ); } + +String _defaultFormatOutput(String code, Version version) => + DartFormatter(languageVersion: version).format(code); diff --git a/packages/freezed/pubspec.yaml b/packages/freezed/pubspec.yaml index 8b06f6ba..7a78a13f 100644 --- a/packages/freezed/pubspec.yaml +++ b/packages/freezed/pubspec.yaml @@ -18,6 +18,8 @@ dependencies: source_gen: ^2.0.0 freezed_annotation: ^3.0.0 json_annotation: ^4.8.0 + dart_style: ^3.0.0 + pub_semver: ^2.2.0 dev_dependencies: json_serializable: ^6.3.2 diff --git a/packages/freezed/test/source_gen_test.dart b/packages/freezed/test/source_gen_test.dart index b848ec8c..56bdd8d1 100644 --- a/packages/freezed/test/source_gen_test.dart +++ b/packages/freezed/test/source_gen_test.dart @@ -1,8 +1,10 @@ import 'dart:async'; +import 'dart:io' show Directory, File; import 'package:freezed/src/freezed_generator.dart'; import 'package:freezed_annotation/freezed_annotation.dart'; import 'package:source_gen_test/source_gen_test.dart'; +import 'package:test/test.dart'; Future main() async { final reader = await initializeLibraryReaderForDirectory( @@ -16,4 +18,37 @@ Future main() async { reader, FreezedGenerator(Freezed.fromJson({}), format: false), ); + + test('generated files do not contain default source_gen header', () { + // Read generated files from the integration folder. + final generatedFiles = Directory('test/integration') + .listSync(recursive: true) + .whereType() + .where((e) => e.path.endsWith('.freezed.dart')) + .toList(); + + // Ensure we have files to test + expect( + generatedFiles, + isNotEmpty, + reason: 'Expected to find .freezed.dart files in test/integration', + ); + + for (final file in generatedFiles) { + final content = file.readAsStringSync(); + + // Verify the custom header is present + expect(content, contains('// coverage:ignore-file')); + expect(content, contains('// GENERATED CODE - DO NOT MODIFY BY HAND')); + expect(content, contains('// ignore_for_file: type=lint')); + + // Verify the default source_gen header is NOT present + expect( + content, + isNot(contains('// dart format width')), + reason: + 'File ${file.path} should not contain default source_gen header', + ); + } + }); }