diff --git a/tests/test_utfcn_core_generated.py b/tests/test_utfcn_core_generated.py index 5923109..527570b 100644 --- a/tests/test_utfcn_core_generated.py +++ b/tests/test_utfcn_core_generated.py @@ -275,6 +275,39 @@ class GeneratedSignatureMatchingTests(unittest.TestCase): self.assertEqual("partial", result["SampleMaskInvert"][0]["tier"]) self.assertFalse(result["SampleMaskInvert"][0]["verified"]) + def test_generated_signature_with_different_input_name_falls_back_to_serialized_signature(self): + generated = _empty_generated() + generated["sigs"]["SampleMaskInvert"] = { + "inputs": {"mask": "MASK"}, + "required": {"mask"}, + "outputs": ["MASK"], + "output_names": ["mask"], + } + generated["meta"]["SampleMaskInvert"] = { + "source": "generated", + "pack": "sample-pack", + "display": "Sample Mask Invert", + "repository": "https://github.com/example/sample-pack", + "confidence": "static_exact", + } + generated["by_out"]["MASK"].append("SampleMaskInvert") + + result = utfcn_core.match( + self._ctx(generated=generated), + [ + { + "type": "SampleMaskInvert", + "inputs": {"masks": "MASK"}, + "outputs": ["MASK"], + "output_names": ["mask"], + } + ], + ) + + self.assertEqual("CoreMaskInvert", result["SampleMaskInvert"][0]["to"]) + self.assertEqual("partial", result["SampleMaskInvert"][0]["tier"]) + self.assertFalse(result["SampleMaskInvert"][0]["verified"]) + def test_malformed_generated_context_falls_back_without_raising(self): result = utfcn_core.match( self._ctx(generated={"sigs": "bad", "meta": "bad"}), diff --git a/utfcn_core.py b/utfcn_core.py index 1cc1e46..71cdc00 100644 --- a/utfcn_core.py +++ b/utfcn_core.py @@ -414,12 +414,11 @@ def _generated_signature_conflicts(serialized_sig, generated_sig): return False generated_inputs = generated_sig["inputs"] - generated_input_types = set(generated_inputs.values()) for name, typ in serialized_sig["inputs"].items(): if name in generated_inputs: if generated_inputs[name] != typ: return True - elif typ not in generated_input_types: + else: return True if Counter(serialized_sig["outputs"]) - Counter(generated_sig["outputs"]):