mirror of
				https://github.com/YosysHQ/yosys
				synced 2025-10-31 11:42:30 +00:00 
			
		
		
		
	
		
			
				
	
	
		
			46 lines
		
	
	
	
		
			1.2 KiB
		
	
	
	
		
			Python
		
	
	
	
	
	
			
		
		
	
	
			46 lines
		
	
	
	
		
			1.2 KiB
		
	
	
	
		
			Python
		
	
	
	
	
	
| import sys
 | |
| import shutil
 | |
| import shlex
 | |
| import subprocess
 | |
| from pathlib import Path
 | |
| 
 | |
| __file_dir__ = Path(__file__).absolute().parent
 | |
| 
 | |
| if len(sys.argv) > 2 or len(sys.argv) == 2 and sys.argv[1] != 'yosys':
 | |
| 	print(f"Usage: {sys.argv[0]} [yosys]")
 | |
| 	exit(64)
 | |
| 
 | |
| if len(sys.argv) == 2:
 | |
| 	binary = [str(__file_dir__.parents[1] / "yosys"), "-Qy"]
 | |
| else:
 | |
| 	binary = [sys.executable or shutil.which("python3") or "python3"] # sys.executable can actually be None
 | |
| 
 | |
| tests = __file_dir__.glob("test_*.py")
 | |
| 
 | |
| log_dir = __file_dir__ / "logs"
 | |
| try:
 | |
| 	shutil.rmtree(log_dir)
 | |
| except FileNotFoundError:
 | |
| 	pass
 | |
| fail_logs = set()
 | |
| for test in tests:
 | |
| 	print(f"* {test.name} ", end="")
 | |
| 	log_dir.mkdir(parents=True, exist_ok=True)
 | |
| 	log = log_dir / (test.stem + ".log")
 | |
| 	cmd = [*binary, str(test)]
 | |
| 	log_file = open(log, "w", encoding="utf8")
 | |
| 	log_file.write(f"$ {shlex.join(cmd)}\n")
 | |
| 	log_file.flush()
 | |
| 	result = subprocess.run(cmd, stdout=log_file, stderr=subprocess.STDOUT)
 | |
| 	if result.returncode == 0:
 | |
| 		print("OK!")
 | |
| 	else:
 | |
| 		print(f"FAILED: {log}")
 | |
| 		fail_logs.add(log)
 | |
| 	log_file.close()
 | |
| for log in fail_logs:
 | |
| 	print(f">>> {log}")
 | |
| 	with open(log, encoding="utf8") as f:
 | |
| 		print(f.read())
 | |
| if len(fail_logs):
 | |
| 	exit(1)
 |