
    d@              
          d Z ddlZddlZddlmZmZ ddlmZ ddlmZ ddl	m
Z
 ddlmZmZmZmZmZ dd	lmZ g Z	 ddlZn # e$ r e                    d
           Y nw xY w	 ddlZn # e$ r e                    d           Y nw xY w	 ddlmZ n # e$ r e                    d           Y nw xY wdez  ZesddlmZ dZdddddddddd	Zi fdZ G d d          Z d Z!d Z"d Z#d*dZ$d+dZ% eee           G d  d!                      Z& eee           G d" d#e
                      Z' eee           G d$ d%e
                      Z( eee           G d& d'e
                      Z) eee           G d( d)ee
                      Z*dS ),z Tests for dulwich.contrib.swift.    N)BytesIOStringIO)time)skipIf)TestCase   )BlobCommitTagTreeparse_timezone)ObjectStoreTestsgeventgeventhttpclient)patchmockz)Required libraries are not installed (%r))swiftai  [swift]
auth_url = http://127.0.0.1:8080/auth/%(version_str)s
auth_ver = %(version_int)s
username = test;tester
password = testing
region_name = %(region_name)s
endpoint_type = %(endpoint_type)s
concurrency = %(concurrency)s
chunk_length = %(chunk_length)s
cache_length = %(cache_length)s
http_pool_length = %(http_pool_length)s
http_timeout = %(http_timeout)s
zv1.0   /  testinternalURL)	version_strversion_intconcurrencychunk_lengthcache_lengthregion_nameendpoint_typehttp_pool_lengthhttp_timeoutc                       fdS )Nc                 (    t          | |          S )N)confstore)FakeSwiftConnector)rootr#   r$   s     ^/home/feoh/.local/pipx/venvs/poetry/lib/python3.11/site-packages/dulwich/contrib/test_swift.py<lambda>z(create_swift_connector.<locals>.<lambda>W   s    0DNNN      r$   s   `r'   create_swift_connectorr,   V   s    NNNNNr)   c                   .    e Zd Zi ddfdZd Zd Zd ZdS )Response   Nc                 0    || _         || _        || _        d S N)headersstatus_codecontent)selfr2   statusr4   s       r'   __init__zResponse.__init__[   s    !r)   c                     | j         |         S r1   r2   )r5   keys     r'   __getitem__zResponse.__getitem__`   s    |C  r)   c                 4    | j                                         S r1   )r2   itemsr5   s    r'   r=   zResponse.itemsc   s    |!!###r)   c                     | j         S r1   r4   r>   s    r'   readzResponse.readf   s
    |r)   )__name__
__module____qualname__r7   r;   r=   rA   r*   r)   r'   r.   r.   Z   s\        !#t    
! ! !$ $ $    r)   r.   c                  ,    t          dddd          }|S )N(http://127.0.0.1:8080/v1.0/AUTH_fakeuser12121212121212121212)zX-Storage-UrlzX-Auth-Tokenr/   r.   argskwargsrets      r'   fake_auth_request_v1rM   j   s-    
G%	
 	
 	 C Jr)   c                  &    t          i d          }|S )Ni  rH   rI   s      r'   fake_auth_request_v1_errorrO   u   s    
2s

CJr)   c                  r    d}dddidd|dgdgd	i}t          d
t          j        |                    }|S )NrF   accessidrG   zobject-storer   )regionr   )type	endpoints)tokenserviceCatalogr/   )r6   r4   r.   jsondumps)rJ   rK   s_urlresprL   s        r'   fake_auth_request_v2r]   z   sq    6EI& + '-+0 " 

 
D  #tz$'7'7
8
8
8CJr)      Defaultc                    |st          j        d|z             }t                      }|                    d|z   d|j                   t                      }| r0t          | d         t
                    sJ | d         j        g|_        |j        |_        d|z   dz   }|x|_	        |_
        t          d          d         }t          t                                x|_        |_        |x|_        |_        d	|_        d
