o
    Ni+                     @   s   d dl mZ d dl mZ d dlZd dlZd dlZd dlmZ d dlm	Z	 d dlm
Z
 d dlmZ ejdkr<d d	lmZ nd dlZG d
d dejZG dd dejZdZdd Zddd edD ZG dd dejZdS )    )absolute_import)print_functionN)BytesIO)git)options)base)   r   )mockc                   @   s   e Zd Zdd Zdd ZdS )TestGitIsInstalledc                 C   sJ   t jtd}d|_| dt  W d    d S 1 sw   Y  d S )N_run_shell_commandzgit version 1.8.4.1T)r	   patchobjectr   return_valueassertEqual_git_is_installedself_command r   F/home/ubuntu/.local/lib/python3.10/site-packages/pbr/tests/test_git.pytestGitIsInstalled&      "z%TestGitIsInstalled.testGitIsInstalledc                 C   sJ   t jtd}t|_| dt  W d    d S 1 sw   Y  d S )Nr   F)r	   r   r   r   OSErrorside_effectr   r   r   r   r   r   testGitIsNotInstalled+   r   z(TestGitIsInstalled.testGitIsNotInstalledN)__name__
__module____qualname__r   r   r   r   r   r   r
   $   s    r
   c                       s   e Zd Zdddddejddfddd	ddejddfd
dd	ddejddfdddddejddfdddddejddfddd	ddejddfddd	ddejddfdddddejddfgZ fddZdd Z  Z	S )SkipFileWriteschangelog_option_trueskip_changelogTrueSKIP_WRITE_GIT_CHANGELOGN	ChangeLog)
option_keyoption_valueenv_key	env_valuepkg_funcfilenamechangelog_option_falseFalsechangelog_env_truechangelog_both_trueauthors_option_trueskip_authorsSKIP_GENERATE_AUTHORSAUTHORSauthors_option_falseauthors_env_trueauthors_both_truec                    s   t t|   | t j| _tj	tjj
| _tj| jd| _tj| js3| d| j  d S tj| j| j| _i | _| jd urNd| jf| j| j< | t| j| j d S )N.gitz*%s is missing; skipping git-related checksz	setup.cfg)superr   setUp
useFixturefixturesTempDirpath	temp_pathosabspathcurdirroot_dirjoingit_direxistsskipTestr)   option_dictr$   r%   EnvironmentVariabler&   r'   r   	__class__r   r   r7      s$   
zSkipFileWrites.setUpc                 C   sH   | j | j| j| jd | tj| j | j	
 tjv p | jd u d S )N)rB   dest_dirrE   )r(   rB   r<   rE   r   r=   r;   rC   r)   r%   lowerr   TRUE_VALUESr'   rG   r   r   r   	test_skip   s   zSkipFileWrites.test_skip)
r   r   r   r   write_git_changeloggenerate_authors	scenariosr7   rM   __classcell__r   r   rH   r   r   1   s    [r   a  7780758 Break parser  (tag: refs/tags/1_foo.1)
04316fe Make python  (refs/heads/review/monty_taylor/27519)
378261a Add an integration test script. 
3c373ac Merge "Lib  (HEAD, tag: refs/tags/2013.2.rc2, tag: refs/tags/2013.2, refs/heads/mile-proposed)
182feb3 Fix pip invocation for old versions of pip.  (tag: refs/tags/0.5.17)
fa4f46e Remove explicit depend on distribute.  (tag: refs/tags/0.5.16)
d1c53dd Use pip instead of easy_install for installation. 
a793ea1 Merge "Skip git-checkout related tests when .git is missing" 
6c27ce7 Skip git-checkout related tests when .git is missing 
451e513 Bug fix: create_stack() fails when waiting 
4c8cfe4 Improve test coverage: network delete API  (tag: refs/tags/(evil))
d7e6167 Bug fix: Fix pass thru filtering in list_networks  (tag: refs/tags/ev()il)
c47ec15 Consider 'in-use' a non-pending volume for caching  (tag: refs/tags/ev)il)
8696fbd Improve test coverage: private extension API  (tag: refs/tags/ev(il)
f0440f8 Improve test coverage: hypervisor list  (tag: refs/tags/e(vi)l)
04984a5 Refactor hooks file.  (HEAD, tag: 0.6.7,b, tag: refs/tags/(12), refs/heads/master)
a65e8ee Remove jinja pin.  (tag: refs/tags/0.5.14, tag: refs/tags/0.5.13)
c                 C   s8   |   s| S | d\}}}|dd}d|||fS )z=Convert post-1.8.1 git log format to pre-1.8.1 git log format ztag:  )stripsplitreplacerA   )lineshamsgrefnamer   r   r   _make_old_git_changelog_format   s
   r[   
c                 c   s    | ]}t |V  qd S N)r[   ).0rW   r   r   r   	<genexpr>   s
    
