
    /hh                        S SK r S SKrS SKrS SKrS SKJr  S SKJr   " S S\R                  5      r	 " S S\R                  5      r
\R                   " S S	\R                  5      5       r\S
:X  a  \R                  " 5         gg)    N)support)script_helperc                       \ rS rSrS rSrg)GeneralTest	   c                 \    [         R                  " S5      n[        R                  " U5        g )Nz_test_atexit.py)r   findfiler   run_test_script)selfscripts     9/opt/python-3.13.8/usr/lib/python3.13/test/test_atexit.pytest_generalGeneralTest.test_general
   s!    !!"34%%f-     N)__name__
__module____qualname____firstlineno__r   __static_attributes__r   r   r   r   r   	   s    .r   r   c                        \ rS rSrS rS rSrg)FunctionalTest   c                    [         R                  " S5      n[        R                  " SU5      nU R	                  UR
                  R                  5       R                  5       SS/5        U R                  UR                  5        g )Nz
            import atexit

            def f(msg):
                print(msg)

            atexit.register(f, "one")
            atexit.register(f, "two")
        -ctwoone
textwrapdedentr   assert_python_okassertEqualoutdecode
splitlinesassertFalseerrr   coderess      r   test_shutdownFunctionalTest.test_shutdown   sc        ,,T48)446G!r   c                    [         R                  " S5      n[        R                  " SU5      nU R	                  UR
                  R                  5       R                  5       SS/5        U R                  UR                  5        g )Na@  
            import sys
            import atexit as atexit1
            del sys.modules['atexit']
            import atexit as atexit2
            del sys.modules['atexit']

            assert atexit2 is not atexit1

            atexit1.register(print, "atexit1")
            atexit2.register(print, "atexit2")
        r   atexit2atexit1r   r(   s      r   test_atexit_instances$FunctionalTest.test_atexit_instances   sd        ,,T48)446I8NO!r   r   N)r   r   r   r   r+   r0   r   r   r   r   r   r      s    ""r   r   c                   `    \ rS rSrS rS r\R                  " \" \	S5      S5      S 5       r
Srg)	SubinterpreterTest2   c                     [         R                  " 5       n[        R                  " S5      n[        R
                  " U5      nU R                  US5        U R                  [         R                  " 5       U5        g )Nz
            import atexit
            def f():
                pass
            atexit.register(f)
            del atexit
        r   atexit_ncallbacksr   r    r   run_in_subinterpr"   r   nr)   rets       r   test_callbacks_leak&SubinterpreterTest.test_callbacks_leak5   s`          &&t,a ++-q1r   c                     [         R                  " 5       n[        R                  " S5      n[        R
                  " U5      nU R                  US5        U R                  [         R                  " 5       U5        g )Nz
            import atexit
            def f():
                pass
            atexit.register(f)
            atexit.__atexit = atexit
        r   r6   r:   s       r   test_callbacks_leak_refcycle/SubinterpreterTest.test_callbacks_leak_refcycleE   s`          &&t,a ++-q1r   pipezrequires os.pipe()c                 d   Sn[         R                  " 5       u  p#[        R                  " SR	                  U5      5      n[
        R                  " U5      n[         R                  " U5        U R                  [         R                  " U[        U5      5      U5        [         R                  " U5        g )Ns   The test has passed!z
            import os
            import atexit
            def callback():
                os.write({:d}, b"The test has passed!")
            atexit.register(callback)
        )osrB   r   r    formatr   r9   closer"   readlen)r   expectedrwr)   r<   s         r   (test_callback_on_subinterpreter_teardown;SubinterpreterTest.test_callback_on_subinterpreter_teardownT   s{     +wwy   F1I &&t,
CM2H=
r   r   N)r   r   r   r   r=   r@   unittest
skipUnlesshasattrrD   rL   r   r   r   r   r3   r3   2   s6    2 2 V,.BC Dr   r3   __main__)r7   rD   r   rN   testr   test.supportr   TestCaser   r   cpython_onlyr3   r   mainr   r   r   <module>rW      s|     	    &.(## . "X&&  "F 	2** 2 2j zMMO r   