From 72b8c35be4293bd21de123854491c658c53af100 Mon Sep 17 00:00:00 2001 From: Daniel Baumann Date: Sat, 4 Dec 2021 04:31:41 +0100 Subject: Adding upstream version 0.17.0. Signed-off-by: Daniel Baumann --- gitlint-core/gitlint/tests/test_utils.py | 77 ++++++++++++++++++++++++++++++++ 1 file changed, 77 insertions(+) create mode 100644 gitlint-core/gitlint/tests/test_utils.py (limited to 'gitlint-core/gitlint/tests/test_utils.py') diff --git a/gitlint-core/gitlint/tests/test_utils.py b/gitlint-core/gitlint/tests/test_utils.py new file mode 100644 index 0000000..4ec8bda --- /dev/null +++ b/gitlint-core/gitlint/tests/test_utils.py @@ -0,0 +1,77 @@ +# -*- coding: utf-8 -*- + +from unittest.mock import patch + +from gitlint import utils +from gitlint.tests.base import BaseTestCase + + +class UtilsTests(BaseTestCase): + + def tearDown(self): + # Since we're messing around with `utils.PLATFORM_IS_WINDOWS` during these tests, we need to reset + # its value after we're done this doesn't influence other tests + utils.PLATFORM_IS_WINDOWS = utils.platform_is_windows() + + @patch('os.environ') + def test_use_sh_library(self, patched_env): + patched_env.get.return_value = "1" + self.assertEqual(utils.use_sh_library(), True) + patched_env.get.assert_called_once_with("GITLINT_USE_SH_LIB", None) + + for invalid_val in ["0", "foöbar"]: + patched_env.get.reset_mock() # reset mock call count + patched_env.get.return_value = invalid_val + self.assertEqual(utils.use_sh_library(), False, invalid_val) + patched_env.get.assert_called_once_with("GITLINT_USE_SH_LIB", None) + + # Assert that when GITLINT_USE_SH_LIB is not set, we fallback to checking whether we're on Windows + utils.PLATFORM_IS_WINDOWS = True + patched_env.get.return_value = None + self.assertEqual(utils.use_sh_library(), False) + + utils.PLATFORM_IS_WINDOWS = False + self.assertEqual(utils.use_sh_library(), True) + + @patch('gitlint.utils.locale') + def test_default_encoding_non_windows(self, mocked_locale): + utils.PLATFORM_IS_WINDOWS = False + mocked_locale.getpreferredencoding.return_value = "foöbar" + self.assertEqual(utils.getpreferredencoding(), "foöbar") + mocked_locale.getpreferredencoding.assert_called_once() + + mocked_locale.getpreferredencoding.return_value = False + self.assertEqual(utils.getpreferredencoding(), "UTF-8") + + @patch('os.environ') + def test_default_encoding_windows(self, patched_env): + utils.PLATFORM_IS_WINDOWS = True + # Mock out os.environ + mock_env = {} + + def mocked_get(key, default): + return mock_env.get(key, default) + + patched_env.get.side_effect = mocked_get + + # Assert getpreferredencoding reads env vars in order: LC_ALL, LC_CTYPE, LANG + mock_env = {"LC_ALL": "ASCII", "LC_CTYPE": "UTF-16", "LANG": "CP1251"} + self.assertEqual(utils.getpreferredencoding(), "ASCII") + mock_env = {"LC_CTYPE": "UTF-16", "LANG": "CP1251"} + self.assertEqual(utils.getpreferredencoding(), "UTF-16") + mock_env = {"LANG": "CP1251"} + self.assertEqual(utils.getpreferredencoding(), "CP1251") + + # Assert split on dot + mock_env = {"LANG": "foo.UTF-16"} + self.assertEqual(utils.getpreferredencoding(), "UTF-16") + + # assert default encoding is UTF-8 + mock_env = {} + self.assertEqual(utils.getpreferredencoding(), "UTF-8") + mock_env = {"FOO": "föo"} + self.assertEqual(utils.getpreferredencoding(), "UTF-8") + + # assert fallback encoding is UTF-8 in case we set an unavailable encoding + mock_env = {"LC_ALL": "foo"} + self.assertEqual(utils.getpreferredencoding(), "UTF-8") -- cgit v1.2.3