mirror of
https://github.com/beetbox/beets.git
synced 2026-01-09 17:33:51 +01:00
remove incompletely-isolated test cases; use mock timing functions
This commit is contained in:
parent
4359845a01
commit
96c2484b02
2 changed files with 35 additions and 47 deletions
27
test/_common.py
Normal file
27
test/_common.py
Normal file
|
|
@ -0,0 +1,27 @@
|
|||
"""Some common functionality for beets' test cases."""
|
||||
import time
|
||||
|
||||
class Timecop(object):
|
||||
"""Mocks the timing system (namely time() and sleep()) for testing.
|
||||
Inspired by the Ruby timecop library.
|
||||
"""
|
||||
def __init__(self):
|
||||
self.now = time.time()
|
||||
|
||||
def time(self):
|
||||
return self.now
|
||||
|
||||
def sleep(self, amount):
|
||||
self.now += amount
|
||||
|
||||
def install(self):
|
||||
self.orig = {
|
||||
'time': time.time,
|
||||
'sleep': time.sleep,
|
||||
}
|
||||
time.time = self.time
|
||||
time.sleep = self.sleep
|
||||
|
||||
def restore(self):
|
||||
time.time = self.orig['time']
|
||||
time.sleep = self.orig['sleep']
|
||||
|
|
@ -17,19 +17,22 @@
|
|||
|
||||
import unittest
|
||||
import sys
|
||||
import os
|
||||
import time
|
||||
import re
|
||||
import musicbrainz2.model
|
||||
import _common
|
||||
sys.path.append('..')
|
||||
from beets.autotag import mb
|
||||
from beets.library import Item
|
||||
|
||||
def nullfun(): pass
|
||||
class MBQueryWaitTest(unittest.TestCase):
|
||||
def setup(self):
|
||||
def setUp(self):
|
||||
# simulate startup
|
||||
mb.last_query_time = 0.0
|
||||
self.cop = _common.Timecop()
|
||||
self.cop.install()
|
||||
|
||||
def tearDown(self):
|
||||
self.cop.restore()
|
||||
|
||||
def test_do_not_wait_initially(self):
|
||||
time1 = time.time()
|
||||
|
|
@ -42,7 +45,7 @@ class MBQueryWaitTest(unittest.TestCase):
|
|||
time1 = time.time()
|
||||
mb._query_wrap(nullfun)
|
||||
time2 = time.time()
|
||||
self.assertTrue(time2 - time1 > 1.0)
|
||||
self.assertTrue(time2 - time1 >= 1.0)
|
||||
|
||||
def test_second_distant_query_does_not_wait(self):
|
||||
mb._query_wrap(nullfun)
|
||||
|
|
@ -125,48 +128,6 @@ class MBReleaseDictTest(unittest.TestCase):
|
|||
self.assertFalse('month' in d)
|
||||
self.assertFalse('day' in d)
|
||||
|
||||
class MBWhiteBoxTest(unittest.TestCase):
|
||||
def test_match_album_finds_el_producto(self):
|
||||
a = iter(mb.match_album('the avalanches', 'el producto')).next()
|
||||
self.assertEqual(a['album'], 'El Producto')
|
||||
self.assertEqual(a['artist'], 'The Avalanches')
|
||||
self.assertEqual(len(a['tracks']), 7)
|
||||
|
||||
def test_match_album_tolerates_small_errors(self):
|
||||
a = iter(mb.match_album('mia', 'kala ')).next()
|
||||
self.assertEqual(a['artist'], 'M.I.A.')
|
||||
self.assertEqual(a['album'], 'Kala')
|
||||
|
||||
class ByIDTest(unittest.TestCase):
|
||||
def test_match_found(self):
|
||||
a = mb.album_for_id('73677f81-86e6-4087-9255-9ee81b8e3dd3')
|
||||
self.assertEqual(a['artist'], 'Paul Simon')
|
||||
self.assertEqual(a['album'], 'Graceland')
|
||||
self.assertTrue(len(a['tracks']) > 0)
|
||||
|
||||
def test_no_match_returns_none(self):
|
||||
a = mb.album_for_id('bogus-id')
|
||||
self.assertEqual(a, None)
|
||||
|
||||
class SpecialCaseTest(unittest.TestCase):
|
||||
def test_chkchkchk_by_query(self):
|
||||
a = iter(mb.find_releases({
|
||||
'artist': '!!!',
|
||||
'album': '!!!',
|
||||
'tracks': '7',
|
||||
})).next()
|
||||
self.assertEqual(a['artist'], '!!!')
|
||||
self.assertEqual(a['album'], '!!!')
|
||||
|
||||
def test_chkchkchk_by_keys(self):
|
||||
a = iter(mb.get_releases(
|
||||
artistName='!!!',
|
||||
title='!!!',
|
||||
trackCount=7,
|
||||
)).next()
|
||||
self.assertEqual(a['artist'], '!!!')
|
||||
self.assertEqual(a['album'], '!!!')
|
||||
|
||||
def suite():
|
||||
return unittest.TestLoader().loadTestsFromName(__name__)
|
||||
|
||||
|
|
|
|||
Loading…
Reference in a new issue