
    n*j                        d Z ddlmZ ddlZddlmc mZ ddl	m
Z
 ddlmZmZmZ  e
e          j        j        dz  dz  Zdd	d
dddZddddddZddddddZddddddZd Zd Zd Zd  Zd! Zd" Zd# Zd$ Zd% ZdS )&uL   TDD tests for compiler/stages/normalize.py — known input → known output.    )annotationsN)Path)_strip_gutenbergnormalize_allnormalize_sourcefixtureshttpmeditations-gutenberg	gutenbergix
  z%Meditations (George Long translation)zpublic-domain)id
fetch_typegutenberg_idtitlerightswikipedia-marcus-aurelius	wikipediazMarcus Aureliusu   Marcus Aurelius — Wikipedia)r   r   wikipedia_titler   r   zwikiquote-marcus-aureliusurlz-https://en.wikiquote.org/wiki/Marcus_Aureliusu   Marcus Aurelius — Wikiquote)r   r   r   r   r   zinterview-transcriptyoutubezhttps://example.com/watch?v=abczInterview Transcriptzpersonal-usec                    t           dz                                  } t          |           }d}||v}|st          j        d|fd||f          t          j        |          dt          j                    v st          j        |          rt          j        |          nddz  }dd|iz  }t          t          j
        |                    d x}}d	}||v }|st          j        d
|fd||f          t          j        |          dt          j                    v st          j        |          rt          j        |          nddz  }dd|iz  }t          t          j
        |                    d x}}d S )Ngutenberg_2680.txtProject Gutenbergnot in)z%(py1)s not in %(py3)sbodypy1py3assert %(py5)spy5Meditationsinz%(py1)s in %(py3)sFIXTURES_HTTP	read_textr   
@pytest_ar_call_reprcompare	_saferepr@py_builtinslocals_should_repr_global_nameAssertionError_format_explanationrawr   @py_assert0@py_assert2@py_format4@py_format6s         F/Users/jameslopez/projects/MentorCore/tests/compiler/test_normalize.py*test_strip_gutenberg_removes_header_footerr7   /   s   //
:
:
<
<CC  D*d**********d****************d*****d*************************** =D          =D     =           D     D                                 c                    t           dz                                  } t          |           }d}||v }|st          j        d|fd||f          t          j        |          dt          j                    v st          j        |          rt          j        |          nddz  }dd|iz  }t          t          j
        |                    d x}}d	}||v }|st          j        d|fd||f          t          j        |          dt          j                    v st          j        |          rt          j        |          nddz  }dd|iz  }t          t          j
        |                    d x}}d S )
