"""Synthetic Git stash lab. No arguments, existing repositories, remotes or secrets."""
import tempfile,subprocess,os,json,platform
from pathlib import Path
checks=[]
with tempfile.TemporaryDirectory(prefix='stash-boundary-') as td:
 root=Path(td);home=root/'home';home.mkdir();hooks=root/'hooks';hooks.mkdir()
 env={k:v for k,v in os.environ.items() if not k.startswith('GIT_')};env.update(HOME=str(home),GIT_CONFIG_GLOBAL=os.devnull,GIT_CONFIG_NOSYSTEM='1',GIT_TERMINAL_PROMPT='0')
 def git(r,*a):
  return subprocess.check_output(['/usr/bin/git','-c','core.hooksPath='+str(hooks),'-c','user.name=Fixture','-c','user.email=fixture@example.invalid',*a],cwd=r,env=env,stderr=subprocess.PIPE,text=True).strip()
 version=git(root,'--version')
 for name,flags in [('default',[]),('untracked',['-u']),('all',['-a'])]:
  r=root/name;r.mkdir();git(r,'init','-q');(r/'.gitignore').write_text('.env.local\n');(r/'tracked.txt').write_text('base\n');git(r,'add','.');git(r,'commit','-qm','fixture baseline')
  (r/'tracked.txt').write_text('staged\n');git(r,'add','tracked.txt');(r/'tracked.txt').write_text('working\n');(r/'notes.txt').write_text('synthetic note\n');(r/'.env.local').write_text('DUMMY=not-a-secret\n')
  git(r,'stash','push',*flags,'-m',name)
  expected=(name=='default',name!='all')
  assert ((r/'notes.txt').exists(),(r/'.env.local').exists())==expected
  assert (r/'tracked.txt').read_text()=='base\n'
  checks.append({'case':name+'_working_files','passed':True,'untracked_remains':expected[0],'ignored_remains':expected[1]})
  if name=='all':
   assert git(r,'show','stash@{0}^3:.env.local')=='DUMMY=not-a-secret'
   checks.append({'case':'all_stores_ignored_in_git_object','passed':True})
   git(r,'stash','apply','--index')
   assert (r/'tracked.txt').read_text()=='working\n' and git(r,'show',':tracked.txt')=='staged'
   assert (r/'.env.local').read_text()=='DUMMY=not-a-secret\n' and (r/'notes.txt').read_text()=='synthetic note\n'
   checks.append({'case':'apply_index_restores_all_four_states','passed':True})
   assert git(r,'rev-parse','--verify','refs/stash')
   checks.append({'case':'apply_keeps_stash_reference','passed':True})
 print(json.dumps({'passed':True,'git':version,'python':platform.python_version(),'checks':checks,'scope':'synthetic local Git only; no product or cloud backup test'},indent=2))
