B
    u9a                 @   s   d Z ddlZddlmZmZmZ ddlZddlZddlm	Z	m
Z
 ddlmZmZ G dd de	ZG dd	 d	ejZd
d Zdd Zi Zded< ded< ded< edkre  dS )z#Test suite for the cProfile module.    N)run_unittestTESTFNunlink)ProfileTestregenerate_expected_output)assert_python_failureassert_python_okc               @   s2   e Zd ZejZeZdZdd Zdd Z	dd Z
dS )	CProfileTestz{built-in method builtins.max}c             C   s   t S )N)_ProfileOutput)self r   #/usr/lib/python3.7/test_cprofile.pyget_expected_output   s    z CProfileTest.get_expected_outputc          	   C   s|   dd l }tj}z^ttdJ}|t_z4|dd }|  |d}|  |  W d |t_X W d Q R X W d t	t X d S )Nr   wc               S   s   t S )N)intr   r   r   r   <lambda>       z>CProfileTest.test_bad_counter_during_dealloc.<locals>.<lambda>   )
_lsprofsysstderropenr   ZProfilerZenableZdisableclearr   )r   r   Zorig_stderrfileobjr   r   r   test_bad_counter_during_dealloc   s    
z,CProfileTest.test_bad_counter_during_deallocc             C   s0   t ddd t dddd tdddddd d S )Nz-mcProfileZrandom_module_xyzZtimeitz-n1)r   r   )r   r   r   r   test_module_path_option)   s    z$CProfileTest.test_module_path_optionN)__name__
__module____qualname__r   ZProfileZprofilerclassZprofilermoduleZexpected_max_outputr   r   r   r   r   r   r   r	      s   r	   c               @   s   e Zd Zdd ZdS )TestCommandLinec             C   s0   t dddd\}}}| |d | d| d S )Nz-mr   z-sZdemor   s!   option -s: invalid choice: 'demo')r   ZassertGreaterZassertIn)r   Zrcouterrr   r   r   	test_sort7   s    zTestCommandLine.test_sortN)r   r    r!   r%   r   r   r   r   r"   6   s   r"   c               C   s   t tt d S )N)r   r	   r"   r   r   r   r   	test_main<   s    r&   c               C   s    dt jkrt  n
ttt d S )Nz-r)r   argvr&   r   __file__r	   r   r   r   r   main?   s    
r)   a         28    0.028    0.001    0.028    0.001 profilee.py:110(__getattr__)
        1    0.270    0.270    1.000    1.000 profilee.py:25(testfunc)
     23/3    0.150    0.007    0.170    0.057 profilee.py:35(factorial)
       20    0.020    0.001    0.020    0.001 profilee.py:48(mul)
        2    0.040    0.020    0.600    0.300 profilee.py:55(helper)
        4    0.116    0.029    0.120    0.030 profilee.py:73(helper1)
        2    0.000    0.000    0.140    0.070 profilee.py:84(helper2_indirect)
        8    0.312    0.039    0.400    0.050 profilee.py:88(helper2)
        8    0.064    0.008    0.080    0.010 profilee.py:98(subhelper)Zprint_statsa  profilee.py:110(__getattr__)                      <-      16    0.016    0.016  profilee.py:98(subhelper)
profilee.py:25(testfunc)                          <-       1    0.270    1.000  <string>:1(<module>)
profilee.py:35(factorial)                         <-       1    0.014    0.130  profilee.py:25(testfunc)
                                                        20/3    0.130    0.147  profilee.py:35(factorial)
                                                           2    0.006    0.040  profilee.py:84(helper2_indirect)
profilee.py:48(mul)                               <-      20    0.020    0.020  profilee.py:35(factorial)
profilee.py:55(helper)                            <-       2    0.040    0.600  profilee.py:25(testfunc)
profilee.py:73(helper1)                           <-       4    0.116    0.120  profilee.py:55(helper)
profilee.py:84(helper2_indirect)                  <-       2    0.000    0.140  profilee.py:55(helper)
profilee.py:88(helper2)                           <-       6    0.234    0.300  profilee.py:55(helper)
                                                           2    0.078    0.100  profilee.py:84(helper2_indirect)
profilee.py:98(subhelper)                         <-       8    0.064    0.080  profilee.py:88(helper2)
{built-in method builtins.hasattr}                <-       4    0.000    0.004  profilee.py:73(helper1)
                                                           8    0.000    0.008  profilee.py:88(helper2)
{built-in method sys.exc_info}                    <-       4    0.000    0.000  profilee.py:73(helper1)
{method 'append' of 'list' objects}               <-       4    0.000    0.000  profilee.py:73(helper1)Zprint_callersa;  <string>:1(<module>)                              ->       1    0.270    1.000  profilee.py:25(testfunc)
profilee.py:110(__getattr__)                      ->
profilee.py:25(testfunc)                          ->       1    0.014    0.130  profilee.py:35(factorial)
                                                           2    0.040    0.600  profilee.py:55(helper)
profilee.py:35(factorial)                         ->    20/3    0.130    0.147  profilee.py:35(factorial)
                                                          20    0.020    0.020  profilee.py:48(mul)
profilee.py:48(mul)                               ->
profilee.py:55(helper)                            ->       4    0.116    0.120  profilee.py:73(helper1)
                                                           2    0.000    0.140  profilee.py:84(helper2_indirect)
                                                           6    0.234    0.300  profilee.py:88(helper2)
profilee.py:73(helper1)                           ->       4    0.000    0.004  {built-in method builtins.hasattr}
profilee.py:84(helper2_indirect)                  ->       2    0.006    0.040  profilee.py:35(factorial)
                                                           2    0.078    0.100  profilee.py:88(helper2)
profilee.py:88(helper2)                           ->       8    0.064    0.080  profilee.py:98(subhelper)
profilee.py:98(subhelper)                         ->      16    0.016    0.016  profilee.py:110(__getattr__)
{built-in method builtins.hasattr}                ->      12    0.012    0.012  profilee.py:110(__getattr__)Zprint_callees__main__)__doc__r   Ztest.supportr   r   r   Zunittestr   Ztest.test_profiler   r   Ztest.support.script_helperr   r   r	   ZTestCaser"   r&   r)   r
   r   r   r   r   r   <module>   s    )	
