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/common/program.py:
On compilation albums the album artist is different to the artist.
If this is the case, morituri should write both tags.
Fixes#43.
Add logCategory to CDRDAO tasks.
Remove errors from parser, set them publically on task.
Properly raise exceptions on data cd's with correct stack origin.
* 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.
Add a retagging command.
Add a getMusicBrainz() method.
* morituri/rip/cd.py:
Use it.
* morituri/image/image.py:
Add a task to retag an image.
* morituri/rip/image.py:
Add a command to retag an image.
Style fixes.
* morituri/common/common.py:
Add functions to convert a gst.TagList to a dict and compare them.
* morituri/common/task.py:
Add setAndRaiseException which gives us an appropriate
exceptionMessage as if we raised where we called this new function.
Add some debug.
* morituri/common/encode.py:
Add more debug.
Handle the case where peak is full scale, and peakdB thus 0,
which triggered not setting self.peak.
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.