コード例 #1
0
 def testExtend(self):
     t = mock_transform()
     vals = [mock_value() for i in xrange(5)]
     exp = tuple(v.transformed for v in vals)
     l = util.TransformingList(t)
     l.extend(vals)
     self.assertEqual(exp, tuple(l))
     l = util.TransformingList(t)
     v = mock_value()
     l.append(v)
     l.extend(vals)
     self.assertEqual((v.transformed, ) + exp, tuple(l))
コード例 #2
0
    def testInsertPop(self):
        t = mock_transform()
        a, b, c = (mock_value() for i in xrange(3))
        l = util.TransformingList(t)
        l.append(a)
        l.append(b)
        l.insert(1, c)
        self.assertEqual((a.transformed, c.transformed, b.transformed),
                         tuple(l))

        r = l.pop(0)
        self.assertEqual((c.transformed, b.transformed), tuple(l))
        self.assertEqual(a.transformed, r)
コード例 #3
0
 def testAppendBasics(self):
     t = mock_transform()
     l = util.TransformingList(t)
     self.assertEqual(0, len(l))
     self.assertEqual((), tuple(l))
     a = mock_value()
     b = mock_value()
     l.append(a)
     self.assertEqual(1, len(l))
     self.assertEqual((a.transformed, ), tuple(l))
     l.append(b)
     self.assertEqual(2, len(l))
     self.assertEqual((a.transformed, b.transformed), tuple(l))
コード例 #4
0
    def testContainment(self):
        t = mock_transform()
        vals = [mock_value() for i in xrange(5)]
        l = util.TransformingList(t)
        member = lambda v: v in l
        self.assertFalse(member(vals[0]))
        l.extend(vals[0:4])
        self.assertTrue(member(vals[0]))
        self.assertFalse(member(vals[4]))

        l.append(vals[2])
        self.assertEqual(0, l.count(vals[4]))
        self.assertEqual(1, l.count(vals[1]))
        self.assertEqual(2, l.count(vals[2]))
コード例 #5
0
 def testAccessBasics(self):
     t = mock_transform()
     l = util.TransformingList(t)
     vals = [mock_value() for i in xrange(5)]
     l[0:3] = vals[0:3]
     self.assertEqual(3, len(l))
     self.assertEqual(tuple(v.transformed for v in vals[0:3]), tuple(l))
     self.assertEqual(2, len(l[1:3]))
     self.assertEqual((vals[1].transformed, vals[2].transformed),
                      tuple(l[1:3]))
     l[1] = vals[3]
     l[0] = vals[4]
     self.assertEqual(3, len(l))
     self.assertEqual((vals[4].transformed, vals[3].transformed),
                      (l[0], l[1]))
     del l[0:2]
     self.assertEqual(1, len(l))
     self.assertEqual(vals[2].transformed, l[0])
     del l[0]
     self.assertEqual(0, len(l))
コード例 #6
0
        current = parent

    return current, os.path.join(current, __BOOTSTRAP_BASENAME)


def normalize_path(path):
    """Returns path with '~' expanded and relative paths made absolute based on ROOT_PATH."""
    return os.path.realpath(os.path.join(ROOT_PATH, os.path.expanduser(path)))


def parse_bootstrap_file():
    """Compiles and evals the BOOTSTRAP_FILE with controlled local scope.

    The BOOTSTRAP_FILE will be evaluated with the following local
    bindings:
        bootstrap: refers to mandrel.bootstrap
        config: refers to mandrel.config

    This makes it easy for the BOOTSTRAP_FILE to configure mandrel settings
    without performing further imports.
    """
    with open(BOOTSTRAP_FILE, 'rU') as source:
        code = compile(source.read(), BOOTSTRAP_FILE, 'exec')
        eval(code, {'bootstrap': sys.modules[__name__], 'config': config})


(ROOT_PATH, BOOTSTRAP_FILE) = _find_bootstrap_base()
SEARCH_PATHS = util.TransformingList(normalize_path)
SEARCH_PATHS.extend(__DEFAULT_SEARCH_PATHS)
parse_bootstrap_file()