U
    ªðúWN\  ã                   @   s´   d Z ddlmZ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mZ G dd	„ d	eƒZG d
d„ deƒZG dd„ deƒZG dd„ deƒZG dd„ deƒZdS )z"
Tests for L{incremental.update}.
é    )ÚdivisionÚabsolute_importN)ÚFilePath)ÚNativeStringIO)ÚTestCase)Ú_runÚrunc                   @   s   e Zd Zdd„ Zdd„ ZdS )ÚNonCreatedUpdateTestsc                    sl   t ˆ  ¡ ƒˆ _ˆ j ¡  ˆ j d¡}| ¡  | d¡ d¡ ‡ fdd„ˆ _|ˆ _G dd„ dtƒ}|ƒ ˆ _	d S )NÚ
inctestpkgú__init__.pyó‡   
from incremental import Version
introduced_in = Version('inctestpkg', 'NEXT', 0, 0).short()
next_released_version = "inctestpkg NEXT"
c                      s   ˆ j jS ©N©ÚsrcdirÚpath© ©Úselfr   ú?/usr/lib/python3/dist-packages/incremental/tests/test_update.pyÚ<lambda>$   ó    z-NonCreatedUpdateTests.setUp.<locals>.<lambda>c                   @   s   e Zd ZdZdZdS )z)NonCreatedUpdateTests.setUp.<locals>.Dateéà  é   N©Ú__name__Ú
__module__Ú__qualname__ZyearZmonthr   r   r   r   ÚDate'   s   r   ©
r   Zmktempr   ÚmakedirsÚchildÚ
setContentÚgetcwdÚ
packagedirÚobjectÚdate©r   r#   r   r   r   r   ÚsetUp   s    
zNonCreatedUpdateTests.setUpc                 C   sn   |   | j d¡ ¡ ¡ g }tddddddd| j| j|jd
 |  | j d¡ ¡ ¡ |  	| j d¡ 
¡ d¡ dS )zP
        `incremental.update package --create` initialises the version.
        ú_version.pyr
   NFT©	r   Ú
newversionÚpatchÚrcÚdevÚcreateÚ_dateZ_getcwdÚ_printó  """
Provides inctestpkg version information.
"""

# This file is auto-generated! Do not edit!
# Use `python -m incremental.update inctestpkg` to change this file.

from incremental import Version

__version__ = Version('inctestpkg', 16, 8, 0)
__all__ = ["__version__"]
)ZassertFalser#   r    Úexistsr   r%   r"   ÚappendÚ
assertTrueÚassertEqualÚ
getContent©r   Úoutr   r   r   Útest_create-   s       þÿz!NonCreatedUpdateTests.test_createN)r   r   r   r'   r9   r   r   r   r   r	      s   r	   c                   @   s   e Zd Zdd„ Zdd„ ZdS )ÚMissingTestsc                    s’   t ˆ  ¡ ƒˆ _ˆ j ¡  ˆ j d¡ ¡  ˆ j d¡ d¡}| ¡  | d¡ d¡ | d¡ d¡ ‡ fdd„ˆ _|ˆ _G d	d
„ d
tƒ}|ƒ ˆ _	d S )NZsrcar
   r   r   r(   óh   
from incremental import Version
__version__ = Version('inctestpkg', 1, 2, 3)
__all__ = ["__version__"]
c                      s   ˆ j jS r   r   r   r   r   r   r   ^   r   z$MissingTests.setUp.<locals>.<lambda>c                   @   s   e Zd ZdZdZdS )z MissingTests.setUp.<locals>.Dater   r   Nr   r   r   r   r   r   a   s   r   r   r&   r   r   r   r'   J   s    
zMissingTests.setUpc                 C   s@   g }|   t¡( tddddddd| j| j|jd
 W 5 Q R X dS )zk
        `incremental.update package --dev` raises and quits if it can't find
        the package.
        r
   NFTr)   )ÚassertRaisesÚ
