From 128f60ef68227c8f7bcfe2de79de18eab215121f Mon Sep 17 00:00:00 2001 From: Tymoteusz Jankowski Date: Wed, 4 Dec 2019 20:49:24 +0100 Subject: [PATCH] Add test_dagascii.py + make find_pager() use DVC_PAGER --- dvc/dagascii.py | 19 ++++++++++++++----- tests/unit/test_dagascii.py | 28 ++++++++++++++++++++++++++++ 2 files changed, 42 insertions(+), 5 deletions(-) create mode 100644 tests/unit/test_dagascii.py diff --git a/dvc/dagascii.py b/dvc/dagascii.py index 240bdc37b..a686392f8 100644 --- a/dvc/dagascii.py +++ b/dvc/dagascii.py @@ -31,13 +31,22 @@ def find_pager(): if not sys.stdout.isatty(): return pydoc.plainpager - if os.system("({}) 2>{}".format(DEFAULT_PAGER, os.devnull)) == 0: - pager_cmd = os.getenv(DVC_PAGER, DEFAULT_PAGER_FORMATTED) + env_pager = os.getenv(DVC_PAGER) + if env_pager: - def less_pager(text): - return pydoc.tempfilepager(pydoc.plain(text), pager_cmd) + def user_pager(text): + return pydoc.tempfilepager(pydoc.plain(text), env_pager) - return less_pager + return user_pager + else: + if os.system("({}) 2>{}".format(DEFAULT_PAGER, os.devnull)) == 0: + + def less_pager(text): + return pydoc.tempfilepager( + pydoc.plain(text), DEFAULT_PAGER_FORMATTED + ) + + return less_pager logger.warning( "Unable to find `less` in the PATH. Check out " diff --git a/tests/unit/test_dagascii.py b/tests/unit/test_dagascii.py new file mode 100644 index 000000000..dec837006 --- /dev/null +++ b/tests/unit/test_dagascii.py @@ -0,0 +1,28 @@ +import mock +import os + +from dvc import dagascii +from dvc.env import DVC_PAGER + + +def test_less_pager_returned_when_less_found(): + with mock.patch.object(os, "system") as m: + m.return_value = 0 + pager = dagascii.find_pager() + + assert pager.__name__ == "less_pager" + + +def test_plainpager_returned_when_less_missing(): + with mock.patch.object(os, "system") as m: + m.return_value = 1 # any non-zero value + pager = dagascii.find_pager() + + assert pager.__name__ == "plainpager" + + +def test_tempfilepager_returned_when_var_defined(): + os.environ[DVC_PAGER] = dagascii.DEFAULT_PAGER + pager = dagascii.find_pager() + + assert pager.__name__ == "user_pager"