mirror of https://github.com/grpc/grpc.git
The C based gRPC (C++, Python, Ruby, Objective-C, PHP, C#)
https://grpc.io/
You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
40 lines
1.4 KiB
40 lines
1.4 KiB
--- python/google/protobuf/internal/test_util.py |
|
+++ python/google/protobuf/internal/test_util.py |
|
@@ -39,6 +39,7 @@ __author__ = 'robinson@google.com (Will Robinson)' |
|
import numbers |
|
import operator |
|
import os.path |
|
+import pathlib |
|
|
|
from google.protobuf import unittest_import_pb2 |
|
from google.protobuf import unittest_pb2 |
|
@@ -617,17 +618,22 @@ def ExpectAllFieldsSet(test_case, message): |
|
message.default_import_enum) |
|
|
|
|
|
+def _SearchUp(path, filename): |
|
+ path = pathlib.Path(path).resolve() |
|
+ for parent in [path] + list(path.parents): |
|
+ file_path = parent / ('google/protobuf/testdata/' + filename) |
|
+ if file_path.exists(): |
|
+ # Found it. Load the golden file from the testdata directory. |
|
+ return file_path.open('rb') |
|
+ return None |
|
+ |
|
def GoldenFile(filename): |
|
"""Finds the given golden file and returns a file object representing it.""" |
|
|
|
# Search up the directory tree looking for the C++ protobuf source code. |
|
- path = '.' |
|
- while os.path.exists(path): |
|
- if os.path.exists(os.path.join(path, 'src/google/protobuf')): |
|
- # Found it. Load the golden file from the testdata directory. |
|
- full_path = os.path.join(path, 'src/google/protobuf/testdata', filename) |
|
- return open(full_path, 'rb') |
|
- path = os.path.join(path, '..') |
|
+ f = _SearchUp('.', filename) or _SearchUp(__file__, filename) |
|
+ if f: |
|
+ return f |
|
|
|
# Search internally. |
|
path = '.'
|