#70 Messages should allow fields that are Python keywords
This commit is contained in:
parent
4b7d5d3de4
commit
3c70f21074
@ -2,6 +2,7 @@
|
|||||||
import glob
|
import glob
|
||||||
import os
|
import os
|
||||||
import shutil
|
import shutil
|
||||||
|
import subprocess
|
||||||
import sys
|
import sys
|
||||||
from typing import Set
|
from typing import Set
|
||||||
|
|
||||||
@ -33,6 +34,8 @@ def generate(whitelist: Set[str]):
|
|||||||
|
|
||||||
test_case_names = set(get_directories(inputs_path))
|
test_case_names = set(get_directories(inputs_path))
|
||||||
|
|
||||||
|
failed_test_cases = []
|
||||||
|
|
||||||
for test_case_name in sorted(test_case_names):
|
for test_case_name in sorted(test_case_names):
|
||||||
test_case_input_path = os.path.realpath(
|
test_case_input_path = os.path.realpath(
|
||||||
os.path.join(inputs_path, test_case_name)
|
os.path.join(inputs_path, test_case_name)
|
||||||
@ -45,6 +48,24 @@ def generate(whitelist: Set[str]):
|
|||||||
):
|
):
|
||||||
continue
|
continue
|
||||||
|
|
||||||
|
print(f"Generating output for {test_case_name}")
|
||||||
|
try:
|
||||||
|
generate_test_case_output(test_case_name, test_case_input_path)
|
||||||
|
except subprocess.CalledProcessError as e:
|
||||||
|
failed_test_cases.append(test_case_name)
|
||||||
|
|
||||||
|
if failed_test_cases:
|
||||||
|
sys.stderr.write("\nFailed to generate the following test cases:\n")
|
||||||
|
for failed_test_case in failed_test_cases:
|
||||||
|
sys.stderr.write(f"- {failed_test_case}\n")
|
||||||
|
|
||||||
|
|
||||||
|
def generate_test_case_output(test_case_name, test_case_input_path=None):
|
||||||
|
if not test_case_input_path:
|
||||||
|
test_case_input_path = os.path.realpath(
|
||||||
|
os.path.join(inputs_path, test_case_name)
|
||||||
|
)
|
||||||
|
|
||||||
test_case_output_path_reference = os.path.join(
|
test_case_output_path_reference = os.path.join(
|
||||||
output_path_reference, test_case_name
|
output_path_reference, test_case_name
|
||||||
)
|
)
|
||||||
@ -52,7 +73,6 @@ def generate(whitelist: Set[str]):
|
|||||||
output_path_betterproto, test_case_name
|
output_path_betterproto, test_case_name
|
||||||
)
|
)
|
||||||
|
|
||||||
print(f"Generating output for {test_case_name}")
|
|
||||||
os.makedirs(test_case_output_path_reference, exist_ok=True)
|
os.makedirs(test_case_output_path_reference, exist_ok=True)
|
||||||
os.makedirs(test_case_output_path_betterproto, exist_ok=True)
|
os.makedirs(test_case_output_path_betterproto, exist_ok=True)
|
||||||
|
|
||||||
|
@ -10,6 +10,8 @@ tests = {
|
|||||||
"oneof_enum",
|
"oneof_enum",
|
||||||
"googletypes_service_returns_empty",
|
"googletypes_service_returns_empty",
|
||||||
"casing_message_field_uppercase",
|
"casing_message_field_uppercase",
|
||||||
|
"namespace_keywords",
|
||||||
|
"namespace_builtin_types"
|
||||||
}
|
}
|
||||||
|
|
||||||
services = {
|
services = {
|
||||||
|
@ -1,5 +0,0 @@
|
|||||||
{
|
|
||||||
"for": 1,
|
|
||||||
"with": 2,
|
|
||||||
"as": 3
|
|
||||||
}
|
|
@ -1,11 +0,0 @@
|
|||||||
syntax = "proto3";
|
|
||||||
|
|
||||||
message Test {
|
|
||||||
int32 for = 1;
|
|
||||||
int32 with = 2;
|
|
||||||
int32 as = 3;
|
|
||||||
}
|
|
||||||
|
|
||||||
service TestService {
|
|
||||||
rpc GetTest(Test) returns (Test) {}
|
|
||||||
}
|
|
@ -0,0 +1,37 @@
|
|||||||
|
{
|
||||||
|
"False": 1,
|
||||||
|
"None": 2,
|
||||||
|
"True": 3,
|
||||||
|
"and": 4,
|
||||||
|
"as": 5,
|
||||||
|
"assert": 6,
|
||||||
|
"async": 7,
|
||||||
|
"await": 8,
|
||||||
|
"break": 9,
|
||||||
|
"class": 10,
|
||||||
|
"continue": 11,
|
||||||
|
"def": 12,
|
||||||
|
"del": 13,
|
||||||
|
"elif": 14,
|
||||||
|
"else": 15,
|
||||||
|
"except": 16,
|
||||||
|
"finally": 17,
|
||||||
|
"for": 18,
|
||||||
|
"from": 19,
|
||||||
|
"global": 20,
|
||||||
|
"if": 21,
|
||||||
|
"import": 22,
|
||||||
|
"in": 23,
|
||||||
|
"is": 24,
|
||||||
|
"lambda": 25,
|
||||||
|
"nonlocal": 26,
|
||||||
|
"not": 27,
|
||||||
|
"or": 28,
|
||||||
|
"pass": 29,
|
||||||
|
"raise": 30,
|
||||||
|
"return": 31,
|
||||||
|
"try": 32,
|
||||||
|
"while": 33,
|
||||||
|
"with": 34,
|
||||||
|
"yield": 35
|
||||||
|
}
|
@ -0,0 +1,44 @@
|
|||||||
|
syntax = "proto3";
|
||||||
|
|
||||||
|
// Tests that messages may contain fields that are Python keywords
|
||||||
|
//
|
||||||
|
// Generated with Python 3.7.6
|
||||||
|
// print('\n'.join(f'string {k} = {i+1};' for i,k in enumerate(keyword.kwlist)))
|
||||||
|
|
||||||
|
message Test {
|
||||||
|
string False = 1;
|
||||||
|
string None = 2;
|
||||||
|
string True = 3;
|
||||||
|
string and = 4;
|
||||||
|
string as = 5;
|
||||||
|
string assert = 6;
|
||||||
|
string async = 7;
|
||||||
|
string await = 8;
|
||||||
|
string break = 9;
|
||||||
|
string class = 10;
|
||||||
|
string continue = 11;
|
||||||
|
string def = 12;
|
||||||
|
string del = 13;
|
||||||
|
string elif = 14;
|
||||||
|
string else = 15;
|
||||||
|
string except = 16;
|
||||||
|
string finally = 17;
|
||||||
|
string for = 18;
|
||||||
|
string from = 19;
|
||||||
|
string global = 20;
|
||||||
|
string if = 21;
|
||||||
|
string import = 22;
|
||||||
|
string in = 23;
|
||||||
|
string is = 24;
|
||||||
|
string lambda = 25;
|
||||||
|
string nonlocal = 26;
|
||||||
|
string not = 27;
|
||||||
|
string or = 28;
|
||||||
|
string pass = 29;
|
||||||
|
string raise = 30;
|
||||||
|
string return = 31;
|
||||||
|
string try = 32;
|
||||||
|
string while = 33;
|
||||||
|
string with = 34;
|
||||||
|
string yield = 35;
|
||||||
|
}
|
@ -36,10 +36,11 @@ def read_relative(file: str, path: str):
|
|||||||
return fh.read()
|
return fh.read()
|
||||||
|
|
||||||
|
|
||||||
def protoc_plugin(path: str, output_dir: str):
|
def protoc_plugin(path: str, output_dir: str) -> subprocess.CompletedProcess:
|
||||||
subprocess.run(
|
return subprocess.run(
|
||||||
f"protoc --plugin=protoc-gen-custom={plugin_path} --custom_out={output_dir} --proto_path={path} {path}/*.proto",
|
f"protoc --plugin=protoc-gen-custom={plugin_path} --custom_out={output_dir} --proto_path={path} {path}/*.proto",
|
||||||
shell=True,
|
shell=True,
|
||||||
|
check=True,
|
||||||
)
|
)
|
||||||
|
|
||||||
|
|
||||||
|
Loading…
x
Reference in New Issue
Block a user