45 lines
		
	
	
		
			1.2 KiB
		
	
	
	
		
			Python
		
	
	
	
	
	
			
		
		
	
	
			45 lines
		
	
	
		
			1.2 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 = [feature.strip() for feature in 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)
 |