
    <e~P                         d dl Z d dlZd dlZd dlZd dlZd dlZd dlZd dlmZ d dlm	Z	 d dl
mZ dZdZdZ G d d	ej                  Zed
k    r ej                     dS dS )    N)mock)support)	os_helpera  NAME=Fedora
VERSION="32 (Thirty Two)"
ID=fedora
VERSION_ID=32
VERSION_CODENAME=""
PLATFORM_ID="platform:f32"
PRETTY_NAME="Fedora 32 (Thirty Two)"
ANSI_COLOR="0;34"
LOGO=fedora-logo-icon
CPE_NAME="cpe:/o:fedoraproject:fedora:32"
HOME_URL="https://fedoraproject.org/"
DOCUMENTATION_URL="https://docs.fedoraproject.org/en-US/fedora/f32/system-administrators-guide/"
SUPPORT_URL="https://fedoraproject.org/wiki/Communicating_and_getting_help"
BUG_REPORT_URL="https://bugzilla.redhat.com/"
REDHAT_BUGZILLA_PRODUCT="Fedora"
REDHAT_BUGZILLA_PRODUCT_VERSION=32
REDHAT_SUPPORT_PRODUCT="Fedora"
REDHAT_SUPPORT_PRODUCT_VERSION=32
PRIVACY_POLICY_URL="https://fedoraproject.org/wiki/Legal:PrivacyPolicy"
a~  NAME="Ubuntu"
VERSION="20.04.1 LTS (Focal Fossa)"
ID=ubuntu
ID_LIKE=debian
PRETTY_NAME="Ubuntu 20.04.1 LTS"
VERSION_ID="20.04"
HOME_URL="https://www.ubuntu.com/"
SUPPORT_URL="https://help.ubuntu.com/"
BUG_REPORT_URL="https://bugs.launchpad.net/ubuntu/"
PRIVACY_POLICY_URL="https://www.ubuntu.com/legal/terms-and-policies/privacy-policy"
VERSION_CODENAME=focal
UBUNTU_CODENAME=focal
a  
# test data
ID_LIKE="egg spam viking"
EMPTY=
# comments and empty lines are ignored

SINGLE_QUOTE='single'
EMPTY_SINGLE=''
DOUBLE_QUOTE="double"
EMPTY_DOUBLE=""
QUOTES="double\'s"
SPECIALS="\$\`\\\'\""
# invalid lines
=invalid
=
INVALID
IN-VALID=value
IN VALID=value
c                   n   e Zd Zd Zd Zej         ej                    d                         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d Zd Zd Zd Zd Zd Zd Z ej        ej         dv d           ej                    d                         Z! ej"        ej         #                    d          d          d             Z$d Z%d Z&d Z' ej"        ej         d k    d!          d"             Z( ej        ej)        d#          d$             Z*ej+        d%             Z,d& Z-d' Z.d( Z/d)S )*PlatformTestc                     t           j                                         t           j                                         d t           _        d t           _        d S N)platform_platform_cacheclear_sys_version_cache_uname_cache_os_release_cacheselfs    )/usr/lib/python3.11/test/test_platform.pyclear_cacheszPlatformTest.clear_cachesH   sB     &&(((#))+++ $%)"""    c                 ,    t          j                    }d S r	   )r
   architecturer   ress     r   test_architecturezPlatformTest.test_architectureN   s    #%%r   c                     t          j                    5 }d}|                      |j        |  |j        |            d d d            d S # 1 swxY w Y   d S )N)z-cz/import platform; print(platform.architecture()))r   PythonSymlinkassertEqual	call_real	call_link)r   pycmds      r   test_architecture_via_symlinkz*PlatformTest.test_architecture_via_symlinkQ   s     "$$ 	EIC\R\3/s1CDDD	E 	E 	E 	E 	E 	E 	E 	E 	E 	E 	E 	E 	E 	E 	E 	E 	E 	Es   )A

