test_codegen_descriptors.py 1.3 KB

1234567891011121314151617181920212223242526272829303132333435
  1. """The vendored protoc codegen descriptors must be importable and usable."""
  2. def test_codegen_request_round_trips():
  3. from chattolib._pb.google.protobuf import protoc_gen_request_pb2 as g
  4. req = g.CodeGeneratorRequest()
  5. req.language = "chattolib"
  6. req.file_to_generate.append("chatto/api/v1/rooms.proto")
  7. # A service with one unary method.
  8. fd = req.proto_file.add()
  9. fd.name = "chatto/api/v1/rooms.proto"
  10. fd.package = "chatto.api.v1"
  11. svc = fd.service.add()
  12. svc.name = "RoomService"
  13. m = svc.method.add()
  14. m.name = "JoinRoom"
  15. m.input_type = ".chatto.api.v1.JoinRoomRequest"
  16. m.output_type = ".chatto.api.v1.JoinRoomResponse"
  17. data = req.SerializeToString()
  18. req2 = g.CodeGeneratorRequest.FromString(data)
  19. assert req2.file_to_generate[0] == "chatto/api/v1/rooms.proto"
  20. assert req2.proto_file[0].service[0].method[0].name == "JoinRoom"
  21. def test_codegen_response_file_field():
  22. from chattolib._pb.google.protobuf import protoc_gen_response_pb2 as g
  23. resp = g.CodeGeneratorResponse()
  24. resp.file.add().name = "out/foo_connect.py"
  25. resp.file.add().content = "print('hi')"
  26. data = resp.SerializeToString()
  27. resp2 = g.CodeGeneratorResponse.FromString(data)
  28. assert resp2.file[1].content == "print('hi')"