Description
I was trying to recreate imagej-updater's hashing in Python, and while I had success with many files, I stumbled upon some very peculiar behaving files. Six hours of debugging later, I found two non-obvious bugs in imagej-updater's code.
While this seems to be two bugs, it doesn't really affect the updater, since the hashes are calculated consistently wrong ;) … or at least contrary to what taking a brief look at the code might suggest.
First: Contrary to what keepOnlyMainClass
parameter (the default) suggests, the FilterManifest
filter will never show the main class:
After the
.toUpperCase()
call, it can never .startsWith()
the mixed case text fragment ... hence just an empty manifest is passed.
Second: A missing super().
turns this simple supposedly-iterative (I presume) function into a rather unpredictable recursive affair ... contrary to what SkipHashedLines
suggests, some lines starting with a #
will hence remain in the resulting stream.