forked from orbit-oss/flask
Merge pull request #2558 from pallets/appveyor
add appveyor configuration
This commit is contained in:
commit
eebc0edfdd
3 changed files with 41 additions and 18 deletions
23
.appveyor.yml
Normal file
23
.appveyor.yml
Normal file
|
|
@ -0,0 +1,23 @@
|
||||||
|
environment:
|
||||||
|
global:
|
||||||
|
TOXENV: py
|
||||||
|
|
||||||
|
matrix:
|
||||||
|
- PYTHON: C:\Python36
|
||||||
|
- PYTHON: C:\Python27
|
||||||
|
|
||||||
|
init:
|
||||||
|
- SET PATH=%PYTHON%;%PATH%
|
||||||
|
|
||||||
|
install:
|
||||||
|
- python -m pip install -U pip setuptools wheel tox
|
||||||
|
|
||||||
|
build: false
|
||||||
|
|
||||||
|
test_script:
|
||||||
|
- python -m tox
|
||||||
|
|
||||||
|
branches:
|
||||||
|
only:
|
||||||
|
- master
|
||||||
|
- /^.*-maintenance$/
|
||||||
|
|
@ -17,33 +17,25 @@ from flaskr.blueprints.flaskr import init_db
|
||||||
|
|
||||||
|
|
||||||
@pytest.fixture
|
@pytest.fixture
|
||||||
def app(request):
|
def app():
|
||||||
|
db_fd, db_path = tempfile.mkstemp()
|
||||||
db_fd, temp_db_location = tempfile.mkstemp()
|
|
||||||
config = {
|
config = {
|
||||||
'DATABASE': temp_db_location,
|
'DATABASE': db_path,
|
||||||
'TESTING': True,
|
'TESTING': True,
|
||||||
'DB_FD': db_fd
|
|
||||||
}
|
}
|
||||||
|
|
||||||
app = create_app(config=config)
|
app = create_app(config=config)
|
||||||
|
|
||||||
with app.app_context():
|
with app.app_context():
|
||||||
init_db()
|
init_db()
|
||||||
yield app
|
yield app
|
||||||
|
|
||||||
|
os.close(db_fd)
|
||||||
|
os.unlink(db_path)
|
||||||
|
|
||||||
|
|
||||||
@pytest.fixture
|
@pytest.fixture
|
||||||
def client(request, app):
|
def client(app):
|
||||||
|
return app.test_client()
|
||||||
client = app.test_client()
|
|
||||||
|
|
||||||
def teardown():
|
|
||||||
os.close(app.config['DB_FD'])
|
|
||||||
os.unlink(app.config['DATABASE'])
|
|
||||||
request.addfinalizer(teardown)
|
|
||||||
|
|
||||||
return client
|
|
||||||
|
|
||||||
|
|
||||||
def login(client, username, password):
|
def login(client, username, password):
|
||||||
|
|
|
||||||
|
|
@ -42,8 +42,7 @@ from jinja2 import FileSystemLoader
|
||||||
from .signals import message_flashed
|
from .signals import message_flashed
|
||||||
from .globals import session, _request_ctx_stack, _app_ctx_stack, \
|
from .globals import session, _request_ctx_stack, _app_ctx_stack, \
|
||||||
current_app, request
|
current_app, request
|
||||||
from ._compat import string_types, text_type
|
from ._compat import string_types, text_type, PY2
|
||||||
|
|
||||||
|
|
||||||
# sentinel
|
# sentinel
|
||||||
_missing = object()
|
_missing = object()
|
||||||
|
|
@ -1002,12 +1001,21 @@ def total_seconds(td):
|
||||||
def is_ip(value):
|
def is_ip(value):
|
||||||
"""Determine if the given string is an IP address.
|
"""Determine if the given string is an IP address.
|
||||||
|
|
||||||
|
Python 2 on Windows doesn't provide ``inet_pton``, so this only
|
||||||
|
checks IPv4 addresses in that environment.
|
||||||
|
|
||||||
:param value: value to check
|
:param value: value to check
|
||||||
:type value: str
|
:type value: str
|
||||||
|
|
||||||
:return: True if string is an IP address
|
:return: True if string is an IP address
|
||||||
:rtype: bool
|
:rtype: bool
|
||||||
"""
|
"""
|
||||||
|
if PY2 and os.name == 'nt':
|
||||||
|
try:
|
||||||
|
socket.inet_aton(value)
|
||||||
|
return True
|
||||||
|
except socket.error:
|
||||||
|
return False
|
||||||
|
|
||||||
for family in (socket.AF_INET, socket.AF_INET6):
|
for family in (socket.AF_INET, socket.AF_INET6):
|
||||||
try:
|
try:
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue