From 54ad75426825cdd977f770b12a62ee92218b82d6 Mon Sep 17 00:00:00 2001 From: Raoul Snyman Date: Thu, 3 Feb 2022 11:26:24 -0700 Subject: [PATCH] Make two versions of a test to work around a difference in Python 3.10 --- tests/openlp_core/common/test_applocation.py | 29 +++++++++++++++++++- 1 file changed, 28 insertions(+), 1 deletion(-) diff --git a/tests/openlp_core/common/test_applocation.py b/tests/openlp_core/common/test_applocation.py index 2aebc5213..432773ec7 100644 --- a/tests/openlp_core/common/test_applocation.py +++ b/tests/openlp_core/common/test_applocation.py @@ -22,9 +22,12 @@ Functional tests to test the AppLocation class and related methods. """ import os +import sys from pathlib import Path from unittest.mock import patch +import pytest + from openlp.core.common import get_frozen_path from openlp.core.common.applocation import AppLocation @@ -141,11 +144,35 @@ def test_get_directory_for_app_dir(mocked_get_frozen_path): assert directory == Path.cwd() / Path('app', 'dir'), 'Directory should be "app/dir"' +@pytest.mark.skipif(sys.version_info < (3, 10), reason="Python 3.10 version of this test") @patch('openlp.core.common.applocation.get_frozen_path') @patch('openlp.core.common.applocation.os.path.abspath') @patch('openlp.core.common.applocation.os.path.split') @patch('openlp.core.common.applocation.sys') -def test_get_directory_for_plugins_dir(mocked_sys, mocked_split, mocked_abspath, mocked_get_frozen_path): +def test_get_directory_for_plugins_dir_py310(mocked_sys, mocked_split, mocked_abspath, mocked_get_frozen_path): + """ + Test the AppLocation.get_directory() method for AppLocation.PluginsDir + """ + # GIVEN: _get_frozen_path, abspath, split and sys are mocked out + mocked_abspath.return_value = os.path.join('dir', 'plugins') + mocked_split.return_value = ['openlp'] + mocked_get_frozen_path.return_value = Path('dir') + mocked_sys.frozen = 1 + mocked_sys.argv = ['openlp'] + + # WHEN: We call AppLocation.get_directory + directory = AppLocation.get_directory(AppLocation.PluginsDir) + + # THEN: The correct directory should be returned + assert directory == Path('dir', 'plugins'), 'Directory should be "dir/plugins"' + + +@pytest.mark.skipif(sys.version_info >= (3, 10), reason="Python 3.9 version of this test") +@patch('openlp.core.common.applocation.get_frozen_path') +@patch('openlp.core.common.applocation.os.path.abspath') +@patch('openlp.core.common.applocation.os.path.split') +@patch('openlp.core.common.applocation.sys') +def test_get_directory_for_plugins_dir_py39(mocked_sys, mocked_split, mocked_abspath, mocked_get_frozen_path): """ Test the AppLocation.get_directory() method for AppLocation.PluginsDir """