|z   |_        t)                      }d|_        d|_        t          d          d         |_        |j        |_        t
          |j        f|_        d|z   dz   |_        ||||fS )Ns   The blob content s   thefile_i  s	   John Doe s    <john@doe.net>s   -0200r   s   UTF-8s   The commit message s   john@doe.nets   Annotated tags   v_s   _0.1)r	   from_stringr   addrR   r
   
isinstanceparentstreeauthor	committerr   intr   commit_timeauthor_timecommit_timezoneauthor_timezoneencodingmessager   taggertag_timezonetag_timeobjectname)datamarkerblobre   cmtrf   tztags           r'   create_commitrz      sV    ? 4v =>>66DHH[6!8TW555
((C $$r(F+++++Bx{mwCHF"%77F!''CJ		!	!!	$B(+DFF3COco022C#-CL(61CK
%%C CJ"CK%h//2C?CL#&!CJv~'CHsCr)   c                     g }t          d|           D ]X}d                    ||                                          }t          ||          \  }}}}|                    ||||g           Y|S )Nr   z{}_{})rangeformatencoderz   extend)	lengthru   rt   i_markerrv   re   ry   rw   s	            r'   create_commitsr      sz    D1f , ,>>&!,,4466,T7;;dCT4c*++++Kr)   c                   6    e Zd ZddZd ZddZd Zd Zd ZdS )	r%   Nc                 n    |r|| _         ni | _         || _        || _        d| _        d| _        d| _        d S )Nr   r   )r$   r#   r&   r   r   r   )r5   r&   r#   r$   s       r'   r7   zFakeSwiftConnector.__init__   sF     	DJJDJ		!r)   c                     t          j        | j        |          }t          |d          r)|                    d           |                                }|| j        |<   d S )Nseekr   )	posixpathjoinr&   hasattrr   rA   r$   )r5   rs   r4   s      r'   
put_objectzFakeSwiftConnector.put_object   sU    ~di..7F## 	%LLOOOllnnG"
4r)   c                    t          j        | j        |          }|s,	 t          | j        |                   S # t
          $ r Y d S w xY w|                    d          \  }}	 |s%t          |           }| j        |         |d          S | j        |         t          |          t          |                   S # t
          $ r Y d S w xY w)N-)r   r   r&   r   r$   KeyErrorsplitrh   )r5   rs   r|   lrs        r'   
