Beispiel #1
0
 def setUp(self):
     self.fi = FuzzyIndex(TEST_ROOT, ignore_dirs=IGNORE_DIRS, ignore_files=IGNORE_FILES)
Beispiel #2
0
class TestFuzzyIndex(unittest.TestCase):

    @classmethod
    def setUpClass(cls):
        """ setup the test directory. """
        setup_file_system(FILE_SYSTEM)

    @classmethod
    def tearDownClass(cls):
        cleanup_file_system(TEST_ROOT)
        

    def setUp(self):
        self.fi = FuzzyIndex(TEST_ROOT, ignore_dirs=IGNORE_DIRS, ignore_files=IGNORE_FILES)

    def test_init(self):
        self.assertEqual(len(self.fi.files), 5)

    def test_append(self):
        self.fi.append(FAKE_FILE)
        self.assertEqual(self.fi.files[-1].path, FAKE_FILE)

    def test_generate_paths(self):
        paths = list(self.fi.generate_paths(TEST_ROOT))
        paths.sort()
        FILE_SYSTEM.sort()
        self.assertEqual(paths, FILE_SYSTEM)

    def test_generate_paths_filter_dirs(self):
        p = list(self.fi.generate_paths(TEST_ROOT, ignore_dirs=['dir1', 'dir2']))
        self.assertEqual(p, ['tmp/dir0_file1.ext', 'tmp/.git/nomatch.ext'])

    def test_generate_paths_filter_files(self):
        p = list(self.fi.generate_paths(TEST_ROOT, ignore_files=[r'\.pyc$', r'\.py$', r'\.ext$']))
        self.assertEqual(p, [])

    def test_generate_paths_focus(self):
        paths = list(self.fi.generate_paths(TEST_ROOT, focus_files=[FOCUS_FILES[0].lstrip(TEST_ROOT).lstrip(PATH_SEP)]))
        paths.sort()
        FOCUS_FILES.sort()
        self.assertEqual(len(paths), 1)
        self.assertEqual(paths, FOCUS_FILES)

    def test_generate_patterns(self):
        patts = [x.pattern for x in self.fi.generate_patterns('ab')]
        self.assertEqual(len(patts), MATCH_LEVELS)
        patterns = ['^(?P<head>.*?)(?P<body>a.{{,{0}}}?b)(?P<tail>.*?)$'.format(i) for i in range(MATCH_LEVELS)]
        self.assertEqual(patts, patterns)

    def test_generate_patterns_too_long(self):
        patts = [x.pattern for x in self.fi.generate_patterns('omg_this_is_a_long_pattern' + '!' * 100)]
        self.assertEqual(len(patts), MATCH_LEVELS)

    def test_match_none(self):
        m = self.fi.match(NO_MATCH)
        self.assertEqual(m, None)

    def test_match(self):
        m = self.fi.match('d1_f1')
        self.assertEqual(m.path, 'tmp/dir1/dir1_file1.ext')

    def test_match_include_dir(self):
        m = self.fi.match('/file1')
        self.assertEqual(m.path, 'tmp/dir0_file1.ext')

    def test_match_list(self):
        m = self.fi.match('dir1_', list_files=True)
        self.assertEqual(type(m), list)
        self.assertEqual(len(m), 2)
        L1 = [x.path for x in m]
        L1.sort()
        L2 = ['tmp/dir1/dir1_file1.ext',
              'tmp/dir1/dir1_file2.ext']
        self.assertEqual(L1, L2)

    def test_match_none_list(self):
        m = self.fi.match(NO_MATCH, list_files=True)
        self.assertEqual(m, [])

    def test_reset(self):
        self.assertFalse(True in [bool(x) for x in self.fi.files])
        self.fi.match('d1_f1')
        self.assertTrue(True in [bool(x) for x in self.fi.files])
        self.fi.reset()
        self.assertFalse(True in [bool(x) for x in self.fi.files])