14 """Tests for protoc."""
16 from __future__
import absolute_import
17 from __future__
import division
18 from __future__
import print_function
22 import multiprocessing
35 except Exception
as e:
43 error_queue = multiprocessing.Queue()
45 proc = multiprocessing.Process(target=wrapped_case)
48 if not error_queue.empty():
49 raise error_queue.get()
50 assert proc.exitcode == 0,
"Process exited with code {}".
format(
54 @contextlib.contextmanager
56 original_sys_path = sys.path
57 if new_paths
is not None:
58 sys.path = list(new_paths) + sys.path
62 sys.path = original_sys_path
66 from grpc_tools
import protoc
68 (
"tools/distrib/python/grpcio_tools/grpc_tools/test/",)):
69 protos = protoc._protos(
"simple.proto")
70 assert protos.SimpleMessage
is not None
74 from grpc_tools
import protoc
76 (
"tools/distrib/python/grpcio_tools/grpc_tools/test/",)):
77 protos = protoc._protos(
"simple.proto")
78 services = protoc._services(
"simple.proto")
79 assert services.SimpleMessageServiceStub
is not None
83 from grpc_tools
import protoc
85 (
"tools/distrib/python/grpcio_tools/grpc_tools/test/",)):
86 services = protoc._services(
"simple.proto")
87 assert services.SimpleMessageServiceStub
is not None
91 from grpc_tools
import protoc
93 (
"tools/distrib/python/grpcio_tools/grpc_tools/test/",)):
94 protos = protoc._protos(
"simple.proto")
95 services = protoc._services(
"simple.proto")
96 complicated_protos = protoc._protos(
"complicated.proto")
97 simple_message = protos.SimpleMessage()
98 complicated_message = complicated_protos.ComplicatedMessage()
99 assert (simple_message.simpler_message.simplest_message.__class__
is
100 complicated_message.simplest_message.__class__)
105 (
"tools/distrib/python/grpcio_tools/grpc_tools/test/",)):
106 from grpc_tools
import protoc
107 import complicated_pb2
108 protos = protoc._protos(
"simple.proto")
109 static_message = complicated_pb2.ComplicatedMessage()
110 dynamic_message = protos.SimpleMessage()
111 assert (dynamic_message.simpler_message.simplest_message.__class__
is
112 static_message.simplest_message.__class__)
116 from grpc_tools
import protoc
117 protos, services = protoc._protos_and_services(
"simple.proto")
118 assert protos.SimpleMessage
is not None
119 assert services.SimpleMessageServiceStub
is not None
123 from grpc_tools
import protoc
125 protos = protoc._protos(
"flawed.proto")
126 except Exception
as e:
128 assert "flawed.proto" in error_str
129 assert "17:23" in error_str
130 assert "21:23" in error_str
132 assert False,
"Compile error expected. None occurred."
159 if __name__ ==
'__main__':