get_objectzFakeSwiftConnector.get_object   s    ~di.. 	tz$/000   tt ;;s##DAq =QA:d+ABB//:d+CFFSVVO<<   tts'   8 
AA"&B8 	.B8 8
CCc                 *      fd j         D             S )Nc                 P    g | ]"}d |                     j        dz   d          i#S )rs   / )replacer&   ).0kr5   s     r'   
<listcomp>z<FakeSwiftConnector.get_container_objects.<locals>.<listcomp>   s2    MMMQ49s?B778MMMr)   r+   r>   s   `r'   get_container_objectsz(FakeSwiftConnector.get_container_objects   s    MMMM$*MMMMr)   c                 h    | j         | j                                        v rd S d| j        | j         <   d S )Nr   )r&   r$   keysr>   s    r'   create_rootzFakeSwiftConnector.create_root   s4    9
))))D$&DJty!!!r)   c                     t          j        | j        |          }|| j        vrd S dt	          | j        |                   iS )Ncontent-length)r   r   r&   r$   len)r5   rs   s     r'   get_object_statz"FakeSwiftConnector.get_object_stat   sA    ~di..tz!!4 #dj&6"7"788r)   r1   )	rB   rC   rD   r7   r   r   r   r   r   r*   r)   r'   r%   r%      s{        	 	 	 	# # #   $N N N' ' '9 9 9 9 9r)   r%   c                   <     e Zd Z fdZd Zd Zd Zd Zd Z xZ	S )TestSwiftRepoc                     t                                                       t          j        t	          t
          t          z                      | _        d S )Nfile)supersetUpr   	load_confr   config_filedef_config_filer#   r5   	__class__s    r'   r   zTestSwiftRepo.setUp   s9    O+2O)P)PQQQ			r)   c                     ddi}t          dt          |          5  t          j        d| j                   d d d            d S # 1 swxY w Y   d S )Nfakerepo/objects/packr   $dulwich.contrib.swift.SwiftConnectornew_callabler$   fakerepor#   )r   r,   r   	SwiftRepor#   r5   r$   s     r'   	test_initzTestSwiftRepo.test_init   s    ("-2/
 
 
 	8 	8
 OJTY7777	8 	8 	8 	8 	8 	8 	8 	8 	8 	8 	8 	8 	8 	8 	8 	8 	8 	8s   AA	A	c                     t          dt                    5  |                     t          t          j        d| j                   d d d            d S # 1 swxY w Y   d S )Nr   )r   r   r   r,   assertRaises	Exceptionr   r   r#   r>   s    r'   test_init_no_datazTestSwiftRepo.test_init_no_data   s    2/
 
 
 	Q 	Q i*diPPP		Q 	Q 	Q 	Q 	Q 	Q 	Q 	Q 	Q 	Q 	Q 	Q 	Q 	Q 	Q 	Q 	Q 	Qs   -AAAc                     ddi}t          dt          |          5  |                     t          t          j        d| j                   d d d            d S # 1 swxY w Y   d S )Nzfakerepo/.git/objects/packr   r   r   r   r   r   s     r'   test_init_bad_dataz TestSwiftRepo.test_init_bad_data   s    -r22/
 
 
 	Q 	Q
 i*diPPP	Q 	Q 	Q 	Q 	Q 	Q 	Q 	Q 	Q 	Q 	Q 	Q 	Q 	Q 	Q 	Q 	Q 	Qs   -AAAc                    ddi}t          dt          |          5  t          j        d| j                  }d}|                    d|           d d d            n# 1 swxY w Y   |                     |j        j        d	         |           d S )
Nr   r   r   r   r   r   s	   Fake repodescriptionzfakerepo/description)	r   r,   r   r   r#   _put_named_fileassertEqualsconr$   )r5   r$   repodescs       r'   test_put_named_filez!TestSwiftRepo.test_put_named_file	  s    ("-2/
 
 
 	6 	6
 ?:DI>>>DD  555	6 	6 	6 	6 	6 	6 	6 	6 	6 	6 	6 	6 	6 	6 	6 	)?@$GGGGGs   4AA #A c                    t          d| j                  }t          dt          |j                  5  t
          j                            || j                   d d d            n# 1 swxY w Y   |                     d|j                   |                     d|j                   |                     d|j                   d S )Nfakerootr   r   r   zfakeroot/objects/packzfakeroot/info/refszfakeroot/description)	r%   r#   r   r,   r$   r   r   	init_bareassertIn)r5   fscs     r'   test_init_barezTestSwiftRepo.test_init_bare  s     $)<<<2/)
 
 
 	; 	;
 O%%c	%:::	; 	; 	; 	; 	; 	; 	; 	; 	; 	; 	; 	; 	; 	; 	; 	-sy999*CI666,ci88888s   'A&&A*-A*)
rB   rC   rD   r   r   r   r   r   r   __classcell__r   s   @r'   r   r      s        R R R R R8 8 8Q Q QQ Q Q
H 
H 
H
9 
9 
9 
9 
9 
9 
9r)   r   c                   0     e Zd Z fdZd Zd Zd Z xZS )TestSwiftInfoRefsContainerc                 
   t                                                       d}d|i| _        t          j        t          t          t          z                      | _        t          d| j                  | _
        i | _        d S )Nsr   22effb216e3a82f97da599b8885a6cadb488b4c5	refs/heads/master
cca703b0e1399008b53a1a236d6b4584737649e4	refs/heads/devzfakerepo/info/refsr   r   r   )r   r   r$   r   r   r   r   r   r#   r%   r   object_store)r5   r4   r   s     r'   r   z TestSwiftInfoRefsContainer.setUp$  sr    H 	 +G4
O+2O)P)PQQQ	%jtyAAAr)   c                    t          j        | j        | j                  }|                     t          |j                  d           | j        | j        _        t          j        | j        | j                  }|                     d|	                                           |                     d|	                                           dS )zinfo/refs does not existsr      refs/heads/devs   refs/heads/masterN)
r   SwiftInfoRefsContainerr   r   r   r   _refsr$   r   allkeysr5   ircs     r'   r   z$TestSwiftInfoRefsContainer.test_init/  s    *48T5FGGSY+++*48T5FGG'777*CKKMM:::::r)   c                     | j         | j        _         t          j        | j        | j                  }|                    ddd           |                     |d         d           d S )Nr   (   cca703b0e1399008b53a1a236d6b4584737649e4s(   1111111111111111111111111111111111111111)r$   r   r   r   r   set_if_equalsr   r   s     r'   test_set_if_equalsz-TestSwiftInfoRefsContainer.test_set_if_equals8  si    *48T5FGG7	
 	
 	

 	./;;;;;r)   c                     | j         | j        _         t          j        | j        | j                  }|                    dd           |                     d|                                           d S )Nr   r   )r$   r   r   r   r   remove_if_equalsassertNotInr   r   s     r'   test_remove_if_equalsz0TestSwiftInfoRefsContainer.test_remove_if_equalsB  si    *48T5FGGJ	
 	
 	
 	*CKKMM:::::r)   )rB   rC   rD   r   r   r   r   r   r   s   @r'   r   r   "  se        	 	 	 	 	; ; ;< < <; ; ; ; ; ; ;r)   r   c                   x     e Zd Z fdZd Zd Zd Zd Zd Zd Z	d Z
d	 Zd
 Zd Zd Zd Zd Zd Zd Z xZS )TestSwiftConnectorc                 L   t                                                       t          j        t	          t
          t          z                      | _        t          dt                    5  t          j
        d| j                  | _        d d d            d S # 1 swxY w Y   d S )Nr   #geventhttpclient.HTTPClient.requestr   r   )r   r   r   r   r   r   r   r#   r   rM   SwiftConnectorconnr   s    r'   r   zTestSwiftConnector.setUpM  s    O+2O)P)PQQQ	8:NOO 	I 	I,ZdiHHHDI	I 	I 	I 	I 	I 	I 	I 	I 	I 	I 	I 	I 	I 	I 	I 	I 	I 	Is   +!BB Bc                                            j        j        d                                  j        j        d                                  j        j        d                                  j        j        d                                  j        j        d                                  j        j        d                                  j        j        d                                  j        j	        d                                  j        j
        d                                  j        j        d            j                            d	d
d            j                            d	dd           t          dt                    5  t!          j        d j                  }d d d            n# 1 swxY w Y                         |j        d                                 |j        d            j                            d	d
d            j                            d	dd           t          dt&                    5                       t           j         fd           d d d            d S # 1 swxY w Y   d S )N1zhttp://127.0.0.1:8080/auth/v1.0ztest:testertestingr   rF   rG   r   r   auth_ver2auth_urlzhttp://127.0.0.1:8080/auth/v2.0r   r   testerr   c                  :    t          j        d j                  S )Nr   r   )r   r   r#   r>   s   r'   r(   z8TestSwiftConnector.test_init_connector.<locals>.<lambda>k  s    ,ZdiHHH r)   )r   r   r   r   userpasswordr&   storage_urlrV   r    r   r   r#   setr   r]   r   r   tenantrO   r   SwiftException)r5   r   s   ` r'   test_init_connectorz&TestSwiftConnector.test_init_connectorS  s   +S111+-NOOO777+Y777444I!#M	
 	
 	
 	)444/3333Q777.222	gz3///	gz+LMMM8:NOO 	D 	D'
