← Back to team overview

launchpad-reviewers team mailing list archive

[Merge] ~artemstreltsov/launchpad-buildd:add_snap_refresh_snapd into launchpad-buildd:master

 

Artem Streltsov has proposed merging ~artemstreltsov/launchpad-buildd:add_snap_refresh_snapd into launchpad-buildd:master.

Commit message:
Add snap refresh snapd

Requested reviews:
  Launchpad code reviewers (launchpad-reviewers)

For more details, see:
https://code.launchpad.net/~artemstreltsov/launchpad-buildd/+git/launchpad-buildd/+merge/492621
-- 
Your team Launchpad code reviewers is requested to review the proposed merge of ~artemstreltsov/launchpad-buildd:add_snap_refresh_snapd into launchpad-buildd:master.
diff --git a/lpbuildd/target/build_charm.py b/lpbuildd/target/build_charm.py
index 95dade1..4210d0f 100644
--- a/lpbuildd/target/build_charm.py
+++ b/lpbuildd/target/build_charm.py
@@ -85,6 +85,7 @@ class BuildCharm(
         self.backend.run(["apt-get", "-y", "install"] + deps)
         if self.backend.supports_snapd:
             self.snap_store_set_proxy()
+            self.snap_refresh_snapd()
         for snap_name, channel in sorted(self.args.channels.items()):
             # charmcraft is handled separately, since it requires --classic.
             if snap_name != "charmcraft":
diff --git a/lpbuildd/target/build_craft.py b/lpbuildd/target/build_craft.py
index 6998740..b36a661 100644
--- a/lpbuildd/target/build_craft.py
+++ b/lpbuildd/target/build_craft.py
@@ -111,6 +111,7 @@ class BuildCraft(
         self.backend.run(["apt-get", "-y", "install"] + deps)
         if self.backend.supports_snapd:
             self.snap_store_set_proxy()
+            self.snap_refresh_snapd()
         for snap_name, channel in sorted(self.args.channels.items()):
             # sourcecraft is handled separately, since it requires --classic,
             # which disables all sandboxing to ensure it runs with no strict
diff --git a/lpbuildd/target/build_livefs.py b/lpbuildd/target/build_livefs.py
index f0a788e..1976940 100644
--- a/lpbuildd/target/build_livefs.py
+++ b/lpbuildd/target/build_livefs.py
@@ -3,7 +3,6 @@
 
 import logging
 import os
-import subprocess
 from collections import OrderedDict
 
 from lpbuildd.target.operation import Operation
@@ -128,6 +127,7 @@ class BuildLiveFS(SnapStoreOperationMixin, Operation):
         self.backend.run(["apt-get", "-y", "install"] + deps)
         if self.backend.supports_snapd:
             self.snap_store_set_proxy()
+            self.snap_refresh_snapd()
         if self.args.locale is not None:
             self.backend.run(
                 [
@@ -139,28 +139,6 @@ class BuildLiveFS(SnapStoreOperationMixin, Operation):
                 ]
             )
 
-        # XXX 2025-01-27 tushar5526: This is a temporary fix to work around
-        # https://bugs.launchpad.net/snapd/+bug/1731519.
-        # Explicitly install a "hello" snap in livefs builds
-        # to workaround the snapd bug where installing a snap
-        # on the first attempt fails due to udev issues. This
-        # fix should be REMOVED after the new release of snapd
-        # in early march.
-        try:
-            self.backend.run(
-                [
-                    "snap",
-                    "install",
-                    "hello",
-                ]
-            )
-        except subprocess.CalledProcessError as e:
-            logger.info(
-                'Unable to install the "hello" snap with error: %s'
-                " Ignoring the failure and proceeding with the next"
-                " steps!" % e
-            )
-
     def build(self):
         if self.args.locale is not None:
             self.run_build_command(
diff --git a/lpbuildd/target/build_oci.py b/lpbuildd/target/build_oci.py
index 28c4869..7a5424f 100644
--- a/lpbuildd/target/build_oci.py
+++ b/lpbuildd/target/build_oci.py
@@ -82,6 +82,7 @@ class BuildOCI(
         self.backend.run(["apt-get", "-y", "install", "docker.io"])
         if self.backend.supports_snapd:
             self.snap_store_set_proxy()
+            self.snap_refresh_snapd()
         self.backend.run(["systemctl", "restart", "docker"])
         # The docker snap can't see /build, so we have to do our work under
         # /home/buildd instead.  Make sure it exists.
diff --git a/lpbuildd/target/build_rock.py b/lpbuildd/target/build_rock.py
index 1d8e9fd..c0e8ce6 100644
--- a/lpbuildd/target/build_rock.py
+++ b/lpbuildd/target/build_rock.py
@@ -92,6 +92,7 @@ class BuildRock(
         self.backend.run(["apt-get", "-y", "install"] + deps)
         if self.backend.supports_snapd:
             self.snap_store_set_proxy()
+            self.snap_refresh_snapd()
         for snap_name, channel in sorted(self.args.channels.items()):
             # rockcraft is handled separately, since it requires --classic,
             # which disables all sandboxing to ensure it runs with no strict
diff --git a/lpbuildd/target/build_snap.py b/lpbuildd/target/build_snap.py
index 5d957ae..9ee7014 100644
--- a/lpbuildd/target/build_snap.py
+++ b/lpbuildd/target/build_snap.py
@@ -150,6 +150,7 @@ class BuildSnap(
         self.backend.run(["apt-get", "-y", "install"] + deps)
         if self.backend.supports_snapd:
             self.snap_store_set_proxy()
+            self.snap_refresh_snapd()
         for snap_name, channel in sorted(self.args.channels.items()):
             # snapcraft is handled separately, since it requires --classic.
             if snap_name != "snapcraft":
diff --git a/lpbuildd/target/run_ci.py b/lpbuildd/target/run_ci.py
index 54aca19..f626078 100644
--- a/lpbuildd/target/run_ci.py
+++ b/lpbuildd/target/run_ci.py
@@ -65,6 +65,7 @@ class RunCIPrepare(
         self.backend.run(["apt-get", "-y", "install"] + deps)
         if self.backend.supports_snapd:
             self.snap_store_set_proxy()
+            self.snap_refresh_snapd()
         for snap_name, channel in sorted(self.args.channels.items()):
             if snap_name not in ("lxd", "lpci"):
                 self.backend.run(
diff --git a/lpbuildd/target/snapstore.py b/lpbuildd/target/snapstore.py
index 348e6d5..73a78cb 100644
--- a/lpbuildd/target/snapstore.py
+++ b/lpbuildd/target/snapstore.py
@@ -39,3 +39,6 @@ class SnapStoreOperationMixin:
             self.backend.run(
                 ["snap", "set", "core", f"proxy.store={store_id}"]
             )
+
+    def snap_refresh_snapd(self):
+        self.backend.run(["snap", "refresh", "snapd"])
diff --git a/lpbuildd/target/tests/test_build_charm.py b/lpbuildd/target/tests/test_build_charm.py
index c9f11c3..7154873 100644
--- a/lpbuildd/target/tests/test_build_charm.py
+++ b/lpbuildd/target/tests/test_build_charm.py
@@ -23,8 +23,9 @@ from lpbuildd.target.tests.matchers import (
     RanAptGet,
     RanBuildCommand,
     RanCommand,
+    RanSnap,
 )
-from lpbuildd.target.tests.test_build_snap import FakeRevisionID, RanSnap
+from lpbuildd.target.tests.test_build_snap import FakeRevisionID
 from lpbuildd.tests.fakebuilder import FakeMethod
 
 
@@ -107,6 +108,7 @@ class TestBuildCharm(TestCase):
                     RanAptGet(
                         "install", "bzr", "python3-pip", "python3-setuptools"
                     ),
+                    RanSnap("refresh", "snapd"),
                     RanSnap("install", "--channel=candidate", "core"),
                     RanSnap("install", "--channel=beta", "core18"),
                     RanSnap(
@@ -138,6 +140,7 @@ class TestBuildCharm(TestCase):
                     RanAptGet(
                         "install", "bzr", "python3-pip", "python3-setuptools"
                     ),
+                    RanSnap("refresh", "snapd"),
                     RanSnap("install", "--classic", "charmcraft"),
                     RanCommand(["mkdir", "-p", "/home/buildd"]),
                 ]
@@ -165,6 +168,7 @@ class TestBuildCharm(TestCase):
                     RanAptGet(
                         "install", "git", "python3-pip", "python3-setuptools"
                     ),
+                    RanSnap("refresh", "snapd"),
                     RanSnap("install", "--classic", "charmcraft"),
                     RanCommand(["mkdir", "-p", "/home/buildd"]),
                 ]
@@ -220,6 +224,7 @@ class TestBuildCharm(TestCase):
                     RanCommand(
                         ["snap", "set", "core", "proxy.store=store-id"]
                     ),
+                    RanSnap("refresh", "snapd"),
                     RanSnap("install", "--classic", "charmcraft"),
                     RanCommand(["mkdir", "-p", "/home/buildd"]),
                 ]
@@ -260,6 +265,7 @@ class TestBuildCharm(TestCase):
                         "python3-pip",
                         "python3-setuptools",
                     ),
+                    RanSnap("refresh", "snapd"),
                     RanSnap("install", "--classic", "charmcraft"),
                     RanCommand(["mkdir", "-p", "/home/buildd"]),
                 ]
@@ -310,6 +316,7 @@ class TestBuildCharm(TestCase):
                         "python3-pip",
                         "python3-setuptools",
                     ),
+                    RanSnap("refresh", "snapd"),
                     RanSnap("install", "--classic", "charmcraft"),
                     RanCommand(["rm", "-rf", "/var/lib/apt/lists"]),
                     RanCommand(["update-ca-certificates"]),
@@ -408,6 +415,7 @@ class TestBuildCharm(TestCase):
                         "python3-pip",
                         "python3-setuptools",
                     ),
+                    RanSnap("refresh", "snapd"),
                     RanSnap("install", "--classic", "charmcraft"),
                     RanCommand(["rm", "-rf", "/var/lib/apt/lists"]),
                     RanCommand(["update-ca-certificates"]),
diff --git a/lpbuildd/target/tests/test_build_craft.py b/lpbuildd/target/tests/test_build_craft.py
index 88ac97d..7a31ef2 100644
--- a/lpbuildd/target/tests/test_build_craft.py
+++ b/lpbuildd/target/tests/test_build_craft.py
@@ -102,6 +102,7 @@ class TestBuildCraft(TestCase):
             MatchesListwise(
                 [
                     RanAptGet("install", "bzr"),
+                    RanSnap("refresh", "snapd"),
                     RanSnap("install", "--channel=candidate", "core"),
                     RanSnap("install", "--channel=beta", "core18"),
                     RanSnap(
@@ -131,6 +132,7 @@ class TestBuildCraft(TestCase):
             MatchesListwise(
                 [
                     RanAptGet("install", "bzr"),
+                    RanSnap("refresh", "snapd"),
                     RanSnap(
                         "install",
                         "--classic",
@@ -161,6 +163,7 @@ class TestBuildCraft(TestCase):
             MatchesListwise(
                 [
                     RanAptGet("install", "git"),
+                    RanSnap("refresh", "snapd"),
                     RanSnap(
                         "install",
                         "--classic",
@@ -219,6 +222,7 @@ class TestBuildCraft(TestCase):
                     RanCommand(
                         ["snap", "set", "core", "proxy.store=store-id"]
                     ),
+                    RanSnap("refresh", "snapd"),
                     RanSnap(
                         "install",
                         "--classic",
@@ -262,6 +266,7 @@ class TestBuildCraft(TestCase):
                         "socat",
                         "git",
                     ),
+                    RanSnap("refresh", "snapd"),
                     RanSnap(
                         "install",
                         "--classic",
@@ -315,6 +320,7 @@ class TestBuildCraft(TestCase):
                         "socat",
                         "git",
                     ),
+                    RanSnap("refresh", "snapd"),
                     RanSnap(
                         "install",
                         "--classic",
@@ -416,6 +422,7 @@ class TestBuildCraft(TestCase):
                         "socat",
                         "git",
                     ),
+                    RanSnap("refresh", "snapd"),
                     RanSnap(
                         "install",
                         "--classic",
@@ -1453,6 +1460,7 @@ class TestBuildCraft(TestCase):
             MatchesListwise(
                 [
                     RanAptGet("install", "git", "clamav"),
+                    RanSnap("refresh", "snapd"),
                     RanSnap(
                         "install",
                         "--classic",
@@ -1507,6 +1515,7 @@ class TestBuildCraft(TestCase):
                         "git",
                         "clamav",
                     ),
+                    RanSnap("refresh", "snapd"),
                     RanSnap(
                         "install",
                         "--classic",
@@ -1550,6 +1559,7 @@ class TestBuildCraft(TestCase):
             MatchesListwise(
                 [
                     RanAptGet("install", "git", "clamav"),
+                    RanSnap("refresh", "snapd"),
                     RanSnap(
                         "install",
                         "--classic",
diff --git a/lpbuildd/target/tests/test_build_livefs.py b/lpbuildd/target/tests/test_build_livefs.py
index 0c5f21c..f4d8815 100644
--- a/lpbuildd/target/tests/test_build_livefs.py
+++ b/lpbuildd/target/tests/test_build_livefs.py
@@ -40,7 +40,7 @@ class TestBuildLiveFS(TestCase):
             MatchesListwise(
                 [
                     RanAptGet("install", "livecd-rootfs"),
-                    RanSnap("install", "hello"),
+                    RanSnap("refresh", "snapd"),
                 ],
             ),
         )
@@ -62,12 +62,12 @@ class TestBuildLiveFS(TestCase):
             MatchesListwise(
                 [
                     RanAptGet("install", "livecd-rootfs"),
+                    RanSnap("refresh", "snapd"),
                     RanAptGet(
                         "--install-recommends",
                         "install",
                         "ubuntu-defaults-builder",
                     ),
-                    RanSnap("install", "hello"),
                 ]
             ),
         )
@@ -116,7 +116,7 @@ class TestBuildLiveFS(TestCase):
                     RanCommand(
                         ["snap", "set", "core", "proxy.store=store-id"]
                     ),
-                    RanSnap("install", "hello"),
+                    RanSnap("refresh", "snapd"),
                 ]
             ),
         )
@@ -498,30 +498,6 @@ class TestBuildLiveFS(TestCase):
         build_livefs.backend.run = FailInstall()
         self.assertEqual(RETCODE_FAILURE_INSTALL, build_livefs.run())
 
-    def test_hello_snap_install_failures_are_ignored(self):
-        class FailInstall(FakeMethod):
-            def __call__(self, run_args, *args, **kwargs):
-                super().__call__(run_args, *args, **kwargs)
-                if run_args == ["snap", "install", "hello"]:
-                    raise subprocess.CalledProcessError(1, run_args)
-
-        logger = self.useFixture(FakeLogger())
-        args = [
-            "buildlivefs",
-            "--backend=fake",
-            "--series=xenial",
-            "--abi-tag=amd64",
-            "--isa-tag=amd64",
-            "1",
-            "--project=ubuntu",
-        ]
-        build_livefs = parse_args(args=args).operation
-        build_livefs.backend.run = FailInstall()
-        self.assertEqual(0, build_livefs.run())
-        self.assertTrue(
-            'Unable to install the "hello" snap with error:' in logger.output
-        )
-
     def test_run_build_fails(self):
         class FailBuild(FakeMethod):
             def __call__(self, run_args, *args, **kwargs):
diff --git a/lpbuildd/target/tests/test_build_oci.py b/lpbuildd/target/tests/test_build_oci.py
index 46a3343..10fc87c 100644
--- a/lpbuildd/target/tests/test_build_oci.py
+++ b/lpbuildd/target/tests/test_build_oci.py
@@ -22,6 +22,7 @@ from lpbuildd.target.tests.matchers import (
     RanAptGet,
     RanBuildCommand,
     RanCommand,
+    RanSnap,
 )
 from lpbuildd.tests.fakebuilder import FakeMethod
 
@@ -101,6 +102,7 @@ class TestBuildOCI(TestCase):
                 [
                     RanAptGet("install", "bzr"),
                     RanAptGet("install", "docker.io"),
+                    RanSnap("refresh", "snapd"),
                     RanCommand(["systemctl", "restart", "docker"]),
                     RanCommand(["mkdir", "-p", "/home/buildd"]),
                 ]
@@ -127,6 +129,7 @@ class TestBuildOCI(TestCase):
                 [
                     RanAptGet("install", "git"),
                     RanAptGet("install", "docker.io"),
+                    RanSnap("refresh", "snapd"),
                     RanCommand(["systemctl", "restart", "docker"]),
                     RanCommand(["mkdir", "-p", "/home/buildd"]),
                 ]
@@ -180,6 +183,7 @@ class TestBuildOCI(TestCase):
                     RanCommand(
                         ["snap", "set", "core", "proxy.store=store-id"]
                     ),
+                    RanSnap("refresh", "snapd"),
                 ]
             ),
         )
@@ -215,6 +219,7 @@ class TestBuildOCI(TestCase):
                     ),
                     RanAptGet("install", "python3", "socat", "git"),
                     RanAptGet("install", "docker.io"),
+                    RanSnap("refresh", "snapd"),
                     RanCommand(["systemctl", "restart", "docker"]),
                     RanCommand(["mkdir", "-p", "/home/buildd"]),
                 ]
diff --git a/lpbuildd/target/tests/test_build_rock.py b/lpbuildd/target/tests/test_build_rock.py
index 5fa2b1b..9ce57a9 100644
--- a/lpbuildd/target/tests/test_build_rock.py
+++ b/lpbuildd/target/tests/test_build_rock.py
@@ -108,6 +108,7 @@ class TestBuildRock(TestCase):
                         "python3-setuptools",
                         "dirmngr",
                     ),
+                    RanSnap("refresh", "snapd"),
                     RanSnap("install", "--channel=candidate", "core"),
                     RanSnap("install", "--channel=beta", "core18"),
                     RanSnap(
@@ -143,6 +144,7 @@ class TestBuildRock(TestCase):
                         "python3-setuptools",
                         "dirmngr",
                     ),
+                    RanSnap("refresh", "snapd"),
                     RanSnap("install", "--classic", "rockcraft"),
                     RanCommand(["mkdir", "-p", "/home/buildd"]),
                 ]
@@ -174,6 +176,7 @@ class TestBuildRock(TestCase):
                         "python3-setuptools",
                         "dirmngr",
                     ),
+                    RanSnap("refresh", "snapd"),
                     RanSnap("install", "--classic", "rockcraft"),
                     RanCommand(["mkdir", "-p", "/home/buildd"]),
                 ]
@@ -233,6 +236,7 @@ class TestBuildRock(TestCase):
                     RanCommand(
                         ["snap", "set", "core", "proxy.store=store-id"]
                     ),
+                    RanSnap("refresh", "snapd"),
                     RanSnap("install", "--classic", "rockcraft"),
                     RanCommand(["mkdir", "-p", "/home/buildd"]),
                 ]
@@ -274,6 +278,7 @@ class TestBuildRock(TestCase):
                         "python3-setuptools",
                         "dirmngr",
                     ),
+                    RanSnap("refresh", "snapd"),
                     RanSnap("install", "--classic", "rockcraft"),
                     RanCommand(["mkdir", "-p", "/home/buildd"]),
                 ]
@@ -323,6 +328,7 @@ class TestBuildRock(TestCase):
                         "python3-setuptools",
                         "dirmngr",
                     ),
