From ba359440e65d6443d9aedd138c5ed94682bf2d88 Mon Sep 17 00:00:00 2001 From: Jonathan Poelen Date: Fri, 19 Jan 2024 15:48:18 +0100 Subject: [PATCH] [ruff] fix some python warnings --- tools/conf_migration_tool/README.rst | 4 + .../tests/test_executable_version.py | 44 ++--- tools/sesman/README.rst | 4 + tools/sesman/sesmanworker/sesman.py | 10 +- tools/sesman/tests/test_addrutils.py | 4 +- tools/sesman/tests/test_proxy_log.py | 2 +- tools/sesman/tests/test_sesmanconf.py | 172 ++++++++---------- .../sesman/tests/test_targetaccuratefilter.py | 35 ++-- 8 files changed, 125 insertions(+), 150 deletions(-) diff --git a/tools/conf_migration_tool/README.rst b/tools/conf_migration_tool/README.rst index 8e5f5efeaf..e2f23d858b 100644 --- a/tools/conf_migration_tool/README.rst +++ b/tools/conf_migration_tool/README.rst @@ -4,3 +4,7 @@ Unit tests * Run tests:: python3 -m unittest discover -t . tests + +or + + pytest tests diff --git a/tools/conf_migration_tool/tests/test_executable_version.py b/tools/conf_migration_tool/tests/test_executable_version.py index e2d5a60fde..2ebebf883b 100644 --- a/tools/conf_migration_tool/tests/test_executable_version.py +++ b/tools/conf_migration_tool/tests/test_executable_version.py @@ -14,47 +14,47 @@ def test_operator_greater_than(self): v_3_5_9 = RedemptionVersion("3.5.9") v_3_5_10 = RedemptionVersion("3.5.10") v_3_11_9 = RedemptionVersion("3.11.9") - self.assertFalse(v_3_5_9 > v_3_5_9) - self.assertFalse(v_3_5_9 > v_3_5_10) - self.assertTrue(v_3_5_10 > v_3_5_9) - self.assertTrue(v_3_11_9 > v_3_5_9) - self.assertFalse(v_3_5_9 > v_3_11_9) + assert not (v_3_5_9 > v_3_5_9) + assert not (v_3_5_9 > v_3_5_10) + assert v_3_5_10 > v_3_5_9 + assert v_3_11_9 > v_3_5_9 + assert not (v_3_5_9 > v_3_11_9) v_3_5_9c = RedemptionVersion("3.5.9c") - self.assertFalse(v_3_5_9 > v_3_5_9c) - self.assertFalse(v_3_5_9c > v_3_5_9c) - self.assertTrue(v_3_5_9c > v_3_5_9) + assert not (v_3_5_9 > v_3_5_9c) + assert not (v_3_5_9c > v_3_5_9c) + assert v_3_5_9c > v_3_5_9 v_3_5_9d = RedemptionVersion("3.5.9d") - self.assertFalse(v_3_5_9c > v_3_5_9d) - self.assertTrue(v_3_5_9d > v_3_5_9c) + assert not (v_3_5_9c > v_3_5_9d) + assert v_3_5_9d > v_3_5_9c def test_operator_less_than(self): v_3_5_9 = RedemptionVersion("3.5.9") v_3_5_10 = RedemptionVersion("3.5.10") v_3_11_9 = RedemptionVersion("3.11.9") - self.assertFalse(v_3_5_9 < v_3_5_9) - self.assertFalse(v_3_5_10 < v_3_5_9) - self.assertTrue(v_3_5_9 < v_3_5_10) - self.assertFalse(v_3_11_9 < v_3_5_9) - self.assertTrue(v_3_5_9 < v_3_11_9) + assert not (v_3_5_9 < v_3_5_9) + assert not (v_3_5_10 < v_3_5_9) + assert v_3_5_9 < v_3_5_10 + assert not (v_3_11_9 < v_3_5_9) + assert v_3_5_9 < v_3_11_9 v_3_5_9c = RedemptionVersion("3.5.9c") - self.assertFalse(v_3_5_9c < v_3_5_9) - self.assertFalse(v_3_5_9c < v_3_5_9c) - self.assertTrue(v_3_5_9 < v_3_5_9c) + assert not (v_3_5_9c < v_3_5_9) + assert not (v_3_5_9c < v_3_5_9c) + assert v_3_5_9 < v_3_5_9c v_3_5_9d = RedemptionVersion("3.5.9d") - self.assertFalse(v_3_5_9d < v_3_5_9c) - self.assertTrue(v_3_5_9c < v_3_5_9d) + assert not (v_3_5_9d < v_3_5_9c) + assert v_3_5_9c < v_3_5_9d def test_operator_str(self): - self.assertEqual(str(RedemptionVersion("3.5.9")), "3.5.9") + assert str(RedemptionVersion("3.5.9")) == "3.5.9" def test_from_file(self): v_from_file = RedemptionVersion.from_file( "./tests/fixtures/REDEMPTION_VERSION") - self.assertEqual(str(v_from_file), "9.1.17") + assert str(v_from_file) == "9.1.17" with self.assertRaises(Exception): RedemptionVersion.from_file( diff --git a/tools/sesman/README.rst b/tools/sesman/README.rst index 8e5f5efeaf..e2f23d858b 100644 --- a/tools/sesman/README.rst +++ b/tools/sesman/README.rst @@ -4,3 +4,7 @@ Unit tests * Run tests:: python3 -m unittest discover -t . tests + +or + + pytest tests diff --git a/tools/sesman/sesmanworker/sesman.py b/tools/sesman/sesmanworker/sesman.py index d6a8b53af4..e0230cda44 100644 --- a/tools/sesman/sesmanworker/sesman.py +++ b/tools/sesman/sesmanworker/sesman.py @@ -1084,10 +1084,7 @@ def get_service(self) -> Tuple[Union[None, bool], str]: 'target_service': self.target_service_name, } if not self.internal_target: - self.internal_target = ( - True if self.target_service_name == 'INTERNAL' - else False - ) + self.internal_target = (self.target_service_name == 'INTERNAL') self.send_data(data_to_send) _status = True elif self.shared.get('selector') == MAGICASK: @@ -1244,8 +1241,7 @@ def get_service(self) -> Tuple[Union[None, bool], str]: data_to_send['target_service'] = service_name self._full_user_device_account = f"{target_login}@{device_name}:{wab_login}" if not self.internal_target: - self.internal_target = (True if s[2] == 'INTERNAL' - else False) + self.internal_target = (s[2] == 'INTERNAL') self.send_data(data_to_send) self.target_service_name = service_name self.target_group = s[0] @@ -1839,7 +1835,7 @@ def connect_to_target(self, selected_target) -> Tuple[Union[None, bool], str]: if _status: module = kv.get('proto_dest') - if module not in ['RDP', 'VNC', 'INTERNAL']: + if module not in {'RDP', 'VNC', 'INTERNAL'}: module = 'RDP' if self.internal_target: module = 'INTERNAL' diff --git a/tools/sesman/tests/test_addrutils.py b/tools/sesman/tests/test_addrutils.py index 0f5ea889e8..d890039510 100644 --- a/tools/sesman/tests/test_addrutils.py +++ b/tools/sesman/tests/test_addrutils.py @@ -6,7 +6,7 @@ class Test_addrutils(unittest.TestCase): def test_is_device_in_subnet_failure(self): def expect_false_result(device, subnet): with self.subTest(device=device, subnet=subnet): - self.assertFalse(is_device_in_subnet(device, subnet)) + assert not is_device_in_subnet(device, subnet) # with subnet param badly formatted @@ -65,7 +65,7 @@ def expect_false_result(device, subnet): def test_is_device_in_subnet_success(self): def expect_true_result(device, subnet): with self.subTest(device=device, subnet=subnet): - self.assertTrue(is_device_in_subnet(device, subnet), f"device={device} subnet={subnet}") + assert is_device_in_subnet(device, subnet) # with subnet matching (with IPv4 only) diff --git a/tools/sesman/tests/test_proxy_log.py b/tools/sesman/tests/test_proxy_log.py index a9f0dbd88a..6237926f24 100644 --- a/tools/sesman/tests/test_proxy_log.py +++ b/tools/sesman/tests/test_proxy_log.py @@ -7,7 +7,7 @@ class Test_RdpProxyLog(unittest.TestCase): @patch('syslog.syslog') - def test_log(self, mock): + def test_log(self, mock): # noqa: PLR6301 logger = RdpProxyLog() logger.update_context(1234, 'myname') diff --git a/tools/sesman/tests/test_sesmanconf.py b/tools/sesman/tests/test_sesmanconf.py index 53771feb3a..726d58835d 100644 --- a/tools/sesman/tests/test_sesmanconf.py +++ b/tools/sesman/tests/test_sesmanconf.py @@ -9,104 +9,84 @@ def test_fr(self): Tests some keywords are present in translated message """ SESMANCONF.language = 'fr' - self.assertIn("fermée à", TR(Sesmsg.SESSION_CLOSED_S)) - self.assertIn("licence", TR(Sesmsg.LICENCE_BLOCKER)) - self.assertIn("authentification", - TR(Sesmsg.AUTH_FAILED_WAB_S) % "user") - self.assertIn("enregistrement", TR(Sesmsg.ERROR_RECORD_PATH)) - self.assertIn("répertoire", TR(Sesmsg.ERROR_RECORD_PATH_S) % "chemin") - self.assertIn("valider", TR(Sesmsg.VALID_AUTHORISATION)) - self.assertIn("afficher", TR(Sesmsg.NOT_DISPLAY_MESSAGE)) - self.assertIn("changer votre mot de passe", TR(Sesmsg.CHANGEPASSWORD)) - self.assertIn("terminée par le client", - TR(Sesmsg.CONNECTION_CLOSED_BY_CLIENT)) - self.assertIn("Utilisateur", TR(Sesmsg.EMPTY_USER)) - self.assertIn("non valide", TR(Sesmsg.INVALID_USER)) - self.assertIn("erreur", TR(Sesmsg.NO_ERROR)) - self.assertIn("Cible %s inconnu", TR(Sesmsg.TARGET_S_NOT_FOUND)) - self.assertIn("cible", TR(Sesmsg.TARGET_UNREACHABLE)) - self.assertIn("échecs", TR(Sesmsg.TOO_MANY_LOGIN_FAILURES)) - self.assertIn("enregistrement", TR(Sesmsg.TRACE_WRITER_FAILED_S)) - self.assertIn("X509", TR(Sesmsg.X509_AUTH_REFUSED_BY_USER)) - self.assertIn("URL Redirection", TR(Sesmsg.URL_AUTH_REFUSED_BY_USER)) - self.assertIn("refusé", TR(Sesmsg.NOT_ACCEPT_MESSAGE)) - self.assertIn("sélectionnée", TR(Sesmsg.SELECTED_TARGET)) - self.assertIn("parsing", TR(Sesmsg.USERNAME_PARSE_ERROR_S)) - self.assertIn("expirera", TR(Sesmsg.PASSWORD_EXPIRE_IN_S_DAYS)) - self.assertIn("imminente", TR(Sesmsg.PASSWORD_EXPIRE_SOON)) - self.assertIn("authentification passthrough", - TR(Sesmsg.PASSTHROUGH_AUTH_FAILED_S)) - self.assertIn("dans le sous-réseau", TR(Sesmsg.IN_SUBNET_S)) - self.assertIn("pas au sous-réseau", TR(Sesmsg.NO_MATCH_SUBNET_S_S)) - self.assertIn("Erreur", TR(Sesmsg.ERROR_S)) - self.assertIn("Echec d'authentification", - TR(Sesmsg.AUTHENTICATION_FAILED)) - self.assertIn("Compte verrouillé", TR(Sesmsg.ACCOUNT_LOCKED)) - self.assertIn("démarrage", TR(Sesmsg.START_SESSION_FAILED)) - self.assertIn("Motif interdit détecté", TR(Sesmsg.PATTERN_KILL)) - self.assertIn("Session Probe", TR(Sesmsg.SESPROBE_LAUNCH_FAILED)) - self.assertIn("coupé la connexion", - TR(Sesmsg.SESPROBE_KEEPALIVE_MISSED)) - self.assertIn("Connexion sortante", - TR(Sesmsg.SESPROBE_OUTBOUND_CONNECTION_BLOCKING_FAILED)) - self.assertIn("Processus", TR(Sesmsg.SESPROBE_PROCESS_BLOCKING_FAILED)) - self.assertIn("Echec de lancement", - TR(Sesmsg.SESPROBE_FAILED_TO_RUN_STARTUP_APPLICATION)) - self.assertIn("reconnexion de Session Probe", - TR(Sesmsg.SESPROBE_RECONNECTION)) - self.assertIn("erreur fatale", - TR(Sesmsg.APPLICATION_FATAL_ERROR)) + assert "fermée à" in TR(Sesmsg.SESSION_CLOSED_S) + assert "licence" in TR(Sesmsg.LICENCE_BLOCKER) + assert "authentification" in TR(Sesmsg.AUTH_FAILED_WAB_S) % "user" + assert "enregistrement" in TR(Sesmsg.ERROR_RECORD_PATH) + assert "répertoire" in TR(Sesmsg.ERROR_RECORD_PATH_S) % "chemin" + assert "valider" in TR(Sesmsg.VALID_AUTHORISATION) + assert "afficher" in TR(Sesmsg.NOT_DISPLAY_MESSAGE) + assert "changer votre mot de passe" in TR(Sesmsg.CHANGEPASSWORD) + assert "terminée par le client" in TR(Sesmsg.CONNECTION_CLOSED_BY_CLIENT) + assert "Utilisateur" in TR(Sesmsg.EMPTY_USER) + assert "non valide" in TR(Sesmsg.INVALID_USER) + assert "erreur" in TR(Sesmsg.NO_ERROR) + assert "Cible %s inconnu" in TR(Sesmsg.TARGET_S_NOT_FOUND) + assert "cible" in TR(Sesmsg.TARGET_UNREACHABLE) + assert "échecs" in TR(Sesmsg.TOO_MANY_LOGIN_FAILURES) + assert "enregistrement" in TR(Sesmsg.TRACE_WRITER_FAILED_S) + assert "X509" in TR(Sesmsg.X509_AUTH_REFUSED_BY_USER) + assert "URL Redirection" in TR(Sesmsg.URL_AUTH_REFUSED_BY_USER) + assert "refusé" in TR(Sesmsg.NOT_ACCEPT_MESSAGE) + assert "sélectionnée" in TR(Sesmsg.SELECTED_TARGET) + assert "parsing" in TR(Sesmsg.USERNAME_PARSE_ERROR_S) + assert "expirera" in TR(Sesmsg.PASSWORD_EXPIRE_IN_S_DAYS) + assert "imminente" in TR(Sesmsg.PASSWORD_EXPIRE_SOON) + assert "authentification passthrough" in TR(Sesmsg.PASSTHROUGH_AUTH_FAILED_S) + assert "dans le sous-réseau" in TR(Sesmsg.IN_SUBNET_S) + assert "pas au sous-réseau" in TR(Sesmsg.NO_MATCH_SUBNET_S_S) + assert "Erreur" in TR(Sesmsg.ERROR_S) + assert "Echec d'authentification" in TR(Sesmsg.AUTHENTICATION_FAILED) + assert "Compte verrouillé" in TR(Sesmsg.ACCOUNT_LOCKED) + assert "démarrage" in TR(Sesmsg.START_SESSION_FAILED) + assert "Motif interdit détecté" in TR(Sesmsg.PATTERN_KILL) + assert "Session Probe" in TR(Sesmsg.SESPROBE_LAUNCH_FAILED) + assert "coupé la connexion" in TR(Sesmsg.SESPROBE_KEEPALIVE_MISSED) + assert "Connexion sortante" in TR(Sesmsg.SESPROBE_OUTBOUND_CONNECTION_BLOCKING_FAILED) + assert "Processus" in TR(Sesmsg.SESPROBE_PROCESS_BLOCKING_FAILED) + assert "Echec de lancement" in TR(Sesmsg.SESPROBE_FAILED_TO_RUN_STARTUP_APPLICATION) + assert "reconnexion de Session Probe" in TR(Sesmsg.SESPROBE_RECONNECTION) + assert "erreur fatale" in TR(Sesmsg.APPLICATION_FATAL_ERROR) def test_en(self): """ Tests some keywords are present in translated message """ - self.assertIn("close at", TR(Sesmsg.SESSION_CLOSED_S)) - self.assertIn("licence", TR(Sesmsg.LICENCE_BLOCKER)) - self.assertIn("Authentication", - TR(Sesmsg.AUTH_FAILED_WAB_S) % "user") - self.assertIn("recording path", TR(Sesmsg.ERROR_RECORD_PATH)) - self.assertIn("recording path for", - TR(Sesmsg.ERROR_RECORD_PATH_S) % "chemin") - self.assertIn("Validate", TR(Sesmsg.VALID_AUTHORISATION)) - self.assertIn("display message", TR(Sesmsg.NOT_DISPLAY_MESSAGE)) - self.assertIn("change your password", TR(Sesmsg.CHANGEPASSWORD)) - self.assertIn("closed by client", - TR(Sesmsg.CONNECTION_CLOSED_BY_CLIENT)) - self.assertIn("Empty user", TR(Sesmsg.EMPTY_USER)) - self.assertIn("Invalid user", TR(Sesmsg.INVALID_USER)) - self.assertIn("No error", TR(Sesmsg.NO_ERROR)) - self.assertIn("not found", TR(Sesmsg.TARGET_S_NOT_FOUND)) - self.assertIn("unreachable", TR(Sesmsg.TARGET_UNREACHABLE)) - self.assertIn("many login failures", TR(Sesmsg.TOO_MANY_LOGIN_FAILURES)) - self.assertIn("writer failed", TR(Sesmsg.TRACE_WRITER_FAILED_S)) - self.assertIn("X509", TR(Sesmsg.X509_AUTH_REFUSED_BY_USER)) - self.assertIn("URL Redirection", TR(Sesmsg.URL_AUTH_REFUSED_BY_USER)) - self.assertIn("refused", TR(Sesmsg.NOT_ACCEPT_MESSAGE)) - self.assertIn("Selected", TR(Sesmsg.SELECTED_TARGET)) - self.assertIn("parse error", TR(Sesmsg.USERNAME_PARSE_ERROR_S)) - self.assertIn("will expire in", TR(Sesmsg.PASSWORD_EXPIRE_IN_S_DAYS)) - self.assertIn("expire soon", TR(Sesmsg.PASSWORD_EXPIRE_SOON)) - self.assertIn("Passthrough authentication failed", - TR(Sesmsg.PASSTHROUGH_AUTH_FAILED_S)) - self.assertIn("subnet", TR(Sesmsg.IN_SUBNET_S)) - self.assertIn("not in", TR(Sesmsg.NO_MATCH_SUBNET_S_S)) - self.assertIn("Error", TR(Sesmsg.ERROR_S)) - self.assertIn("Authentication failed", - TR(Sesmsg.AUTHENTICATION_FAILED)) - self.assertIn("Account locked", TR(Sesmsg.ACCOUNT_LOCKED)) - self.assertIn("Failed to start", TR(Sesmsg.START_SESSION_FAILED)) - self.assertIn("Forbidden pattern", TR(Sesmsg.PATTERN_KILL)) - self.assertIn("Could not launch Session Probe", - TR(Sesmsg.SESPROBE_LAUNCH_FAILED)) - self.assertIn("connection closed", - TR(Sesmsg.SESPROBE_KEEPALIVE_MISSED)) - self.assertIn("outbound connection", - TR(Sesmsg.SESPROBE_OUTBOUND_CONNECTION_BLOCKING_FAILED)) - self.assertIn("process", TR(Sesmsg.SESPROBE_PROCESS_BLOCKING_FAILED)) - self.assertIn("application launch failed", - TR(Sesmsg.SESPROBE_FAILED_TO_RUN_STARTUP_APPLICATION)) - self.assertIn("Unauthorized Session Probe reconnection", - TR(Sesmsg.SESPROBE_RECONNECTION)) - self.assertIn("fatal error", - TR(Sesmsg.APPLICATION_FATAL_ERROR)) + assert "close at" in TR(Sesmsg.SESSION_CLOSED_S) + assert "licence" in TR(Sesmsg.LICENCE_BLOCKER) + assert "Authentication" in TR(Sesmsg.AUTH_FAILED_WAB_S) % "user" + assert "recording path" in TR(Sesmsg.ERROR_RECORD_PATH) + assert "recording path for" in TR(Sesmsg.ERROR_RECORD_PATH_S) % "chemin" + assert "Validate" in TR(Sesmsg.VALID_AUTHORISATION) + assert "display message" in TR(Sesmsg.NOT_DISPLAY_MESSAGE) + assert "change your password" in TR(Sesmsg.CHANGEPASSWORD) + assert "closed by client" in TR(Sesmsg.CONNECTION_CLOSED_BY_CLIENT) + assert "Empty user" in TR(Sesmsg.EMPTY_USER) + assert "Invalid user" in TR(Sesmsg.INVALID_USER) + assert "No error" in TR(Sesmsg.NO_ERROR) + assert "not found" in TR(Sesmsg.TARGET_S_NOT_FOUND) + assert "unreachable" in TR(Sesmsg.TARGET_UNREACHABLE) + assert "many login failures" in TR(Sesmsg.TOO_MANY_LOGIN_FAILURES) + assert "writer failed" in TR(Sesmsg.TRACE_WRITER_FAILED_S) + assert "X509" in TR(Sesmsg.X509_AUTH_REFUSED_BY_USER) + assert "URL Redirection" in TR(Sesmsg.URL_AUTH_REFUSED_BY_USER) + assert "refused" in TR(Sesmsg.NOT_ACCEPT_MESSAGE) + assert "Selected" in TR(Sesmsg.SELECTED_TARGET) + assert "parse error" in TR(Sesmsg.USERNAME_PARSE_ERROR_S) + assert "will expire in" in TR(Sesmsg.PASSWORD_EXPIRE_IN_S_DAYS) + assert "expire soon" in TR(Sesmsg.PASSWORD_EXPIRE_SOON) + assert "Passthrough authentication failed" in TR(Sesmsg.PASSTHROUGH_AUTH_FAILED_S) + assert "subnet" in TR(Sesmsg.IN_SUBNET_S) + assert "not in" in TR(Sesmsg.NO_MATCH_SUBNET_S_S) + assert "Error" in TR(Sesmsg.ERROR_S) + assert "Authentication failed" in TR(Sesmsg.AUTHENTICATION_FAILED) + assert "Account locked" in TR(Sesmsg.ACCOUNT_LOCKED) + assert "Failed to start" in TR(Sesmsg.START_SESSION_FAILED) + assert "Forbidden pattern" in TR(Sesmsg.PATTERN_KILL) + assert "Could not launch Session Probe" in TR(Sesmsg.SESPROBE_LAUNCH_FAILED) + assert "connection closed" in TR(Sesmsg.SESPROBE_KEEPALIVE_MISSED) + assert "outbound connection" in TR(Sesmsg.SESPROBE_OUTBOUND_CONNECTION_BLOCKING_FAILED) + assert "process" in TR(Sesmsg.SESPROBE_PROCESS_BLOCKING_FAILED) + assert "application launch failed" in TR(Sesmsg.SESPROBE_FAILED_TO_RUN_STARTUP_APPLICATION) + assert "Unauthorized Session Probe reconnection" in TR(Sesmsg.SESPROBE_RECONNECTION) + assert "fatal error" in TR(Sesmsg.APPLICATION_FATAL_ERROR) diff --git a/tools/sesman/tests/test_targetaccuratefilter.py b/tools/sesman/tests/test_targetaccuratefilter.py index 8d62f18e44..eb00823a11 100644 --- a/tools/sesman/tests/test_targetaccuratefilter.py +++ b/tools/sesman/tests/test_targetaccuratefilter.py @@ -10,9 +10,8 @@ def test_get_selector_filter_mode_with_several_patterns(self): def expect_is_selector_filter_mode_equal( pattern, expected_selector_filter_mode): with self.subTest(pattern=pattern): - self.assertEqual( - taf.get_selector_filter_mode(pattern), - expected_selector_filter_mode) + assert taf.get_selector_filter_mode(pattern) \ + == expected_selector_filter_mode expect_is_selector_filter_mode_equal( @@ -39,9 +38,8 @@ def test_get_filter_pattern_dict_with_several_filter_patterns(self): def expect_is_filter_pattern_dict_equal(filter_patterns, expected_filter_pattern_dict): with self.subTest(filter_patterns=filter_patterns): - self.assertDictEqual( - taf.get_filter_pattern_dict(filter_patterns), - expected_filter_pattern_dict) + assert taf.get_filter_pattern_dict(filter_patterns) \ + == expected_filter_pattern_dict # with one filter @@ -112,8 +110,7 @@ def test_is_filterable_with_several_filter_pattern_dicts(self): def expect_is_filterable_true(filter_pattern_dict, target_field_dict): with self.subTest(filter_pattern_dict=filter_pattern_dict): - self.assertTrue(taf.is_filterable(filter_pattern_dict, - target_field_dict)) + assert taf.is_filterable(filter_pattern_dict, target_field_dict) # with one filter @@ -233,8 +230,7 @@ def test_is_filterable_with_filter_failure(self): def expect_is_filterable_false(filter_pattern_dict, target_field_dict): with self.subTest(filter_pattern_dict=filter_pattern_dict): - self.assertFalse(taf.is_filterable(filter_pattern_dict, - target_field_dict)) + assert not taf.is_filterable(filter_pattern_dict, target_field_dict) expect_is_filterable_false( @@ -283,10 +279,8 @@ def expect_filter_keyword_duplicate_error(filter_patterns, with self.subTest(filter_patterns=filter_patterns): with self.assertRaises(FilterKeywordDuplicateError) as cm: taf.get_filter_pattern_dict(filter_patterns) - self.assertEqual(cm.exception.args[1], - ("duplicated filter keyword with '%s'" - % expected_filter_keyword_err)) - + assert cm.exception.args[1] \ + == f"duplicated filter keyword with '{expected_filter_keyword_err}'" expect_filter_keyword_duplicate_error( "?account=my_account&?account=my_account", @@ -302,9 +296,8 @@ def expect_filter_keyword_syntax_error(filter_patterns, with self.subTest(filter_patterns=filter_patterns): with self.assertRaises(FilterKeywordSyntaxError) as cm: taf.get_filter_pattern_dict(filter_patterns) - self.assertEqual(cm.exception.args[1], - ("unknown filter keyword with '%s'" - % expected_filter_keyword_err)) + assert cm.exception.args[1] \ + == f"unknown filter keyword with '{expected_filter_keyword_err}'" expect_filter_keyword_syntax_error( @@ -332,11 +325,9 @@ def expect_parsing_error(filter_patterns, expected_bad_string_err): with self.subTest(filter_patterns=filter_patterns): with self.assertRaises(ParsingError) as cm: taf.get_filter_pattern_dict(filter_patterns) - self.assertEqual(cm.exception.args[1], - ("'keyword" - + taf.FILTER_KV_SEPARATOR - + "value' format parsing error with '%s'" - % expected_bad_string_err)) + assert cm.exception.args[1] \ + == (f"'keyword{taf.FILTER_KV_SEPARATOR}value' " + f"format parsing error with '{expected_bad_string_err}'") expect_parsing_error(