CCCD	D 	D 	D 	D 	D 	D 	D 	D 	D 	D 	D 	D 	D 	D 	DH---f---	gz3///	gz+LMMM8:TUU 	 	$HHHH  	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	s$   F77F;>F;$I66I:=I:c                     t          dd           5  |                     | j                                        d           d d d            d S # 1 swxY w Y   d S )Nr   c                      t                      S r1   rH   rJ   s    r'   r(   z5TestSwiftConnector.test_root_exists.<locals>.<lambda>o  
    

 r)   Tr   r   r   test_root_existsr>   s    r'   r   z#TestSwiftConnector.test_root_existsn  s    8:R:RSS 	A 	ATY77994@@@	A 	A 	A 	A 	A 	A 	A 	A 	A 	A 	A 	A 	A 	A 	A 	A 	A 	A   .AAAc                     t          dd           5  |                     | j                                        d            d d d            d S # 1 swxY w Y   d S )Nr   c                  "    t          d          S Ni  r6   rH   r   s    r'   r(   z9TestSwiftConnector.test_root_not_exists.<locals>.<lambda>u      (#... r)   r   r>   s    r'   test_root_not_existsz'TestSwiftConnector.test_root_not_existsr  s    1..
 
 	A 	A TY77994@@@		A 	A 	A 	A 	A 	A 	A 	A 	A 	A 	A 	A 	A 	A 	A 	A 	A 	Ar   c                    t          dd           5  t          dd           5  |                     | j                                        d            d d d            n# 1 swxY w Y   d d d            d S # 1 swxY w Y   d S )N5dulwich.contrib.swift.SwiftConnector.test_root_existsc                      d S r1   r*   r   s    r'   r(   z5TestSwiftConnector.test_create_root.<locals>.<lambda>|      $ r)   r   c                      t                      S r1   rH   r   s    r'   r(   z5TestSwiftConnector.test_create_root.<locals>.<lambda>~  s
    HJJ r)   )r   r   r   r   r>   s    r'   test_create_rootz#TestSwiftConnector.test_create_rooty  s4   C
 
 	@ 	@ <>V>VWW @ @  !6!6!8!8$???@ @ @ @ @ @ @ @ @ @ @ @ @ @ @		@ 	@ 	@ 	@ 	@ 	@ 	@ 	@ 	@ 	@ 	@ 	@ 	@ 	@ 	@ 	@ 	@ 	@s4   A6.AA6A"	"A6%A"	&A66A:=A:c                     t          dd           5  t          dd           5  |                     t          j        | j        j                   d d d            n# 1 swxY w Y   d d d            d S # 1 swxY w Y   d S )Nr  c                      d S r1   r*   r   s    r'   r(   z;TestSwiftConnector.test_create_root_fails.<locals>.<lambda>  r  r)   r   c                  "    t          d          S r  rH   r   s    r'   r(   z;TestSwiftConnector.test_create_root_fails.<locals>.<lambda>  s    hc222 r)   )r   r   r   r   r   r   r>   s    r'   test_create_root_failsz)TestSwiftConnector.test_create_root_fails  s4   C
 
 	O 	O 522  O O !!%"6	8MNNN	O O O O O O O O O O O O O O O		O 	O 	O 	O 	O 	O 	O 	O 	O 	O 	O 	O 	O 	O 	O 	O 	O 	Os4   A3+AA3A	A3"A	#A33A7:A7c                     t          dd           5  |                     t          | j                                                  d           d d d            d S # 1 swxY w Y   d S )Nr   c                  R    t          t          j        ddiddif                    S )Nrs   abr@   rX   r   s    r'   r(   z?TestSwiftConnector.test_get_container_objects.<locals>.<lambda>  s/    (
