U
    e»{js  ã                   @   s`   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
 ddlmZ G dd	„ d	eƒZdS )
é    N)Ú__version__)Úfits)Ú	fitscheck)ÚAstropyUserWarningé   )ÚFitsTestCasec                   @   sD   e 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S )ÚTestFitscheckc              	   C   s6   t  t¡�}t dg¡ W 5 Q R X |jjdks2t‚d S )Nz-hr   )ÚpytestÚraisesÚ
SystemExitr   ÚmainÚvalueÚcodeÚAssertionError)ÚselfÚe© r   úc/var/www/html/bwave/python/venv/lib/python3.8/site-packages/astropy/io/fits/tests/test_fitscheck.pyÚ	test_help   s    zTestFitscheck.test_helpc              	   C   sT   t  t¡�0}t dg¡ | ¡ d }|dt› �ks6t‚W 5 Q R X |jj	dksPt‚d S )Nz	--versionr   z
fitscheck )
r	   r
   r   r   r   Ú
readouterrÚversionr   r   r   )r   Úcapsysr   Úoutr   r   r   Útest_version   s
    zTestFitscheck.test_versionc                 C   s0   t  dg¡dkst‚| ¡ \}}d|ks,t‚d S )Nzmissing.fitsr   zNo such file or directory)r   r   r   r   )r   r   ÚstdoutÚstderrr   r   r   Útest_missing_file   s    zTestFitscheck.test_missing_filec                 C   sf   |   d¡}t |g¡dkst‚t |dg¡dks4t‚t |dg¡dksJt‚| ¡ \}}d|ksbt‚d S )Núchecksum.fitsr   z--compliancez-vÚOK©Údatar   r   r   r   ©r   r   Útestfiler   r   r   r   r   Útest_valid_file!   s    
zTestFitscheck.test_valid_filec                 C   s\   |   d¡ |  d¡}t |ddg¡dks,t‚t |g¡dks@t‚| ¡ \}}d|ksXt‚d S )Nr   z
--checksumÚremover   ÚMISSING)Ú	copy_fileÚtempr   r   r   r   r!   r   r   r   Útest_remove_checksums+   s    

z#TestFitscheck.test_remove_checksumsc                 C   sh   |   d¡}t |g¡dkst‚| ¡ \}}d|ks6t‚t |dg¡dksLt‚| ¡ \}}|dksdt‚d S )Nzarange.fitsr   zChecksum not foundz--ignore-missingr   Ú r   r!   r   r   r   Útest_no_checksums3   s    
zTestFitscheck.test_no_checksumsc              	   C   s:  |   d¡}t |  d¡¡�}|j|dd� W 5 Q R X |   d¡}t |  d¡¡�H}d|d jd< d	|d jd
< d|d jd< d|d jd
< | |¡ W 5 Q R X t |g¡dks°t‚t	 
d|jd j¡sÈt‚| ¡  t t¡� t |ddg¡dksôt‚W 5 Q R X t	 
d|jd j¡�st‚| ¡  t |g¡dk�s6t‚dS )zh
        Tests that invalid checksum or datasum are overwritten when the file is
        saved.
        zref.fitsztb.fitsT)Zchecksumz	test.fitsz1       r   ZDATASUMZ8UgqATfo7TfoATfoZCHECKSUMZ
2349680925r   Z11daD8bX98baA8bUz)BAD.*Checksum verification failed for HDUz--writez--forceN)r'   r   Úopenr    ZwritetoÚheaderr   r   r   ÚreÚmatchÚrecordsÚmessageÚclearr	   Zwarnsr   )r   ZcaplogZreffileZhdulr"   r   r   r   Útest_overwrite_invalid>   s0    

 
ÿ" 
ÿ
z$TestFitscheck.test_overwrite_invalidN)
Ú__name__Ú
__module__Ú__qualname__r   r   r   r#   r(   r*   r2   r   r   r   r   r      s   
r   )r-   r	   Zastropyr   r   Z
astropy.ior   Zastropy.io.fits.scriptsr   Zastropy.utils.exceptionsr   Zconftestr   r   r   r   r   r   Ú<module>   s   