
    -PhC                     f    d dl mZ d dlmZ ddlmZmZ  G d de          Z G d de          Zd	S )
    )dedent)TestCase   )parse_newfragment_basenamerender_fragmentsc                   n    e 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d Zd ZdS )TestParseNewsfragmentBasenamec                 P    |                      t          ddg          d           dS )z3<number>.<category> generates a counter value of 0.z123.featurefeature123r   r   NassertEqualr   selfs    [/var/www/html/test/jupyter/venv/lib/python3.11/site-packages/towncrier/test/test_builder.pytest_simplez)TestParseNewsfragmentBasename.test_simple   6    &}ykBB!	
 	
 	
 	
 	
    c                     |                      t          ddg          d           |                      t          ddg          d           dS ),Files without a valid category are rejected.z
README.extr   NNNREADMENr   r   s    r   test_invalid_categoryz3TestParseNewsfragmentBasename.test_invalid_category   sb    &|i[AA	
 	
 	
 	&x)==	
 	
 	
 	
 	
r   c                 P    |                      t          ddg          d           dS )z?<number>.<category>.<counter> generates a custom counter value.z123.feature.1r   r   r      Nr   r   s    r   test_counterz*TestParseNewsfragmentBasename.test_counter   s6    &DD!	
 	
 	
 	
 	
r   c                 P    |                      t          ddg          d           dS )File extensions are ignored.z123.feature.1.extr   r   Nr   r   s    r   test_counter_with_extensionz9TestParseNewsfragmentBasename.test_counter_with_extension%   s7    &':YKHH!	
 	
 	
 	
 	
r   c                 P    |                      t          ddg          d           dS )r    z123.feature.extr   r   Nr   r   s    r   test_ignores_extensionz4TestParseNewsfragmentBasename.test_ignores_extension,   7    &'89+FF!	
 	
 	
 	
 	
r   c                 P    |                      t          ddg          d           dS )5Non-numeric issue identifiers are preserved verbatim.zbaz.featurer   bazr   r   Nr   r   s    r   test_non_numeric_issuez4TestParseNewsfragmentBasename.test_non_numeric_issue3   r   r   c                 P    |                      t          ddg          d           dS )r    zbaz.feature.extr   r'   Nr   r   s    r   %test_non_numeric_issue_with_extensionzCTestParseNewsfragmentBasename.test_non_numeric_issue_with_extension:   r$   r   c                 P    |                      t          ddg          d           dS )r&   zbaz.1.2.featurer   )baz.1.2r   r   Nr   r   s    r   test_dots_in_issue_namez5TestParseNewsfragmentBasename.test_dots_in_issue_nameA   s7    &'89+FF%	
 	
 	
 	
 	
r   c                 P    |                      t          ddg          d           dS )r   zbaz.1.2.notfeaturer   r   Nr   r   s    r   (test_dots_in_issue_name_invalid_categoryzFTestParseNewsfragmentBasename.test_dots_in_issue_name_invalid_categoryH   s7    &';i[II	
 	
 	
 	
 	
r   c                 P    |                      t          ddg          d           dS )r&   zbaz.1.2.feature.3r   )r-   r      Nr   r   s    r   #test_dots_in_issue_name_and_counterzATestParseNewsfragmentBasename.test_dots_in_issue_name_and_counterO   s7    &':YKHH%	
 	
 	
 	
 	
r   c                 P    |                      t          ddg          d           dS )Leading spaces and subsequent leading zeros are stripped
        when parsing newsfragment names into issue numbers etc.
        z  007.featurer   )7r   r   Nr   r   s    r   
test_stripz(TestParseNewsfragmentBasename.test_stripV   s8     	&DD	
 	
 	
 	
 	
r   c                 P    |                      t          ddg          d           dS )r5   z  007.feature.3r   )r6   r   r2   Nr   r   s    r   test_strip_with_counterz5TestParseNewsfragmentBasename.test_strip_with_counter_   s9     	&'89+FF	
 	
 	
 	
 	
r   c                 P    |                      t          ddg          d           dS )zPOrphaned snippets must remain the orphan marker in the issue
        identifier.z+orphan.featurer   )z+orphanr   r   Nr   r   s    r   test_orphanz)TestParseNewsfragmentBasename.test_orphanh   s9     	&'89+FF%	
 	
 	
 	
 	
