def index_one_directory(self, dirpath, dirnames, filenames):
        current_time = time.time()
        if self.full_stats_every and current_time > self.next_full_stats:
            self.next_full_stats = current_time + self.full_stats_every
            runtime = time.time()-self.start_time
            self.show_full_stats("Stats after %s %s" %
                                 (format_time_delta(runtime), dirpath))

        if current_time > self.next_commit:
            self.next_commit = current_time + self.commit_every
            self.db.commit()

        self.dirs_visited += 1
        dirnames.sort()
        filenames.sort()
        self.skipped_files += remove_excluded_names(
            filenames, self.compiled_file_excludes)
        self.skipped_dirs += remove_excluded_names(
            dirnames, self.compiled_dir_excludes)
        self.progress("[")

        self.db.begin()

        dirid = self.db.get_or_insert_dir(abspath(dirpath))

        for fileobj in self.db.file.find(dirid=dirid):
            if fileobj.name not in filenames:
                self.progress("d")
                self.db.file.delete(fileobj)
                self.deleted_files += 1

        start = time.time()
        for filename in filenames:
            if start and time.time() > start+self.dir_warn_threshold:
                self.progress(" %s " % dirpath)
                start = None

            self.index_one_file(dirpath, filename, dirid)
        self.progress("]")
 def __init__(self, db, roots):
     self.db = db
     self.roots = [abspath(x) for x in roots]
 def test_abspath(self):
     self.assertTrue(abspath(".").startswith("/"))