Changeset 452

Show
Ignore:
Timestamp:
08/21/07 08:28:15 (1 year ago)
Author:
athomas
Message:

pyndexter: All modules are now prefixed with _ to avoid import collisions. Updated unit tests.

Files:

Legend:

Unmodified
Added
Removed
Modified
Copied
Moved
  • pyndexter/trunk/pyndexter/indexers/_hype.py

    r395 r452  
    4949import os 
    5050from pyndexter import * 
    51 hype = __import__('hype') 
     51import hype 
    5252 
    5353 
  • pyndexter/trunk/pyndexter/indexers/_lupy.py

    r395 r452  
    3434import os 
    3535from pyndexter import * 
    36 lupy = __import__('lupy', {}, {}, ['']) 
    37 lupy.indexer = __import__('lupy.indexer', {}, {}, ['']) 
    38 lupy.search = __import__('lupy.search', {}, {}, ['']) 
     36import lupy 
     37import lupy.indexer 
     38import lupy.search 
    3939 
    4040 
  • pyndexter/trunk/pyndexter/indexers/_mock.py

    r395 r452  
    1313from StringIO import StringIO 
    1414from pyndexter import * 
    15  
    16  
    17 class MockStateStore(StateStore): 
    18     """Memory-only StateStore.""" 
    19     def __init__(self): 
    20         self.stored = False 
    21         self.buffer = StringIO() 
    22  
    23     def store(self): 
    24         self.stored = True 
    25         self.buffer = StringIO() 
    26         return self.buffer 
    27  
    28     def retrieve(self): 
    29         self.buffer.seek(0) 
    30         return self.buffer 
    31  
    32     def exists(self): 
    33         return self.stored 
    3415 
    3516 
     
    6748        self.cache[document.uri] = document.content 
    6849 
    69     def state_store(self): 
    70         return MockStateStore() 
    71  
    7250    def search(self, query): 
    7351        docs = self.cache.keys() 
  • pyndexter/trunk/pyndexter/indexers/_pyndex.py

    r395 r452  
    3737from pyndexter import * 
    3838import metakit 
    39 pyndex = __import__('pyndex') 
    40 __import__('pyndex.indexer') 
     39import pyndex 
     40import pyndex.indexer 
    4141 
    4242 
  • pyndexter/trunk/pyndexter/indexers/tests.py

    r393 r452  
    22import unittest 
    33import tempfile 
     4from textwrap import wrap 
    45from pyndexter import * 
    5 from pyndexter.tests.corpus import * 
     6from pyndexter.tests import corpus 
    67 
    78 
    89class IndexerTestCase(unittest.TestCase): 
    9     def setUp(self): 
    10         self.path = tempfile.mkdtemp() 
     10    def construct_framework(cls): 
     11        path = tempfile.mkdtemp() 
    1112 
    1213        try: 
    13             indexer = self.indexer % os.path.join(self.path, 'indexer.db') 
     14            indexer = cls.indexer % os.path.join(path, 'indexer.db') 
    1415        except AttributeError: 
    15             indexer = '%s://%s' % (self.__class__.__name__[:-8].lower(), os.path.join(self.path, 'indexer.db')) 
     16            indexer = '%s://%s' % (cls.__name__[:-8].lower(), os.path.join(path, 'indexer.db')) 
    1617 
    17         self.framework = Framework(indexer) 
    18         self.framework.add_source('mock://') 
     18        return path, Framework(indexer) 
     19    construct_framework = classmethod(construct_framework) 
     20 
     21    def setUp(self): 
     22        self.path, self.framework = self.construct_framework() 
     23        for doc in corpus.documents.values(): 
     24            self.framework.index(doc) 
    1925 
    2026    def tearDown(self): 
     
    2733 
    2834    def test_indexing(self): 
    29         filtered = [] 
    30  
    31         def filter(framework, context, stream): 
    32             for transition, uri in stream: 
    33                 filtered.append((transition, uri)) 
    34                 yield transition, uri 
    35  
    36         self.framework.update(filter=filter) 
    37         filtered.sort() 
    38         self.assertEquals(filtered, [(1, uri) for uri in mock_uri_list]) 
    39  
    40         filtered = [] 
    41         documents[u'mock://12'].attributes['changed'] += 1 
    42         self.framework.update(filter=filter) 
    43         filtered.sort() 
    44         self.assertEquals(filtered, [(2, URI(u'mock://12'))]) 
    45  
    46     def test_fetch_via_source(self): 
    47         uri = u'mock://1' 
    48         doc = self.framework.fetch(uri) 
    49         self.assertEquals(doc.quality, 1.0) 
    50         self.assertEquals(doc.content, documents[uri].content) 
    51         self.assertRaises(DocumentNotFound, self.framework.fetch, u'file://foo')  
     35        pass 
    5236 
    5337    def test_indexer_iteration(self): 
    54         self.framework.update() 
    55         self.assertEquals(mock_uri_list, sorted([uri for uri in self.framework.indexer])) 
    56  
    57     def test_source_iteration(self): 
    58         self.framework.update() 
    59         self.assertEquals(mock_uri_list, sorted([uri for uri in self.framework.source]))  
     38        self.assertEquals(corpus.mock_uri_list, sorted([uri for uri in self.framework.indexer])) 
    6039 
    6140    # Search tests 
    6241    def test_search_string_simple(self): 
    63         self.framework.update(
    64         self.assertEquals(simple_hits, sorted([hit.uri for hit in self.framework.search(simple_query)])) 
     42        hits = self.framework.search(corpus.simple_query
     43        self.assertEquals(corpus.simple_hits, sorted([hit.uri for hit in hits])) 
    6544 
    6645    def test_search_Query_simple(self): 
    67         self.framework.update(
    68         query = Query(simple_query) 
    69         self.assertEquals(simple_hits, sorted([hit.uri for hit in self.framework.search(query)])) 
     46        query = Query(corpus.simple_query
     47        hits = self.framework.search(query) 
     48        self.assertEquals(corpus.simple_hits, sorted([hit.uri for hit in hits])) 
    7049 
    7150    def test_search_string_and(self): 
    72         self.framework.update(
    73         self.assertEquals(and_hits, sorted([hit.uri for hit in self.framework.search(and_query)])) 
     51        hits = self.framework.search(corpus.and_query
     52        self.assertEquals(corpus.and_hits, sorted([hit.uri for hit in hits])) 
    7453 
    7554    def test_search_string_not(self): 
    76         self.framework.update(
    77         self.assertEquals(not_hits, sorted([hit.uri for hit in self.framework.search(not_query)])) 
     55        hits = self.framework.search(corpus.not_query
     56        self.assertEquals(corpus.not_hits, sorted([hit.uri for hit in hits])) 
    7857 
    7958 
     
    12099def suite(): 
    121100    suite = unittest.TestSuite() 
    122     suite.addTest(unittest.makeSuite(BuiltinTestCase)) 
    123     suite.addTest(unittest.makeSuite(BuiltinCachingTestCase)) 
    124     suite.addTest(unittest.makeSuite(BuiltinCompactTestCase)) 
    125     suite.addTest(unittest.makeSuite(BuiltinCompactCachingTestCase)) 
    126     suite.addTest(unittest.makeSuite(XapianTestCase)) 
    127     suite.addTest(unittest.makeSuite(HypeTestCase)) 
    128     suite.addTest(unittest.makeSuite(HyperestraierTestCase)) 
    129     suite.addTest(unittest.makeSuite(PyndexTestCase)) 
    130     suite.addTest(unittest.makeSuite(LuceneTestCase)) 
    131     suite.addTest(unittest.makeSuite(LupyTestCase)) 
     101    for case in (BuiltinTestCase, BuiltinCachingTestCase, 
     102                 BuiltinCompactTestCase, BuiltinCompactCachingTestCase, 
     103                 XapianTestCase, HypeTestCase, HyperestraierTestCase, 
     104                 PyndexTestCase, LuceneTestCase, LupyTestCase, BuiltinTestCase, 
     105                 BuiltinCachingTestCase): 
     106        use_test = False 
     107        try: 
     108            case.construct_framework() 
     109            use_test = True 
     110        except InvalidModule, e: 
     111            text = wrap(str(e), initial_indent='  ', subsequent_indent='  ') 
     112            print 'SKIP: %s indexer testss' % (case.__name__,) 
     113            print '\n'.join(text) 
     114        except: 
     115            use_test = True 
     116        if use_test: 
     117            suite.addTest(unittest.makeSuite(case)) 
    132118    return suite 
    133119 
  • pyndexter/trunk/pyndexter/indexers/_xapian.py

    r395 r452  
    4141import re 
    4242from pyndexter import * 
    43 xapian = __import__('xapian') 
     43import xapian 
    4444 
    4545 
  • pyndexter/trunk/pyndexter/__init__.py

    r451 r452  
    6161SourceError 
    6262InvalidQuery 
     63FrameworkError 
     64InvalidModule 
    6365 
    6466REMOVED ADDED MODIFIED 
     
    276278      ("camembert cheese")) 
    277279 
     280    >>> Query('one two:three') 
     281    (and 
     282      ("one") 
     283      (two:"three")) 
    278284    """ 
    279285 
     
    800806        uri = URI(uri) 
    801807        try: 
    802             module_name = 'pyndexter.%ss.%s' % (type, uri.scheme) 
     808            module_name = 'pyndexter.%ss._%s' % (type, uri.scheme) 
    803809            module = __import__(module_name, {}, {}, ['']) 
    804810        except ImportError, e: 
  • pyndexter/trunk/pyndexter/tests/framework.py

    r393 r452  
    99import unittest 
    1010from pyndexter import * 
    11 from pyndexter.sources.mock import MockSource 
    12 from pyndexter.indexers.mock import MockIndexer 
     11from pyndexter.indexers._mock import MockIndexer 
    1312from pyndexter.indexers.tests import IndexerTestCase 
    1413 
    1514 
    1615class FrameworkTestCase(IndexerTestCase): 
    17     def setUp(self): 
    18         self.framework = Framework('mock://') 
    19         self.framework.add_source('mock://') 
    20  
    21     def tearDown(self): 
    22         pass 
     16    indexer = 'mock://%s' 
    2317 
    2418    def test_indexer_uri(self): 
    2519        self.assertTrue(isinstance(self.framework.indexer, MockIndexer)) 
    26         self.assertTrue(isinstance(self.framework.source.sources[0], MockSource)) 
    2720 
    2821 
  • pyndexter/trunk/pyndexter/tests/__init__.py

    r393 r452  
    66    import pyndexter, pyndexter.util 
    77    import pyndexter.tests.framework 
    8     import pyndexter.tests.excerpt 
     8    import pyndexter.tests.util 
    99 
    1010    suite = unittest.TestSuite() 
     
    1212    suite.addTest(doctest.DocTestSuite(pyndexter.util)) 
    1313    suite.addTest(pyndexter.tests.framework.suite()) 
    14     suite.addTest(pyndexter.tests.excerpt.suite()) 
     14    suite.addTest(pyndexter.tests.util.suite()) 
    1515    return suite 
    1616 
  • pyndexter/trunk/pyndexter/tests/util.py

    r390 r452  
    11import unittest 
    22from pyndexter import * 
     3from pyndexter.util import excerpt 
    34from pyndexter.tests.corpus import documents, corpus 
    45 
     
    67    def test_excerpt(self): 
    78        terms = Query('lorem ipsum').terms() 
    8         excerpt = Excerpt(documents['mock://3'], terms) 
    9         self.assertEquals(unicode(excerpt), u"""...  Etiam pharetra. Vivamus """  
     9        text = excerpt(documents['mock://3'].content, terms) 
     10        self.assertEquals(unicode(text), u"""...  Etiam pharetra. Vivamus """  
    1011            """diam ipsum, luctus et, luctus nec, auctor vel,\ntellus. """ 
    1112            """Vestibulum lobortis feugiat dolor. Phasellus diam felis, """