+                    RanSnap("refresh", "snapd"),
                     RanSnap("install", "--classic", "rockcraft"),
                     RanCommand(["rm", "-rf", "/var/lib/apt/lists"]),
                     RanCommand(["update-ca-certificates"]),
@@ -420,6 +426,7 @@ class TestBuildRock(TestCase):
                         "python3-setuptools",
                         "dirmngr",
                     ),
+                    RanSnap("refresh", "snapd"),
                     RanSnap("install", "--classic", "rockcraft"),
                     RanCommand(["rm", "-rf", "/var/lib/apt/lists"]),
                     RanCommand(["update-ca-certificates"]),
diff --git a/lpbuildd/target/tests/test_build_snap.py b/lpbuildd/target/tests/test_build_snap.py
index 3a94727..1989807 100644
--- a/lpbuildd/target/tests/test_build_snap.py
+++ b/lpbuildd/target/tests/test_build_snap.py
@@ -73,6 +73,7 @@ class TestBuildSnap(TestCase):
             MatchesListwise(
                 [
                     RanAptGet("install", "bzr", "snapcraft"),
+                    RanSnap("refresh", "snapd"),
                 ]
             ),
         )
@@ -96,6 +97,7 @@ class TestBuildSnap(TestCase):
             MatchesListwise(
                 [
                     RanAptGet("install", "git", "snapcraft"),
+                    RanSnap("refresh", "snapd"),
                 ]
             ),
         )
