blob: bd8c3a4ec2ef76e4a72af1e7c9e3bbbf654dcf3e [file] [log] [blame]
#!/usr/bin/python
import os
import optparse
import sys
import unittest
USAGE = """%prog sdk_path test_path
Run unit tests for App Engine apps.
sdk_path Path to the SDK installation.
test_path Path to package containing test modules."""
def _WebTestIsInstalled():
try:
import webtest
return True
except ImportError:
print 'You need to install webtest dependencies before you can proceed '
print 'running the tests. To do this you need to have pip installed.'
print 'Go to https://packaging.python.org/installing/ and follow the '
print 'instructions and then rerun the grunt command.'
return False
def main(sdk_path, test_path):
if not os.path.exists(sdk_path):
return 'Missing %s: try grunt shell:getPythonTestDeps.' % sdk_path
if not os.path.exists(test_path):
return 'Missing %s: try grunt build.' % test_path
sys.path.insert(0, sdk_path)
import dev_appserver
dev_appserver.fix_sys_path()
if not _WebTestIsInstalled():
return 1
suite = unittest.loader.TestLoader().discover(test_path,
pattern="*test.py")
ok = unittest.TextTestRunner(verbosity=2).run(suite).wasSuccessful()
return 0 if ok else 1
if __name__ == '__main__':
parser = optparse.OptionParser(USAGE)
options, args = parser.parse_args()
if len(args) != 2:
parser.error('Error: Exactly 2 arguments required.')
sdk_path, test_path = args[0:2]
sys.exit(main(sdk_path, test_path))