From 4f1b50f7a6afdc11095a87b43e183be21772f14b Mon Sep 17 00:00:00 2001 From: Hans-Christoph Steiner Date: Tue, 21 Oct 2025 10:24:22 +0200 Subject: [PATCH] switch test_signatures.py to mkdtemp to fix mystery I have no idea what is causing this to fail, but the mkdtemp pattern used in other test files seems to fix it. https://gitlab.com/fdroid/fdroidserver/-/jobs/11776468083 ====================================================================== ERROR: test_main (tests.test_signatures.SignaturesTest.test_main) ---------------------------------------------------------------------- Traceback (most recent call last): File "/builds/fdroid/fdroidserver/tests/test_signatures.py", line 28, in test_main with TemporaryDirectory() as tmpdir, TmpCwd(tmpdir): ^^^^^^^^^^^^^^ File "/builds/fdroid/fdroidserver/tests/shared_test_code.py", line 44, in __enter__ self.orig_cwd = os.getcwd() ^^^^^^^^^^^ FileNotFoundError: [Errno 2] No such file or directory ---------------------------------------------------------------------- --- tests/test_signatures.py | 64 ++++++++++++++++++++++------------------ 1 file changed, 35 insertions(+), 29 deletions(-) diff --git a/tests/test_signatures.py b/tests/test_signatures.py index 4f7bd105..a6b3805d 100755 --- a/tests/test_signatures.py +++ b/tests/test_signatures.py @@ -4,56 +4,62 @@ import hashlib import os import sys import unittest -from tempfile import TemporaryDirectory from fdroidserver import common, signatures -from .shared_test_code import TmpCwd +from .shared_test_code import mkdtemp basedir = os.path.dirname(__file__) class SignaturesTest(unittest.TestCase): def setUp(self): + self._td = mkdtemp() + self.testdir = self._td.name + os.chdir(self.testdir) + common.config = None config = common.read_config() config['jarsigner'] = common.find_sdk_tools_cmd('jarsigner') common.config = config + def tearDown(self): + self._td.cleanup() + common.config = None + @unittest.skipIf(sys.byteorder == 'big', "androguard is not ported to big-endian") def test_main(self): class OptionsFixture: APK = [os.path.join(basedir, 'repo', 'com.politedroid_3.apk')] - with TemporaryDirectory() as tmpdir, TmpCwd(tmpdir): - signatures.extract(OptionsFixture) + signatures.extract(OptionsFixture) - # check if extracted signatures are where they are supposed to be - # also verify weather if extracted file contain what they should - filesAndHashes = ( - ( - os.path.join( - 'metadata', 'com.politedroid', 'signatures', '3', 'MANIFEST.MF' - ), - '7dcd83f0c41a75457fd2311bf3c4578f80d684362d74ba8dc52838d353f31cf2', + # check if extracted signatures are where they are supposed to be + # also verify weather if extracted file contain what they should + filesAndHashes = ( + ( + os.path.join( + 'metadata', 'com.politedroid', 'signatures', '3', 'MANIFEST.MF' ), - ( - os.path.join( - 'metadata', 'com.politedroid', 'signatures', '3', 'RELEASE.RSA' - ), - '883ef3d5a6e0bf69d2a58d9e255a7930f08a49abc38e216ed054943c99c8fdb4', + '7dcd83f0c41a75457fd2311bf3c4578f80d684362d74ba8dc52838d353f31cf2', + ), + ( + os.path.join( + 'metadata', 'com.politedroid', 'signatures', '3', 'RELEASE.RSA' ), - ( - os.path.join( - 'metadata', 'com.politedroid', 'signatures', '3', 'RELEASE.SF' - ), - '99fbb3211ef5d7c1253f3a7ad4836eadc9905103ce6a75916c40de2831958284', + '883ef3d5a6e0bf69d2a58d9e255a7930f08a49abc38e216ed054943c99c8fdb4', + ), + ( + os.path.join( + 'metadata', 'com.politedroid', 'signatures', '3', 'RELEASE.SF' ), + '99fbb3211ef5d7c1253f3a7ad4836eadc9905103ce6a75916c40de2831958284', + ), + ) + for path, checksum in filesAndHashes: + self.assertTrue( + os.path.isfile(path), + f'check whether {path!r} was extracted correctly.', ) - for path, checksum in filesAndHashes: - self.assertTrue( - os.path.isfile(path), - f'check whether {path!r} was extracted correctly.', - ) - with open(path, 'rb') as f: - self.assertEqual(hashlib.sha256(f.read()).hexdigest(), checksum) + with open(path, 'rb') as f: + self.assertEqual(hashlib.sha256(f.read()).hexdigest(), checksum)