ValueErrorr   r%   r"   r3   r7   r   r   r   Ú	test_pathg   s         þzMissingTests.test_pathN©r   r   r   r'   r>   r   r   r   r   r:   H   s   r:   c                   @   s   e Zd Zdd„ Zdd„ ZdS )ÚCreatedUpdateInSrcTestsc                    s’   t ˆ  ¡ ƒˆ _ˆ j ¡  ˆ j d¡ ¡  ˆ j d¡ d¡}| ¡  | d¡ d¡ | d¡ d¡ ‡ fdd„ˆ _|ˆ _G d	d
„ d
tƒ}|ƒ ˆ _	d S )NÚsrcr
   r   r   r(   r;   c                      s   ˆ j jS r   r   r   r   r   r   r   ‰   r   z/CreatedUpdateInSrcTests.setUp.<locals>.<lambda>c                   @   s   e Zd ZdZdZdS )z+CreatedUpdateInSrcTests.setUp.<locals>.Dater   r   Nr   r   r   r   r   r   Œ   s   r   r   r&   r   r   r   r'   u   s    
zCreatedUpdateInSrcTests.setUpc                 C   s¨   g }t ddddddd| j| j|jd
 |  | j d¡ ¡ ¡ |  | j d¡ 	¡ d¡ t ddddddd| j| j|jd
 |  | j d¡ ¡ ¡ |  | j d¡ 	¡ d¡ dS )	ú†
        `incremental.update package --path=<path> --dev` increments the dev
        version of the package on the given path
        r
   NFTr)   r(   ó  """
Provides inctestpkg version information.
"""

# This file is auto-generated! Do not edit!
# Use `python -m incremental.update inctestpkg` to change this file.

from incremental import Version

__version__ = Version('inctestpkg', 1, 2, 3, dev=0)
__all__ = ["__version__"]
s  """
Provides inctestpkg version information.
"""

# This file is auto-generated! Do not edit!
# Use `python -m incremental.update inctestpkg` to change this file.

from incremental import Version

__version__ = Version('inctestpkg', 1, 2, 3, dev=1)
__all__ = ["__version__"]
©
r   r%   r"   r3   r4   r#   r    r2   r5   r6   r7   r   r   r   r>   ’   s6         þÿ     þÿz!CreatedUpdateInSrcTests.test_pathNr?   r   r   r   r   r@   s   s   r@   c                   @   sˆ   e Zd ZdZdd„ Zdd„ Zdd„ Zdd	„ Zd
d„ Zdd„ Z	dd„ Z
dd„ Zdd„ Zdd„ Zdd„ Zdd„ Zdd„ Zdd„ Zdd„ ZdS ) ÚCreatedUpdateTestsNc                    s|   t ˆ  ¡ ƒˆ _ˆ j ¡  ˆ j d¡}| ¡  | d¡ d¡ | d¡ d¡ ‡ fdd„ˆ _|ˆ _G dd	„ d	tƒ}|ƒ ˆ _	d S )
Nr
   r   r   r(   r;   c                      s   ˆ j jS r   r   r   r   r   r   r   Õ   r   z*CreatedUpdateTests.setUp.<locals>.<lambda>c                   @   s   e Zd ZdZdZdS )z&CreatedUpdateTests.setUp.<locals>.Dater   r   Nr   r   r   r   r   r   Ø   s   r   r   r&   r   r   r   r'   Ã   s    
zCreatedUpdateTests.setUpc                 C   sX   g }t d| jjddddd| j|jd	 |  | j d¡ ¡ ¡ |  | j d¡ 	¡ d¡ dS )rB   r
   NFT)r   r*   r+   r,   r-   r.   r/   r0   r(   rC   )
r   r#   r   r%   r3   r4   r    r2   r5   r6   r7   r   r   r   r>   Þ   s        þÿzCreatedUpdateTests.test_pathc                 C   sX   g }t ddddddd| j| j|jd
 |  | j d¡ ¡ ¡ |  | j d¡ 	¡ d¡ dS )zP
        `incremental.update package --dev` increments the dev version.
        r
   NFTr)   r(   rC   rD   r7   r   r   r   Útest_dev÷   s       þÿzCreatedUpdateTests.test_devc                 C   sZ   g }t ddddddd| j| j|jd
 |  | j d¡ ¡ d¡ |  | j d¡ ¡ d	¡ dS )