Nr   zgentle and meekr"   r$   r   r   r   r    transformationr%   r0   s         r6   (test_strip_gutenberg_preserves_body_textr;   6   s   //
:
:
<
<CC  D$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$#t##########t################t#####t#############################r8   c                   t           dz  }t          |t          | dz            }|                                }|j        }d} ||          }|sddt          j                    v st          j        |          rt          j	        |          ndt          j	        |          t          j	        |          t          j	        |          dz  }t          t          j        |                    d x}x}}d}||v }	|	st          j        d|	fd	||f          t          j	        |          dt          j                    v st          j        |          rt          j	        |          ndd
z  }
dd|
iz  }t          t          j        |                    d x}}	d}||v }	|	st          j        d|	fd	||f          t          j	        |          dt          j                    v st          j        |          rt          j	        |          ndd
z  }
dd|
iz  }t          t          j        |                    d x}}	d}||v }	|	st          j        d|	fd	||f          t          j	        |          dt          j                    v st          j        |          rt          j	        |          ndd
z  }
dd|
iz  }t          t          j        |                    d x}}	d S )Nr   corpus---zLassert %(py6)s
{%(py6)s = %(py2)s
{%(py2)s = %(py0)s.startswith
}(%(py4)s)
}content)py0py2py4py6z source_id: meditations-gutenbergr"   r$   r   r   r    zrights: public-domainz1origin_url: https://www.gutenberg.org/ebooks/2680)r&   r   GUTENBERG_SRCr'   
startswithr+   r,   r(   r-   r*   r.   r/   r)   )tmp_pathr1   destr?   @py_assert1@py_assert3@py_assert5@py_format7r2   r3   r4   r5   s               r6   (test_normalize_gutenberg_has_frontmatterrL   @   sN   
.
.CC80CDDDnnG$e$e$$$$$$$$$$$$$$$7$$$$$7$$$$$$$$$$e$$$$$$$$$$$$$$$$$$$$$$$$$$-8-8888888888-88888-8888888888888888888888888888888888888888888"-"g----------"g-----"-----------g-----g--------------------------->I>'IIIIIIIIII>'IIIII>IIIIIIIIIII'IIIII'IIIIIIIIIIIIIIIIIIIIIIIIIIIIIr8   c                   t           dz  }t          |t          | dz            }|                                }d}|                    dd          d         }||v}|slt          j        d|fd||f          t          j        |          t          j        |          d	z  }d
d|iz  }t          t          j	        |                    d x}x}}d S )Nr   r=   r   r>      r   )z%(py1)s not in %(py4)s)r   rB   zassert %(py6)srC   )
r&   r   rD   r'   splitr(   r)   r*   r.   r/   )	rF   r1   rG   r?   r2   rI   r3   @py_format5rK   s	            r6   'test_normalize_gutenberg_no_boilerplaterR   J   s    
.
.CC80CDDDnnGAgmmE1&=&=b&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AAAAAr8   c                    t           dz  }t          |t          | dz            }|                                }d}||v }|st	          j        d|fd||f          t	          j        |          dt          j                    v st	          j	        |          rt	          j        |          nddz  }dd	|iz  }t          t	          j        |                    d x}}d
}||v }|st	          j        d|fd||f          t	          j        |          dt          j                    v st	          j	        |          rt	          j        |          nddz  }dd	|iz  }t          t	          j        |                    d x}}d S )Nwikipedia_marcus_aurelius.jsonr=   z$source_id: wikipedia-marcus-aureliusr"   r$   r?   r   r   r    Stoic)r&   r   WIKIPEDIA_SRCr'   r(   r)   r*   r+   r,   r-   r.   r/   rF   r1   rG   r?   r2   r3   r4   r5   s           r6   test_normalize_wikipediarX   Q   s   
:
:CC80CDDDnnG1<1W<<<<<<<<<<1W<<<<<1<<<<<<<<<<<W<<<<<W<<<<<<<<<<<<<<<<<<<<<<<<<<<7g7g7ggr8   c                   t           dz  }t          |t          | dz            }|                                }d}||v }|st	          j        d|fd||f          t	          j        |          dt          j                    v st	          j	        |          rt	          j        |          nddz  }dd	|iz  }t          t	          j        |                    d x}}t          |          }d
}||k    }	|	st	          j        d|	fd||f          dt          j                    v st	          j	        t                    rt	          j        t                    nddt          j                    v st	          j	        |          rt	          j        |          ndt	          j        |          t	          j        |          dz  }
dd|
iz  }t          t	          j        |                    d x}x}	}d S )Nzwikiquote_marcus_aurelius.htmlr=   z$source_id: wikiquote-marcus-aureliusr"   r$   r?   r   r   r    d   )>)z/%(py3)s
{%(py3)s = %(py0)s(%(py1)s)
} > %(py6)slenr@   r   r   rC   zassert %(py8)spy8)r&   r   URL_SRCr'   r(   r)   r*   r+   r,   r-   r.   r/   r\   )rF   r1   rG   r?   r2   r3   r4   r5   rJ   @py_assert4rK   @py_format9s               r6   test_normalize_urlrb   Y   s   
:
:CC(X*=>>DnnG1<1W<<<<<<<<<<1W<<<<<1<<<<<<<<<<<W<<<<<W<<<<<<<<<<<<<<<<<<<<<<<<<<<w<<#<#<#33ww<#r8   c                   | dz  }|                     d           t          |t          | dz            }|                                }d}||v }|st	          j        d|fd||f          t	          j        |          dt          j                    v st	          j	        |          rt	          j        |          nddz  }d	d
|iz  }t          t	          j        |                    d x}}d}||v }|st	          j        d|fd||f          t	          j        |          dt          j                    v st	          j	        |          rt	          j        |          nddz  }d	d
|iz  }t          t	          j        |                    d x}}d}||v }|st	          j        d|fd||f          t	          j        |          dt          j                    v st	          j	        |          rt	          j        |          nddz  }d	d
|iz  }t          t	          j        |                    d x}}d}||v }|st	          j        d|fd||f          t	          j        |          dt          j                    v st	          j	        |          rt	          j        |          nddz  }d	d
|iz  }t          t	          j        |                    d x}}d S )Nzinterview-transcript.txtz3[00:00:00.000 --> 00:00:01.000] SPEAKER_00: Hello.
r=   zsource_id: interview-transcriptr"   r$   r?   r   r   r    zfetch_type: youtubez+origin_url: https://example.com/watch?v=abczSPEAKER_00: Hello.)
write_textr   TRANSCRIPT_SRCr'   r(   r)   r*   r+   r,   r-   r.   r/   rW   s           r6   test_normalize_transcriptrf   a   s_   
/
/CNNIJJJCH1DEEDnnG,7,7777777777,77777,7777777777777777777777777777777777777777777 + G++++++++++ G+++++ +++++++++++G+++++G+++++++++++++++++++++++++++8C8GCCCCCCCCCC8GCCCCC8CCCCCCCCCCCGCCCCCGCCCCCCCCCCCCCCCCCCCCCCCCCCC*7**********7****************7*****7*****************************r8   c                D   t           dz  }t          |t          | dz            }|                                }|                    dd          }t          |          }d}||k    }|st          j        d|fd||f          dt          j	                    v st          j
        t
                    rt          j        t
                    ndd	t          j	                    v st          j
        |          rt          j        |          nd	t          j        |          t          j        |          d