VSMFC=#ABB   r)   r   )r   r   r   r   r   r>   s    r'   test_get_container_objectsz-TestSwiftConnector.test_get_container_objects  s    1 
 
 	H 	H S!@!@!B!BCCQGGG	H 	H 	H 	H 	H 	H 	H 	H 	H 	H 	H 	H 	H 	H 	H 	H 	H 	Hs   ;AA!Ac                     t          dd           5  |                     | j                                        d            d d d            d S # 1 swxY w Y   d S )Nr   c                  "    t          d          S r  rH   r   s    r'   r(   zETestSwiftConnector.test_get_container_objects_fails.<locals>.<lambda>  r  r)   )r   r   r   r   r>   s    r'    test_get_container_objects_failsz3TestSwiftConnector.test_get_container_objects_fails  s    1..
 
 	F 	F TY<<>>EEE		F 	F 	F 	F 	F 	F 	F 	F 	F 	F 	F 	F 	F 	F 	F 	F 	F 	Fr   c                     t          dd           5  |                     | j                            d          d         d           d d d            d S # 1 swxY w Y   d S )Nr   c                  &    t          ddi          S )Nr   10r9   rH   r   s    r'   r(   z9TestSwiftConnector.test_get_object_stat.<locals>.<lambda>  s    (,<d+CDDD r)   r  r   r  r   r   r   r   r>   s    r'   test_get_object_statz'TestSwiftConnector.test_get_object_stat  s    1DD
 
 	U 	U TY66s;;<LMtTTT		U 	U 	U 	U 	U 	U 	U 	U 	U 	U 	U 	U 	U 	U 	U 	U 	U 	Us   5AAAc                     t          dd           5  |                     | j                            d          d            d d d            d S # 1 swxY w Y   d S )Nr   c                  "    t          d          S r  rH   r   s    r'   r(   z?TestSwiftConnector.test_get_object_stat_fails.<locals>.<lambda>  r  r)   r  r  r>   s    r'   test_get_object_stat_failsz-TestSwiftConnector.test_get_object_stat_fails  s    1..
 
 	C 	C TY66s;;TBBB		C 	C 	C 	C 	C 	C 	C 	C 	C 	C 	C 	C 	C 	C 	C 	C 	C 	C   /AAAc           	          t          dd           5  |                     | j                            dt	          d                    d            d d d            d S # 1 swxY w Y   d S )Nr   c                      t                      S r1   rH   rJ   rK   s     r'   r(   z4TestSwiftConnector.test_put_object.<locals>.<lambda>  s
    HJJ r)   r     content)r   r   r   r   r   r>   s    r'   test_put_objectz"TestSwiftConnector.test_put_object  s    1..
 
 	S 	S TY11#wz7J7JKKTRRR		S 	S 	S 	S 	S 	S 	S 	S 	S 	S 	S 	S 	S 	S 	S 	S 	S 	Ss   =AA #A c                      t          dd           5                       t          j         fd           d d d            d S # 1 swxY w Y   d S )Nr   c                  "    t          d          S )Ni  r  rH   r"  s     r'   r(   z:TestSwiftConnector.test_put_object_fails.<locals>.<lambda>      HC$8$8$8 r)   c                  T     j                             dt          d                    S )Nr  r#  )r   r   r   r>   s   r'   r(   z:TestSwiftConnector.test_put_object_fails.<locals>.<lambda>  s!    	,,S'*2E2EFF r)   )r   r   r   r   r>   s   `r'   test_put_object_failsz(TestSwiftConnector.test_put_object_fails  s    188
 
 	 	 $FFFF  		 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	s   $AAAc                    t          dd           5  |                     | j                            d                                          d           d d d            n# 1 swxY w Y   t          dd           5  |                     | j                            dd          d           d d d            d S # 1 swxY w Y   d S )Nr   c                  "    t          d          S Nr#  r@   rH   r"  s     r'   r(   z4TestSwiftConnector.test_get_object.<locals>.<lambda>      HZ$@$@$@ r)   r  r#  c                  "    t          d          S r,  rH   r"  s     r'   r(   z4TestSwiftConnector.test_get_object.<locals>.<lambda>  r-  r)   z0-6)r|   )r   r   r   r   rA   r>   s    r'   test_get_objectz"TestSwiftConnector.test_get_object  su   1@@
 
 	K 	K TY11#66;;==zJJJ		K 	K 	K 	K 	K 	K 	K 	K 	K 	K 	K 	K 	K 	K 	K
 1@@
 
 	Q 	Q TY11#U1CCZPPP		Q 	Q 	Q 	Q 	Q 	Q 	Q 	Q 	Q 	Q 	Q 	Q 	Q 	Q 	Q 	Q 	Q 	Qs$   AAA#&A#;1B99B= B=c                     t          dd           5  |                     | j                            d          d            d d d            d S # 1 swxY w Y   d S )Nr   c                  "    t          d          S r  rH   r"  s     r'   r(   z:TestSwiftConnector.test_get_object_fails.<locals>.<lambda>  r'  r)   r  )r   r   r   r   r>   s    r'   test_get_object_failsz(TestSwiftConnector.test_get_object_fails  s    188
 
 	> 	> TY11#66===		> 	> 	> 	> 	> 	> 	> 	> 	> 	> 	> 	> 	> 	> 	> 	> 	> 	>r  c                     t          dd           5  |                     | j                            d          d            d d d            d S # 1 swxY w Y   d S )Nr   c                      t                      S r1   rH   r   s    r'   r(   z4TestSwiftConnector.test_del_object.<locals>.<lambda>  r   r)   r  )r   r   r   
