Beispiel #1
0
	def runTest(self):
		for creator in self.creators:
			thumbdir = LocalFolder(self.create_tmp_dir(creator.__name__))

			dir = LocalFolder(tests.ZIM_DATADIR).folder('pixmaps')
			for i, basename in enumerate(dir.list_names()):
				if basename.endswith('.svg'):
					continue # fails on windows in some cases
				file = dir.file(basename)
				thumbfile = thumbdir.file('thumb--' + basename)

				self.assertFalse(thumbfile.exists())
				pixbuf = creator(file, thumbfile, THUMB_SIZE_NORMAL)
				self.assertIsInstance(pixbuf, GdkPixbuf.Pixbuf)
				self.assertTrue(thumbfile.exists())

				pixbuf = GdkPixbuf.Pixbuf.new_from_file(thumbfile.path)
				self.assertEqual(pixbuf.get_option('tEXt::Thumb::URI'), file.uri)
				self.assertTrue(pixbuf.get_option('tEXt::Thumb::URI').startswith('file:///'))
					# Specific requirement of spec to use file:/// and not file://localhost/
				self.assertEqual(int(pixbuf.get_option('tEXt::Thumb::MTime')), int(file.mtime()))

			self.assertTrue(i > 3)

			src_file = self.setUpFolder(mock=tests.MOCK_ALWAYS_REAL).file('test.txt')
			src_file.write('Test 123\n')
			thumbfile = thumbdir.file('thumb-test.txt')
			self.assertRaises(
				ThumbnailCreatorFailure,
				creator, src_file, thumbfile, THUMB_SIZE_NORMAL
			)
Beispiel #2
0
	def testQueue(self):
		queue = ThumbnailQueue()
		self.assertTrue(queue.queue_empty())

		# Test input / output
		src_file = self.setUpFolder(mock=tests.MOCK_ALWAYS_REAL).file('test.txt')
		src_file.write('Test 123\n')
		queue.queue_thumbnail_request(src_file, 64)
			# put an error in the queue

		dir = LocalFolder(tests.ZIM_DATADIR).folder('pixmaps')
		pixmaps = set()
		for basename in dir.list_names():
			if not basename.endswith('.svg'):
				file = dir.file(basename)
				pixmaps.add(file.path)
				queue.queue_thumbnail_request(file, 64)

		self.assertFalse(queue.queue_empty())

		with tests.LoggingFilter('zim.plugins.attachmentbrowser', 'Exception'):
			queue.start()

			seen = set()
			i = len(pixmaps)
			while i > 0:
				i -= 1
				file, size, thumbfile, pixbuf, mtime = queue.get_ready_thumbnail(block=True)
				seen.add(file.path)
				self.assertEqual(size, 64)
				self.assertTrue(thumbfile.exists())
				self.assertIsInstance(pixbuf, GdkPixbuf.Pixbuf)
				self.assertEqual(mtime, file.mtime())

		self.assertEqual(seen, pixmaps)

		# Test clear
		self.assertTrue(queue.queue_empty())
		for path in pixmaps:
			file = LocalFile(path)
			queue.queue_thumbnail_request(file, 64)
		self.assertFalse(queue.queue_empty())
		queue.start()
		time.sleep(0.1)
		queue.clear_queue()
		self.assertTrue(queue.queue_empty())