mirror of
https://github.com/protocolbuffers/protobuf-go.git
synced 2025-01-04 02:38:50 +00:00
compiler/protogen: relax rules for valid import paths
The path "sub.example.com" is a valid Go import path and should not be rejected. Relax the check to require at least one dot or slash. Either way, it still prevents the situation where a user erroneously treats this option as just the package name. Change-Id: I3df811e1eae61c9d2a0b81c001a27cc7c08c3838 Reviewed-on: https://go-review.googlesource.com/c/protobuf/+/316949 Trust: Joe Tsai <joetsai@digital-static.net> Trust: Joe Tsai <thebrokentoaster@gmail.com> Reviewed-by: Damien Neil <dneil@google.com>
This commit is contained in:
parent
acaef6adb7
commit
4c193d18ec
@ -251,12 +251,13 @@ func (opts Options) New(req *pluginpb.CodeGeneratorRequest) (*Plugin, error) {
|
||||
"\t• a \"M\" argument on the command line.\n\n"+
|
||||
"See %v for more information.\n",
|
||||
fdesc.GetName(), goPackageDocURL)
|
||||
case !strings.Contains(string(importPaths[filename]), "/"):
|
||||
// Check that import paths contain at least one slash to avoid a
|
||||
// common mistake where import path is confused with package name.
|
||||
case !strings.Contains(string(importPaths[filename]), ".") &&
|
||||
!strings.Contains(string(importPaths[filename]), "/"):
|
||||
// Check that import paths contain at least a dot or slash to avoid
|
||||
// a common mistake where import path is confused with package name.
|
||||
return nil, fmt.Errorf(
|
||||
"invalid Go import path %q for %q\n\n"+
|
||||
"The import path must contain at least one forward slash ('/') character.\n\n"+
|
||||
"The import path must contain at least one period ('.') or forward slash ('/') character.\n\n"+
|
||||
"See %v for more information.\n",
|
||||
string(importPaths[filename]), fdesc.GetName(), goPackageDocURL)
|
||||
case packageNames[filename] == "":
|
||||
|
@ -108,6 +108,14 @@ func TestPackageNamesAndPaths(t *testing.T) {
|
||||
wantImportPath: "golang.org/x/foo",
|
||||
wantFilename: "golang.org/x/foo/filename",
|
||||
},
|
||||
{
|
||||
desc: "go_package option sets import path without slashes",
|
||||
goPackageOption: "golang.org;foo",
|
||||
generate: true,
|
||||
wantPackageName: "foo",
|
||||
wantImportPath: "golang.org",
|
||||
wantFilename: "golang.org/filename",
|
||||
},
|
||||
{
|
||||
desc: "go_package option sets import path and package",
|
||||
goPackageOption: "golang.org/x/foo;bar",
|
||||
|
Loading…
Reference in New Issue
Block a user