95 lines
2.5 KiB
Python
95 lines
2.5 KiB
Python
# -*- Mode: Python; test-case-name: whipper.test.test_program_cdparanoia -*-
|
|
# vi:si:et:sw=4:sts=4:ts=4
|
|
|
|
import os
|
|
|
|
from whipper.extern.task import task
|
|
|
|
from whipper.program import cdparanoia
|
|
|
|
from whipper.test import common
|
|
|
|
|
|
class ParseTestCase(common.TestCase):
|
|
|
|
def setUp(self):
|
|
# report from Afghan Whigs - Sweet Son Of A Bitch
|
|
path = os.path.join(os.path.dirname(__file__),
|
|
'cdparanoia.progress')
|
|
self._parser = cdparanoia.ProgressParser(start=45990, stop=47719)
|
|
|
|
self._handle = open(path)
|
|
|
|
def testParse(self):
|
|
for line in self._handle.readlines():
|
|
self._parser.parse(line)
|
|
|
|
q = '%.01f %%' % (self._parser.getTrackQuality() * 100.0, )
|
|
self.assertEquals(q, '99.6 %')
|
|
|
|
class Parse1FrameTestCase(common.TestCase):
|
|
|
|
def setUp(self):
|
|
path = os.path.join(os.path.dirname(__file__),
|
|
'cdparanoia.progress.strokes')
|
|
self._parser = cdparanoia.ProgressParser(start=0, stop=0)
|
|
|
|
self._handle = open(path)
|
|
|
|
def testParse(self):
|
|
for line in self._handle.readlines():
|
|
self._parser.parse(line)
|
|
|
|
q = '%.01f %%' % (self._parser.getTrackQuality() * 100.0, )
|
|
self.assertEquals(q, '100.0 %')
|
|
|
|
|
|
class ErrorTestCase(common.TestCase):
|
|
|
|
def setUp(self):
|
|
# report from a rip with offset -1164 causing scsi errors
|
|
path = os.path.join(os.path.dirname(__file__),
|
|
'cdparanoia.progress.error')
|
|
self._parser = cdparanoia.ProgressParser(start=0, stop=10800)
|
|
|
|
self._handle = open(path)
|
|
|
|
def testParse(self):
|
|
for line in self._handle.readlines():
|
|
self._parser.parse(line)
|
|
|
|
q = '%.01f %%' % (self._parser.getTrackQuality() * 100.0, )
|
|
self.assertEquals(q, '79.6 %')
|
|
|
|
|
|
class VersionTestCase(common.TestCase):
|
|
|
|
def testGetVersion(self):
|
|
v = cdparanoia.getCdParanoiaVersion()
|
|
self.failUnless(v)
|
|
# of the form III 10.2
|
|
# make sure it ends with a digit
|
|
self.failUnless(int(v[-1]), v)
|
|
|
|
|
|
class AnalyzeFileTask(cdparanoia.AnalyzeTask):
|
|
|
|
def __init__(self, path):
|
|
self.command = ['cat', path]
|
|
|
|
def readbytesout(self, bytes):
|
|
self.readbyteserr(bytes)
|
|
|
|
|
|
class CacheTestCase(common.TestCase):
|
|
|
|
def testDefeatsCache(self):
|
|
self.runner = task.SyncRunner(verbose=False)
|
|
|
|
path = os.path.join(os.path.dirname(__file__),
|
|
'cdparanoia', 'PX-L890SA.cdparanoia-A.stderr')
|
|
t = AnalyzeFileTask(path)
|
|
self.runner.run(t)
|
|
self.failUnless(t.defeatsCache)
|
|
|