mirror of
https://github.com/osm-search/Nominatim.git
synced 2026-02-26 11:08:13 +00:00
add support for external sanitizer modules
This commit is contained in:
@@ -13,14 +13,14 @@ from nominatim.tokenizer.place_sanitizer import PlaceSanitizer
|
||||
from nominatim.data.place_info import PlaceInfo
|
||||
|
||||
@pytest.fixture
|
||||
def sanitize(request):
|
||||
def sanitize(request, def_config):
|
||||
sanitizer_args = {'step': 'clean-housenumbers'}
|
||||
for mark in request.node.iter_markers(name="sanitizer_params"):
|
||||
sanitizer_args.update({k.replace('_', '-') : v for k,v in mark.kwargs.items()})
|
||||
|
||||
def _run(**kwargs):
|
||||
place = PlaceInfo({'address': kwargs})
|
||||
_, address = PlaceSanitizer([sanitizer_args]).process_names(place)
|
||||
_, address = PlaceSanitizer([sanitizer_args], def_config).process_names(place)
|
||||
|
||||
return sorted([(p.kind, p.name) for p in address])
|
||||
|
||||
@@ -45,24 +45,24 @@ def test_filter_kind(sanitize):
|
||||
|
||||
|
||||
@pytest.mark.parametrize('number', ('6523', 'n/a', '4'))
|
||||
def test_convert_to_name_converted(number):
|
||||
def test_convert_to_name_converted(def_config, number):
|
||||
sanitizer_args = {'step': 'clean-housenumbers',
|
||||
'convert-to-name': (r'\d+', 'n/a')}
|
||||
|
||||
place = PlaceInfo({'address': {'housenumber': number}})
|
||||
names, address = PlaceSanitizer([sanitizer_args]).process_names(place)
|
||||
names, address = PlaceSanitizer([sanitizer_args], def_config).process_names(place)
|
||||
|
||||
assert ('housenumber', number) in set((p.kind, p.name) for p in names)
|
||||
assert 'housenumber' not in set(p.kind for p in address)
|
||||
|
||||
|
||||
@pytest.mark.parametrize('number', ('a54', 'n.a', 'bow'))
|
||||
def test_convert_to_name_unconverted(number):
|
||||
def test_convert_to_name_unconverted(def_config, number):
|
||||
sanitizer_args = {'step': 'clean-housenumbers',
|
||||
'convert-to-name': (r'\d+', 'n/a')}
|
||||
|
||||
place = PlaceInfo({'address': {'housenumber': number}})
|
||||
names, address = PlaceSanitizer([sanitizer_args]).process_names(place)
|
||||
names, address = PlaceSanitizer([sanitizer_args], def_config).process_names(place)
|
||||
|
||||
assert 'housenumber' not in set(p.kind for p in names)
|
||||
assert ('housenumber', number) in set((p.kind, p.name) for p in address)
|
||||
|
||||
Reference in New Issue
Block a user