コード例 #1
0
    def test_load_if_outdated(self):
        import os
        import time

        # modify the directory. If the time between the last modification
        # was within the filesystems resolution of mtime, we should have a reload

        def modify_dir():
            open(TESTFILE, 'w').close()
            os.unlink(TESTFILE)

        def mtime():
            return os.stat(TESTDIR).st_mtime

        dir = Directory(TESTDIR)
        dir.load()

        # If the modification happens to be in the same second as the
        # last modification, it will result in mtime having the same
        # integer value. So we wait until the resolution is exceeded
        # and mtime differs.
        old_mtime = mtime()
        for i in range(50):
            modify_dir()
            if old_mtime != mtime(): break
            time.sleep(0.1)
        else:
            # fail after 5 seconds of trying
            self.fail(
                "Cannot perform test: mtime of TESTDIR is not being updated.")

        self.assertTrue(dir.load_if_outdated())
コード例 #2
0
    def test_after_content_loaded(self):
        import os
        # Check whether the directory has the correct list of filenames.
        dir = Directory(TESTDIR)
        dir.load_content(schedule=False)

        self.assertTrue(dir.exists)
        self.assertEqual(type(dir.filenames), list)

        # Get the filenames you expect it to have and sort both before
        # comparing. I don't expect any order after only loading the filenames.
        assumed_filenames = os.listdir(TESTDIR)
        assumed_filenames = list(
            map(lambda str: os.path.join(TESTDIR, str), assumed_filenames))
        assumed_filenames.sort()
        dir.filenames.sort()

        self.assertTrue(len(dir) > 0)
        self.assertEqual(dir.filenames, assumed_filenames)

        # build a file object for each file in the list assumed_filenames
        # and find exactly one equivalent in dir.files
        for name in assumed_filenames:
            f = File(name)
            f.load()
            for dirfile in dir.files:
                if (f.path == dirfile.path and f.stat == dirfile.stat):
                    break
            else:
                self.fail("couldn't find file {0}".format(name))
コード例 #3
0
    def test_nonexistant_dir(self):
        dir = Directory(NONEXISTANT_DIR)
        dir.load_content(schedule=False)

        self.assertTrue(dir.content_loaded)
        self.assertFalse(dir.exists)
        self.assertFalse(dir.accessible)
        self.assertEqual(dir.filenames, None)
        if not sys.flags.optimize:  # asserts are ignored with python -O
            self.assertRaises(AssertionError, len, dir)
コード例 #4
0
    def test_initial_condition(self):
        # Check for the expected initial condition
        dir = Directory(TESTDIR)

        self.assertEqual(dir.path, TESTDIR)
        self.assertFalse(dir.content_loaded)
        self.assertEqual(dir.filenames, None)
        self.assertEqual(dir.files, None)
        if not sys.flags.optimize:  # asserts are ignored with python -O
            self.assertRaises(AssertionError, len, dir)