def testVersionCache(self): versions.thawedVersionCache.clear() assert not versions.thawedVersionCache # test the thawed version cache verStr = "/foo.com@spc:bar/1:1.2-3/bang.com@spc:branch/2:2.4-5" v1 = ThawVersion(verStr) v2 = ThawVersion(verStr) assert id(v1) == id(v2) assert len(versions.thawedVersionCache) == 1 del v1 assert len(versions.thawedVersionCache) == 1 del v2 assert not versions.thawedVersionCache versions.stringVersionCache.clear() v1 = VersionFromString("/foo.com@spc:bar/1.2-3") v2 = VersionFromString("/foo.com@spc:bar/1.2-3", timeStamps=[1.000]) v3 = VersionFromString("/foo.com@spc:bar/1.2-3") v4 = VersionFromString("/foo.com@spc:bar/1.2-3") assert v1.timeStamps() == [0] assert v2.timeStamps() == [1] assert id(v1) != id(v2) assert id(v2) != id(v3) assert id(v1) == id(v3) assert id(v3) == id(v4)
def testVersionCache(self): versions.thawedVersionCache.clear() assert (not versions.thawedVersionCache) # test the thawed version cache verStr = "/foo.com@spc:bar/1:1.2-3/bang.com@spc:branch/2:2.4-5" v1 = ThawVersion(verStr) v2 = ThawVersion(verStr) assert (id(v1) == id(v2)) assert (len(versions.thawedVersionCache) == 1) del v1 assert (len(versions.thawedVersionCache) == 1) del v2 assert (not versions.thawedVersionCache) versions.stringVersionCache.clear() v1 = VersionFromString("/foo.com@spc:bar/1.2-3") v2 = VersionFromString("/foo.com@spc:bar/1.2-3", timeStamps=[1.000]) v3 = VersionFromString("/foo.com@spc:bar/1.2-3") v4 = VersionFromString("/foo.com@spc:bar/1.2-3") assert (v1.timeStamps() == [0]) assert (v2.timeStamps() == [1]) assert (id(v1) != id(v2)) assert (id(v2) != id(v3)) assert (id(v1) == id(v3)) assert (id(v3) == id(v4))
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
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)