@@ -19,41 +19,43 @@ import GRPCProtobufCodeGen
19
19
import SwiftProtobufPluginLibrary
20
20
import Testing
21
21
22
- struct ProtobufCodeGeneratorTests : UsesDescriptorSet {
23
- static let descriptorSetName = " test-service "
24
- static let fileDescriptorName = " test-service "
22
+ struct ProtobufCodeGeneratorTests {
23
+ @Suite ( " Self-contained service (test-service.proto) " )
24
+ struct TestService : UsesDescriptorSet {
25
+ static let descriptorSetName = " test-service "
26
+ static let fileDescriptorName = " test-service "
25
27
26
- @Test ( " Generate " , arguments: [ SourceGenerator . Config. AccessLevel. internal, . public, . package ] )
27
- func generate( accessLevel: SourceGenerator . Config . AccessLevel ) throws {
28
- let generator = ProtobufCodeGenerator (
29
- config: SourceGenerator . Config (
30
- accessLevel: accessLevel,
31
- accessLevelOnImports: false ,
32
- client: true ,
33
- server: true ,
34
- indentation: 2
28
+ @Test ( " Generate " , arguments: [ SourceGenerator . Config. AccessLevel. internal, . public, . package ] )
29
+ func generate( accessLevel: SourceGenerator . Config . AccessLevel ) throws {
30
+ let generator = ProtobufCodeGenerator (
31
+ config: SourceGenerator . Config (
32
+ accessLevel: accessLevel,
33
+ accessLevelOnImports: false ,
34
+ client: true ,
35
+ server: true ,
36
+ indentation: 2
37
+ )
35
38
)
36
- )
37
39
38
- let access : String
39
- switch accessLevel {
40
- case . public:
41
- access = " public "
42
- case . internal:
43
- access = " internal "
44
- case . package :
45
- access = " package "
46
- default :
47
- fatalError ( )
48
- }
40
+ let access : String
41
+ switch accessLevel {
42
+ case . public:
43
+ access = " public "
44
+ case . internal:
45
+ access = " internal "
46
+ case . package :
47
+ access = " package "
48
+ default :
49
+ fatalError ( )
50
+ }
49
51
50
- let generated = try generator. generateCode (
51
- fileDescriptor: Self . fileDescriptor,
52
- protoFileModuleMappings: ProtoFileToModuleMappings ( ) ,
53
- extraModuleImports: [ ]
54
- )
52
+ let generated = try generator. generateCode (
53
+ fileDescriptor: Self . fileDescriptor,
54
+ protoFileModuleMappings: ProtoFileToModuleMappings ( ) ,
55
+ extraModuleImports: [ ]
56
+ )
55
57
56
- let expected = """
58
+ let expected = """
57
59
/// Leading trivia.
58
60
59
61
// DO NOT EDIT.
@@ -1058,6 +1060,49 @@ struct ProtobufCodeGeneratorTests: UsesDescriptorSet {
1058
1060
}
1059
1061
"""
1060
1062
1061
- #expect( generated == expected)
1063
+ #expect( generated == expected)
1064
+ }
1065
+ }
1066
+
1067
+ @Suite ( " File-without-services (foo-messages.proto) " )
1068
+ struct NoServices : UsesDescriptorSet {
1069
+ static let descriptorSetName = " foo-messages "
1070
+ static let fileDescriptorName = " foo-messages "
1071
+
1072
+ @Test ( " Generate " )
1073
+ func generate( ) throws {
1074
+ let generator = ProtobufCodeGenerator (
1075
+ config: SourceGenerator . Config (
1076
+ accessLevel: . public,
1077
+ accessLevelOnImports: false ,
1078
+ client: true ,
1079
+ server: true ,
1080
+ indentation: 2
1081
+ )
1082
+ )
1083
+
1084
+ let generated = try generator. generateCode (
1085
+ fileDescriptor: Self . fileDescriptor,
1086
+ protoFileModuleMappings: ProtoFileToModuleMappings ( ) ,
1087
+ extraModuleImports: [ ]
1088
+ )
1089
+
1090
+ let expected = """
1091
+ /// Leading trivia.
1092
+
1093
+ // DO NOT EDIT.
1094
+ // swift-format-ignore-file
1095
+ //
1096
+ // Generated by the gRPC Swift generator plugin for the protocol buffer compiler.
1097
+ // Source: foo-messages.proto
1098
+ //
1099
+ // For information on using the generated types, please see the documentation:
1100
+ // https://github.com/grpc/grpc-swift
1101
+
1102
+ // This file contained no services.
1103
+ """
1104
+
1105
+ #expect( generated == expected)
1106
+ }
1062
1107
}
1063
1108
}
0 commit comments