@@ -147,6 +149,7 @@ class TestBuildSnap(TestCase):
                     RanCommand(
                         ["snap", "set", "core", "proxy.store=store-id"]
                     ),
+                    RanSnap("refresh", "snapd"),
                 ]
             ),
         )
@@ -180,6 +183,7 @@ class TestBuildSnap(TestCase):
                     RanAptGet(
                         "install", "python3", "socat", "git", "snapcraft"
                     ),
+                    RanSnap("refresh", "snapd"),
                     RanCommand(["mkdir", "-p", "/root/.subversion"]),
                 ]
             ),
@@ -231,6 +235,7 @@ class TestBuildSnap(TestCase):
                     RanAptGet(
                         "install", "python3", "socat", "git", "snapcraft"
                     ),
+                    RanSnap("refresh", "snapd"),
                     RanCommand(["mkdir", "-p", "/root/.subversion"]),
                     RanCommand(["rm", "-rf", "/var/lib/apt/lists"]),
                     RanCommand(["update-ca-certificates"]),
@@ -330,6 +335,7 @@ class TestBuildSnap(TestCase):
                     RanAptGet(
                         "install", "python3", "socat", "git", "snapcraft"
                     ),
+                    RanSnap("refresh", "snapd"),
                     RanCommand(["mkdir", "-p", "/root/.subversion"]),
                     RanCommand(["rm", "-rf", "/var/lib/apt/lists"]),
                     RanCommand(["update-ca-certificates"]),
