提交 242b91be authored 作者: Frederic's avatar Frederic

rename file to don't be run by nosetests and pep8

上级 eca8a715
......@@ -21,7 +21,8 @@ import re
import requests
import shutil
import time
from subprocess import call, check_call, check_output, PIPE, STDOUT, CalledProcessError
from subprocess import (call, check_call, check_output,
PIPE, STDOUT, CalledProcessError)
import sys
import gh_api
......@@ -30,12 +31,13 @@ basedir = os.path.join(os.path.expanduser("~"), ".theano_pr_tests")
repodir = os.path.join(basedir, "Theano")
ipy_repository = 'git://github.com/Theano/Theano.git'
ipy_http_repository = 'http://github.com/Theano/Theano.git'
gh_project="Theano/Theano"
gh_project = "Theano/Theano"
supported_pythons = ['python2.6', 'python2.7', 'python3.1', 'python3.2']
supported_pythons = ['python2.7']
unavailable_pythons = []
def available_python_versions():
"""Get the executable names of available versions of Python on the system.
"""
......@@ -49,6 +51,7 @@ def available_python_versions():
venvs = []
def setup():
"""Prepare the repository and virtualenvs."""
global venvs
......@@ -64,30 +67,34 @@ def setup():
for venv in glob('venv-*'):
shutil.rmtree(venv)
for py in available_python_versions():
check_call(['virtualenv', '-p', py, '--system-site-packages', 'venv-%s' % py])
check_call(['virtualenv', '-p', py,
'--system-site-packages', 'venv-%s' % py])
venvs.append((py, 'venv-%s' % py))
# Check out and update the repository
if not os.path.exists('Theano'):
try :
try:
check_call(['git', 'clone', ipy_repository])
except CalledProcessError :
except CalledProcessError:
check_call(['git', 'clone', ipy_http_repository])
os.chdir(repodir)
check_call(['git', 'checkout', 'master'])
try :
try:
check_call(['git', 'pull', ipy_repository, 'master'])
except CalledProcessError :
except CalledProcessError:
check_call(['git', 'pull', ipy_http_repository, 'master'])
os.chdir(basedir)
missing_libs_re = re.compile(r"Tools and libraries NOT available at test time:\n"
r"\s*(.*?)\n")
missing_libs_re = re.compile(r"Tools and libraries NOT available at test"
r" time:\n\s*(.*?)\n")
def get_missing_libraries(log):
m = missing_libs_re.search(log)
if m:
return m.group(1)
def get_branch(repo, branch, owner, mergeable):
os.chdir(repodir)
if mergeable:
......@@ -103,6 +110,7 @@ def get_branch(repo, branch, owner, mergeable):
check_call(['git', 'checkout', 'FETCH_HEAD'])
os.chdir(basedir)
def run_tests(venv):
py = os.path.join(basedir, venv, 'bin', 'python')
print(py)
......@@ -115,9 +123,9 @@ def run_tests(venv):
# Environment variables:
orig_path = os.environ["PATH"]
os.environ["PATH"] = os.path.join(basedir, venv, 'bin') + ':' + os.environ["PATH"]
os.environ["PATH"] = os.path.join(basedir, venv,
'bin') + ':' + os.environ["PATH"]
os.environ.pop("PYTHONPATH", None)
import pdb;pdb.set_trace()
iptest = os.path.join(basedir, venv, 'bin', 'theano-test')
# if not os.path.exists(iptest):
# iptest = os.path.join(basedir, venv, 'bin', 'iptest3')
......@@ -132,6 +140,7 @@ def run_tests(venv):
# Restore $PATH
os.environ["PATH"] = orig_path
def markdown_format(pr, results_urls, unavailable_pythons):
def format_result(py, passed, gist_url, missing_libraries):
s = "* %s: " % py
......@@ -155,16 +164,22 @@ def markdown_format(pr, results_urls, unavailable_pythons):
"Not available for testing: " + ", ".join(unavailable_pythons)]
return "\n".join(lines)
def post_results_comment(pr, results, num, unavailable_pythons=unavailable_pythons):
def post_results_comment(pr, results, num,
unavailable_pythons=unavailable_pythons):
body = markdown_format(pr, results, unavailable_pythons)
gh_api.post_issue_comment(gh_project, num, body)
def print_results(pr, results_urls, unavailable_pythons=unavailable_pythons):
print("\n")
if pr['mergeable']:
print("**Test results for commit %s merged into master**" % pr['head']['sha'][:7])
print("**Test results for commit %s merged into master**" %
pr['head']['sha'][:7])
else:
print("**Test results for commit %s (can't merge cleanly)**" % pr['head']['sha'][:7])
print(
"**Test results for commit %s (can't merge cleanly)**" %
pr['head']['sha'][:7])
print("Platform:", sys.platform)
for py, passed, gist_url, missing_libraries in results_urls:
if passed:
......@@ -176,14 +191,17 @@ def print_results(pr, results_urls, unavailable_pythons=unavailable_pythons):
print(" Libraries not available:", missing_libraries)
print("Not available for testing:", ", ".join(unavailable_pythons))
def dump_results(num, results, pr):
with open(os.path.join(basedir, 'lastresults.pkl'), 'wb') as f:
pickle.dump((num, results, pr, unavailable_pythons), f)
def load_results():
with open(os.path.join(basedir, 'lastresults.pkl'), 'rb') as f:
return pickle.load(f)
def save_logs(results, pr):
results_paths = []
for py, passed, log, missing_libraries in results:
......@@ -192,7 +210,7 @@ def save_logs(results, pr):
else:
result_locn = os.path.abspath(os.path.join('venv-%s' % py,
pr['head']['sha'][:7]+".log"))
pr['head']['sha'][:7] + ".log"))
with io.open(result_locn, 'w', encoding='utf-8') as f:
f.write(log)
......@@ -200,6 +218,7 @@ def save_logs(results, pr):
return results_paths
def post_logs(results):
results_urls = []
for py, passed, log, missing_libraries in results:
......@@ -212,9 +231,10 @@ def post_logs(results):
return results_urls
def test_pr(num, post_results=True):
# Get Github authorisation first, so that the user is prompted straight away
# if their login is needed.
# Get Github authorisation first, so that the user is prompted
# straight away if their login is needed.
if post_results:
gh_api.get_auth_token()
......@@ -248,13 +268,14 @@ def test_pr(num, post_results=True):
post_results_comment(pr, results_urls, num)
print("(Posted to Github)")
else:
post_script = os.path.join(os.path.dirname(sys.argv[0]), "post_pr_test.py")
post_script = os.path.join(os.path.dirname(sys.argv[0]),
"post_pr_test.py")
print("To post the results to Github, run", post_script)
if __name__ == '__main__':
import argparse
parser = argparse.ArgumentParser(description="Test an IPython pull request")
parser = argparse.ArgumentParser(description="Test an Theano pull request")
parser.add_argument('-p', '--publish', action='store_true',
help="Publish the results to Github")
parser.add_argument('number', type=int, help="The pull request number")
......
Markdown 格式
0%
您添加了 0 到此讨论。请谨慎行事。
请先完成此评论的编辑!
注册 或者 后发表评论