diff --git a/.travis.yml b/.travis.yml index 32a67c0729f66909541c450affb1fc2916b521d7..2799cf2f9fe24ec3a2551150c6035202a36e3de4 100644 --- a/.travis.yml +++ b/.travis.yml @@ -10,6 +10,10 @@ branches: install: - pip install cheetah pyopenssl==0.13.1 +cache: + directories: + - $HOME/.cache/pip + before_script: - chmod +x ./tests/all_tests.py diff --git a/sickbeard/common.py b/sickbeard/common.py index 84b2cd4934f9ccf5bf85f57ff1ebe4c8e1ce2700..bccb2acf60c9eaa5b84a3453cda6b558acf08cb9 100644 --- a/sickbeard/common.py +++ b/sickbeard/common.py @@ -23,10 +23,7 @@ import re import uuid INSTANCE_ID = str(uuid.uuid1()) -#Use Sick Beard USER_AGENT until they stop throttling us, -#newznab searching has long been fixed, but we now limit it to 400 results just as they do. -#USER_AGENT = ('SickRage/(' + platform.system() + '; ' + platform.release() + '; ' + INSTANCE_ID + ')') -USER_AGENT = 'Sick Beard/alpha2-master' + ' (' + platform.system() + ' ' + platform.release() + ')' +USER_AGENT = ('SickRage/(' + platform.system() + '; ' + platform.release() + '; ' + INSTANCE_ID + ')') mediaExtensions = ['avi', 'mkv', 'mpg', 'mpeg', 'wmv', 'ogm', 'mp4', 'iso', 'img', 'divx', diff --git a/sickbeard/providers/generic.py b/sickbeard/providers/generic.py index 7b6e8ca3ab3b6b148daa0a285d59aa3ee3369f51..c836c49d0b4d9b5565396e5ac396681454c0ba35 100644 --- a/sickbeard/providers/generic.py +++ b/sickbeard/providers/generic.py @@ -174,20 +174,21 @@ class GenericProvider: return for url in urls: + logger.log(u"Downloading a result from " + self.name + " at " + url) if helpers.download_file(url, filename, session=self.session): - logger.log(u"Downloading a result from " + self.name + " at " + url) - - if self.providerType == GenericProvider.TORRENT: - logger.log(u"Saved magnet link to " + filename, logger.INFO) - else: - logger.log(u"Saved result to " + filename, logger.INFO) - if self._verify_download(filename): + if self.providerType == GenericProvider.TORRENT: + logger.log(u"Saved magnet link to " + filename, logger.INFO) + else: + logger.log(u"Saved result to " + filename, logger.INFO) return True else: + logger.log(u"Could not download %s" % url, logger.WARNING) helpers._remove_file_failed(filename) - logger.log(u"Failed to download result", logger.WARNING) + if len(urls): + logger.log(u"Failed to download any results", logger.WARNING) + return False def _verify_download(self, file_name=None): diff --git a/sickbeard/rssfeeds.py b/sickbeard/rssfeeds.py index f87587bc63bb9de957e918a7ad3bddcf208495fd..0a06c49fa0fa6988be975f9d91a9378b64f08ac3 100644 --- a/sickbeard/rssfeeds.py +++ b/sickbeard/rssfeeds.py @@ -38,8 +38,8 @@ class RSSFeeds: url += urllib.urlencode(post_data) try: - resp = Cache(self.rssDB).fetch(url, force_update=True, request_headers=request_headers, handlers=handlers) + resp = Cache(self.rssDB, userAgent=sickbeard.common.USER_AGENT).fetch(url, force_update=True, request_headers=request_headers, handlers=handlers) finally: self.rssDB.close() - return resp \ No newline at end of file + return resp diff --git a/sickbeard/scene_numbering.py b/sickbeard/scene_numbering.py index e72fae4c02fb274d26c85a6d6c0ec864c4acc874..109929c471ef54d8d806772a8c7048c8f2a1d9cf 100644 --- a/sickbeard/scene_numbering.py +++ b/sickbeard/scene_numbering.py @@ -498,7 +498,7 @@ def xem_refresh(indexer_id, indexer, force=False): try: parsedJSON = sickbeard.helpers.getURL(url, json=True) if not parsedJSON or parsedJSON == '': - logger.log(u'No XEN data for show "%s on %s"' % (indexer_id, sickbeard.indexerApi(indexer).name,), logger.INFO) + logger.log(u'No XEM data for show "%s on %s"' % (indexer_id, sickbeard.indexerApi(indexer).name,), logger.INFO) return if 'success' in parsedJSON['result']: diff --git a/tests/test_lib.py b/tests/test_lib.py index 841b3a9688dfd243d716c810896610522b56e079..a4077eddc5a587081f62f0e47ea35cfc0e467e03 100644 --- a/tests/test_lib.py +++ b/tests/test_lib.py @@ -43,7 +43,7 @@ shutil.copyfile = lib.shutil_custom.copyfile_custom #================= # test globals #================= -TESTDIR = os.path.abspath('.') +TESTDIR = os.path.abspath(os.path.dirname(__file__)) TESTDBNAME = "sickbeard.db" TESTCACHEDBNAME = "cache.db" TESTFAILEDDBNAME = "failed.db" @@ -88,8 +88,8 @@ sickbeard.PROVIDER_ORDER = ["sick_beard_index"] sickbeard.newznabProviderList = providers.getNewznabProviderList("'Sick Beard Index|http://lolo.sickbeard.com/|0|5030,5040|0|eponly|0|0|0!!!NZBs.org|https://nzbs.org/||5030,5040,5060,5070,5090|0|eponly|0|0|0!!!Usenet-Crawler|https://www.usenet-crawler.com/||5030,5040,5060|0|eponly|0|0|0'") sickbeard.providerList = providers.makeProviderList() -sickbeard.PROG_DIR = os.path.abspath('..') -sickbeard.DATA_DIR = sickbeard.PROG_DIR +sickbeard.PROG_DIR = os.path.abspath(os.path.join(TESTDIR, '..')) +sickbeard.DATA_DIR = TESTDIR sickbeard.CONFIG_FILE = os.path.join(sickbeard.DATA_DIR, "config.ini") sickbeard.CFG = ConfigObj(sickbeard.CONFIG_FILE) @@ -140,34 +140,36 @@ class SickbeardTestDBCase(unittest.TestCase): tearDown_test_episode_file() tearDown_test_show_dir() - class TestDBConnection(db.DBConnection, object): def __init__(self, dbFileName=TESTDBNAME): dbFileName = os.path.join(TESTDIR, dbFileName) super(TestDBConnection, self).__init__(dbFileName) - class TestCacheDBConnection(TestDBConnection, object): - - def __init__(self, providerName): + def __init__(self, providerName): db.DBConnection.__init__(self, os.path.join(TESTDIR, TESTCACHEDBNAME)) # Create the table if it's not already there try: - sql = "CREATE TABLE " + providerName + " (name TEXT, season NUMERIC, episodes TEXT, indexerid NUMERIC, url TEXT, time NUMERIC, quality TEXT);" - self.connection.execute(sql) - self.connection.commit() - except sqlite3.OperationalError, e: - if str(e) != "table " + providerName + " already exists": + if not self.hasTable(providerName): + sql = "CREATE TABLE [" + providerName + "] (name TEXT, season NUMERIC, episodes TEXT, indexerid NUMERIC, url TEXT, time NUMERIC, quality TEXT, release_group TEXT)" + self.connection.execute(sql) + self.connection.commit() + except Exception, e: + if str(e) != "table [" + providerName + "] already exists": raise + # add version column to table if missing + if not self.hasColumn(providerName, 'version'): + self.addColumn(providerName, 'version', "NUMERIC", "-1") + # Create the table if it's not already there try: sql = "CREATE TABLE lastUpdate (provider TEXT, time NUMERIC);" self.connection.execute(sql) self.connection.commit() - except sqlite3.OperationalError, e: + except Exception, e: if str(e) != "table lastUpdate already exists": raise @@ -195,31 +197,29 @@ def setUp_test_db(): def tearDown_test_db(): - """Deletes the test db - although this seams not to work on my system it leaves me with an zero kb file - """ - - #uncomment next line so leave the db intact between test and at the end - #return False - - for current_db in [ TESTDBNAME, TESTCACHEDBNAME, TESTFAILEDDBNAME ]: - for file_name in [ os.path.join(TESTDIR, current_db), os.path.join(TESTDIR, current_db + '-journal') ]: - if os.path.exists(file_name): - try: - os.remove(file_name) - except (IOError, OSError) as e: - print 'ERROR: Failed to remove ' + file_name - print ex(e) - + from sickbeard.db import db_cons + for connection in db_cons: + db_cons[connection].commit() +# db_cons[connection].close() + +# for current_db in [ TESTDBNAME, TESTCACHEDBNAME, TESTFAILEDDBNAME ]: +# file_name = os.path.join(TESTDIR, current_db) +# if os.path.exists(file_name): +# try: +# os.remove(file_name) +# except Exception as e: +# print 'ERROR: Failed to remove ' + file_name +# print ex(e) def setUp_test_episode_file(): if not os.path.exists(FILEDIR): os.makedirs(FILEDIR) try: - with open(FILEPATH, 'w') as f: + with open(FILEPATH, 'wb') as f: f.write("foo bar") - except EnvironmentError: + f.flush() + except Exception: print "Unable to set up test episode" raise diff --git a/tests/tv_tests.py b/tests/tv_tests.py index 9b130d17cd019ab79fe66990c550cc9d2ce13f5e..a6b8cb30957b46e1a090abd359cd30d8f816a9b5 100644 --- a/tests/tv_tests.py +++ b/tests/tv_tests.py @@ -43,7 +43,7 @@ class TVShowTests(test.SickbeardTestDBCase): show.network = "cbs" show.genre = "crime" show.runtime = 40 - show.status = "5" + show.status = "Ended" show.default_ep_status = "5" show.airs = "monday" show.startyear = 1987 @@ -92,7 +92,7 @@ class TVTests(test.SickbeardTestDBCase): show.network = "cbs" show.genre = "crime" show.runtime = 40 - show.status = "5" + show.status = "Ended" show.default_ep_status = "5" show.airs = "monday" show.startyear = 1987