diff --git a/dvc/dagascii.py b/dvc/dagascii.py index a686392f8..a8819bb01 100644 --- a/dvc/dagascii.py +++ b/dvc/dagascii.py @@ -28,25 +28,22 @@ DEFAULT_PAGER_FORMATTED = "{} --chop-long-lines --clear-screen".format( def find_pager(): + def make_pager(cmd): + def pager(text): + return pydoc.tempfilepager(pydoc.plain(text), cmd) + + pager.cmd = cmd + return pager + if not sys.stdout.isatty(): return pydoc.plainpager env_pager = os.getenv(DVC_PAGER) if env_pager: + return make_pager(env_pager) - def user_pager(text): - return pydoc.tempfilepager(pydoc.plain(text), env_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 + if os.system("({}) 2>{}".format(DEFAULT_PAGER, os.devnull)) == 0: + return make_pager(DEFAULT_PAGER_FORMATTED) 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 index dec837006..1fa61d48d 100644 --- a/tests/unit/test_dagascii.py +++ b/tests/unit/test_dagascii.py @@ -10,7 +10,7 @@ def test_less_pager_returned_when_less_found(): m.return_value = 0 pager = dagascii.find_pager() - assert pager.__name__ == "less_pager" + assert pager.cmd == dagascii.DEFAULT_PAGER_FORMATTED def test_plainpager_returned_when_less_missing(): @@ -25,4 +25,4 @@ def test_tempfilepager_returned_when_var_defined(): os.environ[DVC_PAGER] = dagascii.DEFAULT_PAGER pager = dagascii.find_pager() - assert pager.__name__ == "user_pager" + assert pager.cmd == dagascii.DEFAULT_PAGER