diff --git a/language/proto/fileinfo.go b/language/proto/fileinfo.go index cbeb381a2..d7cbe230b 100644 --- a/language/proto/fileinfo.go +++ b/language/proto/fileinfo.go @@ -106,7 +106,7 @@ func buildProtoRegexp() *regexp.Regexp { importStmt := `\bimport\s*(?:public|weak)?\s*(?P` + strLit + `)\s*;` packageStmt := `\bpackage\s*(?P` + fullIdent + `)\s*;` optionStmt := `\boption\s*(?P` + fullIdent + `)\s*=\s*(?P` + strLit + `)\s*;` - serviceStmt := `(?Pservice\s*` + ident + `\s*{)` + serviceStmt := `(?Pservice\s+` + ident + `\s*{)` comment := `//[^\n]*` protoReSrc := strings.Join([]string{importStmt, packageStmt, optionStmt, serviceStmt, comment}, "|") return regexp.MustCompile(protoReSrc) diff --git a/language/proto/fileinfo_test.go b/language/proto/fileinfo_test.go index 5438f004c..e78c40b2a 100644 --- a/language/proto/fileinfo_test.go +++ b/language/proto/fileinfo_test.go @@ -110,10 +110,35 @@ import "second.proto";`, want: FileInfo{ HasServices: true, }, - }, { + }, + { + desc: "service multiple spaces", + name: "service.proto", + proto: `service ChatService {}`, + want: FileInfo{ + HasServices: true, + }, + }, + { + desc: "service no space for bracket after service name", + name: "service.proto", + proto: `service ChatService{}`, + want: FileInfo{ + HasServices: true, + }, + }, + { + desc: "service no space before service name not matched", + name: "service.proto", + proto: `serviceChatService {}`, + want: FileInfo{ + HasServices: false, + }, + }, + { desc: "service as name", name: "service.proto", - proto: `message ServiceAccount { string service = 1; }`, + proto: `message serviceAccount { string service = 1; }`, want: FileInfo{ HasServices: false, },