mirror of
https://github.com/datahub-project/datahub.git
synced 2025-07-06 16:49:03 +00:00
63 lines
2.1 KiB
Python
63 lines
2.1 KiB
Python
from datahub.configuration.common import KeyValuePattern
|
|
|
|
|
|
def test_empty_pattern() -> None:
|
|
pattern = KeyValuePattern.all()
|
|
assert pattern.value("foo") == []
|
|
|
|
|
|
def test_basic_pattern() -> None:
|
|
pattern = KeyValuePattern(rules={"foo": ["bar", "baz"]})
|
|
assert pattern.value("foo") == ["bar", "baz"]
|
|
assert pattern.value("bar") == []
|
|
|
|
|
|
def test_regex_pattern() -> None:
|
|
pattern = KeyValuePattern(rules={"foo.*": ["bar", "baz"]})
|
|
assert pattern.value("foo") == ["bar", "baz"]
|
|
assert pattern.value("foo.bar") == ["bar", "baz"]
|
|
assert pattern.value("bar") == []
|
|
|
|
|
|
def test_no_fallthrough_pattern() -> None:
|
|
pattern = KeyValuePattern(rules={"foo.*": ["bar", "baz"], ".*": ["qux"]})
|
|
assert pattern.value("foo") == ["bar", "baz"]
|
|
assert pattern.value("foo.bar") == ["bar", "baz"]
|
|
assert pattern.value("bar") == ["qux"]
|
|
|
|
|
|
def test_fallthrough_pattern() -> None:
|
|
pattern = KeyValuePattern(
|
|
rules={"foo.*": ["bar", "baz"], ".*": ["qux"]}, first_match_only=False
|
|
)
|
|
assert pattern.value("foo") == ["bar", "baz", "qux"]
|
|
assert pattern.value("foo.bar") == ["bar", "baz", "qux"]
|
|
assert pattern.value("bar") == ["qux"]
|
|
|
|
|
|
def test_fullmatch_pattern() -> None:
|
|
pattern = KeyValuePattern(rules={"^foo$": ["bar", "baz"]})
|
|
assert pattern.value("foo") == ["bar", "baz"]
|
|
assert pattern.value("foo.bar") == []
|
|
|
|
|
|
def test_fullmatch_mix_pattern() -> None:
|
|
pattern = KeyValuePattern(
|
|
rules={
|
|
"^aggregate.player_segment$": ["urn:li:tag:Player360"],
|
|
"table_a": ["urn:li:tag:tag_a"],
|
|
".*marketing.*": ["urn:li:tag:marketing"],
|
|
},
|
|
first_match_only=False,
|
|
)
|
|
assert pattern.value("aggregate.player_segment") == ["urn:li:tag:Player360"]
|
|
assert pattern.value("aggregate.player_segment_2") == []
|
|
assert pattern.value("marketing.table_a") == [
|
|
# The matches implicitly have a ^ at the beginning, so table_a is not a match.
|
|
"urn:li:tag:marketing",
|
|
]
|
|
assert pattern.value("table_a.marketing") == [
|
|
"urn:li:tag:tag_a",
|
|
"urn:li:tag:marketing",
|
|
]
|