r_   c                       sD   e Zd ZddeifddeifgZ fddZdd Zdd	 Z  Z	S )
GitLogsTestzpre1.8.3	changelogz	post1.8.3c                    sh   t t|   | t j| _tj	tjj
| _tj| jd| _| td | td d S )Nr5   r0   r"   )r6   r`   r7   r8   r9   r:   r;   r<   r=   r>   r?   r@   rA   rB   rF   rG   rH   r   r   r7      s   zGitLogsTest.setUpc                    sF    t fdd tj j jd ttj	
 jddy}| } d|  d|  d|  d	|  d
|  d|  d|  d|  d|  d|  d|  d|  d|  d|  d|  d|  d|  d| W d    d S 1 sw   Y  d S )Nc                    s   dt  jdiS )Nstdoutzutf-8)r   ra   encode)_rG   r   r   <lambda>   s    z6GitLogsTest.test_write_git_changelog.<locals>.<lambda>rB   rJ   r#   rz2013.2z0.5.17z------zRefactor hooks filez+Bug fix: create\_stack() fails when waitingzRefactor hooks file.182feb3zreview/monty_taylor/27519z0.5.13z0.6.712z(evil)zev()ilzev(ilzev)ilze(vi)lzMerge "z1\_foo.1)r8   r9   	FakePopenr   rN   rB   r<   openr=   r;   rA   readassertInassertNotIn)r   ch_fhchangelog_contentsr   rG   r   test_write_git_changelog   s<   
"z$GitLogsTest.test_write_git_changelogc                    sJ  d}d}d}d| }d| j  }d| j  }d}|||||| ji | j tj| jdg| td	fd
d  fdd}| td| t	tj| jdd}	|	
d|  W d    n1 scw   Y  tj| j | jd t	tj| jdd}	|	 }
| ||
 | ||
 | ||
 W d    d S 1 sw   Y  d S )NzFoo Foo <email@foo.com>zBar Bar <email@bar.com>zFoo Bar <foo@bar.com>zCo-authored-by: z)git --git-dir=%s log --format=%%aN <%%aE>zgit --git-dir=%s logzgit rev-parse --show-toplevelz
AUTHORS.inzos.path.existsc                    s   t j|  v S r]   )r=   r;   r>   )r;   )exist_filesr   r   re      s    z3GitLogsTest.test_generate_authors.<locals>.<lambda>c                    s    d |  S )N )rA   )cmdkwargs)cmd_mapr   r   _fake_run_shell_command$  s   zBGitLogsTest.test_generate_authors.<locals>._fake_run_shell_commandzpbr.git._run_shell_commandwz%s
rf   r1   rg   )rB   r@   r=   r;   rA   r<   r8   r9   MonkeyPatchrk   writer   rO   rl   rm   )r   
author_old
author_new	co_authorco_author_bygit_log_cmdgit_co_log_cmdgit_top_levelrw   auth_fhauthorsr   )rv   rr   r   test_generate_authors  sJ   

"z!GitLogsTest.test_generate_authors)
r   r   r   _old_git_changelog_content_changelog_contentrP   r7   rq   r   rQ   r   r   rH   r   r`      s    


!r`   )
__future__r   r   r=   sysr9   pbr._compat.fiver   pbrr   r   	pbr.testsr   version_infounittestr	   BaseTestCaser
   r   r   r[   rA   rU   r   r`   r   r   r   r   <module>   s*   
 

