Translate python_libray.pkg_path to proto.import_prefix
If a python_library uses a pkg_path foo/bar, then the proto srcs in that libray need to import the dep .proto as foo/bar/proto.proto. This behavior is restricted to python modules. To implement this is in bp2build, this CL creates a new interface with a single method `PkgPath`. Only python module structs implement this interface, and this method is only available during bp2build Test: Added a bp2build unit test Test: TH Change-Id: If8d207c0b321f75337a053795826b283a5eaaf46
This commit is contained in:
@@ -348,3 +348,43 @@ func TestPythonLibraryWithProtobufs(t *testing.T) {
|
||||
},
|
||||
})
|
||||
}
|
||||
|
||||
func TestPythonLibraryWithProtobufsAndPkgPath(t *testing.T) {
|
||||
t.Parallel()
|
||||
runBp2BuildTestCaseWithPythonLibraries(t, Bp2buildTestCase{
|
||||
Description: "test python_library protobuf with pkg_path",
|
||||
Filesystem: map[string]string{
|
||||
"dir/foo.proto": "",
|
||||
"dir/bar.proto": "", // bar contains "import dir/foo.proto"
|
||||
"dir/Android.bp": `
|
||||
python_library {
|
||||
name: "foo",
|
||||
pkg_path: "dir",
|
||||
srcs: [
|
||||
"foo.proto",
|
||||
"bar.proto",
|
||||
],
|
||||
bazel_module: {bp2build_available: true},
|
||||
}`,
|
||||
},
|
||||
Dir: "dir",
|
||||
ExpectedBazelTargets: []string{
|
||||
MakeBazelTarget("proto_library", "foo_proto", AttrNameToString{
|
||||
"import_prefix": `"dir"`,
|
||||
"strip_import_prefix": `""`,
|
||||
"srcs": `[
|
||||
"foo.proto",
|
||||
"bar.proto",
|
||||
]`,
|
||||
}),
|
||||
MakeBazelTarget("py_proto_library", "foo_py_proto", AttrNameToString{
|
||||
"deps": `[":foo_proto"]`,
|
||||
}),
|
||||
MakeBazelTarget("py_library", "foo", AttrNameToString{
|
||||
"srcs_version": `"PY3"`,
|
||||
"imports": `[".."]`,
|
||||
"deps": `[":foo_py_proto"]`,
|
||||
}),
|
||||
},
|
||||
})
|
||||
}
|
||||
|
Reference in New Issue
Block a user