zT
        `incremental.update package --patch` increments the patch version.
        r
   NTFr)   r(   ó  """
Provides inctestpkg version information.
"""

# This file is auto-generated! Do not edit!
# Use `python -m incremental.update inctestpkg` to change this file.

from incremental import Version

__version__ = Version('inctestpkg', 1, 2, 4)
__all__ = ["__version__"]
r   sƒ   
from incremental import Version
introduced_in = Version('inctestpkg', 1, 2, 4).short()
next_released_version = "inctestpkg 1.2.4"
©r   r%   r"   r3   r5   r#   r    r6   r7   r   r   r   Ú
test_patch  s       þÿÿzCreatedUpdateTests.test_patchc                 C   sT   | j  d¡ d¡ g }tddddddd| j| j|jd
 |  | j  d¡ ¡ d¡ dS )	zŒ
        `incremental.update package --patch` increments the patch version, and
        disregards any old prerelease/dev versions.
        r(   ó„   
from incremental import Version
__version__ = Version('inctestpkg', 1, 2, 3, release_candidate=1, dev=2)
__all__ = ["__version__"]
r
   NTFr)   rG   ©	r#   r    r!   r   r%   r"   r3   r5   r6   r7   r   r   r   Ú"test_patch_with_prerelease_and_dev,  s       þÿz5CreatedUpdateTests.test_patch_with_prerelease_and_devc                 C   sZ   g }t ddddddd| j| j|jd
 |  | j d¡ ¡ d¡ |  | j d¡ ¡ d	¡ dS )
z‚
        `incremental.update package --patch --rc` increments the patch
        version and makes it a release candidate.
        r
   NTFr)   r(   s!  """
Provides inctestpkg version information.
"""

# This file is auto-generated! Do not edit!
# Use `python -m incremental.update inctestpkg` to change this file.

from incremental import Version

__version__ = Version('inctestpkg', 1, 2, 4, release_candidate=1)
__all__ = ["__version__"]
r   s›   
from incremental import Version
introduced_in = Version('inctestpkg', 1, 2, 4, release_candidate=1).short()
next_released_version = "inctestpkg 1.2.4rc1"
rH   r7   r   r   r   Útest_rc_patchJ  s       þÿÿz CreatedUpdateTests.test_rc_patchc                 C   sl   | j  d¡ d¡ g }tddddddd| j| j|jd
 |  | j  d¡ ¡ d¡ |  | j  d	¡ ¡ d
¡ dS )z•
        `incremental.update package --rc` increments the rc version if the
        existing version is an rc, and discards any dev version.
        r(   rJ   r
   NFTr)   s!  """
Provides inctestpkg version information.
"""

# This file is auto-generated! Do not edit!
# Use `python -m incremental.update inctestpkg` to change this file.

from incremental import Version

__version__ = Version('inctestpkg', 1, 2, 3, release_candidate=2)
__all__ = ["__version__"]
r   s›   
from incremental import Version
introduced_in = Version('inctestpkg', 1, 2, 3, release_candidate=2).short()
next_released_version = "inctestpkg 1.2.3rc2"
rK   r7   r   r   r   Útest_rc_with_existing_rch  s       þÿÿz+CreatedUpdateTests.test_rc_with_existing_rcc                 C   sl   | j  d¡ d¡ g }tddddddd| j| j|jd
 |  | j  d¡ ¡ d¡ |  | j  d	¡ ¡ d
¡ dS )z´
        `incremental.update package --rc`, when the package is not a release
        candidate, will issue a new major/minor rc, and disregards the micro
        and dev.
        r(   so   
from incremental import Version
__version__ = Version('inctestpkg', 1, 2, 3, dev=2)
__all__ = ["__version__"]
r
   NFTr)   ó"  """
