git-svn-id: https://www.unprompted.com/svn/projects/tildefriends/trunk@3163 ed5197a5-7fde-0310-b194-c3ffbd925b24
		
			
				
	
	
		
			70 lines
		
	
	
		
			1.6 KiB
		
	
	
	
		
			Python
		
	
	
		
			Executable File
		
	
	
	
	
			
		
		
	
	
			70 lines
		
	
	
		
			1.6 KiB
		
	
	
	
		
			Python
		
	
	
		
			Executable File
		
	
	
	
	
| #!/usr/bin/python
 | |
| 
 | |
| import argparse
 | |
| import glob
 | |
| import os
 | |
| import shutil
 | |
| import subprocess
 | |
| import sys
 | |
| 
 | |
| if sys.platform != 'linux2':
 | |
| 	print 'Tests are only enabled on Linux.'
 | |
| 	exit(0)
 | |
| 
 | |
| parser = argparse.ArgumentParser()
 | |
| parser.add_argument('tests', nargs=argparse.REMAINDER)
 | |
| arguments = parser.parse_args()
 | |
| 
 | |
| root = os.path.dirname(os.path.join(os.getcwd(), os.path.dirname(__file__)))
 | |
| tmp = os.path.join(root, 'tmp')
 | |
| logs = os.path.join(root, 'logs')
 | |
| tests = os.path.join(root, 'tests')
 | |
| executable = os.path.join(root, 'tildefriends')
 | |
| 
 | |
| if not os.path.isdir(logs):
 | |
| 	os.makedirs(logs)
 | |
| 
 | |
| selectedTests = set()
 | |
| if not arguments.tests:
 | |
| 	for test in glob.glob(os.path.join(tests, '*')):
 | |
| 		selectedTests.add(test)
 | |
| for pattern in arguments.tests:
 | |
| 	for match in glob.glob(os.path.join(tests, '*' + pattern + '*')):
 | |
| 		selectedTests.add(match)
 | |
| 
 | |
| env = os.environ.copy()
 | |
| env['TILDEFRIENDS'] = executable
 | |
| env['LOGDIR'] = logs
 | |
| 
 | |
| def indent(text):
 | |
| 	return '\n'.join('\t' + line for line in text.split('\n'))
 | |
| 
 | |
| passCount = 0
 | |
| failCount = 0
 | |
| 
 | |
| for test in selectedTests:
 | |
| 	if os.path.isdir(tmp):
 | |
| 		shutil.rmtree(tmp)
 | |
| 	if not os.path.isdir(tmp):
 | |
| 		os.makedirs(tmp)
 | |
| 
 | |
| 	process = subprocess.Popen(['bash', test], stdout=subprocess.PIPE, stderr=subprocess.PIPE, cwd=tmp, env=env)
 | |
| 	stdout, stderr = process.communicate()
 | |
| 	if process.returncode == 0:
 | |
| 		print 'PASSED', test
 | |
| 		passCount += 1
 | |
| 	else:
 | |
| 		print 'FAILED', test
 | |
| 		print 'RETURNED:', process.returncode
 | |
| 		print 'STDOUT:'
 | |
| 		print indent(stdout)
 | |
| 		print 'STDERR:'
 | |
| 		print indent(stderr)
 | |
| 		failCount += 1
 | |
| 
 | |
| 	if os.path.isdir(tmp):
 | |
| 		shutil.rmtree(tmp)
 | |
| 
 | |
| print passCount, 'tests passed. ', failCount, 'tests failed.'
 | |
| exit(failCount)
 |