diff --git a/src/dabdatasync/__main__.py b/src/dabdatasync/__main__.py index 1eb965a..4ab0b31 100644 --- a/src/dabdatasync/__main__.py +++ b/src/dabdatasync/__main__.py @@ -15,6 +15,7 @@ from typing import cast, Union, Optional import sys from tap import Tap +from loguru import logger from . import __Summuary__, __Name__ from . import datasync @@ -86,8 +87,17 @@ def fct_main(i_args: list[str]) -> None: # pylint: disable=too-many-branches,to args: dabdatasync_args = parser.parse_args(i_args) + logger.remove() if args.verbosity: - pass + if args.verbosity == 1: + logger.add(sys.stdout, level="WARNING") + elif args.verbosity == 2: + logger.add(sys.stdout, level="INFO") + else: + logger.add(sys.stdout, level="DEBUG") + else: + logger.add(sys.stdout, level="ERROR") + logger.add(sys.stderr, level="ERROR") dabdatasync = datasync.DataSync_Factory.get_DataSync() if len(dabdatasync) == 0: diff --git a/test/test_datasync.py b/test/test_datasync.py index d4fc904..7212d23 100644 --- a/test/test_datasync.py +++ b/test/test_datasync.py @@ -47,6 +47,31 @@ class TestDabDataSync(unittest.TestCase): print(capted_stdout.getvalue()) print(capted_stderr.getvalue()) + def test_cli_verbosity(self): + dabdatasync.DataSync_Factory.manifest_path = testdir_path / "test_manifest_nextcloud.json" + fct_main(["WipeRemoteData"]) + + with redirect_stdout(StringIO()) as capted_stdout, redirect_stderr(StringIO()) as capted_stderr: + fct_main(["PullData"]) + self.assertEqual(capted_stdout.getvalue(), "") + self.assertEqual(capted_stderr.getvalue(), "") + + fct_main(["WipeLocalData"]) + + with redirect_stdout(StringIO()) as capted_stdout, redirect_stderr(StringIO()) as capted_stderr: + fct_main(["-v", "PullData"]) + self.assertTrue("WARNING" in capted_stdout.getvalue()) + self.assertFalse("INFO" in capted_stdout.getvalue()) + self.assertEqual(capted_stderr.getvalue(), "") + + fct_main(["WipeLocalData"]) + + with redirect_stdout(StringIO()) as capted_stdout, redirect_stderr(StringIO()) as capted_stderr: + fct_main(["-vv", "PullData"]) + self.assertTrue("INFO" in capted_stdout.getvalue()) + self.assertTrue("WARNING" in capted_stdout.getvalue()) + self.assertEqual(capted_stderr.getvalue(), "") + def test_cli_GetServices(self): dabdatasync.DataSync_Factory.manifest_path = testdir_path / "test_manifest_nextcloud.json" with redirect_stdout(StringIO()) as capted_stdout, redirect_stderr(StringIO()) as capted_stderr: