1
0
mirror of https://github.com/openSUSE/osc.git synced 2024-12-26 18:06:13 +01:00
github.com_openSUSE_osc/tests/test__private_package.py

142 lines
4.8 KiB
Python

import os
import unittest
from osc._private.package import ApiPackage
from osc._private.package import LocalPackage
from osc._private.package import PackageBase
from .common import GET
from .common import OscTestCase
FIXTURES_DIR = os.path.join(os.path.dirname(__file__), "fixtures", "packages")
class PackageBaseMock(PackageBase):
def _get_directory_node(self):
pass
def _load_from_directory_node(self, directory_node):
pass
class TestPackageBase(unittest.TestCase):
def setUp(self):
self.p1 = PackageBaseMock("http://urlA", "projA", "pkgA")
def test_str(self):
self.assertEqual(str(self.p1), "projA/pkgA")
def test_repr(self):
self.assertTrue(repr(self.p1).endswith("(projA/pkgA)"))
def test_eq(self):
# the same
p2 = PackageBaseMock(self.p1.apiurl, self.p1.project, self.p1.name)
self.assertEqual(self.p1, p2)
# package name differs
p2 = PackageBaseMock(self.p1.apiurl, self.p1.project, "pkgB")
self.assertNotEqual(self.p1, p2)
# project name differs
p2 = PackageBaseMock(self.p1.apiurl, "projB", self.p1.name)
self.assertNotEqual(self.p1, p2)
# baseurl differs
p2 = PackageBaseMock("http://urlB", self.p1.project, self.p1.name)
self.assertNotEqual(self.p1, p2)
def test_lt(self):
# the same
p2 = PackageBaseMock(self.p1.apiurl, self.p1.project, self.p1.name)
self.assertFalse(self.p1 < p2)
# package name differs
p2 = PackageBaseMock(self.p1.apiurl, self.p1.project, "pkgB")
self.assertTrue(self.p1 < p2)
# project name differs
p2 = PackageBaseMock(self.p1.apiurl, "projB", self.p1.name)
self.assertTrue(self.p1 < p2)
# baseurl differs
p2 = PackageBaseMock("http://urlB", self.p1.project, self.p1.name)
self.assertTrue(self.p1 < p2)
def test_hash(self):
p2 = PackageBaseMock(self.p1.apiurl, self.p1.project, self.p1.name)
self.assertEqual(hash(self.p1), hash(p2))
packages = set()
packages.add(self.p1)
# the second instance appears to be there because it has the same hash
# it is ok, because we consider such packages equal
self.assertIn(p2, packages)
class TestLocalPackage(OscTestCase):
def _get_fixtures_dir(self):
return FIXTURES_DIR
def test_load(self):
path = os.path.join(self.tmpdir, "osctest", "openSUSE:Tools", "osc")
p = LocalPackage(path)
self.assertEqual(p.name, "osc")
self.assertEqual(p.project, "openSUSE:Tools")
self.assertEqual(p.apiurl, "http://localhost")
self.assertEqual(p.rev, "373")
self.assertEqual(p.vrev, "339")
self.assertEqual(p.srcmd5, "30ccce6c3a1a4322e79c2935a52af18b")
self.assertEqual(p.linkinfo.project, "openSUSE:Factory")
self.assertEqual(p.linkinfo.package, "osc")
self.assertEqual(p.linkinfo.srcmd5, "1ccbcd1b0b531a37ad75b34b5a1e2e3e")
self.assertEqual(p.linkinfo.baserev, "2c3ae65909d69e0f63113ccfe0e5f3f8")
self.assertEqual(p.linkinfo.xsrcmd5, "6a31b956f9431b0644ad6cf8e845c4e5")
self.assertEqual(p.linkinfo.lsrcmd5, "30ccce6c3a1a4322e79c2935a52af18b")
self.assertEqual(len(p.files), 3)
f = p.files[0]
self.assertEqual(f.name, "osc-0.182.0.tar.gz")
self.assertEqual(f.md5, "87f040c76f3da86fd7218c972b9df1dc")
self.assertEqual(f.size, 381596)
self.assertEqual(f.mtime, 1662638726)
class TestApiPackage(OscTestCase):
def _get_fixtures_dir(self):
return FIXTURES_DIR
@GET("http://localhost/source/openSUSE:Tools/osc", file="osctest/openSUSE:Tools/osc/.osc/_files")
def test_load(self):
p = ApiPackage("http://localhost", "openSUSE:Tools", "osc")
self.assertEqual(p.name, "osc")
self.assertEqual(p.project, "openSUSE:Tools")
self.assertEqual(p.apiurl, "http://localhost")
self.assertEqual(p.rev, "373")
self.assertEqual(p.vrev, "339")
self.assertEqual(p.srcmd5, "30ccce6c3a1a4322e79c2935a52af18b")
self.assertEqual(p.linkinfo.project, "openSUSE:Factory")
self.assertEqual(p.linkinfo.package, "osc")
self.assertEqual(p.linkinfo.srcmd5, "1ccbcd1b0b531a37ad75b34b5a1e2e3e")
self.assertEqual(p.linkinfo.baserev, "2c3ae65909d69e0f63113ccfe0e5f3f8")
self.assertEqual(p.linkinfo.xsrcmd5, "6a31b956f9431b0644ad6cf8e845c4e5")
self.assertEqual(p.linkinfo.lsrcmd5, "30ccce6c3a1a4322e79c2935a52af18b")
self.assertEqual(len(p.files), 3)
f = p.files[0]
self.assertEqual(f.name, "osc-0.182.0.tar.gz")
self.assertEqual(f.md5, "87f040c76f3da86fd7218c972b9df1dc")
self.assertEqual(f.size, 381596)
self.assertEqual(f.mtime, 1662638726)
if __name__ == "__main__":
unittest.main()