46 lines
2.0 KiB
Python
46 lines
2.0 KiB
Python
import os
|
|
from subprocess import check_call, CalledProcessError
|
|
import tempfile
|
|
import unittest
|
|
|
|
from minimizer import ImageMinimizer
|
|
|
|
class BuildStampTestCase(unittest.TestCase):
|
|
def test_minimizer_ok(self):
|
|
with tempfile.TemporaryDirectory(prefix="minimize.test.") as rootdir:
|
|
check_call(["dnf", "--installroot", rootdir, "install", "-y", \
|
|
"filesystem"])
|
|
|
|
im = ImageMinimizer("./tests/image-minimizer/im-script.txt", rootdir, False, False)
|
|
im.filter()
|
|
|
|
# /etc/pki/rpm-gpg/ should only have 2 files
|
|
self.assertEqual(sorted(os.listdir(f"{rootdir}/etc/pki/rpm-gpg/")), ["RPM-GPG-KEY-fedora-11-primary", "RPM-GPG-KEY-fedora-12-primary"])
|
|
|
|
# zoneinfo should have 2 directories and a file
|
|
self.assertEqual(sorted(os.listdir(f"{rootdir}/usr/share/zoneinfo/")), ["America", "US", "UTC"])
|
|
|
|
check_call(["rpm", "--root", rootdir, "-q", "fedora-release", "fedora-gpg-keys"])
|
|
|
|
with self.assertRaises(CalledProcessError):
|
|
check_call(["rpm", "--root", rootdir, "-q", "fedora-repos"])
|
|
|
|
def test_minimizer_empty(self):
|
|
## No packages in tree (this is ok, nothing to remove)
|
|
with tempfile.TemporaryDirectory(prefix="minimize.test.") as rootdir:
|
|
im = ImageMinimizer("./tests/image-minimizer/im-script.txt", rootdir, False, False)
|
|
im.filter()
|
|
|
|
def test_minimizer_missing_script(self):
|
|
## No minimizer script
|
|
with tempfile.TemporaryDirectory(prefix="minimize.test.") as rootdir:
|
|
im = ImageMinimizer("./tests/image-minimizer/missing.txt", rootdir, False, False)
|
|
with self.assertRaises(FileNotFoundError):
|
|
im.filter()
|
|
|
|
def test_minimizer_missing_root(self):
|
|
## Missing directory
|
|
im = ImageMinimizer("./tests/image-minimizer/im-script.txt", "/tmp/minimizer.root", False, False)
|
|
with self.assertRaises(FileNotFoundError):
|
|
im.filter()
|