
    dY                         d dl Z d dlZd dlZd dlZd dlZd dlmZmZ ddlm	Z	m
Z
mZ  G d de          Z G d de          ZdS )	    N)SkipTestTestCase   )
FileLockedGitFile_fancy_renamec                   F     e Zd Z fdZ fdZd Zd Zd Zd Zd Z	 xZ
S )FancyRenameTestsc                    t                                                       t          j                    | _        |                     d          | _        |                     d          | _        |                     | j        d           d S )Nfoobar   foo contents)	supersetUptempfilemkdtemp_tempdirpathr   r   createself	__class__s    [/home/feoh/.local/pipx/venvs/poetry/lib/python3.11/site-packages/dulwich/tests/test_file.pyr   zFancyRenameTests.setUp!   sf     (**99U##99U##DHo.....    c                 z    t          j        | j                   t                                                       d S Nshutilrmtreer   r   tearDownr   s    r   r    zFancyRenameTests.tearDown(   1    dm$$$r   c                 L    t           j                            | j        |          S r   osr   joinr   r   filenames     r   r   zFancyRenameTests.path,       w||DM8444r   c                 x    t          |d          }|                    |           |                                 d S )Nwb)openwriteclose)r   r   contentsfs       r   r   zFancyRenameTests.create/   s4    t							r   c                    |                      t          j                            | j                             t          | j        | j                   |                      t          j                            | j                             t          | j        d          }|                     d|	                                           |
                                 d S )Nrbr   )assertFalser$   r   existsr   r   r   r+   assertEqualreadr-   r   new_fs     r   test_no_dest_existsz$FancyRenameTests.test_no_dest_exists4   s    11222dh)))11222TXt$$%**,,777r   c                    |                      | j        d           t          | j        | j                   |                     t
          j                            | j                             t          | j        d          }| 	                    d|
                                           |                                 d S )N   bar contentsr1   r   )r   r   r   r   r2   r$   r   r3   r+   r4   r5   r-   r6   s     r   test_dest_existsz!FancyRenameTests.test_dest_exists=   s    DHo...dh)))11222TXt$$%**,,777r   c                    t           j        dk    rt          d          |                     | j        d           t          | j        d          }|                     t          t          | j	        | j                   |
                                 |                     t          j                            |                     d                               t          | j	        d          }|                     d|                                           |
                                 t          | j        d          }|                     d|                                           |
                                 d S )Nwin32z&platform allows overwriting open filesr:   r1   r   r   )sysplatformr   r   r   r+   assertRaisesOSErrorr   r   r-   
assertTruer$   r   r3   r4   r5   )r   dest_fr7   s      r   test_dest_openedz!FancyRenameTests.test_dest_openedF   s   <7""CDDDDHo...dh%%'=$(DHEEEtyy'7'788999TXt$$%**,,777TXt$$%**,,777r   )__name__
__module____qualname__r   r    r   r   r8   r;   rD   __classcell__r   s   @r   r
   r
       s        / / / / /    5 5 5  
          r   r
   c                   ^     e Zd Z fdZ fdZd Zd Zd Zd Zd Z	d Z
