85 lines
2.5 KiB
Python
85 lines
2.5 KiB
Python
import getopt
|
|
import sys
|
|
import time
|
|
import subprocess
|
|
import os
|
|
import re
|
|
from helpers.import_helper import ImportHelper
|
|
|
|
|
|
def main():
|
|
opts, args = getopt.getopt(sys.argv[1:], "h", ["help", "host=", "schema="])
|
|
|
|
if len(args) < 2:
|
|
usage()
|
|
sys.exit()
|
|
|
|
schema = "https"
|
|
host = "cartodb.com"
|
|
username = args[0]
|
|
api_key = args[1]
|
|
table_name = "geocoder_api_test_dataset_".format(int(time.time()))
|
|
for o, a in opts:
|
|
if o in ("-h", "--help"):
|
|
usage()
|
|
sys.exit()
|
|
elif o in ("--host"):
|
|
host = opts[0][1]
|
|
elif o in ("--schema"):
|
|
schema = opts[1][1]
|
|
else:
|
|
assert False, "unhandled option"
|
|
|
|
try:
|
|
table_name = ImportHelper.import_test_dataset(username, api_key, host,
|
|
schema)
|
|
set_environment_variables(username, api_key, table_name, host, schema)
|
|
execute_tests()
|
|
except Exception as e:
|
|
print(e)
|
|
sys.exit(1)
|
|
finally:
|
|
clean_environment_variables()
|
|
ImportHelper.clean_test_dataset(username, api_key, table_name, host,
|
|
schema)
|
|
|
|
|
|
def usage():
|
|
print("""Usage: run_tests.py [options] username api_key
|
|
Options:
|
|
-h: Show this help
|
|
--host: take that host as base (by default is cartodb.com)
|
|
--schema: define the url schema [http/https] (by default https)""")
|
|
|
|
|
|
def execute_tests():
|
|
process = subprocess.Popen(
|
|
["nosetests", "--where=integration/"],
|
|
stdout=subprocess.PIPE,
|
|
stderr=subprocess.PIPE
|
|
)
|
|
out, err = process.communicate()
|
|
print(err.decode('utf-8'))
|
|
regexp = re.compile(r'FAILED \(.*\)')
|
|
if regexp.search(err) is not None:
|
|
sys.exit(1)
|
|
|
|
|
|
def set_environment_variables(username, api_key, table_name, host, schema):
|
|
os.environ["GEOCODER_API_TEST_USERNAME"] = username
|
|
os.environ["GEOCODER_API_TEST_API_KEY"] = api_key
|
|
os.environ["GEOCODER_API_TEST_TABLE_NAME"] = table_name
|
|
os.environ["GEOCODER_API_TEST_HOST"] = host
|
|
os.environ["GEOCODER_API_TEST_SCHEMA"] = schema
|
|
|
|
|
|
def clean_environment_variables():
|
|
os.environ.pop("GEOCODER_API_TEST_USERNAME", None)
|
|
os.environ.pop("GEOCODER_API_TEST_API_KEY", None)
|
|
os.environ.pop("GEOCODER_API_TEST_TABLE_NAME", None)
|
|
os.environ.pop("GEOCODER_API_TEST_HOST", None)
|
|
os.environ.pop("GEOCODER_API_TEST_SCHEMA", None)
|
|
|
|
if __name__ == "__main__":
|
|
main()
|