blob: ceb069662b103131982b8388adc309bc5e1785c6 [file] [log] [blame]
Ivan Inozemtsevf522c4b2020-09-01 09:30:44 +02001#!/usr/bin/env dart
2// Copyright (c) 2015, the Dart project authors. Please see the AUTHORS file
3// for details. All rights reserved. Use of this source code is governed by a
4// BSD-style license that can be found in the LICENSE file.
5
Ivan Inozemtsevf522c4b2020-09-01 09:30:44 +02006import 'package:protoc_plugin/indenting_writer.dart';
7import 'package:protoc_plugin/protoc.dart';
Kevin Mooreef89f3d2021-07-26 15:49:41 -07008import 'package:protoc_plugin/src/generated/descriptor.pb.dart' as pb;
9import 'package:protoc_plugin/src/generated/plugin.pb.dart' as pb;
Kevin Moore1015fd62021-07-26 16:19:23 -070010import 'package:protoc_plugin/src/linker.dart';
Kevin Moorec5202802021-07-26 16:51:33 -070011import 'package:protoc_plugin/src/options.dart';
Ivan Inozemtsevf522c4b2020-09-01 09:30:44 +020012import 'package:test/test.dart';
13
14import 'golden_file.dart';
15
16void main() {
17 test('testExtensionGenerator', () {
18 final extensionFieldDescriptor = pb.FieldDescriptorProto()
19 ..name = 'client_info'
20 ..jsonName = 'clientInfo'
21 ..number = 261486461
22 ..label = pb.FieldDescriptorProto_Label.LABEL_OPTIONAL
23 ..type = pb.FieldDescriptorProto_Type.TYPE_STRING
24 ..extendee = '.Card';
25 final messageDescriptor = pb.DescriptorProto()
26 ..name = 'Card'
27 ..extension.add(extensionFieldDescriptor);
28 final fileDescriptor = pb.FileDescriptorProto()
29 ..messageType.add(messageDescriptor)
30 ..extension.add(extensionFieldDescriptor);
31
32 final fileGenerator = FileGenerator(fileDescriptor, GenerationOptions());
33 final options = parseGenerationOptions(
34 pb.CodeGeneratorRequest(), pb.CodeGeneratorResponse());
35 link(options, [fileGenerator]);
36 final writer = IndentingWriter(filename: 'sample.proto');
37 fileGenerator.extensionGenerators.single.generate(writer);
38
39 expectMatchesGoldenFile(writer.toString(), 'test/goldens/extension');
40 expectMatchesGoldenFile(
41 writer.sourceLocationInfo.toString(), 'test/goldens/extension.meta');
42 });
43}