Provides inctestpkg version information.
"""

# This file is auto-generated! Do not edit!
# Use `python -m incremental.update inctestpkg` to change this file.

from incremental import Version

__version__ = Version('inctestpkg', 16, 8, 0, release_candidate=1)
__all__ = ["__version__"]
r   ó   
from incremental import Version
introduced_in = Version('inctestpkg', 16, 8, 0, release_candidate=1).short()
next_released_version = "inctestpkg 16.8.0rc1"
rK   r7   r   r   r   Útest_rc_with_no_rcŒ  s       þÿÿz%CreatedUpdateTests.test_rc_with_no_rcc                 C   s¬   g }t ddddddd| j| j|jd
 |  | j d¡ ¡ d¡ |  | j d¡ ¡ d	¡ t ddddddd| j| j|jd
 |  | j d¡ ¡ d
¡ |  | j d¡ ¡ d¡ dS )z›
        `incremental.update package`, when the package is a release
        candidate, will issue the major/minor, sans release candidate or dev.
        r
   NFTr)   r(   rO   r   rP   r1   s…   
from incremental import Version
introduced_in = Version('inctestpkg', 16, 8, 0).short()
next_released_version = "inctestpkg 16.8.0"
rH   r7   r   r   r   Útest_full_with_rc±  s6       þÿÿ   þÿÿz$CreatedUpdateTests.test_full_with_rcc                 C   sT   g }|   t¡(}tddddddd| j| j|jd
 W 5 Q R X |  |jjd d¡ dS )zy
        `incremental.update package`, when the package is NOT a release
        candidate, will raise an error.
        r
   NFr)   r   z6You need to issue a rc before updating the major/minor©	r<   r=   r   r%   r"   r3   r5   Ú	exceptionÚargs©r   r8   Úer   r   r   Útest_full_without_rcç  s    
    þ
þz'CreatedUpdateTests.test_full_without_rcc                 C   sì   g }|   t¡(}tddddddd| j| j|jd
 W 5 Q R X |  |jjd d¡ |   t¡(}tddddddd| j| j|jd
 W 5 Q R X |  |jjd d¡ |   t¡(}tddddddd| j| j|jd
 W 5 Q R X |  |jjd d¡ dS )	zV
        The `--newversion` flag can't be mixed with --patch, --rc, or --dev.
        r
   NÚ1TFr)   r   zOnly give --newversionrS   rV   r   r   r   Útest_no_mix_newversionö  s>    
    þ
    þ
    þz)CreatedUpdateTests.test_no_mix_newversionc                 C   s    g }|   t¡(}tddddddd| j| j|jd
 W 5 Q R X |  |jjd d¡ |   t¡(}tddddddd| j| j|jd
 W 5 Q R X |  |jjd d¡ dS )zH
        The `--dev` flag can't be mixed with --patch, or --rc.
        r
   NTFr)   r   zOnly give --devrS   rV   r   r   r   Útest_no_mix_dev  s*    
    þ
    þz"CreatedUpdateTests.test_no_mix_devc                 C   s8  g }|   t¡(}tddddddd| j| j|jd
 W 5 Q R X |  |jjd d¡ |   t¡(}tddddddd| j| j|jd
 W 5 Q R X |  |jjd d¡ |   t¡(}tddddddd| j| j|jd
 W 5 Q R X |  |jjd d¡ |   t¡(}tddddddd| j| j|jd
 W 5 Q R X |  |jjd d¡ dS )	zh
        The `--create` flag can't be mixed with --patch, --rc, --dev, or
        --newversion.
        r
   NTFr)   r   zOnly give --createrY   rS   rV   r   r   r   Útest_no_mix_create  sR    
    þ
    þ
    þ
    þz%CreatedUpdateTests.test_no_mix_createc                 C   sZ   g }t ddddddd| j| j|jd
 |  | j d¡ ¡ d¡ |  | j d¡ ¡ d	¡ dS )
zw
        `incremental.update package --newversion=1.2.3rc1dev3`, will set that
        version in the package.
        r
   Nz1.2.3rc1dev3Fr)   r(   s(  """
