impuls/lib/python3.11/site-packages/autopage/tests/test_pager_settings.py

117 lines
4.0 KiB
Python
Raw Normal View History

# Licensed under the Apache License, Version 2.0 (the "License"); you may
# not use this file except in compliance with the License. You may obtain
# a copy of the License at
#
# http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
# WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
# License for the specific language governing permissions and limitations
# under the License.
import unittest
import fixtures # type: ignore
from typing import Any, Optional, Dict, List
import autopage
from autopage import command
_PagerConfig = command.PagerConfig
class ConfigTest(unittest.TestCase):
def setUp(self) -> None:
class TestCommand(command.PagerCommand):
def __init__(self) -> None:
self.config: Optional[_PagerConfig] = None
def command(self) -> List[str]:
return []
def environment_variables(
self,
config: _PagerConfig) -> Optional[Dict[str, str]]:
self.config = config
return None
self.test_command = TestCommand()
def _get_ap_config(self, **args: Any) -> command.PagerConfig:
ap = autopage.AutoPager(pager_command=self.test_command, **args)
ap._pager_env()
config = self.test_command.config
assert config is not None
return config
def test_defaults(self) -> None:
config = self._get_ap_config()
self.assertTrue(config.color)
self.assertFalse(config.line_buffering_requested)
self.assertFalse(config.reset_terminal)
def test_nocolor(self) -> None:
config = self._get_ap_config(allow_color=False)
self.assertFalse(config.color)
self.assertFalse(config.line_buffering_requested)
self.assertFalse(config.reset_terminal)
def test_reset(self) -> None:
config = self._get_ap_config(reset_on_exit=True)
self.assertTrue(config.color)
self.assertFalse(config.line_buffering_requested)
self.assertTrue(config.reset_terminal)
def test_linebuffered(self) -> None:
config = self._get_ap_config(line_buffering=True)
self.assertTrue(config.color)
self.assertTrue(config.line_buffering_requested)
self.assertFalse(config.reset_terminal)
def test_not_linebuffered(self) -> None:
config = self._get_ap_config(line_buffering=False)
self.assertTrue(config.color)
self.assertFalse(config.line_buffering_requested)
self.assertFalse(config.reset_terminal)
class EnvironmentBuildTest(unittest.TestCase):
class TestCommand(command.PagerCommand):
def __init__(self, env: Optional[Dict[str, str]]):
self._env = env
def command(self) -> List[str]:
return ['foo']
def environment_variables(self,
config: _PagerConfig) -> Optional[Dict[str,
str]]:
return self._env
def test_env(self) -> None:
cmd = self.TestCommand({"FOO": "bar"})
ap = autopage.AutoPager(pager_command=cmd)
with fixtures.EnvironmentVariable('BAZ', 'quux'):
env = ap._pager_env()
self.assertIsNotNone(env)
assert env is not None
self.assertEqual('quux', env['BAZ'])
self.assertEqual('bar', env['FOO'])
def test_env_empty(self) -> None:
cmd = self.TestCommand({})
ap = autopage.AutoPager(pager_command=cmd)
with fixtures.EnvironmentVariable('BAZ', 'quux'):
env = ap._pager_env()
self.assertIsNone(env)
def test_env_none(self) -> None:
cmd = self.TestCommand(None)
ap = autopage.AutoPager(pager_command=cmd)
with fixtures.EnvironmentVariable('BAZ', 'quux'):
env = ap._pager_env()
self.assertIsNone(env)