Skip to content

Commit 8c3663b

Browse files
committed
Add max number of selectors for kato
- Improve kato exception message
1 parent 3c10e72 commit 8c3663b

File tree

1 file changed

+14
-9
lines changed
  • src/com/dtmilano/android/kato

1 file changed

+14
-9
lines changed

src/com/dtmilano/android/kato/kato.py

Lines changed: 14 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -17,8 +17,9 @@
1717
1818
@author: Diego Torres Milano
1919
"""
20-
20+
import re
2121
import sys
22+
import textwrap
2223
from collections import OrderedDict
2324

2425
from culebratester_client import Selector
@@ -32,6 +33,7 @@
3233
#
3334

3435
DEBUG = False
36+
DEBUG_WRAPPER = False
3537

3638

3739
class Kato:
@@ -41,6 +43,7 @@ def __init__(self):
4143
self.distances = OrderedDict()
4244
# If pkg has been specified in the selector, only finds other selectors with the same pkg when True
4345
self.comply_with_pkg = False
46+
self.max_num_of_selectors = 5
4447

4548

4649
def kato(func):
@@ -54,7 +57,7 @@ def kato(func):
5457
"""
5558

5659
def wrapper(*args, **kwargs):
57-
if DEBUG:
60+
if DEBUG_WRAPPER:
5861
print('kato.wrapper:', args, kwargs)
5962
try:
6063
return func(*args, **kwargs)
@@ -63,7 +66,8 @@ def wrapper(*args, **kwargs):
6366
if not helper.kato.enabled:
6467
raise e
6568
find_me_the_selectors(e, *args, **kwargs, func=func.__name__, distance_func=levenshtein_distance,
66-
distance_func_argument_mapper=str)
69+
distance_func_argument_mapper=str,
70+
max_num_of_selectors=helper.kato.max_num_of_selectors)
6771

6872
return wrapper
6973

@@ -82,7 +86,7 @@ def find_me_the_selectors(e: ApiException, *args, **kwargs):
8286
:return: re-raise the original exception
8387
"""
8488
if DEBUG:
85-
print('find_me_the_selectors', args, kwargs, file=sys.stderr)
89+
print('🐝 find_me_the_selectors', args, kwargs, file=sys.stderr)
8690
helper = args[0].uiAutomatorHelper
8791
msg = ''
8892
if helper.kato.enabled:
@@ -96,10 +100,11 @@ def find_me_the_selectors(e: ApiException, *args, **kwargs):
96100
helper.kato.selectors = list(filter(lambda _s: _s.pkg == selector.pkg, helper.kato.selectors))
97101
_d = dict()
98102
for n, s in enumerate(helper.kato.selectors):
99-
if n == 0:
100-
msg += 'Kato: selector distances:\n'
101-
d = distance(mapper(selector), mapper(s))
102-
_d[d] = s
103-
msg += f'{d} -> {s}\n'
103+
_d[distance(mapper(selector), mapper(s))] = s
104104
helper.kato.distances = OrderedDict(sorted(_d.items(), reverse=False))
105+
msg = f"Kato: selector distances:\n"
106+
for n, (k, v) in enumerate(helper.kato.distances.items()):
107+
msg += textwrap.indent(f"{k}{v}\n", " ", lambda line: re.match(r"^\d+ ", line) is None)
108+
if n >= kwargs["max_num_of_selectors"]:
109+
break
105110
raise ApiException(msg, e)

0 commit comments

Comments
 (0)