Merge branch 'appveyor'
turn on windows CI, add helper script, add badge to README, update test to not fail randomly on windows
This commit is contained in:
commit
03a064d8d3
56
.appveyor.yml
Normal file
56
.appveyor.yml
Normal file
|
@ -0,0 +1,56 @@
|
||||||
|
# adapted from https://packaging.python.org/en/latest/appveyor/
|
||||||
|
|
||||||
|
|
||||||
|
environment:
|
||||||
|
# we tell Tox to use "twisted[windows]", to get pypiwin32 installed
|
||||||
|
#TWISTED_EXTRAS: "[windows]"
|
||||||
|
# that didn't work (it seems to work when I run it locally, but on appveyor
|
||||||
|
# it fails to install the pypiwin32 package). So don't bother telling
|
||||||
|
# Twisted to support windows: just install it ourselves.
|
||||||
|
# EXTRA_DEPENDENCY: "pypiwin32"
|
||||||
|
matrix:
|
||||||
|
# For Python versions available on Appveyor, see
|
||||||
|
# http://www.appveyor.com/docs/installed-software#python
|
||||||
|
- PYTHON: "C:\\Python27"
|
||||||
|
- PYTHON: "C:\\Python27-x64"
|
||||||
|
DISTUTILS_USE_SDK: "1"
|
||||||
|
- PYTHON: "C:\\Python34"
|
||||||
|
- PYTHON: "C:\\Python35"
|
||||||
|
- PYTHON: "C:\\Python36"
|
||||||
|
- PYTHON: "C:\\Python36-x64"
|
||||||
|
|
||||||
|
install:
|
||||||
|
- |
|
||||||
|
%PYTHON%\python.exe -m pip install wheel tox
|
||||||
|
|
||||||
|
# note:
|
||||||
|
# %PYTHON% has: python.exe
|
||||||
|
# %PYTHON%\Scripts has: pip.exe, tox.exe (and others installed by bare pip)
|
||||||
|
|
||||||
|
|
||||||
|
build: off
|
||||||
|
|
||||||
|
test_script:
|
||||||
|
# Put your test command here.
|
||||||
|
# Note that you must use the environment variable %PYTHON% to refer to
|
||||||
|
# the interpreter you're using - Appveyor does not do anything special
|
||||||
|
# to put the Python evrsion you want to use on PATH.
|
||||||
|
- |
|
||||||
|
misc\windows-build.cmd %PYTHON%\Scripts\tox.exe -e py
|
||||||
|
|
||||||
|
after_test:
|
||||||
|
# This step builds your wheels.
|
||||||
|
# Again, you only need build.cmd if you're building C extensions for
|
||||||
|
# 64-bit Python 3.3/3.4. And you need to use %PYTHON% to get the correct
|
||||||
|
# interpreter
|
||||||
|
- |
|
||||||
|
misc\windows-build.cmd %PYTHON%\python.exe setup.py bdist_wheel
|
||||||
|
|
||||||
|
artifacts:
|
||||||
|
# bdist_wheel puts your built wheel in the dist directory
|
||||||
|
- path: dist\*
|
||||||
|
|
||||||
|
#on_success:
|
||||||
|
# You can use this step to upload your artifacts to a public website.
|
||||||
|
# See Appveyor's documentation for more details. Or you can simply
|
||||||
|
# access your wheels from the Appveyor "artifacts" tab for your build.
|
|
@ -2,6 +2,7 @@
|
||||||
|
|
||||||
[![PyPI](http://img.shields.io/pypi/v/magic-wormhole-transit-relay.svg)](https://pypi.python.org/pypi/magic-wormhole-transit-relay)
|
[![PyPI](http://img.shields.io/pypi/v/magic-wormhole-transit-relay.svg)](https://pypi.python.org/pypi/magic-wormhole-transit-relay)
|
||||||
[![Build Status](https://travis-ci.org/warner/magic-wormhole-transit-relay.svg?branch=master)](https://travis-ci.org/warner/magic-wormhole-transit-relay)
|
[![Build Status](https://travis-ci.org/warner/magic-wormhole-transit-relay.svg?branch=master)](https://travis-ci.org/warner/magic-wormhole-transit-relay)
|
||||||
|
[![Windows Build Status](https://ci.appveyor.com/api/projects/status/61kgarqikolbvj1m/branch/master?svg=true)](https://ci.appveyor.com/project/warner/magic-wormhole-transit-relay)
|
||||||
[![codecov.io](https://codecov.io/github/warner/magic-wormhole-transit-relay/coverage.svg?branch=master)](https://codecov.io/github/warner/magic-wormhole-transit-relay?branch=master)
|
[![codecov.io](https://codecov.io/github/warner/magic-wormhole-transit-relay/coverage.svg?branch=master)](https://codecov.io/github/warner/magic-wormhole-transit-relay?branch=master)
|
||||||
|
|
||||||
|
|
||||||
|
|
21
misc/windows-build.cmd
Normal file
21
misc/windows-build.cmd
Normal file
|
@ -0,0 +1,21 @@
|
||||||
|
@echo off
|
||||||
|
:: To build extensions for 64 bit Python 3, we need to configure environment
|
||||||
|
:: variables to use the MSVC 2010 C++ compilers from GRMSDKX_EN_DVD.iso of:
|
||||||
|
:: MS Windows SDK for Windows 7 and .NET Framework 4
|
||||||
|
::
|
||||||
|
:: More details at:
|
||||||
|
:: https://github.com/cython/cython/wiki/64BitCythonExtensionsOnWindows
|
||||||
|
|
||||||
|
IF "%DISTUTILS_USE_SDK%"=="1" (
|
||||||
|
ECHO Configuring environment to build with MSVC on a 64bit architecture
|
||||||
|
ECHO Using Windows SDK 7.1
|
||||||
|
"C:\Program Files\Microsoft SDKs\Windows\v7.1\Setup\WindowsSdkVer.exe" -q -version:v7.1
|
||||||
|
CALL "C:\Program Files\Microsoft SDKs\Windows\v7.1\Bin\SetEnv.cmd" /x64 /release
|
||||||
|
SET MSSdk=1
|
||||||
|
REM Need the following to allow tox to see the SDK compiler
|
||||||
|
SET TOX_TESTENV_PASSENV=DISTUTILS_USE_SDK MSSdk INCLUDE LIB
|
||||||
|
) ELSE (
|
||||||
|
ECHO Using default MSVC build environment
|
||||||
|
)
|
||||||
|
|
||||||
|
CALL %*
|
|
@ -12,14 +12,15 @@ class DB(unittest.TestCase):
|
||||||
return db
|
return db
|
||||||
|
|
||||||
def test_db(self):
|
def test_db(self):
|
||||||
|
T = 1519075308.0
|
||||||
d = self.mktemp()
|
d = self.mktemp()
|
||||||
os.mkdir(d)
|
os.mkdir(d)
|
||||||
usage_db = os.path.join(d, "usage.sqlite")
|
usage_db = os.path.join(d, "usage.sqlite")
|
||||||
with mock.patch("time.time", return_value=456):
|
with mock.patch("time.time", return_value=T+0):
|
||||||
t = Transit(blur_usage=None, log_file=None, usage_db=usage_db)
|
t = Transit(blur_usage=None, log_file=None, usage_db=usage_db)
|
||||||
db = self.open_db(usage_db)
|
db = self.open_db(usage_db)
|
||||||
|
|
||||||
with mock.patch("time.time", return_value=457):
|
with mock.patch("time.time", return_value=T+1):
|
||||||
t.recordUsage(started=123, result="happy", total_bytes=100,
|
t.recordUsage(started=123, result="happy", total_bytes=100,
|
||||||
total_time=10, waiting_time=2)
|
total_time=10, waiting_time=2)
|
||||||
self.assertEqual(db.execute("SELECT * FROM `usage`").fetchall(),
|
self.assertEqual(db.execute("SELECT * FROM `usage`").fetchall(),
|
||||||
|
@ -27,11 +28,11 @@ class DB(unittest.TestCase):
|
||||||
total_bytes=100, total_time=10, waiting_time=2),
|
total_bytes=100, total_time=10, waiting_time=2),
|
||||||
])
|
])
|
||||||
self.assertEqual(db.execute("SELECT * FROM `current`").fetchone(),
|
self.assertEqual(db.execute("SELECT * FROM `current`").fetchone(),
|
||||||
dict(rebooted=456, updated=457,
|
dict(rebooted=T+0, updated=T+1,
|
||||||
incomplete_bytes=0,
|
incomplete_bytes=0,
|
||||||
waiting=0, connected=0))
|
waiting=0, connected=0))
|
||||||
|
|
||||||
with mock.patch("time.time", return_value=458):
|
with mock.patch("time.time", return_value=T+2):
|
||||||
t.recordUsage(started=150, result="errory", total_bytes=200,
|
t.recordUsage(started=150, result="errory", total_bytes=200,
|
||||||
total_time=11, waiting_time=3)
|
total_time=11, waiting_time=3)
|
||||||
self.assertEqual(db.execute("SELECT * FROM `usage`").fetchall(),
|
self.assertEqual(db.execute("SELECT * FROM `usage`").fetchall(),
|
||||||
|
@ -41,14 +42,14 @@ class DB(unittest.TestCase):
|
||||||
total_bytes=200, total_time=11, waiting_time=3),
|
total_bytes=200, total_time=11, waiting_time=3),
|
||||||
])
|
])
|
||||||
self.assertEqual(db.execute("SELECT * FROM `current`").fetchone(),
|
self.assertEqual(db.execute("SELECT * FROM `current`").fetchone(),
|
||||||
dict(rebooted=456, updated=458,
|
dict(rebooted=T+0, updated=T+2,
|
||||||
incomplete_bytes=0,
|
incomplete_bytes=0,
|
||||||
waiting=0, connected=0))
|
waiting=0, connected=0))
|
||||||
|
|
||||||
with mock.patch("time.time", return_value=459):
|
with mock.patch("time.time", return_value=T+3):
|
||||||
t.timerUpdateStats()
|
t.timerUpdateStats()
|
||||||
self.assertEqual(db.execute("SELECT * FROM `current`").fetchone(),
|
self.assertEqual(db.execute("SELECT * FROM `current`").fetchone(),
|
||||||
dict(rebooted=456, updated=459,
|
dict(rebooted=T+0, updated=T+3,
|
||||||
incomplete_bytes=0,
|
incomplete_bytes=0,
|
||||||
waiting=0, connected=0))
|
waiting=0, connected=0))
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue
Block a user