AAc                 D    dD ]}dD ]}t          j         ||          }d S )N)FT)r
   )r   aliasedterser   s       r   test_platformzPlatformTest.test_platformX   sC    $ 	8 	8G& 8 8'778	8 	8r   c                 ,    t          j                    }d S r	   )r
   systemr   s     r   test_systemzPlatformTest.test_system]   s    or   c                 ,    t          j                    }d S r	   )r
   noder   s     r   	test_nodezPlatformTest.test_node`   s    moor   c                 ,    t          j                    }d S r	   )r
   releaser   s     r   test_releasezPlatformTest.test_releasec         r   c                 ,    t          j                    }d S r	   )r
   versionr   s     r   test_versionzPlatformTest.test_versionf   r/   r   c                 ,    t          j                    }d S r	   )r
   machiner   s     r   test_machinezPlatformTest.test_machinei   r/   r   c                 ,    t          j                    }d S r	   )r
   	processorr   s     r   test_processorzPlatformTest.test_processorl        ""r   c                 l    t           j        | _        t           j        | _        t           j        | _        d S r	   )sysr1   save_version_gitsave_gitr
   save_platformr   s    r   setUpzPlatformTest.setUpo   s%    K \r   c                 l    | j         t          _        | j        t          _        | j        t          _        d S r	   )r<   r;   r1   r>   r=   r?   r
   r   s    r   tearDownzPlatformTest.tearDownt   s#    '=)r   c                    dD ]>\  }}t          j        |          \  }}}}}}}	|                     ||dd|||	f|           ?dd| j        fddddd	d
ddddd| j        fdi}
|
                                D ]]\  \  }}}}|t
          _        |t          t
          d          rt
          `n|t
          _        ||t
          _         |                     t          j	                    |d                    |                     t          j
                    |d                    |                     t          j                    |d                    |                     t          j                    |d                    |                     t          j                    |d                    |                     t          j                    |d                    _d S )N))zC2.4.3 (#1, Jun 21 2006, 13:54:21) 
[GCC 3.3.4 (pre 3.3.5 20040809)])CPython2.4.3 rF   1zJun 21 2006 13:54:21zGCC 3.3.4 (pre 3.3.5 20040809))z)IronPython 1.0.60816 on .NET 2.0.50727.42)
IronPythonz	1.0.60816rF   rF   rF   rF   .NET 2.0.50727.42)z4IronPython 1.0 (1.0.61005.1977) on .NET 2.0.50727.42)rH   z1.0.0rF   rF   rF   rF   rI   )z"2.4.3 (truncation, date, t) 
[GCC])rD   rE   rF   rF   
truncationzdate tGCC)z!2.4.3 (truncation, date, ) 
[GCC]rD   rE   rF   rF   rJ   daterK   )z 2.4.3 (truncation, date,) 
[GCC]rL   )z2.4.3 (truncation, date) 
[GCC]rL   )z2.4.3 (truncation, d) 
[GCC])rD   rE   rF   rF   rJ   drK   )z2.4.3 (truncation, ) 
[GCC]rD   rE   rF   rF   rJ   rF   rK   )z2.4.3 (truncation,) 
[GCC]rO   )z2.4.3 (truncation) 
[GCC]rO   rF   zX2.6.1 (r261:67515, Dec  6 2008, 15:26:00) 
[GCC 4.0.1 (Apple Computer, Inc. build 5370)])rD   	tags/r26167515)rD   2.6.1rP   rQ   )z
r261:67515zDec  6 2008 15:26:00z+GCC 4.0.1 (Apple Computer, Inc. build 5370))z/IronPython 2.0 (2.0.0.0) on .NET 2.0.50727.3053Ncli)rH   z2.0.0rF   rF   rF   rF   z.NET 2.0.50727.3053)z=2.6.1 (IronPython 2.6.1 (2.6.10920.0) on .NET 2.0.50727.1433)NrS   )rH   rR   rF   rF   rT   z.NET 2.0.50727.1433)z@2.7.4 (IronPython 2.7.4 (2.7.0.40) on Mono 4.0.30319.1 (32-bit))NrS   )rH   z2.7.4rF   rF   rT   zMono 4.0.30319.1 (32-bit))z^2.5 (trunk:6107, Mar 26 2009, 13:02:18) 
[Java HotSpot(TM) Client VM ("Apple Computer, Inc.")])Jythontrunk6107java1.5.0_16)rU   z2.5.0rV   rW   )z
trunk:6107Mar 26 2009rX   z12.5.2 (63378, Mar 26 2009, 18:03:29)
[PyPy 1.0.0])PyPyrV   63378)rZ   z2.5.2rV   r[   )r[   rY   rF   r=   r                  )r
   _sys_versionr   r?   itemsr;   r1   hasattrr=   python_implementationpython_versionpython_branchpython_revisionpython_buildpython_compiler)r   inputoutputnamer1   branchrevisionbuildno	builddatecompilersys_versionsversion_tagscmsys_platforminfos                  r   test_sys_versionzPlatformTest.test_sys_versiony   s    	O 	OME66 *511 LT7FHgy(wBHEvO O O O i.0BD@ M( [( ^.9@ B');=A"H ""$$	B 	B2,[#|d%CK{3'' !'+X;==tAwGGGX466Q@@@X355tAw???X577aAAAX244d1g>>>X577aAAAA	B 	Br   c                     t          j        t          j                    t          j                    t          j                              }d S r	   )r
   system_aliasr'   r-   r1   r   s     r   test_system_aliaszPlatformTest.test_system_alias   s;    #O
 
r   c                    t          j                    }|                     t          |                     |                     |d         |j                   |                     |d         |j                   |                     |d         |j                   |                     |d         |j                   |                     |d         |j                   |                     |d         |j                   |                     |d         |j                   |                     |d         |j                   |                     |d	         |j	                   |                     |d
         |j	                   |                     |d         |j
                   |                     |d         |j
                   |                     t          |          d           d S )Nr   ir\   r]   r^   r_   r`      )r
   uname
assertTrueanyr   r'   r*   r-   r1   r4   r7   lenr   s     r   
test_unamezPlatformTest.test_uname   s   nC!!!Q,,,R#*---Q***R#(+++Q---R#+...Q---R#+...Q---R#+...Q///R#-000S1%%%%%r   c                     t          j                    }|j        |j        |j        |j        |j        |j        f}|                     t          |          |           d S r	   )
r
   r   r'   r*   r-   r1   r4   r7   r   tupler   r   expecteds      r   test_uname_cast_to_tuplez%PlatformTest.test_uname_cast_to_tuple   sT    nJ#+s{CKM
 	sX.....r   c                    t          j                    }|                    ddddd          }|                     |j        d           |                     |j        d           |                     |j        d           |                     |j        d           |                     |j        d           |                     |j	        |j	                   d S )Nr'   r*   r-   r1   r4   )r'   r*   r-   r1   r4   )
r
   r   _replacer   r'   r*   r-   r1   r4   r7   )r   r   news      r   test_uname_replacezPlatformTest.test_uname_replace   s    nll&)y  2 2 	X...6***i000i000i00066666r   c                     t          j                    }|                     t          j        |          |           |                     t          j        |          |           d S r	   )r
   r   r   copydeepcopy)r   r   s     r   test_uname_copyzPlatformTest.test_uname_copy   sU      5))5111u--u55555r   c                 D   t          j                    }t          t          j        dz             D ]o}|                     |          5  t          j        ||          }t          j        |          }|                     ||           d d d            n# 1 swxY w Y   pd S )Nr\   )protocol)	r
   r   rangepickleHIGHEST_PROTOCOLsubTestdumpsloadsr   )r   origprotopickledrestoreds        r   test_uname_picklezPlatformTest.test_uname_pickle  s    ~62Q677 	1 	1Eu-- 1 1 ,tU33!<00  40001 1 1 1 1 1 1 1 1 1 1 1 1 1 1	1 	1s   A BB	B	c                     t          j                    }t          |          }|                     |d d          |           |                     |d d         |d d                    d S )Nr`   )r
   r   r   r   r   s      r   test_uname_sliceszPlatformTest.test_uname_slices
  sd    n::QQQ***RaR(2A2,/////r   c                 ^    |                      dt          j                    j                   d S )Nr7   )assertInr
   r   _fieldsr   s    r   test_uname_fieldszPlatformTest.test_uname_fields  s'    k8>#3#3#;<<<<<r   c                     t          j                                                    }|                     t	          |          d           |                     d|           d S )Nr   r7   )r
   r   _asdictr   r   r   r   s     r   test_uname_asdictzPlatformTest.test_uname_asdict  sQ    n&&((S1%%%k3'''''r   )win32OpenVMSzuname -p not usedc                    	 t          j        ddgd                                          }t          j        |          }n# t
          t           j        f$ r d}Y nw xY w|                     t          j                    j	        |           dS )z|
        On some systems, the processor must match the output
        of 'uname -p'. See Issue 35967 for rationale.
        r   z-pTtextrF   N)

subprocesscheck_outputstripr
   _unknown_as_blankOSErrorCalledProcessErrorr   r   r7   )r   proc_resexpects      r   test_uname_processorz!PlatformTest.test_uname_processor  s    	!.TJJJPPRRH/99FF67 	 	 	FFF	))3V<<<<<s   >A AAwinzwindows only testc                    	 t          j                    5 }d|v r|d= d|d<   d t          _        t          j                    \  }}}}}}|                     |d           d|d<   d t          _        t          j                    \  }}}}}}|                     |d           d d d            n# 1 swxY w Y   d t          _        d S # d t          _        w xY w)NPROCESSOR_ARCHITEW6432fooPROCESSOR_ARCHITECTUREbar)r   EnvironmentVarGuardr
   r   r   r   )r   environr'   r*   r-   r1   r4   r7   s           r   test_uname_win32_ARCHITEW6432z*PlatformTest.test_uname_win32_ARCHITEW6432&  s&   	).00 
1G+w66 894901(,%EM^EUEUBgw  %0004901(,%EM^EUEUBgw  %000
1 
1 
1 
1 
1 
1 
1 
1 
1 
1 
1 
1 
1 
1 
1 %)H!!!DH!((((s/   C B
B+C +B//C 2B/3C Cc                     t          j                    }t          j         dk    r$|                     t	          |                     d S d S )Njava)r
   java_verr;   r   allr   s     r   test_java_verzPlatformTest.test_java_ver;  sC    !!<6!!OOCHH%%%%% "!r   c                 ,    t          j                    }d S r	   )r
   	win32_verr   s     r   test_win32_verzPlatformTest.test_win32_ver@  r9   r   c                 `   t          j                    }t          j                    j        dk    r}t	          j        dgd          }|                                D ]E}|                    d          r.|                                	                                d         } nF| 
                    d|           |d         	                    d	          }|	                    d	          }t          |          t          |          z
  }|dk    r|                    d
g|z             |ddgk    r|                     ||           |                     |d         d           t          j        dk    r|                     |d         d           d S |                     |d         d           d S d S )NDarwinsw_versTr   zProductVersion:r   z failed to parse sw_vers output: r   .01016r\   rF   rF   rF   littler]   )i386x86_64arm64PowerPC)r
   mac_verr   r'   r   r   
splitlines
startswithr   splitfailr   extendr   r;   	byteorderr   )r   r   rk   linereal_verresult_listexpect_listlen_diffs           r   test_mac_verzPlatformTest.test_mac_verC  s     >"h..  ,i[tDDDF))++ I I??#455 #zz||1133B7HE 		GVGGHHHa&,,s++K"..--K;''#k*:*::H!||""C58#3444 tTl**  k:::
 SV\222}((c!f&ABBBBB  Q33333= /.r   darwinzOSX only testc                     t          j                    }|dk    r)t          j                    }t          j        d           d S t          j        |d           d S )Nr   )exitcode)osforkr
   r   _exitr   wait_process)r   pidrv   s      r   test_mac_ver_with_forkz#PlatformTest.test_mac_ver_with_forkg  sU     gii!88#%%DHQKKKKK  q111111r   zDoes not apply to Emscriptenc                    t           j                            t          j                  r<t           j                            t          j        dz             rt          j        dz   }n_t          j        dk    rCt           j                            t          j                  sdd l}|                    d          }nt          j        }t          j	        |           t          j        }|                     t          j        |           t          j        ddd          5  |                     t          j	                    d           d	D ]\  }}t#          |d
          5 }|                    d|z             |                                 d d d            n# 1 swxY w Y   |                     t          j	        |          |           	 d d d            n# 1 swxY w Y   d}t#          |d
          5 }|                    d|dz
  z             |                    d           d d d            n# 1 swxY w Y   |                     t          j	        ||          d           d S )Nz.exer   r   z
os.confstrTzmock 1.0)createreturn_value)r   z1.0))s   __libc_init)libcrF   )s	   GLIBC_2.9)glibcz2.9)s   libc.so.1.2.5)r   z1.2.5)s   libc_pthread.so.1.2.5)r   z1.2.5_pthread)r   rT   wbs
   [xxx%sxxx])
executablei @     x
   s"   GLIBC_1.23.4 GLIBC_1.9 GLIBC_1.21 )	chunksize)r   z1.23.4)r   pathisdirr;   r   existsr
   _winapiGetModuleFileNamelibc_verr   TESTFN
addCleanupunlinkr   patchr   openwriteflush)	r   r   r   filenamedatar   fpr   fs	            r   test_libc_verzPlatformTest.test_libc_verw  s    7==(( 
	(7>>#./00
	( &0JJ\W$$RW^^CN-K-K$ NNN 22155JJJ*%%%#	((333ZT
KKK 	+ 	+X.00/BBB# + +h (D)) RHH]T1222HHJJJ              
   !2h!G!G!G!)+ + + ++	+ 	+ 	+ 	+ 	+ 	+ 	+ 	+ 	+ 	+ 	+ 	+ 	+ 	+ 	+, 	(D!! 	>QGGD)b.)***GG<===	> 	> 	> 	> 	> 	> 	> 	> 	> 	> 	> 	> 	> 	> 	> 	*8yIII,	. 	. 	. 	. 	.sH   ?G-FGFGF-GGG31H00H47H4c                 	   ddl m} |                      |d           |d                     |                      |d           |d                     |                      |d           |d                     |                      |d           |d                     |                      |d           |d	                     |                      |d           |d
                     |                      |d	           |d                     |                      |d
           |d                     |                      |d           |d                     |                      |d           |d                     |                      |d           |d                     |                      |d           |d                     |                      |d           |d                     |                      |d           |d                     |                      |d           |d                     |                      |d           |d                     |                      |d           |d                     |                      |d           |d                     |                      |d           |d                     |                      |d           |d                     |                      |d           |d                     |                      |d           |d                     |                      |d           |d                     |                      |d            |d!                     |                      |d"           |d#                     |                      |d"           |d                      |                      |d!           |d#                     |                      |d            |d#                     |                      |d$           |d%                     |                      |d&           |d'                     |                      |d(           |d)                     d S )*Nr   )_comparable_versionz1.2.3z1.2.10z1.2.3.4z1_2-3+4z1.2spamz1.2devz1.2alphaz1.2az1.2betaz1.2bz1.2cz1.2RCz1.2rcz1.2.0z1.2plz1.2pz1.5.1z1.5.2b2z3.10a161z8.02z3.4jz
1996.07.12z3.1.1.6z3.2.pl02g611gz0.9z2.2z1.2z1.2.1z1.1z1.2.2z0.4z0.4.0z1.13++z5.5.kwz0.960923z	2.2beta29)r
   r	  r   
assertLess)r   Vs     r   test__comparable_versionz%PlatformTest.test__comparable_version  s|   5555557QQwZZ000'

AAhKK0009qq||444)aakk222(QQz]]333(QQvYY///*qq||444&		11V99---)aaii000&		11V99---&		11W::...&		11W::...'

AAgJJ///'

AAgJJ///'

AAgJJ///'

AAfII...'

AAiLL111'

AAeHH---6AAfII...&		11\??333)aa	ll333%!!E((+++%!!E((+++%!!G**---%!!G**---%!!E((+++'

AAgJJ///%!!G**---%!!G**---(QQx[[111*qq~~66666r   c           	         |                      | j                   d}d}t          j                            t
          d|          5  t          j                            t
          d|          5  dD ]\  }}}t          j                            t
          d|          5  |                                  |                     t          j        d	          |           |                     t          j                    |           d d d            n# 1 swxY w Y   	 d d d            n# 1 swxY w Y   d d d            d S # 1 swxY w Y   d S )
N)r   hostnamez17.7.0z_Darwin Kernel Version 17.7.0: Thu Jun 21 22:53:14 PDT 2018; root:xnu-4570.71.2~1/RELEASE_X86_64r   r   )64bitrF   r   )r   r   ))r   zDarwin-17.7.0zDarwin-17.7.0-x86_64-i386-64bit))z10.13.6r   r   zmacOS-10.13.6zmacOS-10.13.6-x86_64-i386-64bitr   r\   )r$   )r   r   r   r   objectr
   r   )r   r   archr   expected_terser   s         r   
test_macoszPlatformTest.test_macos  s?   )***#
 ZxuEE 	D 	DZxdKK	D 	D	6 D D1 Z&&x4; ' = = D D%%'''$$X%6Q%?%?%?PPP$$X%6%8%8(CCC	D D D D D D D D D D D D D D DD	D 	D 	D 	D 	D 	D 	D 	D 	D 	D 	D 	D 	D 	D 	D 	D 	D 	D 	D 	D 	D 	D 	D 	D 	D 	D 	D 	D 	D 	D 	D 	D 	Ds[   (E .0D(A%D	D(DD(DD(E (D,	,E /D,	0E  EEc                    |                      | j                   |                                  t          d t          j        D                       rmt          j                    }|                     d|           |                     d|           d|d<   |                     dt          j                               d S |                     t                    5  t          j                     d d d            d S # 1 swxY w Y   d S )Nc              3   T   K   | ]#}t           j                            |          V  $d S r	   )r   r   isfile).0fns     r   	<genexpr>z;PlatformTest.test_freedesktop_os_release.<locals>.<genexpr>  s0      LLbrw~~b!!LLLLLLr   NAMEIDtestCPYTHON_TEST)
r   r   r   r
   _os_release_candidatesfreedesktop_os_releaser   assertNotInassertRaisesr   )r   rv   s     r   test_freedesktop_os_releasez(PlatformTest.test_freedesktop_os_release  sE   )***LLH,KLLLLL 	2244DMM&$'''MM$%%%#)D /11    
 ""7++ 2 2/1112 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2s   C::C>C>c                 V   t          j        t                                                    }|                     |d         d           |                     |d         d           |                     d|           |                     |d         d           t          j        t                                                    }|                     |d         d           |                     |d         d	           |                     |d         d
           |                     |d         d           t          j        t                                                    }dddddddddddd}|                     ||           |                     t          |d                   d           d S )Nr  Fedorar  fedoraID_LIKEVERSION_CODENAMErF   UbuntuubuntudebianfocallinuxLinuxzegg spam vikingdoublesinglezdouble'sz$`\'")r  r  PRETTY_NAMEr)  EMPTYDOUBLE_QUOTEEMPTY_DOUBLESINGLE_QUOTEEMPTY_SINGLEQUOTESSPECIALSr:  r`   )	r
   _parse_os_releaseFEDORA_OS_RELEASEr   r   r#  UBUNTU_OS_RELEASETEST_OS_RELEASEr   )r   rv   r   s      r   test_parse_os_releasez"PlatformTest.test_parse_os_release  s   )*;*F*F*H*HIIfx000dX...D)))012666)*;*F*F*H*HIIfx000dX...i(333017;;;)/*D*D*F*FGG"($$ !
 
 	x(((T*-..22222r   N)0__name__
__module____qualname__r   r   r   skip_unless_symlinkr   requires_subprocessr!   r%   r(   r+   r.   r2   r5   r8   r@   rB   rw   rz   r   r   r   r   r   r   r   r   unittestskipIfr;   r
   r   
skipUnlessr   r   r   r   r   r   is_emscriptenr  cpython_onlyr  r  r%  r?   r   r   r   r   G   s       * * *& & & " W ""E E #" #"E
8 8 8
       ! ! !! ! !! ! !# # #* * *
* * *
UB UB UBn
 
 
& & &"/ / /7 7 76 6 6
1 1 10 0 0= = =( ( (
 X_S\%99;NOO W ""
= 
= #" PO
= X00779LMM) ) NM)(& & &
# # #!4 !4 !4H X1?CC2 2 DC2 X_W*,JKK.. .. LK..` !7 !7 !7HD D D62 2 2$3 3 3 3 3r   r   __main__)r   r   r   r
   r   r;   rE  r   r  r   test.supportr   r<  r=  r>  TestCaser   r@  mainrJ  r   r   <module>rO     s    				        



              " " " " " " , *O3 O3 O3 O3 O38$ O3 O3 O3d zHMOOOOO r   