del_objectr>   s    r'   test_del_objectz"TestSwiftConnector.test_del_object  s    8:R:RSS 	> 	>TY11#66===	> 	> 	> 	> 	> 	> 	> 	> 	> 	> 	> 	> 	> 	> 	> 	> 	> 	>r  c                 X   t          dd           5  t          dd           5  t          dd           5  |                     | j                                        d            d d d            n# 1 swxY w Y   d d d            n# 1 swxY w Y   d d d            d S # 1 swxY w Y   d S )Nz/dulwich.contrib.swift.SwiftConnector.del_objectc                      d S r1   r*   r   s    r'   r(   z2TestSwiftConnector.test_del_root.<locals>.<lambda>  r  r)   z:dulwich.contrib.swift.SwiftConnector.get_container_objectsc                      ddiddifS )Nrs   r  r  r*   r   s    r'   r(   z2TestSwiftConnector.test_del_root.<locals>.<lambda>  s    }vsm< r)   r   c                      t                      S r1   rH   r   s    r'   r(   z2TestSwiftConnector.test_del_root.<locals>.<lambda>  s
    (** r)   )r   r   r   del_rootr>   s    r'   test_del_rootz TestSwiftConnector.test_del_root  s   =
 
 	A 	A O<<  A A 9,,  A A $$TY%7%7%9%94@@@	A A A A A A A A A A A A A A A	A A A A A A A A A A A A A A A		A 	A 	A 	A 	A 	A 	A 	A 	A 	A 	A 	A 	A 	A 	A 	A 	A 	AsW   BB.A0$B0A44B7A48B;BB	BB	BB#&B#)rB   rC   rD   r   r   r   r  r
  r  r  r  r  r  r$  r)  r/  r2  r6  r<  r   r   s   @r'   r   r   K  sC       I I I I I  6A A AA A A@ @ @	O 	O 	OH H HF F FU U UC C CS S S  
