If cdio.get_devices_with_cap finds a single drive, it returns a
str instead of a list. Work around that bug. Fixes#102.
* morituri/test/test_common_drive.py (added):
* morituri/test/Makefile.am:
Add test for it. Caught a bug in my first implementation, too!
* morituri/test/morituri.release.3451f29c-9bb8-4cc5-bfcc-bd50104b94f8.json (added):
* morituri/test/test_common_musicbrainzngs.py (added):
Add test for previous bug of a release not having a date.
Add shrinkPath to write shorter path names.
* morituri/test/test_common_common.py (added):
Add test.
* morituri/program/cdparanoia.py:
Catch ENAMETOOLONG and shrink path.
* morituri/common/program.py:
Update track result's filename if it was shrunk.
* morituri/rip/cd.py:
set the possibly shrunk path on the result.
Add a note about das capital disc.
* morituri/test/release.08397059-86c1-463b-8ed0-cd596dbd174f.xml:
* morituri/test/release.93a6268c-ddf1-4898-bf93-fb862b1c5c5e.xml:
Add musicbrainz ws1 results for Das Capital and Ladyhawke.
* morituri/test/test_common_program.py:
Fix typos.
Add tests for Ladyhawke and Das Capital duration and parsing.
* morituri/test/test_image_table.py:
Fix according to new algorithm.
* morituri/test/test_image_toc.py:
Get frame length for both cd's.
* morituri/image/table.py:
Add getFrameLength method. Fix up duration.
Add release data for Bettie Serveert, Lamprey
* morituri/test/test_common_program.py:
Add a test for parsing and getting the whole duration.
* morituri/common/common.py:
Add a method to format time.
* morituri/common/program.py:
Add duration to tracks and release metadatas.
When there are multiple matches, look up the closest in duration.
Make sure that multiple matches closest in duration contain same
artist and title.
Complain about the other ones.
* morituri/image/table.py:
Add a method to calculate a duration from the table.
* morituri/test/test_image_table.py:
Add a test for it.
Add a cvar to stop going to playing.
* morituri/image/image.py:
Convert AudioLengthTask to GstPipelineTask.
* morituri/test/test_image_image.py:
Adapt to new typefind error we run in.
Generate an actual file by spawning gst-launch; otherwise
with proper error handling we get an error from wavparse that
there is not enough data to typefind.
* morituri/common/gstreamer.py:
Move the gst import to start() and set it as a class attribute.
Document methods.
* morituri/common/encode.py:
Convert EncodeTask to a GstPipelineTask.
Actually raise the exception.
* morituri/common/task.py:
Document interface more clearly.
* morituri/test/test_common_checksum.py:
Use tcommon for test.common
cdparanoia can hang indefinitely on scsi read errors.
For example, on some drives, when trying negative offsets.
Notice them, count them, and fail after 100.
* morituri/test/test_program_cdparanoia.py:
* morituri/test/cdparanoia.progress.error (added):
Add a test for this output.
Create a GstException to wrap a Gst.GError.
Create a base GstPipelineTask class.
Use it in Checksum and TRM tasks.
Raise and don't proceed to call .paused() when a GstError happens.
Should help debug https://bugs.launchpad.net/bugs/735053
* morituri/test/test_common_checksum.py:
Adapt test.
* morituri/test/jose.toc (added):
* morituri/test/JoséGonzález.toc (deleted):
Rename utf-8 file to a normal file.
* morituri/test/common.py:
* morituri/test/test_common_checksum.py:
* morituri/test/test_common_encode.py:
* morituri/test/test_image_image.py:
* morituri/test/test_image_toc.py:
Copy the normal file first to the utf-8 filename, if supported.
Skip tests that need unicode when we are not in a utf-8 locale.
Document having clean test run.
* morituri/common/encode.py:
Catch and properly stop on gst.QueryError.
Don't set peak in stop if we had an error.
* morituri/test/test_common_encode.py:
* morituri/test/test_common_renamer.py:
* morituri/test/test_image_cue.py:
Clean up after tests.
Fix AudioLengthTask for the case where we don't have the decoder,
by instead of doing get_state, waiting for an ASYNC_DONE or ERROR
message. Properly raise a gst.GError in that case.
* morituri/common/task.py:
Add some debug.
* morituri/test/test_image_image.py:
After this fix, we now catch the TYPE_NOT_FOUND because of an
empty stream instead of the later gst.QueryError.
* morituri/test/test_common_encode.py:
Let us know what it is if not a gst.QueryError.
add quoteParse function to quote properly for gst.parse_launch()
* morituri/common/checksum.py:
Fix single quote problem.
use self.setException()
* morituri/common/encode.py:
Fix single quote problem.
* morituri/image/image.py:
Fix single quote problem.
Reraise gst.QueryError.
* morituri/test/test_common_encode.py:
* morituri/test/test_common_encode.py (added):
Add tests for unicode/single/double quote.
* morituri/test/test_image_image.py:
* morituri/test/test_common_checksum.py:
Add tests for single/double quote.
* morituri/test/common.py:
add twisted-like failUnlessRaises to TestCase that returns
the exception, so we can check wrapped exceptions in TaskException.
Note unicode handling.
* morituri/test/test_image_image.py:
* morituri/image/table.py:
* morituri/program/cdparanoia.py:
* morituri/common/checksum.py:
Use unicode for paths.
Use repr for path representation.
* morituri/test/test_common_checksum.py:
Add test for unicode audio file name.
* morituri/image/toc.py:
* morituri/test/test_image_cue.py:
* morituri/test/test_image_toc.py:
Read input file as utf-8. Fix logging of paths.
* morituri/image/image.py:
Document and add asserts for unicodeness of paths.
Encode path in launch lines as utf-8
* morituri/test/Makefile.am:
* morituri/test/test_common_checksum.py (added):
Add a check to make sure that checksumming an empty file doesn't
hang. Fix the hang.
Fix getting AccurateRip results for albums with a HTOA.
* morituri/test/Makefile.am:
* morituri/test/test_common_program.py:
* morituri/test/silentalarm.result.pickle (added):
Add testcase for it, Bloc Party's Silent Alarm.
Parse version number.
* morituri/rip/cd.py:
Warn about cdrdao versions with a bug.
* morituri/test/test_program_cdrdao.py:
Test that we can parse the version.
* morituri/common/program.py:
Extract a common method to get textual representation of
AccurateRip results, and test it.
* morituri/rip/cd.py:
* morituri/rip/image.py:
Use the method.
* morituri/common/program.py:
Break verifyImage into two so we can test it.
Test it using an AccurateRip result for Luke Haines Is Dead
which had a wrongly ripped track 10.