"""Compare original and declared wrong-target selectors on an incomplete example."""
from pathlib import Path
import hashlib
import json
import sys
import tempfile

source = Path(sys.argv[1]).read_text()
original = "PROJECTS=('jack-henry-symitar','jack-henry-silverlake','fiserv-premier')"
wrong = "PROJECTS=('jack-henry-banking','fiserv-banking')"
assert source.count(original) == 1
with tempfile.TemporaryDirectory(prefix='selector-output-comparison-') as directory:
    root = Path(directory)
    (root / 'examples' / 'fiserv-premier').mkdir(parents=True)
    for label, program in [('current', source), ('declared-old-target-mutation', source.replace(original, wrong))]:
        namespace = {'__file__': str(root / 'scripts' / 'banking_contract_scope.py'), '__name__': 'selector_probe'}
        exec(compile(program, 'banking_contract_scope.py', 'exec'), namespace)
        result = {'selector': label, 'sourceSha256': hashlib.sha256(program.encode()).hexdigest(),
                  'fixture': 'examples/fiserv-premier exists; required files absent'}
        try:
            result.update(selected=namespace['selected'](root), outcome='selection returned')
        except ValueError as error:
            result.update(error=str(error), outcome='selection refused')
        print(json.dumps(result, sort_keys=True))
