1# Test proto3 "optional" field types.
2# This is supported in protoc 3.12 and newer.
3
4Import('env')
5import re
6
7version = None
8if 'PROTOC_VERSION' in env:
9    match = re.search('(?:([0-9]+).)?([0-9]+).([0-9]+)', env['PROTOC_VERSION'])
10    version = (int(match.group(1) or 3), int(match.group(2)), int(match.group(3)))
11
12# Oneof is supported by protoc >= 3.12.0
13if env.GetOption('clean') or (version and (version[0] > 3 or (version[0] == 3 and version[1] >= 12))):
14
15    env2 = env.Clone()
16    env2.Append(PROTOCFLAGS = "--experimental_allow_proto3_optional")
17
18    env2.NanopbProto("optional.proto")
19    opt = env2.Program(["optional.c", "optional.pb.c",
20                     "$COMMON/pb_decode.o", "$COMMON/pb_encode.o",
21                     "$COMMON/pb_common.o"])
22    env2.RunTest(opt)
23
24
25