
    j                     "   d Z ddlZddlmc mZ ddlZddlZddl	m
Z
  e
e      j                         j                  d   dz  Zej                  j!                  d ee             ddlmZ dZdZd	Zd
Zde
dedz  ddfdZd Zd Zd Zd Zd Zy)u_  regression: task-2575 — _resolve_diff_base() fallback 동작 검증.

_resolve_diff_base(task_id, workspace) 함수가 다양한 조건에서
올바른 diff base를 반환하는지 검증:

1. lock 파일 없음 + worktree 컨텍스트 → "origin/main"
2. lock 파일 있음, lock_sha 없음 + worktree 컨텍스트 → "origin/main"
3. lock 파일 있음, lock_sha 있음 + worktree 컨텍스트 → lock_sha 값
4. lock_sha 있음 + non-worktree 컨텍스트 → "origin/main"
5. lock 파일 손상 (invalid JSON) + worktree → "origin/main"

import:
    from pre_push_guard import _resolve_diff_base
    N)Path   scripts)_resolve_diff_base(bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbz"/home/jay/workspace/.worktrees/fooz/home/jay/workspacez	task-9100	workspacedatareturnc                     | dz  dz  }|j                  dd       |t         dz  }|y|j                  t        j                  |      d       y)	u9   workspace 아래 .tasks/locks/TASK_ID.lock 파일 생성..taskslocksTparentsexist_ok.lockNutf-8encoding)mkdirTASK_ID
write_textjsondumps)r   r	   	locks_dir	lock_files       >/home/jay/workspace/tests/regression/test_lock_sha_fallback.py_make_lock_filer   !   sV    H$w.IOOD4O0wiu--I|D)G<    c                    |j                  dd       |j                  dd        t        t        |       }d}||k(  }|st	        j
                  d|fd||f      dt        j                         v st	        j                  |      rt	        j                  |      ndt	        j                  |      d	z  }d
d|iz  }t        t	        j                  |            d x}}y )NGIT_DIR 	os.getcwdc                      t         S NWORKTREE_CWD r   r   <lambda>z@test_no_lock_file_worktree_returns_origin_main.<locals>.<lambda>1       \ r   origin/main==z%(py0)s == %(py3)sresultpy0py3assert %(py5)spy5)setenvsetattrr   r   
@pytest_ar_call_reprcompare@py_builtinslocals_should_repr_global_name	_safereprAssertionError_format_explanationtmp_pathmonkeypatchr.   @py_assert2@py_assert1@py_format4@py_format6s          r   .test_no_lock_file_worktree_returns_origin_mainrE   /   s    y"%%9:2F""6]""""6]""""""6"""6"""]"""""""r   c           	         |j                  dd       |j                  dd        t        | t        ddt         dt        dd	       t        t        |       }d
}||k(  }|st        j                  d|fd||f      dt        j                         v st        j                  |      rt        j                  |      ndt        j                  |      dz  }dd|iz  }t        t        j                  |            d x}}y )Nr    r!   r"   c                      t         S r$   r%   r'   r   r   r(   zItest_lock_file_no_lock_sha_worktree_returns_origin_main.<locals>.<lambda>=   r)   r   enkiztask/z-dev5*   )task_idbotbranchworktreepidr*   r+   r-   r.   r/   r2   r3   )r4   r5   r   r   r&   r   r6   r7   r8   r9   r:   r;   r<   r=   r>   s          r   7test_lock_file_no_lock_sha_worktree_returns_origin_mainrO   ;   s    y"%%9:H'%(    2F""6]""""6]""""""6"""6"""]"""""""r   c                 Z   |j                  dd       |j                  dd        t        | t        t        d       t        t        |       }|t        k(  }|st        j                  d|fd|t        f      dt        j                         v st        j                  |      rt        j                  |      ndd	t        j                         v st        j                  t              rt        j                  t              nd	d
z  }dd|iz  }t        t        j                  |            d }y )Nr    r!   r"   c                      t         S r$   r%   r'   r   r   r(   z<test_lock_sha_present_worktree_returns_sha.<locals>.<lambda>Q   r)   r   rJ   lock_shar+   )z%(py0)s == %(py2)sr.   	VALID_SHA)r0   py2zassert %(py4)spy4r4   r5   r   r   rT   r   r6   r7   r8   r9   r:   r;   r<   r=   )r?   r@   r.   rB   @py_format3@py_format5s         r   *test_lock_sha_present_worktree_returns_sharZ   O   s    y"%%9:H 
  2FY6Y66YYr   c                    |j                  dd       |j                  dd        t        | t        t        d       t        t        |       }d}||k(  }|st        j                  d|fd||f      d	t        j                         v st        j                  |      rt        j                  |      nd	t        j                  |      d
z  }dd|iz  }t        t        j                  |            d x}}y )Nr    r!   r"   c                      t         S r$   )
NORMAL_CWDr'   r   r   r(   zHtest_lock_sha_present_non_worktree_returns_origin_main.<locals>.<lambda>b   s    Z r   rR   r*   r+   r-   r.   r/   r2   r3   rW   r>   s          r   6test_lock_sha_present_non_worktree_returns_origin_mainr^   `   s    y"%%78H 
  2F""6]""""6]""""""6"""6"""]"""""""r   c                 *   |j                  dd       |j                  dd        | dz  dz  }|j                  dd       |t         d	z  j	                  d
d       t        t        |       }d}||k(  }|st        j                  d|fd||f      dt        j                         v st        j                  |      rt        j                  |      ndt        j                  |      dz  }dd|iz  }t        t        j                  |            d x}}y )Nr    r!   r"   c                      t         S r$   r%   r'   r   r   r(   zGtest_corrupted_lock_file_worktree_returns_origin_main.<locals>.<lambda>s   r)   r   r   r   Tr   r   z{{ broken json %%r   r   r*   r+   r-   r.   r/   r2   r3   )r4   r5   r   r   r   r   r6   r7   r8   r9   r:   r;   r<   r=   )r?   r@   r   r.   rA   rB   rC   rD   s           r   5test_corrupted_lock_file_worktree_returns_origin_mainra   q   s    y"%%9:8#g-IOOD4O0G9E""../BW.U2F""6]""""6]""""""6"""6"""]"""""""r   )__doc__builtinsr8   _pytest.assertion.rewrite	assertionrewriter6   r   syspathlibr   __file__resolver   SCRIPTSpathinsertstrpre_push_guardr   rT   r&   r]   r   dictr   rE   rO   rZ   r^   ra   r'   r   r   <module>rq      s      
 
x.
 
 
"
*
*1
-	
9 3w<   .	3"

=t =4$; =4 =##(
"
#"	#r   