a TaskException already wraps another exception; raising it gives a
hard-to-read multi-line message instead of showing the clean wrapped
original backtrace; for comparison, an asserton error in image.py line
253:
exception AssertionError at /home/chrysn/git/whipper/morituri/image/image.py:253: stop(): Track length was not found; look for earlier errors in debug log (set RIP_DEBUG=4)
Traceback (most recent call last):
File "/home/chrysn/git/whipper/morituri/extern/task/task.py", line 497, in _startWrap
task.start(self)
File "/home/chrysn/git/whipper/morituri/extern/task/task.py", line 395, in start
BaseMultiTask.start(self, runner)
File "/home/chrysn/git/whipper/morituri/extern/task/task.py", line 330, in start
self.next()
File "/home/chrysn/git/whipper/morituri/extern/task/task.py", line 401, in next
BaseMultiTask.next(self)
File "/home/chrysn/git/whipper/morituri/extern/task/task.py", line 351, in next
self.stop()
File "/home/chrysn/git/whipper/morituri/image/image.py", line 253, in stop
assert taskk.length is not None, "Track length was not found; look for earlier errors in debug log (set RIP_DEBUG=4)"
AssertionError: Track length was not found; look for earlier errors in debug log (set RIP_DEBUG=4)
vs.
Traceback (most recent call last):
File "<string>", line 1, in <module>
File "/home/chrysn/git/whipper/morituri/rip/main.py", line 27, in main
ret = c.parse(sys.argv[1:])
File "/home/chrysn/git/whipper/morituri/rip/main.py", line 94, in parse
logcommand.LogCommand.parse(self, argv)
File "/home/chrysn/git/whipper/morituri/common/logcommand.py", line 62, in parse
command.Command.parse(self, argv)
File "/home/chrysn/git/whipper/morituri/extern/command/command.py", line 401, in parse
return self.subCommands[command].parse(args[1:])
File "/home/chrysn/git/whipper/morituri/common/logcommand.py", line 62, in parse
command.Command.parse(self, argv)
File "/home/chrysn/git/whipper/morituri/extern/command/command.py", line 401, in parse
return self.subCommands[command].parse(args[1:])
File "/home/chrysn/git/whipper/morituri/common/logcommand.py", line 62, in parse
command.Command.parse(self, argv)
File "/home/chrysn/git/whipper/morituri/extern/command/command.py", line 363, in parse
ret = self.do(args)
File "/home/chrysn/git/whipper/morituri/rip/image.py", line 184, in do
cueImage.setup(runner)
File "/home/chrysn/git/whipper/morituri/image/image.py", line 75, in setup
runner.run(verify)
File "/home/chrysn/git/whipper/morituri/extern/task/task.py", line 490, in run
raise TaskException(task.exception, message=msg)
morituri.extern.task.task.TaskException: (AssertionError('Track length was not found; look for earlier errors in debug log (set RIP_DEBUG=4)',), 'exception AssertionError at /home/chrysn/git/whipper/morituri/image/image.py:253: stop(): Track length was not found; look for earlier errors in debug log (set RIP_DEBUG=4)\nTraceback (most recent call last):\n File "/home/chrysn/git/whipper/morituri/extern/task/task.py", line 497, in _startWrap\n task.start(self)\n File "/home/chrysn/git/whipper/morituri/extern/task/task.py", line 395, in start\n BaseMultiTask.start(self, runner)\n File "/home/chrysn/git/whipper/morituri/extern/task/task.py", line 330, in start\n self.next()\n File "/home/chrysn/git/whipper/morituri/extern/task/task.py", line 401, in next\n BaseMultiTask.next(self)\n File "/home/chrysn/git/whipper/morituri/extern/task/task.py", line 351, in next\n self.stop()\n File "/home/chrysn/git/whipper/morituri/image/image.py", line 253, in stop\n assert taskk.length is not None, "Track length was not found; look for earlier errors in debug log (set RIP_DEBUG=4)"\nAssertionError: Track length was not found; look for earlier errors in debug log (set RIP_DEBUG=4)\n')
* Use extensions soxi understands (ie. ".flac")
* Actually test for result correctness on files with odd characters in
their names by copying the test track
* Relax the requirements on the "track absent" task to only raise some
TaskError (the previously tested behavior was backend dependent, and
the application did not actually depend on that behavior)
* update HACKING to mention pep8, data structures, and more test discs
* add notice of TODO deprecation
* remove ChangeLog, NEWS, and RELEASE from new versions
* rename COPYING to LICENSE
* standardise program/sox.py formatting, add test case
* add program/sox.peak_level() docstring
* update .travis.yml to include sox as a test dependency
* move sox from test dependency to normal dependency
* update README to mention sox, remove small autoconf mention
* use .splitlines() instead of .split('n')
* slightly updated the README file
* updated morituri version number in cue tests
* commented out a portion of testAccurateRipChecksum (it should be updated/fixed later on)
* update README to force python2
* add support for PRE_EMPHASIS detection; mark pre-emphasis as FLAGS PRE in .cue
* correct typo, s/ivar/type/ for pre_emphasis element in track table
* add SoxPeakTask, program/sox module, sox.peak_level()
* use sox peak detection in lieu of gstreamer
There are still some changes required to make whipper handle ARv2 checksums,
currently doesn't call the Task for a V2 checksum. V1 should keep working as-is.
* Address issue #24
* Remove getReadCaches() & replace it with getCache()
Now whipper always follows XDG specifications. All changes were documented into the README file.
The changes introduced here aren't backward compatible so, after updating whipper, you may need to configure it again (old config file are retained, though).