d	 Zd
 Zd Z xZS )GitFileTestsc                    t                                                       t          j                    | _        t          |                     d          d          }|                    d           |                                 d S )Nr   r*   r   )	r   r   r   r   r   r+   r   r,   r-   )r   r/   r   s     r   r   zGitFileTests.setUpY   sb     (**5!!4((	   						r   c                 z    t          j        | j                   t                                                       d S r   r   r   s    r   r    zGitFileTests.tearDown`   r!   r   c                 L    t           j                            | j        |          S r   r#   r&   s     r   r   zGitFileTests.pathd   r(   r   c                    |                      d          }|                     t          t          |d           |                     t          t          |d           |                     t          t          |d           |                     t          t          |d           |                     t          t          |d           d S )Nr   r)modeabzr+bzw+bza+bU)r   r@   IOErrorr   )r   r   s     r   test_invalidzGitFileTests.test_invalidg   s    ii'7Cc:::'7Cd;;;'7Ce<<<'7Ce<<<'7Cf=====r   c                    t          |                     d          d          }|                     |t          j                   |                     d|                                           |                     d|                                           |                    d           |                     d|                                           |                                 d S )Nr   r1   r   r         contents)	r   r   assertIsInstanceioIOBaser4   r5   seekr-   r   r/   s     r   test_readonlyzGitFileTests.test_readonlyo   s    DIIe$$d++a+++!&&((333affhh'''	q			affhh///						r   c                     t          |                     d                    }|                     d|                                           |                                 d S )Nr   r   )r   r   r4   r5   r-   r\   s     r   test_default_modezGitFileTests.test_default_modex   sJ    DIIe$$%%!&&((333						r   c                    |                      d          }d|z  }t          |d          }|                     |                                d           |                                 |                     t          j                             |                     t          |d          }|                     |j	                   | 
                    t          t          |d           |                     t          j                             |                     |                    d           |                    d           |                    d	           |                                 |                     t          j                             |                     t          |d          }|                     d
|                                           |                                 d S )Nr   %s.lockr1   r   r*   not_a_file_propertys	   new stuffrV   rW      new contents)r   r+   r4   r5   r-   r2   r$   r3   r   closedr@   AttributeErrorgetattrrB   r,   r[   )r   r   foo_lockorig_fr/   r7   s         r   
test_writezGitFileTests.test_write}   st   iis?c488811222C""".'16KLLLx00111		q								11222S$%**,,777r   c                    |                      d          }t          |d          }|                    d           	 t          |d          }|                                  |                                 n# t
          $ r Y nw xY w|                    d           |                                 t          |d          }|                     d|                                           |                                 d S )Nr   r*   s   news	    contentsr1   rc   )	r   r   r,   failr-   r   r+   r4   r5   )r   r   f1f2r/   s        r   test_open_twicezGitFileTests.test_open_twice   s    iiS$
	d##BIIKKK HHJJJJ  	 	 	D	 	



 dOO!&&((333						s   $A5 5
BBc                 t   |                      d          }d|z  }t          |d          }|                     |                                d           |                                 t          |d          }|                    d           |                                 |                     |j	                   | 
                    t          j                             |                     t          |d          }|                     |                                d           |                                 d S )Nr   ra   r1   r   r*   rc   )r   r+   r4   r5   r-   r   r,   abortrB   rd   r2   r$   r3   )r   r   rg   rh   r/   
new_orig_fs         r   
test_abortzGitFileTests.test_abort   s    iis?c4888C	   				!!!11222#t__
**O<<<r   c                    |                      d          }t          |d          }|                                 	 |                                 n$# t          $ r |                                  Y nw xY wt          |d          }|                                 	 |                                 d S # t          $ r |                                  Y d S w xY w)Nr   r*   )r   r   rp   r-   rA   rk   r   r   r/   s      r   test_abort_closezGitFileTests.test_abort_close   s    iiC					GGIIII 	 	 	IIKKKKK	 C					GGIIIII 	 	 	IIKKKKKK	s#   A A10A1B/ /CCc                    |                      d          }t          |d          }|j                                         t	          j        |dz              |                                 |                     |j                   d S )Nr   r*   z.lock)	r   r   _filer-   r$   removerp   rB   _closedrt   s      r   test_abort_close_removedz%GitFileTests.test_abort_close_removed   sl    iiC	
	#-   					"""""r   )rE   rF   rG   r   r    r   rT   r]   r_   ri   rn   rr   ru   rz   rH   rI   s   @r   rK   rK   X   s                5 5 5> > >    
  0  &  $   # # # # # # #r   rK   )rY   r$   r   r>   r   dulwich.testsr   r   filer   r   r   r
   rK    r   r   <module>r~      s   * 
			 				  



  , , , , , , , , 5 5 5 5 5 5 5 5 5 55 5 5 5 5x 5 5 5pz# z# z# z# z#8 z# z# z# z# z#r   