o
    i%                     @   s   d Z ddlZddlZddlmZ ddlZddlZddlmZ ddl	Z	e	j
dejdk r,dndd dd	d
Zdd Zdd Ze	jdddgdd Ze	jdddgdd Zdd ZdS )z2Tests for tinypages build using sphinx extensions.    N)Path)subprocess_run_for_testingZsphinx)   
   z4.1.3)Z
minversionc              
   C   s   |d u rg n|}t jdddddt|t| t|g	|}t|ddi tjddid	}|j}|j}|jd
ksAJ d| d| d|rKt	
d|  | sQJ d S )N-msphinx-W-bhtml-dT
MPLBACKEND capture_outputtextenvr   z!sphinx build failed with stdout:
z	
stderr:

z-sphinx build emitted the following warnings:
)sys
executablestrr   osenvironstdoutstderr
returncodepytestZfailis_dir)
source_dirdoctree_dirhtml_dir
extra_argscmdprocouterr r$   n/var/www/html/eduruby.in/lip-sync/lip-sync-env/lib/python3.10/site-packages/matplotlib/tests/test_sphinxext.pybuild_sphinx_html   s$   r&   c              
      s  t jttjd | dd | d d }|d | d  tjdd	d
ddt tttjd t|g	}t|ddi t	j
dt	jdd}|j}|j}t|  | fdd fddfddtddD \}}}t|dstJ t|ds~J t|dsJ t|dsJ t|dsJ t|dsJ |d  }	d|	v sJ t|d sJ t|d  sJ d!|	v sJ d"|	v sJ d#|	v sJ d$|	v sJ |	d%d&ksJ t|d'sJ t|d( sJ | d)  }
|
d*d+}
| d) |
 fd,dd-D }t|  | t|d's(J d j|d. ks6J d& j|d ksDJ d/ j|d& ksRJ t|ds]J t|d&shJ t|d/ssJ d j|d/ ksJ t|dsJ d S )0N	tinypagesTdirs_exist_ok_buildr	   _imagesdoctreesr   r   r   r
   r   )r   ZGCOV_ERROR_FILEr   c                    s    d|  d S Nsome_plots-.pngr$   numimg_dirr$   r%   	plot_file;   s   z!test_tinypages.<locals>.plot_filec                    s    j d d|  d S )NZplot_directiver.   r/   )parentr0   )r   r$   r%   plot_directive_file>   s   z+test_tinypages.<locals>.plot_directive_filec                    s   g | ]} |qS r$   r$   .0i)r4   r$   r%   
<listcomp>B   s    z"test_tinypages.<locals>.<listcomp>               Z12_00Z12_01   some_plots.htmls   # Only a commentz
range4.pngzrange6_range6.pngs    This is the caption for plot 15.s    Plot 17 uses the caption option.s    This is the caption for plot 18.s&   plot-directive my-class my-other-classs#   This caption applies to both plots.      zrange6_range10.pngzincluded_plot_21.rsts   plt.plot(range(6))s   plt.plot(range(4))c                    s   g | ]	} |  jqS r$   )statst_mtimer7   )r6   r$   r%   r:   j   s    )r;   rB   r   r=   r   r   )shutilcopytreer   __file__r5   r   r   r   r   r   r   devnullr   r   r&   rangefilecmpcmp
read_bytescountreplacewrite_bytesrD   rE   )tmp_pathr   r    r!   r"   r#   Zrange_10Zrange_6Zrange_4Zhtml_contentscontentsZmodification_timesr$   )r   r3   r6   r4   r%   test_tinypages$   sj   
rS   c                 C   s   t tj}t|d | d  t|d | d  | d }| d d | d d	 }t| || tt	|
d
dks=J | d d }t| ||ddgd tt	|
d
dksZJ d S )Ntinypages/conf.pyconf.pytinypages/_static_staticr,   	index.rstz#
.. plot::

    plt.plot(range(2))
r*   Zhtml1**/index-1.pyr;   Zhtml2-Dzplot_html_show_source_link=0r   r   r   rH   r5   rF   copyfilerG   
write_textr&   lenlistglob)rQ   r5   r   Z	html_dir1Z	html_dir2r$   r$   r%   test_plot_html_show_source_link}   s   
rb   plot_html_show_source_linkr;   c                 C      t tj}t|d | d  t|d | d  | d }| d d | d d	 }t| ||d
d| gd tt	|
ddksDJ d S )NrT   rU   rV   rW   r,   rX   z?
.. plot::
    :show-source-link: true

    plt.plot(range(2))
r*   r	   rZ   plot_html_show_source_link=r[   rY   r;   r\   rQ   rc   r5   r   r   r$   r$   r%   test_show_source_link_true      

rg   c                 C   rd   )NrT   rU   rV   rW   r,   rX   z@
.. plot::
    :show-source-link: false

    plt.plot(range(2))
r*   r	   rZ   re   r[   rY   r   r\   rf   r$   r$   r%   test_show_source_link_false   rh   ri   c                    sZ  t jttjd | dd | d d }|d  | d }t| ||dd	gd
 d! fdd	}dD ]}|| s8J ||dd sBJ q. d  sKJ  d  sSJ  d  s[J  d  scJ  d  skJ  d  ssJ  d  s{J  d  sJ d|d jddv sJ d}||d jddv sJ d}||d  jddv sJ d S )"Nr'   Tr(   r*   r	   r+   r,   rZ   zplot_srcset=2xr[   r   c                    s    d|  | d S r-   r$   )r1   suffr2   r$   r%   r4      s   z&test_srcset_version.<locals>.plot_file)	r;   rB   r   r=   r>   r?   r@      rC   z.2x)rj   znestedpage-index-1.pngznestedpage-index-1.2x.pngznestedpage-index-2.pngznestedpage-index-2.2x.pngznestedpage2-index-1.pngznestedpage2-index-1.2x.pngznestedpage2-index-2.pngznestedpage2-index-2.2x.pngzDsrcset="_images/some_plots-1.png, _images/some_plots-1.2x.png 2.00x"rA   zutf-8)encodingzVsrcset="../_images/nestedpage-index-1.png, ../_images/nestedpage-index-1.2x.png 2.00x"znestedpage/index.htmlzXsrcset="../_images/nestedpage2-index-2.png, ../_images/nestedpage2-index-2.2x.png 2.00x"znestedpage2/index.html)r   )rF   rG   r   rH   r5   r&   exists	read_text)rQ   r   r   r4   indstr$   r2   r%   test_srcset_version   s8   rq   )N)__doc__rK   r   pathlibr   rF   r   Zmatplotlib.testingr   r   Zimportorskipversion_infor&   rS   rb   markZparametrizerg   ri   rq   r$   r$   r$   r%   <module>   s&    
Y

