45 lines
1.1 KiB
Python
45 lines
1.1 KiB
Python
import os
|
|
import toml
|
|
from glob import glob
|
|
|
|
abspath = os.path.abspath(__file__)
|
|
dname = os.path.dirname(abspath)
|
|
os.chdir(dname)
|
|
|
|
# ======= load test list
|
|
tests = {}
|
|
for f in sorted(glob('./src/bin/*.rs')):
|
|
name = os.path.splitext(os.path.basename(f))[0]
|
|
features = []
|
|
with open(f, 'r') as f:
|
|
for line in f:
|
|
if line.startswith('// required-features:'):
|
|
features = line.split(':', 2)[1].strip().split(',')
|
|
|
|
tests[name] = features
|
|
|
|
# ========= Update Cargo.toml
|
|
|
|
things = {
|
|
'bin': [
|
|
{
|
|
'name': f'{name}',
|
|
'path': f'src/bin/{name}.rs',
|
|
'required-features': features,
|
|
}
|
|
for name, features in tests.items()
|
|
]
|
|
}
|
|
|
|
SEPARATOR_START = '# BEGIN TESTS\n'
|
|
SEPARATOR_END = '# END TESTS\n'
|
|
HELP = '# Generated by gen_test.py. DO NOT EDIT.\n'
|
|
with open('Cargo.toml', 'r') as f:
|
|
data = f.read()
|
|
before, data = data.split(SEPARATOR_START, maxsplit=1)
|
|
_, after = data.split(SEPARATOR_END, maxsplit=1)
|
|
data = before + SEPARATOR_START + HELP + \
|
|
toml.dumps(things) + SEPARATOR_END + after
|
|
with open('Cargo.toml', 'w') as f:
|
|
f.write(data)
|