z  }t          j        d          dz   d|iz  }	t          t          j        |	                    dx}x}}|d         }
d}||
v }|st          j        d|fd||
f          t          j        |          dt          j	                    v st          j
        |
          rt          j        |
          nddz  }dd|iz  }t          t          j        |                    dx}}dS )zDResulting file must start with frontmatter and have a title heading.r   r=   r>   rN      )>=)z0%(py3)s
{%(py3)s = %(py0)s(%(py1)s)
} >= %(py6)sr\   partsr]   zExpected frontmatter delimitersz
>assert %(py8)sr^   Nz# r"   r$   body_after_fmr   r   r    )r&   r   rD   r'   rP   r\   r(   r)   r+   r,   r-   r*   _format_assertmsgr.   r/   )rF   r1   rG   r?   rj   r3   rJ   r`   rK   ra   rk   r2   r4   r5   s                 r6   !test_normalize_output_is_valid_mdrm   n   sB   
.
.CC80CDDDnnGMM%##Eu::==:?=========:============3=====3=============u=====u======:=====================================!HM 4=          4=     4           =     =                             r8   c                   t           dz  t           dz  d}t          t          g}t          ||| dz            }d}||v }|st	          j        d|fd||f          t	          j        |          dt          j                    v st	          j	        |          rt	          j        |          ndd	z  }d
d|iz  }t          t	          j        |                    d x}}d}||v }|st	          j        d|fd||f          t	          j        |          dt          j                    v st	          j	        |          rt	          j        |          ndd	z  }d
d|iz  }t          t	          j        |                    d x}}|                                D ]f}|j        }	 |	            }
|
sddt          j                    v st	          j	        |          rt	          j        |          ndt	          j        |	          t	          j        |
          dz  }t          t	          j        |                    d x}	}
|j        }	d}|	|k    }
|
st	          j        d|
fd|	|f          dt          j                    v st	          j	        |          rt	          j        |          ndt	          j        |	          t	          j        |          dz  }dd|iz  }t          t	          j        |                    d x}	x}
}hd S )Nr   rT   )r
   r   r=   r
   r"   r$   resultsr   r   r    r   zAassert %(py4)s
{%(py4)s = %(py2)s
{%(py2)s = %(py0)s.exists
}()
}path)r@   rA   rB   z.md)==)z.%(py2)s
{%(py2)s = %(py0)s.suffix
} == %(py5)s)r@   rA   r    zassert %(py7)spy7)r&   rD   rV   r   r(   r)   r*   r+   r,   r-   r.   r/   valuesexistssuffix)rF   	raw_pathssourcesro   r2   r3   r4   r5   rp   rH   rI   rQ   r`   @py_format8s                 r6   test_normalize_allry   |   ss   !.1E!E%25U%U I m,GIw80CDDG"-"g----------"g-----"-----------g-----g---------------------------&1&'1111111111&'11111&11111111111'11111'111111111111111111111111111   $ ${{{}}}tt{}{#e#{e##########{e############t#####t######{####e############################$ $r8   )__doc__
__future__r   builtinsr+   _pytest.assertion.rewrite	assertionrewriter(   pathlibr   compiler.stages.normalizer   r   r   __file__parentr&   rD   rV   r_   re   r7   r;   rL   rR   rX   rb   rf   rm   ry    r8   r6   <module>r      s   R R " " " " " "                     W W W W W W W W W WX%,z9FB "4  &(,  &:,  !,# ! ! !$ $ $J J JB B B    
+ 
+ 
+! ! !$ $ $ $ $r8   