Skip to content

Commit

Permalink
Merge pull request #859 from pymedusa/tests_config
Browse files Browse the repository at this point in the history
Improving tests config
  • Loading branch information
ratoaq2 committed Aug 9, 2016
2 parents 2643aa3 + f30739c commit 75105a7
Show file tree
Hide file tree
Showing 9 changed files with 340 additions and 14 deletions.
3 changes: 2 additions & 1 deletion .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -70,7 +70,8 @@ lib/unrar2/UnRAR.exe
# Unit test/Coverage #
######################
.tox/
.coverage
.coverage*
.cache
htmlcov

# Contrib #
Expand Down
3 changes: 1 addition & 2 deletions pytest.ini
Original file line number Diff line number Diff line change
@@ -1,7 +1,6 @@
[pytest]
norecursedirs = .build .cache .eggs .tox cache contrib lib
norecursedirs = .build .cache .eggs .tox cache contrib htmlcov lib
python_files = *test*.py
addopts = --flake8
flake8-max-line-length = 120
flake8-ignore =
setup.py D200 D400
Expand Down
2 changes: 1 addition & 1 deletion sickbeard/refiners/release.py
Original file line number Diff line number Diff line change
Expand Up @@ -99,7 +99,7 @@ def get_release_name(release_file):
:return: the release name
:rtype: str
"""
if not release_file:
if not release_file or not os.path.isfile(release_file):
return

with open(release_file, 'r') as f:
Expand Down
8 changes: 4 additions & 4 deletions sickbeard/tv.py
Original file line number Diff line number Diff line change
Expand Up @@ -138,7 +138,7 @@ def __setstate__(self, d):
class TVShow(TVObject):
"""Represent a TV Show."""

def __init__(self, indexer, indexerid, lang=''):
def __init__(self, indexer, indexerid, lang='', quality=None, flatten_folders=None, enabled_subtitles=None):
"""Instantiate a TVShow with database information based on indexerid.
:param indexer:
Expand All @@ -156,14 +156,14 @@ def __init__(self, indexer, indexerid, lang=''):
self.classification = ''
self.runtime = 0
self.imdb_info = {}
self.quality = int(sickbeard.QUALITY_DEFAULT)
self.flatten_folders = int(sickbeard.FLATTEN_FOLDERS_DEFAULT)
self.quality = quality or int(sickbeard.QUALITY_DEFAULT)
self.flatten_folders = flatten_folders or int(sickbeard.FLATTEN_FOLDERS_DEFAULT)
self.status = 'Unknown'
self.airs = ''
self.startyear = 0
self.paused = 0
self.air_by_date = 0
self.subtitles = int(sickbeard.SUBTITLES_DEFAULT)
self.subtitles = enabled_subtitles or int(sickbeard.SUBTITLES_DEFAULT)
self.dvdorder = 0
self.lang = lang
self.last_update_indexer = 1
Expand Down
11 changes: 11 additions & 0 deletions tests/conftest.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,11 @@
"""Configuration for pytest."""
from pytest import Function


def pytest_collection_modifyitems(config, items):
"""Disable test execution if -p no:unittest is defined."""
plugins = config.getoption('plugins', default=None)
if plugins and 'no:unittest' in plugins:
for item in reversed(items):
if isinstance(item, Function):
items.remove(item)
175 changes: 175 additions & 0 deletions tests/test_release_refiner.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,175 @@
# coding=utf-8
"""Tests for sickbeard.refiners.release.py."""

import os

import pytest
from sickbeard.refiners import release as sut
from subliminal.video import Video


@pytest.fixture
def data():
return {
'release_name': 'Show.Name.2012.S01E02.Episode.Title.1080p.HDTV.x265.AC3-Group',
'release_properties': {
'series': 'Show Name',
'season': 1,
'episode': 2,
'title': 'Episode Title',
'year': 2012,
'format': 'HDTV',
'resolution': '1080p',
'release_group': 'Group',
'video_codec': 'h265',
'audio_codec': 'AC3'
},
'another_release_name': 'Different.Show.2013.S03E04.Another.Episode.720p.BluRay.x264-NoGroup',
'video': Video.fromname('Show.Name.S01E02.mkv'),
'video_properties': {
'series': 'Show Name',
'season': 1,
'episode': 2,
'title': None,
'year': None,
'format': None,
'resolution': None,
'release_group': None,
'video_codec': None,
'audio_codec': None,
}
}


def _to_properties(video):
return {
'series': video.series,
'season': video.season,
'episode': video.episode,
'title': video.title,
'year': video.year,
'format': video.format,
'resolution': video.resolution,
'release_group': video.release_group,
'video_codec': video.video_codec,
'audio_codec': video.audio_codec,
}


def test_refine__only_video(data):
# Given
video = data['video']
expected = data['video_properties']

# When
sut.refine(video)

# Then
assert expected == _to_properties(video)


def test_refine__with_release_name(data):
# Given
video = data['video']
release_name = data['release_name']
expected = data['release_properties']