Q 
Q 
Q> > >> > >A A A A A A Ar)   r   c                       e Zd Zd ZdS )SwiftObjectStoreTestsc                     t          j        |            t          j        t	          t
          t          z                      }t          d|          }t          j        |          | _	        d S )Nr   r   r   )
r   r   r   r   r   r   r   r%   SwiftObjectStorer$   )r5   r#   r   s      r'   r   zSwiftObjectStoreTests.setUp  sY    tH[?-J$K$KLLL $777+C00


r)   N)rB   rC   rD   r   r*   r)   r'   r>  r>    s#        1 1 1 1 1r)   r>  )r^   N)r   r^   )+__doc__rY   r   ior   r   r   unittestr   dulwich.testsr   objectsr	   r
   r   r   r   tests.test_object_storer   missing_libsr   ModuleNotFoundErrorappendr   unittest.mockr   skipmsgdulwich.contribr   r   r   r,   r.   rM   rO   r]   rz   r   r%   r   r   r   r>  r*   r)   r'   <module>rM     s  . ' &                                  " " " " " " = = = = = = = = = = = = = = 6 6 6 6 6 6"MMMM " " "!!!!!", , , ,*+++++, #######        6
D  &%%%%%% "
 
 "$ O O O O            
  ,       6    g29 29 29 29 29 29 29 29j g49 49 49 49 49H 49 49 49n g%; %; %; %; %; %; %; %;P gSA SA SA SA SA SA SA SAl g1 1 1 1 1,h 1 1 1 1 1s5   A AA"A' 'BBB B,+B,