| # Test proto3 "optional" field types. |
| # This is supported in protoc 3.12 and newer. |
| |
| Import('env') |
| import re |
| |
| version = None |
| if 'PROTOC_VERSION' in env: |
| match = re.search('([0-9]+).([0-9]+).([0-9]+)', env['PROTOC_VERSION']) |
| version = (int(match.group(1)), int(match.group(2)), int(match.group(3))) |
| |
| # Oneof is supported by protoc >= 3.12.0 |
| if env.GetOption('clean') or (version and (version[0] > 3 or (version[0] == 3 and version[1] >= 12))): |
| |
| env2 = env.Clone() |
| env2.Append(PROTOCFLAGS = "--experimental_allow_proto3_optional") |
| |
| env2.NanopbProto("optional.proto") |
| opt = env2.Program(["optional.c", "optional.pb.c", |
| "$COMMON/pb_decode.o", "$COMMON/pb_encode.o", |
| "$COMMON/pb_common.o"]) |
| env2.RunTest(opt) |
| |
| |