Esempio n. 1
0
    def testVersion(self):
        self.assertRaises(ParseError, VersionFromString, "0.50.1")

        verStr = "/foo.com@spc:bar/1.000:1.2-3/bang.com@spc:branch/10.000:2.4-5"
        verStr2 = "/foo.com@spc:bar/1.000:1.2-3/bang.com@spc:branch/15.000:2.4-6"
        v = ThawVersion(verStr)
        assert v.freeze() == verStr
        assert v.asString(VersionFromString("/foo.com@spc:bar")) == "1.2-3/bang.com@spc:branch/2.4-5"
        assert v.timeStamps() == [1, 10]
        v = v.copy()
        v.incrementSourceCount()
        assert v.asString() == ThawVersion(verStr2).asString()
        assert v.getHost() == "bang.com"

        # test that cPickle works on a Version object (the changeset cache
        # database pickles versions)
        vpickled = cPickle.dumps(v)
        vunpickled = cPickle.loads(vpickled)
        assert vunpickled.asString() == v.asString()

        v2 = VersionFromString("/foo.com@spc:bar/1.2-3/bang.com@spc:branch/2.4-5", timeStamps=[1.000, 10.000])
        assert v2.freeze() == verStr
        assert [x.asString() for x in v2.iterLabels()] == ["foo.com@spc:bar", "bang.com@spc:branch"]

        last = v.trailingRevision()
        assert last.asString() == "2.4-6"
        assert not v.onLocalLabel()
        assert not v.isInLocalNamespace()
        assert not v.onEmergeLabel()
        assert not v.onLocalCookLabel()
        assert v2.getHost() == "bang.com"

        assert v.trailingLabel() == Label("bang.com@spc:branch")

        branch = v.branch()
        assert branch.getHost() == "bang.com"
        strrep = branch.asString()
        assert strrep == "/foo.com@spc:bar/1.2-3/bang.com@spc:branch"
        branch2 = VersionFromString(branch.asString())
        assert branch == branch2

        frozen = branch.freeze()
        branch2 = ThawVersion(frozen)
        assert branch2 == branch

        newVer = branch2.createVersion(Revision("1.1-2"))
        assert newVer.asString() == "/foo.com@spc:bar/1.2-3/bang.com@spc:branch/1.1-2"
        assert not newVer.onLocalLabel()
        assert not newVer.isInLocalNamespace()
        assert not newVer.onEmergeLabel()
        assert not newVer.onLocalCookLabel()
        assert not newVer.isOnLocalHost()

        assert newVer.canonicalVersion() == newVer
        assert v.hasParentVersion()
        parent = v.parentVersion()
        assert not parent.hasParentVersion()
        assert parent.asString() == "/foo.com@spc:bar/1.2-3"

        # check emerge label
        emerge = parent.createBranch(EmergeLabel(), withVerRel=1)
        assert emerge.getHost() == "local"
        assert emerge.asString() == "/foo.com@spc:bar/1.2-3/local@local:EMERGE/3"
        assert not emerge.onLocalLabel()
        assert emerge.onEmergeLabel()
        assert not emerge.onRollbackLabel()
        assert not emerge.onLocalCookLabel()
        assert emerge.isOnLocalHost()
        assert emerge.isInLocalNamespace()

        # check local cook label
        cook = parent.createBranch(CookLabel(), withVerRel=1)
        assert cook.asString() == "/foo.com@spc:bar/1.2-3/local@local:COOK/3"
        assert not cook.onLocalLabel()
        assert not cook.onEmergeLabel()
        assert not cook.onRollbackLabel()
        assert cook.onLocalCookLabel()
        assert cook.isOnLocalHost()
        assert cook.isInLocalNamespace()

        # check local rollback label
        branch2 = parent.createBranch(RollbackLabel(), withVerRel=1)
        assert branch2.asString() == "/foo.com@spc:bar/1.2-3/local@local:ROLLBACK/3"
        assert not branch2.onLocalLabel()
        assert not branch2.onEmergeLabel()
        assert branch2.onRollbackLabel()
        assert not branch2.onLocalCookLabel()
        assert branch2.isOnLocalHost()
        assert branch2.isInLocalNamespace()

        # check local branch label
        branch2 = parent.createBranch(LocalLabel(), withVerRel=1)
        assert branch2.asString() == "/foo.com@spc:bar/1.2-3/local@local:LOCAL/3"
        assert branch2.onLocalLabel()
        assert not branch2.onEmergeLabel()
        assert not branch2.onRollbackLabel()
        assert not branch2.onLocalCookLabel()
        assert branch2.isOnLocalHost()
        assert branch2.isInLocalNamespace()

        branch3 = VersionFromString(branch2.asString())
        assert branch2 == branch3

        branch2 = branch2.branch()
        assert branch2.asString() == "/foo.com@spc:bar/1.2-3/local@local:LOCAL"

        parent = v.parentVersion()
        assert parent.asString() == "/foo.com@spc:bar/1.2-3"
        branch2 = parent.createBranch(LocalLabel())
        assert branch2.asString() == "/foo.com@spc:bar/1.2-3/local@local:LOCAL"

        shadow = parent.branch().createShadow(Label("foo.com@spc:shadow"))
        assert shadow.asString() == "/foo.com@spc:bar//shadow"
        assert shadow.getHost() == "foo.com"

        branch = VersionFromString("/foo.com@spc:bar")
        v = VersionFromString("1.2-3", branch)
        assert v.asString() == "/foo.com@spc:bar/1.2-3"

        # test getBinaryVersion and getSourceVersion
        v = ThawVersion(verStr)
        b = v.getBinaryVersion()
        assert b.asString() == "/foo.com@spc:bar/1.2-3-0/bang.com@spc:branch/2.4-5"

        # make sure slots are working
        v = ThawVersion("/foo.com@spec:bar/10:1.2-3")
        self.assertRaises(AttributeError, v.__setattr__, "foo", 1)
        v = ThawVersion(v.freeze())
        self.assertRaises(AttributeError, v.__setattr__, "foo", 1)

        v = VersionFromString("/localhost@rpl:linux/1.0-1-0/" "local@local:EMERGE/1/COOK/2")
        assert VersionFromString(v.asString()) == v