r   c                     |                      t          ddg          d           |                      t          ddg          d           dS )z8Orphaned snippets can contain numbers in the identifier.z+123_orphan.featurer   )z+123_orphanr   r   z+orphan_123.feature)z+orphan_123r   r   Nr   r   s    r   test_orphan_with_numberz5TestParseNewsfragmentBasename.test_orphan_with_numberp   sd    &'<ykJJ)	
 	
 	
 	&'<ykJJ)	
 	
 	
 	
 	
r   c                     |                      t          ddg          d           |                      t          ddg          d           dS )zJOrphaned snippets can contain numbers with dots in the
        identifier.z+12.3_orphan.featurer   )z+12.3_orphanr   r   z+orphan_12.3.feature)z+orphan_12.3r   r   Nr   r   s    r   test_orphan_with_dotted_numberz<TestParseNewsfragmentBasename.test_orphan_with_dotted_number{   sf     	&'=	{KK*	
 	
 	
 	&'=	{KK*	
 	
 	
 	
 	
r   c                 P    |                      t          ddg          d           dS )z-Orphaned snippets can consist of only digits.z+123.featurer   )z+123r   r   Nr   r   s    r   test_orphan_all_digitsz4TestParseNewsfragmentBasename.test_orphan_all_digits   s6    &~	{CC"	
 	
 	
 	
 	
r   N)__name__
__module____qualname__r   r   r   r!   r#   r)   r+   r.   r0   r3   r7   r9   r;   r=   r?   rA    r   r   r	   r	      s       
 
 
	
 	
 	

 
 

 
 

 
 

 
 

 
 

 
 

 
 

 
 

 
 

 
 

 
 
	
 	
 	


 

 


 
 
 
 
r   r	   c                   4    e Zd ZdZ ed          Zd Zd ZdS )TestNewsFragmentsOrderingz
    Tests to ensure that issues are ordered correctly in the output.

    This tests both ordering of issues within a fragment and ordering of
    fragments within a section.
    ax  
    {% for section_name, category in sections.items() %}
    {% if section_name %}# {{ section_name }}{% endif %}
    {%- for category_name, issues in category.items() %}
    ## {{ category_name }}
    {% for issue, numbers in issues.items() %}
    - {{ issue }}{% if numbers %} ({{ numbers|join(', ') }}){% endif %}

    {% endfor %}
    {% endfor -%}
    {% endfor -%}
    c           	      8    t          | j        d |i g di           S )NF)templateissue_format	fragmentsdefinitions
underlineswrapversiondata)r   rI   )r   rK   s     r   renderz TestNewsFragmentsOrdering.render   s0    ]
 
 
 	
r   c           
      x    |                      ddg dg g dgddgdii          }|t          d          k    sJ d	S )
a,  
        Issues are ordered first by the non-text component, then by their number.

        For backwards compatibility, issues with no number are grouped first and issues
        which are only a number are grouped last.

        Orphan news fragments are always last, sorted by their text.
         r   )10zgh-25zgh-34zgh-1zgh-2random)zAdded Cheesez
Added FishzAdded Breadz
Added Milkz
Added Eggsz
            ## feature
            - Added Eggs (random, gh-2)
            - Added Milk (gh-1)
            - Added Cheese (gh-3, gh-25, #4, #10)
            - Added Bread
            - Added Fish
N)rP   r   )r   outputs     r   test_orderingz'TestNewsFragmentsOrdering.test_ordering   s     (D(D(D&(')'-h'-x&8   

 
 	
 	
 	
 	
 	
 	
 	
 	
r   N)rB   rC   rD   __doc__r   rI   rP   rW   rE   r   r   rG   rG      sT          v	 H	
 	
 	
!
 !
 !
 !
 !
r   rG   N)	textwrapr   twisted.trial.unittestr   _builderr   r   r	   rG   rE   r   r   <module>r\      s          + + + + + + C C C C C C C CA
 A
 A
 A
 A
H A
 A
 A
HC
 C
 C
 C
 C
 C
 C
 C
 C
 C
r   