Add tests for relevance sorting to test_identify_plugin

This commit is contained in:
Kovid Goyal 2011-03-22 15:00:11 -06:00
parent bbd493dee7
commit b18cd40a4e
2 changed files with 15 additions and 6 deletions

View File

@ -41,7 +41,7 @@ class Worker(Thread): # {{{
try: try:
self.get_details() self.get_details()
except: except:
self.log.error('get_details failed for url: %r'%self.url) self.log.exception('get_details failed for url: %r'%self.url)
def get_details(self): def get_details(self):
try: try:
@ -168,7 +168,7 @@ class Worker(Thread): # {{{
if self.isbn: if self.isbn:
self.plugin.cache_isbn_to_identifier(self.isbn, self.amazon_id) self.plugin.cache_isbn_to_identifier(self.isbn, self.amazon_id)
if self.cover_url: if self.cover_url:
self.cache_identifier_to_cover_url(self.amazon_id, self.plugin.cache_identifier_to_cover_url(self.amazon_id,
self.cover_url) self.cover_url)
self.result_queue.put(mi) self.result_queue.put(mi)

View File

@ -10,7 +10,7 @@ __docformat__ = 'restructuredtext en'
import os, tempfile, time import os, tempfile, time
from Queue import Queue, Empty from Queue import Queue, Empty
from threading import Event from threading import Event
from functools import partial
from calibre.customize.ui import metadata_plugins from calibre.customize.ui import metadata_plugins
from calibre import prints from calibre import prints
@ -90,11 +90,17 @@ def test_identify_plugin(name, tests):
except Empty: except Empty:
break break
prints('Found', len(results), 'matches:') prints('Found', len(results), 'matches:', end=' ')
prints('Smaller relevance means better match')
for mi in results: results.sort(cmp=partial(plugin.compare_identify_results,
title=kwargs.get('title', None), authors=kwargs.get('authors',
None), identifiers=kwargs.get('identifiers', {})))
for i, mi in enumerate(results):
prints('*'*30, 'Relevance:', i, '*'*30)
prints(mi) prints(mi)
prints('\n\n') prints('*'*75, '\n\n')
possibles = [] possibles = []
for mi in results: for mi in results:
@ -117,6 +123,9 @@ def test_identify_plugin(name, tests):
prints('Failed to find', plugin.test_fields(possibles[0])) prints('Failed to find', plugin.test_fields(possibles[0]))
raise SystemExit(1) raise SystemExit(1)
if results[0] is not possibles[0]:
prints('Most relevant result failed the tests')
prints('Average time per query', sum(times)/len(times)) prints('Average time per query', sum(times)/len(times))