[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:
Calum Lind 2021-02-22 11:00:17 +00:00
parent 4d970754a4
commit 8a4ec493c0
5 changed files with 21 additions and 68 deletions

View File

@ -39,6 +39,17 @@ jobs:
env: TOX_ENV=gtkui
- name: Plugins unit tests
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:
apt:

View File

@ -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:
#

View File

@ -7,6 +7,7 @@
from __future__ import unicode_literals
import os
import tempfile
from email.utils import formatdate
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.util import redirectTo
from deluge.common import windows_check
from deluge.httpdownloader import download_file
from deluge.log import setup_logger
@ -29,7 +29,7 @@ temp_dir = tempfile.mkdtemp()
def fname(name):
return '%s/%s' % (temp_dir, name)
return os.path.join(temp_dir, name)
class RedirectResource(Resource):
@ -198,10 +198,6 @@ class DownloadFileTestCase(unittest.TestCase):
return d
def test_download_with_rename(self):
if windows_check():
raise unittest.SkipTest('on windows \\ != / for path names')
url = self.get_url('rename?filename=renamed')
d = download_file(url, fname('original'))
d.addCallback(self.assertEqual, fname('renamed'))
@ -209,10 +205,6 @@ class DownloadFileTestCase(unittest.TestCase):
return d
def test_download_with_rename_exists(self):
if windows_check():
raise unittest.SkipTest('on windows \\ != / for path names')
open(fname('renamed'), 'w').close()
url = self.get_url('rename?filename=renamed')
d = download_file(url, fname('original'))
@ -221,10 +213,6 @@ class DownloadFileTestCase(unittest.TestCase):
return d
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')
d = download_file(url, fname('original'))
d.addCallback(self.assertEqual, fname('passwd'))

View File

@ -15,8 +15,10 @@ from base64 import b64encode
import mock
import pytest
from twisted.internet import defer, task
from twisted.trial import unittest
from deluge import component
from deluge.common import windows_check
from deluge.core.core import Core
from deluge.core.rpcserver import RPCServer
from deluge.error import InvalidTorrentError
@ -137,5 +139,10 @@ class TorrentmanagerTestCase(BaseTestCase):
common.get_test_data_file('utf8_filename_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()
self.assertEqual(len(state.torrents), 1)

View File

@ -56,7 +56,7 @@ deps =
[testenv]
install_command = python -m pip install --ignore-installed {opts} {packages}
passenv = DISPLAY PYTHONPATH
passenv = DISPLAY PYTHONPATH APPDATA
setenv =
PYTHONPATH = {toxinidir}
PYTEST_ADDOPTS = --verbose --capture=no