Skip to content

Refactor the test goldens so they have standard file name extensions #1014

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Merged
merged 9 commits into from
Jun 5, 2025
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 2 additions & 0 deletions protoc_plugin/analysis_options.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -4,3 +4,5 @@ analyzer:
errors:
avoid_dynamic_calls: ignore
only_throw_errors: ignore
exclude:
- test/goldens/**
1 change: 1 addition & 0 deletions protoc_plugin/lib/indenting_writer.dart
Original file line number Diff line number Diff line change
Expand Up @@ -23,6 +23,7 @@ class NamedLocation {
class IndentingWriter {
final StringBuffer _buffer = StringBuffer();
final GeneratedCodeInfo sourceLocationInfo = GeneratedCodeInfo();

String _indent = '';
bool _needIndent = true;
// After writing any chunk, _previousOffset is the size of everything that was
Expand Down
2 changes: 2 additions & 0 deletions protoc_plugin/pubspec.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -16,7 +16,9 @@ dependencies:

dev_dependencies:
dart_flutter_team_lints: ^1.0.0
dart_style: ^3.0.0
matcher: ^0.12.10
pub_semver: ^2.2.0
test: ^1.16.0

executables:
Expand Down
6 changes: 3 additions & 3 deletions protoc_plugin/test/client_generator_test.dart
Original file line number Diff line number Diff line change
Expand Up @@ -8,8 +8,8 @@ import 'package:protoc_plugin/src/linker.dart';
import 'package:protoc_plugin/src/options.dart';
import 'package:test/test.dart';

import 'golden_file.dart';
import 'service_util.dart';
import 'src/golden_file.dart';
import 'src/service_util.dart';

void main() {
test('testClientGenerator', () {
Expand All @@ -29,6 +29,6 @@ void main() {

final writer = IndentingWriter();
cag.generate(writer);
expectMatchesGoldenFile(writer.toString(), 'test/goldens/client');
expectGolden(writer.toString(), 'client.pb.dart');
});
}
2 changes: 1 addition & 1 deletion protoc_plugin/test/constructor_args_test.dart
Original file line number Diff line number Diff line change
Expand Up @@ -7,7 +7,7 @@ import 'package:test/test.dart';
import 'gen/google/protobuf/unittest.pb.dart';
import 'gen/google/protobuf/unittest_import.pb.dart';
import 'gen/map_field.pb.dart';
import 'test_util.dart';
import 'src/test_util.dart';

void main() {
group('map_field', () {
Expand Down
6 changes: 3 additions & 3 deletions protoc_plugin/test/deprecations_test.dart
Original file line number Diff line number Diff line change
Expand Up @@ -6,16 +6,16 @@ import 'dart:io';

import 'package:test/test.dart';

import 'golden_file.dart';
import 'src/golden_file.dart';

void main() {
test('Deprecated annotation generation for messages', () {
final actual = File('test/gen/deprecations.pb.dart').readAsStringSync();
expectMatchesGoldenFile(actual, 'test/goldens/deprecations');
expectGolden(actual, 'deprecations.pb.dart');
});

test('Deprecated annotation generation for enums', () {
final actual = File('test/gen/deprecations.pbenum.dart').readAsStringSync();
expectMatchesGoldenFile(actual, 'test/goldens/deprecations.pbenum');
expectGolden(actual, 'deprecations.pbenum.dart');
});
}
6 changes: 3 additions & 3 deletions protoc_plugin/test/doc_comments_test.dart
Original file line number Diff line number Diff line change
Expand Up @@ -6,16 +6,16 @@ import 'dart:io';

import 'package:test/test.dart';

import 'golden_file.dart';
import 'src/golden_file.dart';

void main() {
test('Doc comment generation for messages', () {
final actual = File('test/gen/doc_comments.pb.dart').readAsStringSync();
expectMatchesGoldenFile(actual, 'test/goldens/doc_comments');
expectGolden(actual, 'doc_comments.pb.dart');
});

test('Doc comment generation for enums', () {
final actual = File('test/gen/doc_comments.pbenum.dart').readAsStringSync();
expectMatchesGoldenFile(actual, 'test/goldens/doc_comments.pbenum');
expectGolden(actual, 'doc_comments.pbenum.dart');
});
}
7 changes: 3 additions & 4 deletions protoc_plugin/test/enum_generator_test.dart
Original file line number Diff line number Diff line change
Expand Up @@ -8,7 +8,7 @@ import 'package:protoc_plugin/src/gen/google/protobuf/descriptor.pb.dart';
import 'package:protoc_plugin/src/options.dart';
import 'package:test/test.dart';

import 'golden_file.dart';
import 'src/golden_file.dart';

void main() {
test('testEnumGenerator', () {
Expand All @@ -32,8 +32,7 @@ void main() {
final fg = FileGenerator(FileDescriptorProto(), GenerationOptions());
final eg = EnumGenerator.topLevel(ed, fg, <String>{}, 0);
eg.generate(writer);
expectMatchesGoldenFile(writer.toString(), 'test/goldens/enum');
expectMatchesGoldenFile(
writer.sourceLocationInfo.toString(), 'test/goldens/enum.meta');
expectGolden(writer.toString(), 'enum.pbenum.dart');
expectGolden(writer.sourceLocationInfo.toString(), 'enum.pbenum.dart.meta');
});
}
17 changes: 13 additions & 4 deletions protoc_plugin/test/extension_generator_test.dart
Original file line number Diff line number Diff line change
Expand Up @@ -11,7 +11,7 @@ import 'package:protoc_plugin/src/linker.dart';
import 'package:protoc_plugin/src/options.dart';
import 'package:test/test.dart';

import 'golden_file.dart';
import 'src/golden_file.dart';

void main() {
test('testExtensionGenerator', () {
Expand All @@ -36,8 +36,17 @@ void main() {
final writer = IndentingWriter(filename: 'sample.proto');
fileGenerator.extensionGenerators.single.generate(writer);

expectMatchesGoldenFile(writer.toString(), 'test/goldens/extension');
expectMatchesGoldenFile(
writer.sourceLocationInfo.toString(), 'test/goldens/extension.meta');
// We wrap the output in a dummy class in order to create a valid
// (formattable) Dart file.
var actual = writer.toString();
actual = '''
class Card {
$actual
}
''';

expectGolden(actual, 'extension.pb.dart');
expectGolden(
writer.sourceLocationInfo.toString(), 'extension.pb.dart.meta');
});
}
2 changes: 1 addition & 1 deletion protoc_plugin/test/extension_test.dart
Original file line number Diff line number Diff line change
Expand Up @@ -12,7 +12,7 @@ import 'gen/extend_unittest.pb.dart';
import 'gen/google/protobuf/unittest.pb.dart';
import 'gen/nested_extension.pb.dart';
import 'gen/non_nested_extension.pb.dart';
import 'test_util.dart';
import 'src/test_util.dart';

Matcher throwsArgError(String expectedMessage) =>
throwsA(predicate((dynamic x) {
Expand Down
56 changes: 21 additions & 35 deletions protoc_plugin/test/file_generator_test.dart
Original file line number Diff line number Diff line change
Expand Up @@ -11,7 +11,7 @@ import 'package:protoc_plugin/src/linker.dart';
import 'package:protoc_plugin/src/options.dart';
import 'package:test/test.dart';

import 'golden_file.dart';
import 'src/golden_file.dart';

FileDescriptorProto buildFileDescriptor(
{bool phoneNumber = true, bool topLevelEnum = false}) {
Expand Down Expand Up @@ -98,8 +98,7 @@ void main() {
CodeGeneratorResponse())!;
final fg = FileGenerator(fd, options);
link(options, [fg]);
expectMatchesGoldenFile(
fg.generateMainFile().toString(), 'test/goldens/oneMessage.pb');
expectGolden(fg.generateMainFile().toString(), 'oneMessage.pb.dart');
});

test('FileGenerator outputs a .pb.dart file for an Int64 message', () {
Expand All @@ -109,8 +108,7 @@ void main() {
CodeGeneratorResponse())!;
final fg = FileGenerator(fd, options);
link(options, [fg]);
expectMatchesGoldenFile(
fg.generateMainFile().toString(), 'test/goldens/int64.pb');
expectGolden(fg.generateMainFile().toString(), 'int64.pb.dart');
});

test(
Expand All @@ -123,8 +121,8 @@ void main() {
CodeGeneratorResponse())!;
final fg = FileGenerator(fd, options);
link(options, [fg]);
expectMatchesGoldenFile(fg.generateMainFile().sourceLocationInfo.toString(),
'test/goldens/oneMessage.pb.meta');
expectGolden(fg.generateMainFile().sourceLocationInfo.toString(),
'oneMessage.pb.dart.meta');
});

test('FileGenerator outputs a pbjson.dart file for a proto with one message',
Expand All @@ -135,8 +133,7 @@ void main() {
CodeGeneratorResponse())!;
final fg = FileGenerator(fd, options);
link(options, [fg]);
expectMatchesGoldenFile(
fg.generateJsonFile(), 'test/goldens/oneMessage.pbjson');
expectGolden(fg.generateJsonFile(), 'oneMessage.pbjson.dart');
});

test('FileGenerator generates files for a top-level enum', () {
Expand All @@ -147,10 +144,8 @@ void main() {

final fg = FileGenerator(fd, options);
link(options, [fg]);
expectMatchesGoldenFile(
fg.generateMainFile().toString(), 'test/goldens/topLevelEnum.pb');
expectMatchesGoldenFile(
fg.generateEnumFile().toString(), 'test/goldens/topLevelEnum.pbenum');
expectGolden(fg.generateMainFile().toString(), 'topLevelEnum.pb.dart');
expectGolden(fg.generateEnumFile().toString(), 'topLevelEnum.pbenum.dart');
});

test('FileGenerator generates metadata files for a top-level enum', () {
Expand All @@ -162,10 +157,10 @@ void main() {
final fg = FileGenerator(fd, options);
link(options, [fg]);

expectMatchesGoldenFile(fg.generateMainFile().sourceLocationInfo.toString(),
'test/goldens/topLevelEnum.pb.meta');
expectMatchesGoldenFile(fg.generateEnumFile().sourceLocationInfo.toString(),
'test/goldens/topLevelEnum.pbenum.meta');
expectGolden(fg.generateMainFile().sourceLocationInfo.toString(),
'topLevelEnum.pb.dart.meta');
expectGolden(fg.generateEnumFile().sourceLocationInfo.toString(),
'topLevelEnum.pbenum.dart.meta');
});

test('FileGenerator generates a .pbjson.dart file for a top-level enum', () {
Expand All @@ -176,8 +171,7 @@ void main() {

final fg = FileGenerator(fd, options);
link(options, [fg]);
expectMatchesGoldenFile(
fg.generateJsonFile(), 'test/goldens/topLevelEnum.pbjson');
expectGolden(fg.generateJsonFile(), 'topLevelEnum.pbjson.dart');
});

test('FileGenerator outputs library for a .proto in a package', () {
Expand All @@ -192,8 +186,7 @@ void main() {

final writer = IndentingWriter(filename: '');
fg.writeMainHeader(writer);
expectMatchesGoldenFile(
writer.toString(), 'test/goldens/header_in_package.pb');
expectGolden(writer.toString(), 'header_in_package.pb.dart');
});

test('FileGenerator outputs a fixnum import when needed', () {
Expand All @@ -218,8 +211,7 @@ void main() {

final writer = IndentingWriter(filename: '');
fg.writeMainHeader(writer);
expectMatchesGoldenFile(
writer.toString(), 'test/goldens/header_with_fixnum.pb');
expectGolden(writer.toString(), 'header_with_fixnum.pb.dart');
});

test('FileGenerator outputs files for a service', () {
Expand All @@ -246,10 +238,8 @@ void main() {

final writer = IndentingWriter(filename: '');
fg.writeMainHeader(writer);
expectMatchesGoldenFile(
fg.generateMainFile().toString(), 'test/goldens/service.pb');
expectMatchesGoldenFile(
fg.generateServerFile(), 'test/goldens/service.pbserver');
expectGolden(fg.generateMainFile().toString(), 'service.pb.dart');
expectGolden(fg.generateServerFile(), 'service.pbserver.dart');
});

test('FileGenerator does not output legacy service stubs if gRPC is selected',
Expand All @@ -275,8 +265,7 @@ void main() {

final writer = IndentingWriter(filename: '');
fg.writeMainHeader(writer);
expectMatchesGoldenFile(
fg.generateMainFile().toString(), 'test/goldens/grpc_service.pb');
expectGolden(fg.generateMainFile().toString(), 'grpc_service.pb.dart');
});

test('FileGenerator outputs gRPC stubs if gRPC is selected', () {
Expand Down Expand Up @@ -361,8 +350,7 @@ void main() {

final writer = IndentingWriter(filename: '');
fg.writeMainHeader(writer);
expectMatchesGoldenFile(
fg.generateGrpcFile(), 'test/goldens/grpc_service.pbgrpc');
expectGolden(fg.generateGrpcFile(), 'grpc_service.pbgrpc.dart');
});

test('FileGenerator generates imports for .pb.dart files', () {
Expand Down Expand Up @@ -471,9 +459,7 @@ void main() {
final fg = FileGenerator(fd, options);
link(options,
[fg, FileGenerator(fd1, options), FileGenerator(fd2, options)]);
expectMatchesGoldenFile(
fg.generateMainFile().toString(), 'test/goldens/imports.pb');
expectMatchesGoldenFile(
fg.generateEnumFile().toString(), 'test/goldens/imports.pbjson');
expectGolden(fg.generateMainFile().toString(), 'imports.pb.dart');
expectGolden(fg.generateEnumFile().toString(), 'imports.pbjson.dart');
});
}
2 changes: 1 addition & 1 deletion protoc_plugin/test/generated_message_test.dart
Original file line number Diff line number Diff line change
Expand Up @@ -17,7 +17,7 @@ import 'gen/package3.pb.dart' as p3;
import 'gen/reserved_names.pb.dart';
import 'gen/reserved_names_extension.pb.dart';
import 'gen/reserved_names_message.pb.dart';
import 'test_util.dart';
import 'src/test_util.dart';

void main() {
final throwsInvalidProtocolBufferException =
Expand Down
30 changes: 0 additions & 30 deletions protoc_plugin/test/golden_file.dart

This file was deleted.

13 changes: 0 additions & 13 deletions protoc_plugin/test/goldens/client

This file was deleted.

13 changes: 13 additions & 0 deletions protoc_plugin/test/goldens/client.pb.dart
Original file line number Diff line number Diff line change
@@ -0,0 +1,13 @@
class TestApi {
final $pb.RpcClient _client;

TestApi(this._client);

$async.Future<SomeReply> aMethod(
$pb.ClientContext? ctx, SomeRequest request) =>
_client.invoke<SomeReply>(ctx, 'Test', 'AMethod', request, SomeReply());
$async.Future<$0.AnotherReply> anotherMethod(
$pb.ClientContext? ctx, $0.EmptyMessage request) =>
_client.invoke<$0.AnotherReply>(
ctx, 'Test', 'AnotherMethod', request, $0.AnotherReply());
}
21 changes: 0 additions & 21 deletions protoc_plugin/test/goldens/enum

This file was deleted.

Loading