launchpad-reviewers team mailing list archive
-
launchpad-reviewers team
-
Mailing list archive
-
Message #31212
[Merge] ~tushar5526/launchpad-buildd:enable-support-for-riscv-support-via-noble into launchpad-buildd:master
Tushar Gupta has proposed merging ~tushar5526/launchpad-buildd:enable-support-for-riscv-support-via-noble into launchpad-buildd:master.
Commit message:
feat: added support for noble
- python-txfixtures and associated tests are removed.
- migration from imp to importlib after deprecation in 3.12(noble)
- migration from deferredruntests module to twistedsupport in testtools
Requested reviews:
Launchpad code reviewers (launchpad-reviewers)
For more details, see:
https://code.launchpad.net/~tushar5526/launchpad-buildd/+git/launchpad-buildd/+merge/469735
--
Your team Launchpad code reviewers is requested to review the proposed merge of ~tushar5526/launchpad-buildd:enable-support-for-riscv-support-via-noble into launchpad-buildd:master.
diff --git a/debian/control b/debian/control
index e4b5dc3..0cfa9aa 100644
--- a/debian/control
+++ b/debian/control
@@ -26,7 +26,6 @@ Build-Depends: apt-utils,
python3-systemfixtures,
python3-testtools,
python3-twisted (>= 16.4.0),
- python3-txfixtures,
python3-yaml,
# We don't use the bits of pylxd that require this at run-time, but at
# build-time pybuild fails if it's not available.
diff --git a/lpbuildd/tests/harness.py b/lpbuildd/tests/harness.py
index 2c7761a..28ccf80 100644
--- a/lpbuildd/tests/harness.py
+++ b/lpbuildd/tests/harness.py
@@ -14,10 +14,6 @@ import os
import shutil
import tempfile
import unittest
-from textwrap import dedent
-
-from fixtures import EnvironmentVariable, TempDir
-from txfixtures.tachandler import TacTestFixture
from lpbuildd.builder import Builder
@@ -60,108 +56,3 @@ class BuilddTestCase(unittest.TestCase):
f = open(self.builder.cachePath("buildlog"), "w")
f.write("x" * size)
f.close()
-
-
-class BuilddTestSetup(TacTestFixture):
- r"""Setup Builder for use by functional tests
-
- >>> fixture = BuilddTestSetup()
- >>> fixture.setUp()
-
- Make sure the server is running
-
- >>> try:
- ... from xmlrpc.client import ServerProxy
- ... except ImportError:
- ... from xmlrpclib import ServerProxy
- >>> s = ServerProxy('http://localhost:8321/rpc/')
- >>> s.echo('Hello World')
- ['Hello World']
- >>> fixture.tearDown()
-
- Again for luck !
-
- >>> fixture.setUp()
- >>> s = ServerProxy('http://localhost:8321/rpc/')
-
- >>> s.echo('Hello World')
- ['Hello World']
-
- >>> info = s.info()
- >>> len(info)
- 3
- >>> print(info[:2])
- ['1.0', 'i386']
-
- >>> for buildtype in sorted(info[2]):
- ... print(buildtype)
- binarypackage
- debian
- sourcepackagerecipe
- translation-templates
-
- >>> s.status()["builder_status"]
- 'BuilderStatus.IDLE'
-
- >>> fixture.tearDown()
- """
-
- _root = None
-
- def setUp(self, **kwargs):
- # TacTestFixture defaults to /usr/bin/twistd, but on Ubuntu the
- # Python 3 version of this is /usr/bin/twistd3, so that makes for a
- # better default.
- if kwargs.get("twistd_script") is None:
- kwargs["twistd_script"] = "/usr/bin/twistd3"
- super().setUp(**kwargs)
-
- def setUpRoot(self):
- filecache = os.path.join(self.root, "filecache")
- os.mkdir(filecache)
- self.useFixture(EnvironmentVariable("HOME", self.root))
- test_conffile = os.path.join(self.root, "buildd.conf")
- with open(test_conffile, "w") as f:
- f.write(
- dedent(
- f"""\
- [builder]
- architecturetag = i386
- filecache = {filecache}
- bindhost = localhost
- bindport = {self.daemon_port}
- sharepath = {self.root}
- """
- )
- )
- self.useFixture(EnvironmentVariable("BUILDD_CONFIG", test_conffile))
- # XXX cprov 2005-05-30:
- # When we are about running it seriously we need :
- # * install sbuild package
- # * to copy the scripts for sbuild
-
- @property
- def root(self):
- if self._root is None:
- self._root = self.useFixture(TempDir()).path
- return self._root
-
- @property
- def tacfile(self):
- return os.path.abspath(
- os.path.join(
- os.path.dirname(__file__), os.path.pardir, "buildd.tac"
- )
- )
-
- @property
- def pidfile(self):
- return os.path.join(self.root, "buildd.pid")
-
- @property
- def logfile(self):
- return "/var/tmp/buildd.log"
-
- @property
- def daemon_port(self):
- return 8321
diff --git a/lpbuildd/tests/test_binarypackage.py b/lpbuildd/tests/test_binarypackage.py
index 8c41f8b..77029d3 100644
--- a/lpbuildd/tests/test_binarypackage.py
+++ b/lpbuildd/tests/test_binarypackage.py
@@ -12,7 +12,6 @@ from textwrap import dedent
from debian.deb822 import PkgRelation
from fixtures import MonkeyPatch
from testtools import TestCase
-from testtools.deferredruntest import AsynchronousDeferredRunTest
from testtools.matchers import (
Contains,
ContainsDict,
@@ -21,6 +20,7 @@ from testtools.matchers import (
MatchesListwise,
Not,
)
+from testtools.twistedsupport import AsynchronousDeferredRunTest
from twisted.internet import defer
from twisted.internet.task import Clock
diff --git a/lpbuildd/tests/test_buildd.py b/lpbuildd/tests/test_buildd.py
index 569a901..7855cec 100644
--- a/lpbuildd/tests/test_buildd.py
+++ b/lpbuildd/tests/test_buildd.py
@@ -16,19 +16,10 @@ __all__ = ["LaunchpadBuilddTests"]
import difflib
import os
import shutil
-import sys
import tempfile
-import unittest
from urllib.request import HTTPBasicAuthHandler
-from xmlrpc.client import ServerProxy
-import twisted
-
-from lpbuildd.tests.harness import (
- BuilddTestCase,
- BuilddTestSetup,
- MockBuildManager,
-)
+from lpbuildd.tests.harness import BuilddTestCase, MockBuildManager
def read_file(path):
@@ -223,33 +214,3 @@ class LaunchpadBuilddTests(BuilddTestCase):
self.builder.addWaitingFile(path)
self.builder.clean()
self.assertEqual([], os.listdir(self.builder._cachepath))
-
-
-class XMLRPCBuilderTests(unittest.TestCase):
- def setUp(self):
- super().setUp()
- self.builder = BuilddTestSetup()
- self.builder.setUp()
- self.server = ServerProxy("http://localhost:8321/rpc/")
-
- def tearDown(self):
- self.builder.tearDown()
- super().tearDown()
-
- @unittest.skipIf(
- sys.version >= "3"
- and (twisted.version.major, twisted.version.minor) < (16, 4),
- "twistd fails to daemonise on Python 3 before Twisted 16.4.0",
- )
- def test_build_unknown_builder(self):
- # If a bogus builder name is passed into build, it returns an
- # appropriate error message and not just 'None'.
- buildername = "nonexistentbuilder"
- status, info = self.server.build("foo", buildername, "sha1", {}, {})
-
- self.assertEqual("BuilderStatus.UNKNOWNBUILDER", status)
- self.assertIsNotNone(info, "UNKNOWNBUILDER returns 'None' info.")
- self.assertTrue(
- info.startswith("%s not in [" % buildername),
- 'UNKNOWNBUILDER info is "%s"' % info,
- )
diff --git a/lpbuildd/tests/test_builder.py b/lpbuildd/tests/test_builder.py
index 607e7ce..161923f 100644
--- a/lpbuildd/tests/test_builder.py
+++ b/lpbuildd/tests/test_builder.py
@@ -11,7 +11,7 @@ import re
from fixtures import TempDir
from testtools import TestCase
-from testtools.deferredruntest import AsynchronousDeferredRunTest
+from testtools.twistedsupport import AsynchronousDeferredRunTest
from twisted.internet import defer
from twisted.logger import FileLogObserver, formatEvent, globalLogPublisher
diff --git a/lpbuildd/tests/test_buildrecipe.py b/lpbuildd/tests/test_buildrecipe.py
index c56958e..e5bc21c 100644
--- a/lpbuildd/tests/test_buildrecipe.py
+++ b/lpbuildd/tests/test_buildrecipe.py
@@ -1,7 +1,8 @@
# Copyright 2014-2019 Canonical Ltd. This software is licensed under the
# GNU Affero General Public License version 3 (see the file LICENSE).
-import imp
+import importlib.machinery
+import importlib.util
import io
import os
import shutil
@@ -17,6 +18,22 @@ from testtools import TestCase
from testtools.matchers import Equals, MatchesListwise, StartsWith
+# imp was removed in python3.12(used by noble)
+# docs suggests the below migration snippet for imp.load_source
+# https://docs.python.org/dev/whatsnew/3.12.html#imp
+def load_source(modname, filename):
+ loader = importlib.machinery.SourceFileLoader(modname, filename)
+ spec = importlib.util.spec_from_file_location(
+ modname, filename, loader=loader
+ )
+ module = importlib.util.module_from_spec(spec)
+ # The module is always executed and not cached in sys.modules.
+ # Uncomment the following line to cache the module.
+ # sys.modules[module.__name__] = module
+ loader.exec_module(module)
+ return module
+
+
@contextmanager
def disable_bytecode():
original = sys.dont_write_bytecode
@@ -27,9 +44,7 @@ def disable_bytecode():
# By-hand import to avoid having to put .py suffixes on builder binaries.
with disable_bytecode():
- RecipeBuilder = imp.load_source(
- "buildrecipe", "bin/buildrecipe"
- ).RecipeBuilder
+ RecipeBuilder = load_source("buildrecipe", "bin/buildrecipe").RecipeBuilder
class RanCommand(MatchesListwise):
diff --git a/lpbuildd/tests/test_charm.py b/lpbuildd/tests/test_charm.py
index 18736dd..c1e0e14 100644
--- a/lpbuildd/tests/test_charm.py
+++ b/lpbuildd/tests/test_charm.py
@@ -7,7 +7,7 @@ import os
import responses
from fixtures import EnvironmentVariable, TempDir
from testtools import TestCase
-from testtools.deferredruntest import AsynchronousDeferredRunTest
+from testtools.twistedsupport import AsynchronousDeferredRunTest
from twisted.internet import defer
from lpbuildd.charm import CharmBuildManager, CharmBuildState
diff --git a/lpbuildd/tests/test_ci.py b/lpbuildd/tests/test_ci.py
index b9cfd19..6aa00af 100644
--- a/lpbuildd/tests/test_ci.py
+++ b/lpbuildd/tests/test_ci.py
@@ -6,7 +6,7 @@ import shutil
from fixtures import EnvironmentVariable, TempDir
from testtools import TestCase
-from testtools.deferredruntest import AsynchronousDeferredRunTest
+from testtools.twistedsupport import AsynchronousDeferredRunTest
from twisted.internet import defer
from lpbuildd.builder import get_build_path
diff --git a/lpbuildd/tests/test_livefs.py b/lpbuildd/tests/test_livefs.py
index 25eea06..6640f90 100644
--- a/lpbuildd/tests/test_livefs.py
+++ b/lpbuildd/tests/test_livefs.py
@@ -5,7 +5,7 @@ import os
from fixtures import EnvironmentVariable, TempDir
from testtools import TestCase
-from testtools.deferredruntest import AsynchronousDeferredRunTest
+from testtools.twistedsupport import AsynchronousDeferredRunTest
from twisted.internet import defer
from lpbuildd.livefs import (
diff --git a/lpbuildd/tests/test_oci.py b/lpbuildd/tests/test_oci.py
index d236b34..fe4ee23 100644
--- a/lpbuildd/tests/test_oci.py
+++ b/lpbuildd/tests/test_oci.py
@@ -7,8 +7,8 @@ from collections import OrderedDict
from fixtures import EnvironmentVariable, MockPatch, TempDir
from testtools import TestCase
-from testtools.deferredruntest import AsynchronousDeferredRunTest
from testtools.matchers import Contains
+from testtools.twistedsupport import AsynchronousDeferredRunTest
from twisted.internet import defer
from lpbuildd.oci import OCIBuildManager, OCIBuildState
diff --git a/lpbuildd/tests/test_snap.py b/lpbuildd/tests/test_snap.py
index b6cb638..bf2adfa 100644
--- a/lpbuildd/tests/test_snap.py
+++ b/lpbuildd/tests/test_snap.py
@@ -8,7 +8,7 @@ import responses
from fixtures import EnvironmentVariable, TempDir
from testtools import TestCase
from testtools.content import text_content
-from testtools.deferredruntest import AsynchronousDeferredRunTest
+from testtools.twistedsupport import AsynchronousDeferredRunTest
from twisted.internet import defer, reactor, utils
from twisted.web import http, proxy, resource, server, static
diff --git a/lpbuildd/tests/test_sourcepackagerecipe.py b/lpbuildd/tests/test_sourcepackagerecipe.py
index 4ff7004..07490a3 100644
--- a/lpbuildd/tests/test_sourcepackagerecipe.py
+++ b/lpbuildd/tests/test_sourcepackagerecipe.py
@@ -8,7 +8,7 @@ from textwrap import dedent
from systemfixtures import FakeProcesses
from testtools import TestCase
-from testtools.deferredruntest import AsynchronousDeferredRunTest
+from testtools.twistedsupport import AsynchronousDeferredRunTest
from twisted.internet import defer
from lpbuildd.sourcepackagerecipe import (
diff --git a/lpbuildd/tests/test_translationtemplatesbuildmanager.py b/lpbuildd/tests/test_translationtemplatesbuildmanager.py
index 3729345..6dfa695 100644
--- a/lpbuildd/tests/test_translationtemplatesbuildmanager.py
+++ b/lpbuildd/tests/test_translationtemplatesbuildmanager.py
@@ -5,7 +5,7 @@ import os
from fixtures import EnvironmentVariable, TempDir
from testtools import TestCase
-from testtools.deferredruntest import AsynchronousDeferredRunTest
+from testtools.twistedsupport import AsynchronousDeferredRunTest
from twisted.internet import defer
from lpbuildd.target.generate_translation_templates import (
diff --git a/setup.py b/setup.py
index e478581..53549d4 100755
--- a/setup.py
+++ b/setup.py
@@ -84,6 +84,5 @@ setup(
"responses",
"systemfixtures",
"testtools",
- "txfixtures",
],
)
diff --git a/system-dependencies.txt b/system-dependencies.txt
index df43d2b..da837e6 100644
--- a/system-dependencies.txt
+++ b/system-dependencies.txt
@@ -16,6 +16,5 @@ python3-setuptools
python3-systemfixtures
python3-testtools
python3-twisted
-python3-txfixtures
python3-yaml
python3-zope.interface
Follow ups