Commit 42e1e2ab authored by Jie Luo's avatar Jie Luo

Fix python compatibility test when a new generated code imports an old…

Fix python compatibility test when a new generated code imports an old version(2.6.1 or older) generated code.
parent ccb76fff
......@@ -92,16 +92,10 @@ python setup.py test
# Test A.3:
# proto set 1: use old version
# proto set 2 which may import protos in set 1: use new version
# Compatiblility test fail if the old verison is less than 3.0.0-alpha-1.
# Because module name aliases was added in v3.0.0-alpha-1 instead of
# fully-qualified module names to refer to dependencies: dot was replaced
# with _dot_.
if [ "$(printf "$OLD_VERSION\n3.0.0" | sort -V | head -n 1 )" = "3.0.0" ]; then
cp old_protoc protoc_1
cp ../../../src/protoc protoc_2
python setup.py build
python setup.py test
fi
cp old_protoc protoc_1
cp ../../../src/protoc protoc_2
python setup.py build
python setup.py test
rm google -r -f
rm build -r -f
......
......@@ -1380,8 +1380,17 @@ void Generator::FixOptionsForMessage(const Descriptor& descriptor) const {
void Generator::CopyPublicDependenciesAliases(
const string& copy_from, const FileDescriptor* file) const {
for (int i = 0; i < file->public_dependency_count(); ++i) {
string module_name = ModuleName(file->public_dependency(i)->name());
string module_alias = ModuleAlias(file->public_dependency(i)->name());
printer_->Print("$alias$ = $copy_from$.$alias$\n", "alias", module_alias,
// There's no module alias in the dependent file if it was generated by
// an old protoc (less than 3.0.0-alpha-1). Use module name in this
// situation.
printer_->Print("try:\n"
" $alias$ = $copy_from$.$alias$\n"
"except AttributeError:\n"
" $alias$ = $copy_from$.$module$\n",
"alias", module_alias,
"module", module_name,
"copy_from", copy_from);
CopyPublicDependenciesAliases(copy_from, file->public_dependency(i));
}
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment