[CI/CD] Add Travis windows build
* Added APPDATA to tox passenv so it is available to common module. * Fixed windows path issue in httpdownloader tests * Skipped torrentmanager test due to the following error from loading a Linux pickled state file with a different line ending. ModuleNotFoundError: No module named 'deluge.core.torrentmanager\r' * Removed appveyor build
This commit is contained in:
parent
4d970754a4
commit
8a4ec493c0
11
.travis.yml
11
.travis.yml
|
@ -39,6 +39,17 @@ jobs:
|
||||||
env: TOX_ENV=gtkui
|
env: TOX_ENV=gtkui
|
||||||
- name: Plugins unit tests
|
- name: Plugins unit tests
|
||||||
env: TOX_ENV=plugins
|
env: TOX_ENV=plugins
|
||||||
|
- name: Windows Unit tests
|
||||||
|
os: windows
|
||||||
|
language: shell
|
||||||
|
before_install:
|
||||||
|
- choco install python --version 3.6.8
|
||||||
|
- python --version
|
||||||
|
- python -m pip install --upgrade pip
|
||||||
|
- python -m pip install deluge-libtorrent
|
||||||
|
env:
|
||||||
|
- PATH=/c/Python36:/c/Python36/Scripts:$PATH
|
||||||
|
- TOX_ENV=py3
|
||||||
|
|
||||||
addons:
|
addons:
|
||||||
apt:
|
apt:
|
||||||
|
|
53
appveyor.yml
53
appveyor.yml
|
@ -1,53 +0,0 @@
|
||||||
environment:
|
|
||||||
PYTHON_VERSION: 3.6
|
|
||||||
PYTHON_ARCH: 64
|
|
||||||
PYTHON: "C:\\Python36-x64"
|
|
||||||
APPVEYOR_SAVE_CACHE_ON_ERROR: true
|
|
||||||
|
|
||||||
matrix:
|
|
||||||
- TOXENV: py36
|
|
||||||
|
|
||||||
pull_requests:
|
|
||||||
do_not_increment_build_number: true
|
|
||||||
|
|
||||||
install:
|
|
||||||
# If there is a newer build queued for same PR, cancel this one. Credit: JuliaLang devs
|
|
||||||
- ps:
|
|
||||||
if ($env:APPVEYOR_PULL_REQUEST_NUMBER -and $env:APPVEYOR_BUILD_NUMBER -ne ((Invoke-RestMethod `
|
|
||||||
https://ci.appveyor.com/api/projects/$env:APPVEYOR_ACCOUNT_NAME/$env:APPVEYOR_PROJECT_SLUG/history?recordsNumber=50).builds | `
|
|
||||||
Where-Object pullRequestId -eq $env:APPVEYOR_PULL_REQUEST_NUMBER)[0].buildNumber) { `
|
|
||||||
throw "There are newer queued builds for this pull request, failing early." }
|
|
||||||
- "SET PATH=%PYTHON%;%PYTHON%\\Scripts;%PATH%"
|
|
||||||
- "python -VV"
|
|
||||||
- if defined TOXENV (
|
|
||||||
python -m pip install tox tox_venv
|
|
||||||
) else (
|
|
||||||
python -m pip install -rrequirements.txt pygame bbfreeze pefile
|
|
||||||
)
|
|
||||||
- "SET PATH=C:\\OpenSSL-v11-Win64\\bin;%PATH%"
|
|
||||||
- openssl version -v
|
|
||||||
- python -m pip install deluge-libtorrent
|
|
||||||
- 'python -c "import libtorrent; print(libtorrent.__version__)"'
|
|
||||||
|
|
||||||
cache:
|
|
||||||
- '%LOCALAPPDATA%\pip\cache'
|
|
||||||
|
|
||||||
build: false
|
|
||||||
|
|
||||||
test_script:
|
|
||||||
- if defined TOXENV tox
|
|
||||||
# Commented out as require GTK3 to create package.
|
|
||||||
# after_test:
|
|
||||||
# - if not defined TOXENV python setup.py build && python setup.py install
|
|
||||||
# - cd %APPVEYOR_BUILD_FOLDER%\\packaging\\win32
|
|
||||||
# - if not defined TOXENV deluge-bbfreeze.py debug
|
|
||||||
# - "SET PATH=C:\\Program Files (x86)\\NSIS;%PATH%"
|
|
||||||
# - if not defined TOXENV makensis deluge-win32-installer.nsi
|
|
||||||
# - if not defined TOXENV 7z a deluge-win32.zip build-win32 "-x!*.exe"
|
|
||||||
|
|
||||||
# artifacts:
|
|
||||||
# - path: packaging\win32\deluge-win32.zip
|
|
||||||
# - path: packaging\win32\build-win32\*.exe
|
|
||||||
|
|
||||||
#on_success:
|
|
||||||
#
|
|
|
@ -7,6 +7,7 @@
|
||||||
|
|
||||||
from __future__ import unicode_literals
|
from __future__ import unicode_literals
|
||||||
|
|
||||||
|
import os
|
||||||
import tempfile
|
import tempfile
|
||||||
from email.utils import formatdate
|
from email.utils import formatdate
|
||||||
from io import open
|
from io import open
|
||||||
|
@ -21,7 +22,6 @@ from twisted.web.resource import EncodingResourceWrapper, Resource
|
||||||
from twisted.web.server import GzipEncoderFactory, Site
|
from twisted.web.server import GzipEncoderFactory, Site
|
||||||
from twisted.web.util import redirectTo
|
from twisted.web.util import redirectTo
|
||||||
|
|
||||||
from deluge.common import windows_check
|
|
||||||
from deluge.httpdownloader import download_file
|
from deluge.httpdownloader import download_file
|
||||||
from deluge.log import setup_logger
|
from deluge.log import setup_logger
|
||||||
|
|
||||||
|
@ -29,7 +29,7 @@ temp_dir = tempfile.mkdtemp()
|
||||||
|
|
||||||
|
|
||||||
def fname(name):
|
def fname(name):
|
||||||
return '%s/%s' % (temp_dir, name)
|
return os.path.join(temp_dir, name)
|
||||||
|
|
||||||
|
|
||||||
class RedirectResource(Resource):
|
class RedirectResource(Resource):
|
||||||
|
@ -198,10 +198,6 @@ class DownloadFileTestCase(unittest.TestCase):
|
||||||
return d
|
return d
|
||||||
|
|
||||||
def test_download_with_rename(self):
|
def test_download_with_rename(self):
|
||||||
|
|
||||||
if windows_check():
|
|
||||||
raise unittest.SkipTest('on windows \\ != / for path names')
|
|
||||||
|
|
||||||
url = self.get_url('rename?filename=renamed')
|
url = self.get_url('rename?filename=renamed')
|
||||||
d = download_file(url, fname('original'))
|
d = download_file(url, fname('original'))
|
||||||
d.addCallback(self.assertEqual, fname('renamed'))
|
d.addCallback(self.assertEqual, fname('renamed'))
|
||||||
|
@ -209,10 +205,6 @@ class DownloadFileTestCase(unittest.TestCase):
|
||||||
return d
|
return d
|
||||||
|
|
||||||
def test_download_with_rename_exists(self):
|
def test_download_with_rename_exists(self):
|
||||||
|
|
||||||
if windows_check():
|
|
||||||
raise unittest.SkipTest('on windows \\ != / for path names')
|
|
||||||
|
|
||||||
open(fname('renamed'), 'w').close()
|
open(fname('renamed'), 'w').close()
|
||||||
url = self.get_url('rename?filename=renamed')
|
url = self.get_url('rename?filename=renamed')
|
||||||
d = download_file(url, fname('original'))
|
d = download_file(url, fname('original'))
|
||||||
|
@ -221,10 +213,6 @@ class DownloadFileTestCase(unittest.TestCase):
|
||||||
return d
|
return d
|
||||||
|
|
||||||
def test_download_with_rename_sanitised(self):
|
def test_download_with_rename_sanitised(self):
|
||||||
|
|
||||||
if windows_check():
|
|
||||||
raise unittest.SkipTest('on windows \\ != / for path names')
|
|
||||||
|
|
||||||
url = self.get_url('rename?filename=/etc/passwd')
|
url = self.get_url('rename?filename=/etc/passwd')
|
||||||
d = download_file(url, fname('original'))
|
d = download_file(url, fname('original'))
|
||||||
d.addCallback(self.assertEqual, fname('passwd'))
|
d.addCallback(self.assertEqual, fname('passwd'))
|
||||||
|
|
|
@ -15,8 +15,10 @@ from base64 import b64encode
|
||||||
import mock
|
import mock
|
||||||
import pytest
|
import pytest
|
||||||
from twisted.internet import defer, task
|
from twisted.internet import defer, task
|
||||||
|
from twisted.trial import unittest
|
||||||
|
|
||||||
from deluge import component
|
from deluge import component
|
||||||
|
from deluge.common import windows_check
|
||||||
from deluge.core.core import Core
|
from deluge.core.core import Core
|
||||||
from deluge.core.rpcserver import RPCServer
|
from deluge.core.rpcserver import RPCServer
|
||||||
from deluge.error import InvalidTorrentError
|
from deluge.error import InvalidTorrentError
|
||||||
|
@ -137,5 +139,10 @@ class TorrentmanagerTestCase(BaseTestCase):
|
||||||
common.get_test_data_file('utf8_filename_torrents.state'),
|
common.get_test_data_file('utf8_filename_torrents.state'),
|
||||||
os.path.join(self.config_dir, 'state', 'torrents.state'),
|
os.path.join(self.config_dir, 'state', 'torrents.state'),
|
||||||
)
|
)
|
||||||
|
if windows_check():
|
||||||
|
raise unittest.SkipTest(
|
||||||
|
'Windows ModuleNotFoundError due to Linux line ending'
|
||||||
|
)
|
||||||
|
|
||||||
state = self.tm.open_state()
|
state = self.tm.open_state()
|
||||||
self.assertEqual(len(state.torrents), 1)
|
self.assertEqual(len(state.torrents), 1)
|
||||||
|
|
2
tox.ini
2
tox.ini
|
@ -56,7 +56,7 @@ deps =
|
||||||
|
|
||||||
[testenv]
|
[testenv]
|
||||||
install_command = python -m pip install --ignore-installed {opts} {packages}
|
install_command = python -m pip install --ignore-installed {opts} {packages}
|
||||||
passenv = DISPLAY PYTHONPATH
|
passenv = DISPLAY PYTHONPATH APPDATA
|
||||||
setenv =
|
setenv =
|
||||||
PYTHONPATH = {toxinidir}
|
PYTHONPATH = {toxinidir}
|
||||||
PYTEST_ADDOPTS = --verbose --capture=no
|
PYTEST_ADDOPTS = --verbose --capture=no
|
||||||
|
|
Loading…
Reference in New Issue