From ae0e470c561df0b0255fc1390c65457ac1c08032 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Donncha=20=C3=93=20Cearbhaill?= Date: Mon, 31 Jul 2023 11:45:53 +0200 Subject: [PATCH] Fix inconsisent filesytem tests on some platforms --- tests/ios_fs/test_filesystem.py | 15 +++++++++++---- tests/utils.py | 12 ++++++++++++ 2 files changed, 23 insertions(+), 4 deletions(-) diff --git a/tests/ios_fs/test_filesystem.py b/tests/ios_fs/test_filesystem.py index a49aec1..c0827ea 100644 --- a/tests/ios_fs/test_filesystem.py +++ b/tests/ios_fs/test_filesystem.py @@ -2,25 +2,32 @@ # Copyright (c) 2021-2023 Claudio Guarnieri. # Use of this software is governed by the MVT License 1.1 that can be found at # https://license.mvt.re/1.1/ - +import pytest import logging from mvt.common.indicators import Indicators from mvt.common.module import run_module from mvt.ios.modules.fs.filesystem import Filesystem -from ..utils import get_ios_backup_folder +from ..utils import get_ios_backup_folder, delete_tmp_db_files + + +@pytest.fixture() +def cleanup_tmp_artifacts(): + ios_backup_folder = get_ios_backup_folder() + delete_tmp_db_files(ios_backup_folder) + return class TestFilesystem: - def test_filesystem(self): + def test_filesystem(self, cleanup_tmp_artifacts): m = Filesystem(target_path=get_ios_backup_folder()) run_module(m) assert len(m.results) == 14 assert len(m.timeline) == 14 assert len(m.detected) == 0 - def test_detection(self, indicator_file): + def test_detection(self, indicator_file, cleanup_tmp_artifacts): m = Filesystem(target_path=get_ios_backup_folder()) ind = Indicators(log=logging.getLogger()) ind.parse_stix2(indicator_file) diff --git a/tests/utils.py b/tests/utils.py index 7b0d196..5e67d67 100644 --- a/tests/utils.py +++ b/tests/utils.py @@ -37,6 +37,18 @@ def get_indicator_file(): print("PYTEST env", os.getenv("PYTEST_CURRENT_TEST")) +def delete_tmp_db_files(file_path): + """ + Remove Sqlite temporary files that appear on some platforms + + These can cause filesystem tests to fail depending on the OS. + """ + for file_name in ["Manifest.db-wal", "Manifest.db-shm"]: + path = os.path.join(file_path, file_name) + if os.path.isfile(path): + os.remove(path) + + def list_files(path: str): files = [] parent_path = Path(path).absolute().parent.as_posix()