| #!/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)) |