# When
sut.refine(video, release_name=release_name)

# Then
assert expected == _to_properties(video)


def test_refine__with_release_file(data, tmpdir):
# Given
video = data['video']
release_name = data['release_name']
release_file = tmpdir.ensure('somefile.ext')
release_file.write(release_name)
expected = data['release_properties']

# When
sut.refine(video, release_file=release_file.strpath)

# Then
assert expected == _to_properties(video)


def test_refine__with_release_file_with_no_content(data, tmpdir):
# Given
video = data['video']
release_file = tmpdir.ensure('somefile.ext')
expected = data['video_properties']

# When
sut.refine(video, release_file=release_file.strpath)

# Then
assert expected == _to_properties(video)


def test_refine__with_non_existent_release_file(data):
# Given
video = data['video']
release_file = 'somefile.ext'
expected = data['video_properties']

# When
sut.refine(video, release_file=release_file)

# Then
assert expected == _to_properties(video)


def test_refine__with_release_extension(data, tmpdir):
# Given
video = data['video']
release_name = data['release_name']
name, ext = os.path.splitext(os.path.basename(video.name))
video.name = '{path}/{name}{ext}'.format(path=tmpdir.strpath, name=name, ext=ext)
release_file = tmpdir.ensure('{name}.ext'.format(name=name))
release_file.write(release_name)
release_file = tmpdir.ensure('{name}.ttt'.format(name=name))
release_file.write(data['another_release_name'])
expected = data['release_properties']

# When
sut.refine(video, extension='ext')

# Then
assert expected == _to_properties(video)


def test_refine__precedence_with_release_file_and_release_name(data, tmpdir):
# Given
video = data['video']
release_name = data['release_name']
another_release_name = data['another_release_name']
release_file = tmpdir.ensure('somefile.ext')
release_file.write(release_name)
expected = data['release_properties']

# When
sut.refine(video, release_name=another_release_name, release_file=release_file.strpath)

# Then
assert expected == _to_properties(video)


def test_refine__precedence_with_default_release_extension_and_release_name(data, tmpdir):
# Given
video = data['video']
name, ext = os.path.splitext(os.path.basename(video.name))
video.name = '{path}/{name}{ext}'.format(path=tmpdir.strpath, name=name, ext=ext)
release_name = data['release_name']
another_release_name = data['another_release_name']
release_file = tmpdir.ensure('{name}.release'.format(name=name))
release_file.write(release_name)
expected = data['release_properties']

# When
sut.refine(video, release_name=another_release_name)

# Then
assert expected == _to_properties(video)
9 changes: 4 additions & 5 deletions tests/test_subtitles.py
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,6 @@
import sys

from babelfish.language import Language
from mock.mock import Mock
import sickbeard.subtitles as sut
from subliminal.subtitle import Subtitle

Expand Down Expand Up @@ -240,7 +239,7 @@ def test_code_from_code__valid_2letter_code():
def test_compute_subtitle_path__multi_with_valid_language(monkeypatch):
# Given
monkeypatch.setattr('sickbeard.SUBTITLES_MULTI', True)
subtitle = Mock(spec=Subtitle, language=Language('por', 'BR'))
subtitle = Subtitle(language=Language('por', 'BR'))
video_path = '/folder/subfolder/video.mkv'
subtitles_dir = None

Expand All @@ -254,7 +253,7 @@ def test_compute_subtitle_path__multi_with_valid_language(monkeypatch):
def test_compute_subtitle_path__multi_with_und_language(monkeypatch):
# Given
monkeypatch.setattr('sickbeard.SUBTITLES_MULTI', True)
subtitle = Mock(spec=Subtitle, language=Language('und'))
subtitle = Subtitle(language=Language('und'))
video_path = '/folder/subfolder/video.mkv'
subtitles_dir = None

Expand All @@ -268,7 +267,7 @@ def test_compute_subtitle_path__multi_with_und_language(monkeypatch):
def test_compute_subtitle_path__single_with_valid_language(monkeypatch):
# Given
monkeypatch.setattr('sickbeard.SUBTITLES_MULTI', False)
subtitle = Mock(spec=Subtitle, language=Language('por', 'BR'))
subtitle = Subtitle(language=Language('por', 'BR'))
video_path = '/folder/subfolder/video.mkv'
subtitles_dir = None

Expand All @@ -282,7 +281,7 @@ def test_compute_subtitle_path__single_with_valid_language(monkeypatch):
def test_compute_subtitle_path__single_with_valid_language_and_subs_folder(monkeypatch):
# Given
monkeypatch.setattr('sickbeard.SUBTITLES_MULTI', False)
subtitle = Mock(spec=Subtitle, language=Language('por', 'BR'))
subtitle = Subtitle(language=Language('por', 'BR'))
video_path = '/folder/subfolder/video.mkv'
subtitles_dir = '/folder/subtitles'

Expand Down

0 comments on commit 75105a7

Please sign in to comment.