
    2j                       d Z ddlmZ ddlZddlmc mZ ddl	Z	ddl
ZddlZddlmZ ej                   j#                  ej                   j#                  ej                   j#                  ej                   j#                  ej                   j%                  e                              Zeej                   v rej                   j+                  e       ej                   j-                  de       ddlmZmZ ddZddZddZdd	Zdd
Zy)u4   task md sha256 immutability 검증 회귀 테스트.    )annotationsN)Path)MUTATION_FORBIDDEN_MARKERcheck_task_md_immutabilityc                H    | |z  }|j                  |d       t        |      S )Nutf-8encoding)
write_textstr)tmp_pathnamebodyps       o/home/jay/workspace/.worktrees/task-2691-dev8/tests/regression/task_mode_classifier/test_sha256_immutability.py_writer      s$    4ALLL(q6M    c                   d}t        | d|      }t        j                  |j                  d            j	                         }t        ||      \  }}d}||u }|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}}||k(  }|st        j                  d|fd||f      dt        j                         v st        j                  |      rt        j                  |      nddt        j                         v st        j                  |      rt        j                  |      nddz  }
dd|
iz  }t        t        j                  |            d }y )Nu#   # task md

원본 내용입니다.
task.mdr   Tisz%(py0)s is %(py3)sis_unchangedpy0py3assert %(py5)spy5==)z%(py0)s == %(py2)scurrentrecordedr   py2assert %(py4)spy4)r   hashlibsha256encode	hexdigestr   
@pytest_ar_call_reprcompare@py_builtinslocals_should_repr_global_name	_safereprAssertionError_format_explanation)r   r   mdr"   r   r!   @py_assert2@py_assert1@py_format4@py_format6@py_format3@py_format5s               r   +test_sha256_unchanged_when_recorded_matchesr:      s   3D	)T	*B~~dkk'23==?H6r8DL'<4<4<<4h7h77hhr   c                   d}t        | d|      }t        j                  |j                  d            j	                         }t        |      j                  dd       t        ||      \  }}d}||u }|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}}||k7  }|st        j                  d|fd||f      dt        j                         v st        j                  |      rt        j                  |      nddt        j                         v st        j                  |      rt        j                  |      nddz  }
dd|
iz  }t        t        j                  |            d }t!        |      }d}||k(  }|st        j                  d|fd||f      dt        j                         v st        j                  t               rt        j                  t               nddt        j                         v st        j                  |      rt        j                  |      ndt        j                  |      t        j                  |      dz  }dd|iz  }t        t        j                  |            d x}x}}y )Nu   # task md

v1 내용.
r   r   u&   # task md

v2 내용으로 변경됨.
r	   Fr   r   r   r   r   r   )!=)z%(py0)s != %(py2)sr!   r"   r#   r%   r&   @   r   z0%(py3)s
{%(py3)s = %(py0)s(%(py1)s)
} == %(py6)slenr   py1r   py6assert %(py8)spy8)r   r'   r(   r)   r*   r   r   r   r+   r,   r-   r.   r/   r0   r1   r2   r?   )r   r   r3   r"   r   r!   r4   r5   r6   r7   r8   r9   @py_assert5@py_assert4@py_format7@py_format9s                   r   )test_sha256_changed_when_content_modifiedrI   '   s   &D	)T	*B~~dkk'23==?H 	HCgV6r8DL'  <5    <5      <   <   5       h7h77hhw<2<2<233ww<2r   c                   t        | dd      }t        |d       \  }}d}||u }|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}}t        |      }d
}||k(  }	|	st        j                  d|	fd||f      dt	        j
                         v st        j                  t              rt        j                  t              nddt	        j
                         v st        j                  |      rt        j                  |      ndt        j                  |      t        j                  |      dz  }
dd|
iz  }t        t        j                  |            d x}x}	}y )Nr   u   # 초기 기록용 task md
Tr   r   r   r   r   r   r=   r   r>   r?   r!   r@   rC   rD   )r   r   r+   r,   r-   r.   r/   r0   r1   r2   r?   )r   r3   r   r!   r4   r5   r6   r7   rE   rF   rG   rH   s               r   test_recorded_none_returns_truerK   5   s   	)%C	DB6r4@L'<4<4<<4w<2<2<233ww<2r   c                 p   d} t         | k(  }|st        j                  d|fdt         | f      dt        j                         v st        j
                  t               rt        j                  t               ndt        j                  |       dz  }dd|iz  }t        t        j                  |            d x}} y )N(TASK_MD_POST_DISPATCH_MUTATION_FORBIDDENr   )z%(py0)s == %(py3)sr   r   r   r   )	r   r+   r,   r-   r.   r/   r0   r1   r2   )r4   r5   r6   r7   s       r   'test_mutation_forbidden_marker_constantrN   =   sb    (RR$(RRRRR$(RRRRRRR$RRR$RRR(RRRRRRRRr   )r   r   r   r   r   r   returnr   )r   r   rO   None)rO   rP   )__doc__
__future__r   builtinsr-   _pytest.assertion.rewrite	assertionrewriter+   r'   os_ossys_syspathlibr   pathdirnameabspath__file___WROOTremoveinsertutils.task_mode_classifierr   r   r   r:   rI   rK   rN    r   r   <module>re      s    : "      			HHSXX%%chh&6&6sxx7G7G7Q&RST
 
TYYIIV 		  F Sr   