The assertions sat inside a try/catch whose catch only logged, so a
failed expect was swallowed and the test always passed. That hid a
stale fixture: since issue #39098 was added to the input issues, the
command closes it (the expected uk.m3u already shows the edit), but
playlist_update.log was never updated.
The other public generators drop NSFW streams with isSFW(), as PLAYLISTS.md promises (no NSFW channels since January 30th, 2024), but categories/ and sources/ took every stream, so NSFW channels with a feed were published there. The test fixture's NSFW channel now carries its feed id, so it reaches the generators instead of being dropped as a stream without a feed.
- stream.updateWithIssue: 'Live 24/7: Yes' meant the stream IS 24/7, but it
was assigned straight to isNot247, inverting the label. A 'No' answer was
also ignored because the guard skipped falsy values.
- dataSet.getBoolean: an unanswered dropdown is stored as '' by
parseIssueBody, which getBoolean read as false. Treat it as undefined so
'no answer' means 'leave unchanged' instead of 'Not 24/7'.
- update.addStream: has() is true for an unanswered field, so it produced
isNot247 = true for issues that left the dropdown blank.
- generate: sortBy got five orders for four iteratees.
- 2_streams_edit.yml: restore the '~' reset option dropped from the quality
dropdown when the Label field was removed.
- stream.getLabels: use const to satisfy prefer-const.