Provides inctestpkg version information.
"""

# This file is auto-generated! Do not edit!
# Use `python -m incremental.update inctestpkg` to change this file.

from incremental import Version

__version__ = Version('inctestpkg', 1, 2, 3, release_candidate=1, dev=3)
__all__ = ["__version__"]
r   s¦   
from incremental import Version
introduced_in = Version('inctestpkg', 1, 2, 3, release_candidate=1, dev=3).short()
next_released_version = "inctestpkg 1.2.3rc1dev3"
rH   r7   r   r   r   Útest_newversion<  s    
    þÿÿz"CreatedUpdateTests.test_newversionc                 C   sZ   g }t ddddddd| j| j|jd
 |  | j d¡ ¡ d¡ |  | j d¡ ¡ d	¡ dS )
zl
        `incremental.update package --newversion=1`, will set that
        version in the package.
        r
   NrY   Fr)   r(   s  """
Provides inctestpkg version information.
"""

# This file is auto-generated! Do not edit!
# Use `python -m incremental.update inctestpkg` to change this file.

from incremental import Version

__version__ = Version('inctestpkg', 1, 0, 0)
__all__ = ["__version__"]
r   sƒ   
from incremental import Version
introduced_in = Version('inctestpkg', 1, 0, 0).short()
next_released_version = "inctestpkg 1.0.0"
rH   r7   r   r   r   Útest_newversion_bare[  s    
    þÿÿz'CreatedUpdateTests.test_newversion_bare)r   r   r   ZmaxDiffr'   r>   rF   rI   rL   rM   rN   rQ   rR   rX   rZ   r[   r\   r]   r^   r   r   r   r   rE   ¿   s    $%6rE   c                   @   s$   e Zd Zdd„ Zdd„ Zdd„ ZdS )ÚScriptTestsc                    s¦   t ˆ ¡ ƒˆ_ˆj ¡  ˆj d¡ ¡  ˆj d¡ d¡}| ¡  | d¡ d¡ | d¡ d¡ ‡fdd„ˆ_|ˆ_G d	d
„ d
tƒ‰ G ‡ fdd„dtƒ}|ƒ ˆ_	d S )NrA   r
   r   r   r(   r;   c                      s   ˆ j jS r   r   r   r   r   r   r     r   z#ScriptTests.setUp.<locals>.<lambda>c                   @   s   e Zd ZdZdZdS )zScriptTests.setUp.<locals>.Dater   r   Nr   r   r   r   r   r   “  s   r   c                       s   e Zd Z‡ fdd„ZdS )z%ScriptTests.setUp.<locals>.DateModulec                    s   ˆ ƒ S r   r   r   ©r   r   r   Útoday˜  s    z+ScriptTests.setUp.<locals>.DateModule.todayN)r   r   r   ra   r   r`   r   r   Ú
DateModule—  s   rb   r   )r   r#   rb   r   )r   r   r   r'   |  s    
zScriptTests.setUpc              	   C   s\   t ƒ }|  td|¡ |  t¡}tdgƒ W 5 Q R X |  |jjd d¡ |  	d| 
¡ ¡ dS )úI
        Calling run() with no args will cause it to print help.
        Ústdoutz--helpr   zShow this message and exitN)r   r+   Úsysr<   Ú
SystemExitr   r5   rT   rU   ÚassertInÚgetvalue©r   ZstringiorW   r   r   r   Útest_run  s    zScriptTests.test_runc              	   C   s®   t ƒ }|  td|¡ |  td| j¡ |  td| j¡ |  t¡}t	ddgƒ W 5 Q R X |  
|jjd d¡ |  d| ¡ ¡ |  
| j d¡ ¡ d	¡ |  
| j d
¡ ¡ d¡ dS )rc   rd   r"   r%   r
   z--rcr   zUpdating codebaser(   rO   r   rP   N)r   r+   re   Úosr"   Údatetimer%   r<   rf   r   r5   rT   rU   rg   rh   r#   r    r6   ri   r   r   r   Útest_insufficient_argsª  s    ÿÿz"ScriptTests.test_insufficient_argsN)r   r   r   r'   rj   rm   r   r   r   r   r_   z  s   !r_   )Ú__doc__Z
__future__r   r   re   rk   rl   Ztwisted.python.filepathr   Ztwisted.python.compatr   Ztwisted.trial.unittestr   Zincremental.updater   r   r	   r:   r@   rE   r_   r   r   r   r   Ú<module>   s    3+L   >