
    daf                         d Z ddlmZmZ ddlZddlmZmZ ddl	Z	ddl
Z
ddlmZ  G d d      Z ej                  e      \  ZZ G d	 d
e	j"                        Zedk(  r e	j(                          yy)z-Tests for helper functions used by import.c .    )_bootstrap_external	machineryN)
ModuleTypeSimpleNamespace   )utilc                       e Zd Zd Zd Zd Zy)FixUpModuleTestsc                     t               }d}d}t        j                  ||      }d|i}t        j                  |||       |||d d}| j                  ||       y )Nhellohello.py__spec__)r   
__loader____file__
__cached__)objectr   
ModuleSpecr   _fix_up_moduleassertEqual)selfloadernamepathspecnsexpecteds          C/root/Python-3.12.4/Lib/test/test_importlib/import_/test_helpers.pytest_no_loader_but_specz(FixUpModuleTests.test_no_loader_but_spec   sb    ##D&1$**2tT: $F"&(X&    c                    d}d}i }t        j                  ||||       ||d}|j                         D ]9  \  }}| j                  | d|       5  | j	                  ||   |       d d d        ; |d   }| j                  |t        j                         | j	                  |j                  |       | j	                  |j                  t        j                  j                  |             | j	                  |j                  t        j                  j                  |             | j                  |j                  t        j                         | j	                  |j                  j                  |       | j	                  |j                  j                  |       | j	                  |j                  |d          y # 1 sw Y   xY wNr   r   )r   r   z: r   r   )r   r   itemssubTestr   assertIsInstancer   r   r   originosr   abspathcachedr   SourcelessFileLoaderr   r   r   r   r   keyvalr   s           r   %test_no_loader_no_spec_but_sourcelessz6FixUpModuleTests.test_no_loader_no_spec_but_sourceless   sk   **2tT4@ $D9 ( 	/HCRuo. /  C#./ /	/ *~dI$8$89D)bggood&;<bggood&;<dkk9+I+IJ))40))40b&67/ /s   F99G	c                    d}d}i }t        j                  |||       |d d}|j                         D ]9  \  }}| j                  | d|       5  | j	                  ||   |       d d d        ; |d   }| j                  |t        j                         | j	                  |j                  |       | j	                  |j                  t        j                  j                  |             | j                  |j                  t        j                         | j	                  |j                  j                  |       | j	                  |j                  j                  |       | j	                  |j                  |d          y # 1 sw Y   VxY wr!   )r   r   r"   r#   r   r$   r   r   r   r%   r&   r   r'   r   SourceFileLoaderr*   s           r   !test_no_loader_no_spec_but_sourcez2FixUpModuleTests.test_no_loader_no_spec_but_source0   sH   **2tT: $D9 ( 	/HCRuo. /  C#./ /	/ *~dI$8$89D)bggood&;<dkk9+E+EF))40))40b&67/ /s   E??F		N)__name__
__module____qualname__r   r-   r0    r   r   r
   r
      s    
'8,8r   r
   c                   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y)TestBlessMyLoaderc                 ~    t        d      }|`|`| j                  t	        j
                  |j                               y Nbarr   r   r   assertIsNoner   _bless_my_loader__dict__r   r9   s     r   "test_gh86298_no_loader_and_no_specz4TestBlessMyLoader.test_gh86298_no_loader_and_no_specO   s6    NL 	->>s||LMr   c                     t        d      }d |_        |`| j                  t	        j
                  |j                               y r8   r:   r>   s     r   'test_gh86298_loader_is_none_and_no_specz9TestBlessMyLoader.test_gh86298_loader_is_none_and_no_spec\   s8    L 	->>s||LMr   c                     t        d      }|`d |_        | j                  t        t
        j                  |j                         y r8   r   r   r   assertRaises
ValueErrorr   r<   r=   r>   s     r   'test_gh86298_no_loader_and_spec_is_nonez9TestBlessMyLoader.test_gh86298_no_loader_and_spec_is_nonei   s9    N00#,,	@r   c                     t        d      }d |_        d |_        | j                  t        t
        j                  |j                         y r8   rC   r>   s     r   ,test_gh86298_loader_is_none_and_spec_is_nonez>TestBlessMyLoader.test_gh86298_loader_is_none_and_spec_is_noneq   s;    00#,,	@r   c                     t        d      }d |_        t        d       |_        | j	                  t
        t        j                  |j                         y Nr9   )r   )	r   r   r   r   rD   rE   r   r<   r=   r>   s     r   3test_gh86298_loader_is_none_and_spec_loader_is_nonezETestBlessMyLoader.test_gh86298_loader_is_none_and_spec_loader_is_noney   s@    &d300#,,	@r   c                     t        d      }t               |_        |`t	        j
                         5  | j                  t        t        j                  |j                         d d d        y # 1 sw Y   y xY wr8   r   r   r   r   warningscatch_warningsassertWarnsDeprecationWarningr   r<   r=   r>   s     r   test_gh86298_no_specz&TestBlessMyLoader.test_gh86298_no_spec   s`    L$$& 	D"#44cllD	D 	D 	Ds   0A**A3c                     t        d      }t               |_        d |_        t	        j
                         5  | j                  t        t        j                  |j                         d d d        y # 1 sw Y   y xY wr8   rM   r>   s     r   test_gh86298_spec_is_nonez+TestBlessMyLoader.test_gh86298_spec_is_none   sb    $$& 	D"#44cllD	D 	D 	Ds   0A//A8c                    t        d      }t               |_        t               |_        t        j                         5  | j                  t        t        j                  |j                         d d d        y # 1 sw Y   y xY wr8   r   r   r   r   r   rN   rO   rP   rQ   r   r<   r=   r>   s     r   test_gh86298_no_spec_loaderz-TestBlessMyLoader.test_gh86298_no_spec_loader   se    &($$& 	D"#44cllD	D 	D 	Ds   0A77B c                    t        d      }t               |_        t        t                     |_        t        j                         5  | j                  t        t        j                  |j                         d d d        y # 1 sw Y   y xY wrJ   rV   r>   s     r   ,test_gh86298_loader_and_spec_loader_disagreez>TestBlessMyLoader.test_gh86298_loader_and_spec_loader_disagree   si    &fh7$$& 	D"#44cllD	D 	D 	Ds   0BB
c                     t        d      }|`t               |_        | j	                  t
        t        j                  |j                         y r8   )	r   r   r   r   rD   AttributeErrorr   r<   r=   r>   s     r   )test_gh86298_no_loader_and_no_spec_loaderz;TestBlessMyLoader.test_gh86298_no_loader_and_no_spec_loader   s<    N&(00#,,	@r   c                     t        d      }|`t               }t        |      |_        | j                  t        j                  |j                        |       y rJ   )	r   r   r   r   r   r   r   r<   r=   )r   r9   r   s      r   ,test_gh86298_no_loader_with_spec_loader_okayz>TestBlessMyLoader.test_gh86298_no_loader_with_spec_loader_okay   sG    N&f500>	r   N)r1   r2   r3   r?   rA   rF   rH   rK   rR   rT   rW   rY   r\   r^   r4   r   r   r6   r6   I   sC    NN@@@DDDD@r   r6   __main__)__doc__	importlibr   r   os.pathr&   typesr   r   unittestrN    r   r
   	test_bothFrozenFixUpModuleTestsSourceFixUpModuleTestsTestCaser6   r1   mainr4   r   r   <module>rk      so    3 4  -   78 78t 2@@P1Q . .k)) k\ zHMMO r   