From e46aed0e00f8aada2249cefafb7c827e7a7bfa71 Mon Sep 17 00:00:00 2001 From: Kefu Chai Date: Mon, 10 Oct 2022 21:57:57 +0800 Subject: [PATCH] cephadm: run tests as root as we will be create/access directories which are only accessible by root with pyfakefs, and pyfake respects the uid of current effective user, so if we run the test using non-root user, these tests would fail after the fix for https://github.com/pytest-dev/pyfakefs/issues/489 is addressed in the pyfakefs we are using. in this change, we will run the test on behalf of root, so we can create and access the directories as we did before. Signed-off-by: Kefu Chai (cherry picked from commit ed19416067a7ef3b69310d22bf4e3b573e3011f0) Conflicts: src/cephadm/tests/fixtures.py --- src/cephadm/tests/fixtures.py | 3 +++ src/cephadm/tests/test_cephadm.py | 4 ++++ 2 files changed, 7 insertions(+) diff --git a/src/cephadm/tests/fixtures.py b/src/cephadm/tests/fixtures.py index 66d49cf17a2a..2cd41be85de9 100644 --- a/src/cephadm/tests/fixtures.py +++ b/src/cephadm/tests/fixtures.py @@ -81,6 +81,9 @@ def cephadm_fs( mock.patch('platform.processor', return_value='x86_64'), \ mock.patch('cephadm.extract_uid_gid', return_value=(uid, gid)): + if not fake_filesystem.is_root(): + fake_filesystem.set_uid(0) + fs.create_dir(cd.DATA_DIR) fs.create_dir(cd.LOG_DIR) fs.create_dir(cd.LOCK_DIR) diff --git a/src/cephadm/tests/test_cephadm.py b/src/cephadm/tests/test_cephadm.py index c57963d4dc9a..7383ac0ee186 100644 --- a/src/cephadm/tests/test_cephadm.py +++ b/src/cephadm/tests/test_cephadm.py @@ -27,6 +27,7 @@ from .fixtures import ( mock_bad_firewalld, ) +from pyfakefs import fake_filesystem from pyfakefs import fake_filesystem_unittest with mock.patch('builtins.open', create=True): @@ -2380,6 +2381,9 @@ class TestRescan(fake_filesystem_unittest.TestCase): def setUp(self): self.setUpPyfakefs() + if not fake_filesystem.is_root(): + fake_filesystem.set_uid(0) + self.fs.create_dir('/sys/class') self.ctx = cd.CephadmContext() self.ctx.func = cd.command_rescan_disks -- 2.47.3