Esempio n. 2
0
    def testVersion(self):
        self.assertRaises(ParseError, VersionFromString, '0.50.1')

        verStr = "/foo.com@spc:bar/1.000:1.2-3/bang.com@spc:branch/10.000:2.4-5"
        verStr2 = "/foo.com@spc:bar/1.000:1.2-3/bang.com@spc:branch/15.000:2.4-6"
        v = ThawVersion(verStr)
        assert (v.freeze() == verStr)
        assert (v.asString(VersionFromString("/foo.com@spc:bar")) ==
                "1.2-3/bang.com@spc:branch/2.4-5")
        assert (v.timeStamps() == [1, 10])
        v = v.copy()
        v.incrementSourceCount()
        assert (v.asString() == ThawVersion(verStr2).asString())
        assert (v.getHost() == 'bang.com')

        # test that cPickle works on a Version object (the changeset cache
        # database pickles versions)
        vpickled = cPickle.dumps(v)
        vunpickled = cPickle.loads(vpickled)
        assert (vunpickled.asString() == v.asString())

        v2 = VersionFromString(
            "/foo.com@spc:bar/1.2-3/bang.com@spc:branch/2.4-5",
            timeStamps=[1.000, 10.000])
        assert (v2.freeze() == verStr)
        assert ([x.asString() for x in v2.iterLabels()
                 ] == ['foo.com@spc:bar', 'bang.com@spc:branch'])

        last = v.trailingRevision()
        assert (last.asString() == "2.4-6")
        assert (not v.onLocalLabel())
        assert (not v.isInLocalNamespace())
        assert (not v.onEmergeLabel())
        assert (not v.onLocalCookLabel())
        assert (v2.getHost() == 'bang.com')

        assert (v.trailingLabel() == Label('bang.com@spc:branch'))

        branch = v.branch()
        assert (branch.getHost() == 'bang.com')
        strrep = branch.asString()
        assert (strrep == "/foo.com@spc:bar/1.2-3/bang.com@spc:branch")
        branch2 = VersionFromString(branch.asString())
        assert (branch == branch2)

        frozen = branch.freeze()
        branch2 = ThawVersion(frozen)
        assert (branch2 == branch)

        newVer = branch2.createVersion(Revision("1.1-2"))
        assert (newVer.asString() ==
                "/foo.com@spc:bar/1.2-3/bang.com@spc:branch/1.1-2")
        assert (not newVer.onLocalLabel())
        assert (not newVer.isInLocalNamespace())
        assert (not newVer.onEmergeLabel())
        assert (not newVer.onLocalCookLabel())
        assert (not newVer.isOnLocalHost())

        assert (newVer.canonicalVersion() == newVer)
        assert (v.hasParentVersion())
        parent = v.parentVersion()
        assert (not parent.hasParentVersion())
        assert (parent.asString() == "/foo.com@spc:bar/1.2-3")

        # check emerge label
        emerge = parent.createBranch(EmergeLabel(), withVerRel=1)
        assert (emerge.getHost() == 'local')
        assert (
            emerge.asString() == "/foo.com@spc:bar/1.2-3/local@local:EMERGE/3")
        assert (not emerge.onLocalLabel())
        assert (emerge.onEmergeLabel())
        assert (not emerge.onRollbackLabel())
        assert (not emerge.onLocalCookLabel())
        assert (emerge.isOnLocalHost())
        assert (emerge.isInLocalNamespace())

        # check local cook label
        cook = parent.createBranch(CookLabel(), withVerRel=1)
        assert (cook.asString() == "/foo.com@spc:bar/1.2-3/local@local:COOK/3")
        assert (not cook.onLocalLabel())
        assert (not cook.onEmergeLabel())
        assert (not cook.onRollbackLabel())
        assert (cook.onLocalCookLabel())
        assert (cook.isOnLocalHost())
        assert (cook.isInLocalNamespace())

        # check local rollback label
        branch2 = parent.createBranch(RollbackLabel(), withVerRel=1)
        assert (branch2.asString() ==
                "/foo.com@spc:bar/1.2-3/local@local:ROLLBACK/3")
        assert (not branch2.onLocalLabel())
        assert (not branch2.onEmergeLabel())
        assert (branch2.onRollbackLabel())
        assert (not branch2.onLocalCookLabel())
        assert (branch2.isOnLocalHost())
        assert (branch2.isInLocalNamespace())

        # check local branch label
        branch2 = parent.createBranch(LocalLabel(), withVerRel=1)
        assert (
            branch2.asString() == "/foo.com@spc:bar/1.2-3/local@local:LOCAL/3")
        assert (branch2.onLocalLabel())
        assert (not branch2.onEmergeLabel())
        assert (not branch2.onRollbackLabel())
        assert (not branch2.onLocalCookLabel())
        assert (branch2.isOnLocalHost())
        assert (branch2.isInLocalNamespace())

        branch3 = VersionFromString(branch2.asString())
        assert (branch2 == branch3)

        branch2 = branch2.branch()
        assert (
            branch2.asString() == "/foo.com@spc:bar/1.2-3/local@local:LOCAL")

        parent = v.parentVersion()
        assert (parent.asString() == "/foo.com@spc:bar/1.2-3")
        branch2 = parent.createBranch(LocalLabel())
        assert (
            branch2.asString() == "/foo.com@spc:bar/1.2-3/local@local:LOCAL")

        shadow = parent.branch().createShadow(Label('foo.com@spc:shadow'))
        assert (shadow.asString() == "/foo.com@spc:bar//shadow")
        assert (shadow.getHost() == 'foo.com')

        branch = VersionFromString("/foo.com@spc:bar")
        v = VersionFromString("1.2-3", branch)
        assert (v.asString() == "/foo.com@spc:bar/1.2-3")

        # test getBinaryVersion and getSourceVersion
        v = ThawVersion(verStr)
        b = v.getBinaryVersion()
        assert (b.asString() ==
                "/foo.com@spc:bar/1.2-3-0/bang.com@spc:branch/2.4-5")

        # make sure slots are working
        v = ThawVersion("/foo.com@spec:bar/10:1.2-3")
        self.assertRaises(AttributeError, v.__setattr__, "foo", 1)
        v = ThawVersion(v.freeze())
        self.assertRaises(AttributeError, v.__setattr__, "foo", 1)

        v = VersionFromString('/localhost@rpl:linux/1.0-1-0/'
                              'local@local:EMERGE/1/COOK/2')
        assert (VersionFromString(v.asString()) == v)