fix: truncate article titles to safe UTF-8 budget
This commit is contained in:
7 files changed
+115
-15
No files matched your search
+18
-1
@@ -104,9 +104,26 @@ class QueueTests(unittest.TestCase):
|
||||
def test_title_does_not_break_emoji(self):
|
||||
short = short_title('😀' * 50)
|
||||
self.assertTrue(short.endswith('...'))
|
||||
self.assertLessEqual(len(short.encode('utf-16-le')) // 2, 80)
|
||||
self.assertLessEqual(len(short.encode('utf-8')), 78)
|
||||
self.assertEqual(short_title('短标题'), '短标题')
|
||||
|
||||
def test_existing_queued_title_updates_before_import_only(self):
|
||||
original = '中' * 30
|
||||
self.md.write_text('# ' + original + '\n\n正文。\n\n来源:测试,如有侵权,请联系删除。')
|
||||
self.store.enqueue(self.article)
|
||||
with self.store.db() as db:
|
||||
job = self.store.state()['jobs'][0]
|
||||
job['title'] = original # Simulate a queue created by the old version.
|
||||
self.store._save(db, job)
|
||||
self.store.control('start')
|
||||
job = self.store.next(self.owner)['job']
|
||||
self.assertEqual(job['title'], '中' * 25 + '...')
|
||||
self.assertEqual(self.store.package(dict(owner='tab-a', id=job['id']))['title'], job['title'])
|
||||
self.submit(job)
|
||||
restarted = Store(self.root / 'queue.sqlite3')
|
||||
self.assertEqual(restarted.state()['jobs'][0]['snapshot']['title'], job['title'])
|
||||
self.assertEqual(restarted.state()['jobs'][0]['original_title'], original)
|
||||
|
||||
def test_unsupported_images_stop_before_queue(self):
|
||||
(self.article / 'a.webp').write_bytes(b'webp')
|
||||
with self.assertRaisesRegex(ValueError, '暂不支持'):
|
||||
|
||||
Reference in new issue
Block a user