@@ -410,6 +416,7 @@ class TestBuildSnap(TestCase):
             MatchesListwise(
                 [
                     RanAptGet("install", "bzr", "sudo"),
+                    RanSnap("refresh", "snapd"),
                     RanSnap("install", "--channel=candidate", "core"),
                     RanSnap("refresh", "--channel=candidate", "core"),
                     RanSnap("install", "--channel=beta", "core18"),
diff --git a/lpbuildd/target/tests/test_run_ci.py b/lpbuildd/target/tests/test_run_ci.py
index 8ea5eef..2978565 100644
--- a/lpbuildd/target/tests/test_run_ci.py
+++ b/lpbuildd/target/tests/test_run_ci.py
@@ -57,6 +57,7 @@ class TestRunCIPrepare(TestCase):
             MatchesListwise(
                 [
                     RanAptGet("install", "git"),
+                    RanSnap("refresh", "snapd"),
                     RanSnap("install", "lxd"),
                     RanSnap("install", "--classic", "lpci"),
                     RanCommand(["lxd", "init", "--auto"]),
@@ -105,6 +106,7 @@ class TestRunCIPrepare(TestCase):
                     RanAptGet("install", "git"),
                     RanSnap("ack", "/dev/stdin", input_text=store_assertion),
                     RanSnap("set", "core", "proxy.store=store-id"),
+                    RanSnap("refresh", "snapd"),
                     RanSnap("install", "lxd"),
                     RanSnap("install", "--classic", "lpci"),
                     RanCommand(["lxd", "init", "--auto"]),
@@ -138,6 +140,7 @@ class TestRunCIPrepare(TestCase):
             MatchesListwise(
                 [
                     RanAptGet("install", "python3", "socat", "git"),
+                    RanSnap("refresh", "snapd"),
                     RanSnap("install", "lxd"),
                     RanSnap("install", "--classic", "lpci"),
                     RanCommand(["lxd", "init", "--auto"]),
@@ -173,6 +176,7 @@ class TestRunCIPrepare(TestCase):
             MatchesListwise(
                 [
                     RanAptGet("install", "git"),
+                    RanSnap("refresh", "snapd"),
                     RanSnap("install", "--channel=candidate", "core"),
                     RanSnap("install", "--channel=beta", "core20"),
                     RanSnap("install", "--channel=beta", "lxd"),
@@ -201,6 +205,7 @@ class TestRunCIPrepare(TestCase):
             MatchesListwise(
                 [
                     RanAptGet("install", "git", "clamav"),
+                    RanSnap("refresh", "snapd"),
                     RanSnap("install", "lxd"),
                     RanSnap("install", "--classic", "lpci"),
                     RanCommand(["lxd", "init", "--auto"]),
@@ -244,6 +249,7 @@ class TestRunCIPrepare(TestCase):
             MatchesListwise(
                 [
                     RanAptGet("install", "python3", "socat", "git", "clamav"),
+                    RanSnap("refresh", "snapd"),
                     RanSnap("install", "lxd"),
                     RanSnap("install", "--classic", "lpci"),
                     RanCommand(["lxd", "init", "--auto"]),
@@ -276,6 +282,7 @@ class TestRunCIPrepare(TestCase):
             MatchesListwise(
                 [
                     RanAptGet("install", "git", "clamav"),
+                    RanSnap("refresh", "snapd"),
                     RanSnap("install", "lxd"),
                     RanSnap("install", "--classic", "lpci"),
                     RanCommand(["lxd", "init", "--auto"]),

Follow ups