PKkz[&^$__pycache__/test_lang.cpython-39.pycnu[a "e@sHddlTddlmmZddlZGdddejZedkrDe dS))*Nc@seZdZddZdS)TestLangcCs|ttddS)N_)Z assertTruehasattrlang)selfr :/usr/lib/python3.9/site-packages/tracer/tests/test_lang.py test_provide_underscore_functionsz)TestLang.test_provide_underscore_functionN)__name__ __module__ __qualname__r r r r r rsr__main__) Z__meta__Ztracer.resources.langZ resourcesrosZunittestZTestCaserr mainr r r r s PKkz[mhh-__pycache__/test_package.cpython-39.opt-1.pycnu[a "es@s*ddlTddlmZGdddejZdS))*)Packagec@seZdZddZddZdS) TestPackagecCs4td}td}td}||||||dS)NfooZbar)r assertEqualZassertNotEqual)selfZp1Zp2Zp3r =/usr/lib/python3.9/site-packages/tracer/tests/test_package.py test_equalitys  zTestPackage.test_equalitycCstd}|t|ddS)Nrz )rrrepr)rpackager r r test_representationszTestPackage.test_representationN)__name__ __module__ __qualname__r rr r r r rsrN)Z__meta__Ztracer.resources.packagerZunittestZTestCaserr r r r s PKkz[mhh'__pycache__/test_package.cpython-39.pycnu[a "es@s*ddlTddlmZGdddejZdS))*)Packagec@seZdZddZddZdS) TestPackagecCs4td}td}td}||||||dS)NfooZbar)r assertEqualZassertNotEqual)selfZp1Zp2Zp3r =/usr/lib/python3.9/site-packages/tracer/tests/test_package.py test_equalitys  zTestPackage.test_equalitycCstd}|t|ddS)Nrz )rrrepr)rpackager r r test_representationszTestPackage.test_representationN)__name__ __module__ __qualname__r rr r r r rsrN)Z__meta__Ztracer.resources.packagerZunittestZTestCaserr r r r s PKkz[` -__pycache__/test_portage.cpython-39.opt-1.pycnu[a "e@snddlTzddlmZddlmZWney6Yn0eedkdGdddej Z e d krje d S) )*)IPackageManager)PortageZgentooz/Skipping tests because they are distro-specificc@s<eZdZddZddZddZddZd d Zd d Zd S) TestPortagecCs t|_dS)N)rmanagerselfr =/usr/lib/python3.9/site-packages/tracer/tests/test_portage.pysetUp szTestPortage.setUpcCs||jtddS)Nz9Every package manager should inherit from IPackageManager)ZassertIsInstancerrrr r r )test_implements_package_manager_interface sz5TestPortage.test_implements_package_manager_interfacecCsBz|jdWn,ty,|dYnty<Yn0dS)Nrz)packages_newer_than() is not implemented!)rZpackages_newer_thanNotImplementedErrorfail Exceptionrr r r #test_package_newer_than_implementedsz/TestPortage.test_package_newer_than_implementedcCsBz|jdWn,ty,|dYnty<Yn0dS)Nz'load_package_info() is not implemented!)rZload_package_inforrrrr r r test_load_package_infosz"TestPortage.test_load_package_infocCsBz|jdWn,ty,|dYnty<Yn0dS)Nrz$packages_files() is not implemented!)rZ package_filesrrrrr r r test_package_files_implementedsz*TestPortage.test_package_files_implementedcCsBz|jdWn,ty,|dYnty<Yn0dS)Nrz!provided_by() is not implemented!)rZ provided_byrrrrr r r test_provided_byszTestPortage.test_provided_byN) __name__ __module__ __qualname__r r rrrrr r r r rs r__main__N) Z__meta__Z&tracer.packageManagers.ipackageManagerrZtracer.packageManagers.portager ImportErrorZunittestZskipIfZDISTROZTestCaserrmainr r r r s PKkz[` '__pycache__/test_portage.cpython-39.pycnu[a "e@snddlTzddlmZddlmZWney6Yn0eedkdGdddej Z e d krje d S) )*)IPackageManager)PortageZgentooz/Skipping tests because they are distro-specificc@s<eZdZddZddZddZddZd d Zd d Zd S) TestPortagecCs t|_dS)N)rmanagerselfr =/usr/lib/python3.9/site-packages/tracer/tests/test_portage.pysetUp szTestPortage.setUpcCs||jtddS)Nz9Every package manager should inherit from IPackageManager)ZassertIsInstancerrrr r r )test_implements_package_manager_interface sz5TestPortage.test_implements_package_manager_interfacecCsBz|jdWn,ty,|dYnty<Yn0dS)Nrz)packages_newer_than() is not implemented!)rZpackages_newer_thanNotImplementedErrorfail Exceptionrr r r #test_package_newer_than_implementedsz/TestPortage.test_package_newer_than_implementedcCsBz|jdWn,ty,|dYnty<Yn0dS)Nz'load_package_info() is not implemented!)rZload_package_inforrrrr r r test_load_package_infosz"TestPortage.test_load_package_infocCsBz|jdWn,ty,|dYnty<Yn0dS)Nrz$packages_files() is not implemented!)rZ package_filesrrrrr r r test_package_files_implementedsz*TestPortage.test_package_files_implementedcCsBz|jdWn,ty,|dYnty<Yn0dS)Nrz!provided_by() is not implemented!)rZ provided_byrrrrr r r test_provided_byszTestPortage.test_provided_byN) __name__ __module__ __qualname__r r rrrrr r r r rs r__main__N) Z__meta__Z&tracer.packageManagers.ipackageManagerrZtracer.packageManagers.portager ImportErrorZunittestZskipIfZDISTROZTestCaserrmainr r r r s PKkz[5 /__pycache__/test_processes.cpython-39.opt-1.pycnu[a "e @sjddlTddlmZmZmZddlmZddlmZddl Z ddl Z Gddde j Z Gd d d eZdS) )*) ProcessesProcessProcessWrapper) SystemdDbus)ProcessesCollectionNc@sdeZdZeddddZeddddZeddddZd d Zeddd d Z d S) TestProcessesTz%@TODO Create Mock for Processes classcCs:td}|}||t|D]}||tq$dS)Nr)rallchildrenZassertIsInstancerr)selfprocessr childr?/usr/lib/python3.9/site-packages/tracer/tests/test_processes.py test_children s   zTestProcesses.test_childrencCs|tt}tt}||tt||||||ttt}| ||| ||dSN) rosgetpidgetppidZassertIsparentZassertInr Z reset_cache assertEqualZ assertIsNot)r r rZprocess2rrrtest_unique_processs    z!TestProcesses.test_unique_processcCsdtt}|tjtjjtjd}| dt || | dt || dS)N)stdinrr) rrrr subprocessPopensys executablePIPErlenZ rebuild_cacheZ terminate)r r rrrrtest_process_caching"s z"TestProcesses.test_process_cachingcCsJt}ddgdd|_t}ddgdd|_t}dddgd|_dS)NZsshd/usr/sbin/sshd)r!z-DZfooZbar)nameZexeZcmdline)ZsomethingandZ argumentsZidkZwhatZ withoutparams) ProcessMockdata)r Zp1Zp2Zp3rrrtest_name_sshd1szTestProcesses.test_name_sshdcCst}t}t|d}dS)Ni)rrpidsmax)r Zdbusr(Z nonexistingrrr test_dbusDs zTestProcesses.test_dbusN) __name__ __module__ __qualname__unittestZskipIfrrr r'r*rrrrr s      r c@seZdZddZddZdS)r%cCs i|_dSrr&)r rrr__init__NszProcessMock.__init__cCs |j|Srr/)r r"rrr_attrQszProcessMock._attrN)r+r,r-r0r1rrrrr%Msr%)Z__meta__Ztracer.resources.processesrrrZtracer.resources.SystemdDbusrZtracer.resources.collectionsrrrr.ZTestCaser r%rrrrs  DPKkz[St t )__pycache__/test_processes.cpython-39.pycnu[a "e @sjddlTddlmZmZmZddlmZddlmZddl Z ddl Z Gddde j Z Gd d d eZdS) )*) ProcessesProcessProcessWrapper) SystemdDbus)ProcessesCollectionNc@sdeZdZeddddZeddddZeddddZd d Zeddd d Z d S) TestProcessesTz%@TODO Create Mock for Processes classcCs:td}|}||t|D]}||tq$dS)Nr)rallchildrenZassertIsInstancerr)selfprocessr childr?/usr/lib/python3.9/site-packages/tracer/tests/test_processes.py test_children s   zTestProcesses.test_childrencCs|tt}tt}||tt||||||ttt}| ||| ||dSN) rosgetpidgetppidZassertIsparentZassertInr Z reset_cache assertEqualZ assertIsNot)r r rZprocess2rrrtest_unique_processs    z!TestProcesses.test_unique_processcCsdtt}|tjtjjtjd}| dt || | dt || dS)N)stdinrr) rrrr subprocessPopensys executablePIPErlenZ rebuild_cacheZ terminate)r r rrrrtest_process_caching"s z"TestProcesses.test_process_cachingcCszt}ddgdd|_|dks(Jt}ddgdd|_|dksPJt}dddgd|_|dksvJdS)NZsshd/usr/sbin/sshd)r!z-DZfooZbar)nameZexeZcmdline)ZsomethingandZ argumentsZidkZwhatzssh-thing-sessionZ withoutparams) ProcessMockdatar")r Zp1Zp2Zp3rrrtest_name_sshd1s"zTestProcesses.test_name_sshdcCsFt}t}t|d}|dddus.J||ddusBJdS)NirZPAMNameF)rrpidsmaxZhas_service_property_from_pid)r Zdbusr(Z nonexistingrrr test_dbusDs  zTestProcesses.test_dbusN) __name__ __module__ __qualname__unittestZskipIfrrr r'r*rrrrr s      r c@seZdZddZddZdS)r%cCs i|_dSrr&)r rrr__init__NszProcessMock.__init__cCs |j|Srr/)r r"rrr_attrQszProcessMock._attrN)r+r,r-r0r1rrrrr%Msr%)Z__meta__Ztracer.resources.processesrrrZtracer.resources.SystemdDbusrZtracer.resources.collectionsrrrr.ZTestCaser r%rrrrs  DPKkz[9udd%__pycache__/test_query.cpython-39.pycnu[a "e>@sNddlTddlmZmZGdddejZGdddeZe dkrJe d S) )*)QueryLazyc@seZdZddZddZdS) TestQuerycCsttd|_dS)N)Ztracer)r TracerMockquery)selfr ;/usr/lib/python3.9/site-packages/tracer/tests/test_query.pysetUpszTestQuery.setUpcCsB|j}||t|t|d|t|gddS)NgetABC) rZaffected_applicationsZassertIsInstancerZ assertTruehasattrZassertListEquallistr )r Z apps_queryr r r test_affected_applications s  z$TestQuery.test_affected_applicationsN)__name__ __module__ __qualname__r rr r r r rsrc@seZdZddZdddZdS)rcGsdS)Nr )r argsr r r __init__szTracerMock.__init__NcCsgdS)Nrr )r userr r r trace_affectedszTracerMock.trace_affected)N)rrrrrr r r r rsr__main__N) Z__meta__Z tracer.queryrrZunittestZTestCaserobjectrrmainr r r r s   PKkz[avcc+__pycache__/test_rules.cpython-39.opt-1.pycnu[a "e@sddlTddlmZddlmZmZzddlmZmZdZ Wn ddl mZmZdZ Yn0Gdd d e j Z ed kre d S) )*)DATA_DIR)RulesRule)patch mock_openz builtins.openz__builtin__.openc@s`eZdZeddZddZddZddZd d Zd d Z d dZ ddZ ddZ ddZ dS) TestRulescCsddtjD|_dS)NcSsg|]}|tr|qS) startswithr.0xr r ;/usr/lib/python3.9/site-packages/tracer/tests/test_rules.py s z(TestRules.setUpClass..)r DEFINITIONS)clsr r r setUpClassszTestRules.setUpClasscCs|jt_dt_dSN)rrZ_rulesselfr r rsetUpszTestRules.setUpcCstD]}||tqdSr)rallZassertIsInstancerrZruler r rtest_rules_typess zTestRules.test_rules_typescCs|d}tD]j}d|vs d|vr2|dt||jtjvrR|d|jt|dkrn|d|j|d7}q dS)NrnameactionzMissing attributes in rule #zUnknown action in rule: z Unsupported attributes in rule: ) rrfailstrrZACTIONSvaluesrlen)rirr r rtest_rules_attributess  zTestRules.test_rules_attributescCs4t}|D]"}||dkr |d|jq dS)NrzDuplicate rules for: )rrcountrr)rrulesr#r r rtest_rules_duplicity*szTestRules.test_rules_duplicitycCs|tddS)NZNON_EXISTING_APPLICATION)Z assertIsNonerfindrr r rtest_app_with_no_rule0szTestRules.test_app_with_no_rulecCs0tddi}|t|d|t|ddS)Nrfooz )r assertEqualrreprrr r rtest_representations3s zTestRules.test_representationscCs8tddd}tddd}||||jddS)Nr*bar)rrZbaz)rupdater+r)rZr1Zr2r r r test_update8s zTestRules.test_updatecCsdgt_d}ttt|dvt}|t|d|tdd|D||dj d||dj d ||d j d Wd n1s0Yd S) z/ Test parsing a single XML file with rules zwhatever-file.xmlzM )Z read_datarcSsg|]}t|tqSr ) isinstancerr r r rrMz'TestRules.test_load..rr*returnrr.N) rrr builtins_openrrr+r!Z assertTruerr)rdatar&r r r test_load?szTestRules.test_loadcCs$d}|D]}|j|kr|d7}q|S)Nrr)r)rZapp_nameZappsr%ar r r_countRs   zTestRules._countN)__name__ __module__ __qualname__ classmethodrrrr$r'r)r-r0r6r8r r r rr s r __main__N)Z__meta__Z tracer.pathsrZtracer.resources.rulesrrZ unittest.mockrrr4ZmockZunittestZTestCaser r9mainr r r rs  MPKkz[avcc%__pycache__/test_rules.cpython-39.pycnu[a "e@sddlTddlmZddlmZmZzddlmZmZdZ Wn ddl mZmZdZ Yn0Gdd d e j Z ed kre d S) )*)DATA_DIR)RulesRule)patch mock_openz builtins.openz__builtin__.openc@s`eZdZeddZddZddZddZd d Zd d Z d dZ ddZ ddZ ddZ dS) TestRulescCsddtjD|_dS)NcSsg|]}|tr|qS) startswithr.0xr r ;/usr/lib/python3.9/site-packages/tracer/tests/test_rules.py s z(TestRules.setUpClass..)r DEFINITIONS)clsr r r setUpClassszTestRules.setUpClasscCs|jt_dt_dSN)rrZ_rulesselfr r rsetUpszTestRules.setUpcCstD]}||tqdSr)rallZassertIsInstancerrZruler r rtest_rules_typess zTestRules.test_rules_typescCs|d}tD]j}d|vs d|vr2|dt||jtjvrR|d|jt|dkrn|d|j|d7}q dS)NrnameactionzMissing attributes in rule #zUnknown action in rule: z Unsupported attributes in rule: ) rrfailstrrZACTIONSvaluesrlen)rirr r rtest_rules_attributess  zTestRules.test_rules_attributescCs4t}|D]"}||dkr |d|jq dS)NrzDuplicate rules for: )rrcountrr)rrulesr#r r rtest_rules_duplicity*szTestRules.test_rules_duplicitycCs|tddS)NZNON_EXISTING_APPLICATION)Z assertIsNonerfindrr r rtest_app_with_no_rule0szTestRules.test_app_with_no_rulecCs0tddi}|t|d|t|ddS)Nrfooz )r assertEqualrreprrr r rtest_representations3s zTestRules.test_representationscCs8tddd}tddd}||||jddS)Nr*bar)rrZbaz)rupdater+r)rZr1Zr2r r r test_update8s zTestRules.test_updatecCsdgt_d}ttt|dvt}|t|d|tdd|D||dj d||dj d ||d j d Wd n1s0Yd S) z/ Test parsing a single XML file with rules zwhatever-file.xmlzM )Z read_datarcSsg|]}t|tqSr ) isinstancerr r r rrMz'TestRules.test_load..rr*returnrr.N) rrr builtins_openrrr+r!Z assertTruerr)rdatar&r r r test_load?szTestRules.test_loadcCs$d}|D]}|j|kr|d7}q|S)Nrr)r)rZapp_nameZappsr%ar r r_countRs   zTestRules._countN)__name__ __module__ __qualname__ classmethodrrrr$r'r)r-r0r6r8r r r rr s r __main__N)Z__meta__Z tracer.pathsrZtracer.resources.rulesrrZ unittest.mockrrr4ZmockZunittestZTestCaser r9mainr r r rs  MPKkz[o2VV,__pycache__/test_tracer.cpython-39.opt-1.pycnu[a "e @sddlTddlmZddlmZddlmZmZddlm Z ddl m Z m Z m Z mZzddlmZWnddlmZYn0Gd d d ejZGd d d eZGd dde ZGdddeZGdddeZGdddeZdddZedkredS))*)Tracer)Rules) Applications Application)AffectedProcess)ProcessesCollectionPackagesCollectionApplicationsCollectionAffectedProcessesCollection)patchc@s0eZdZddZedddddZdd Zd S) TestRulescCs>tt_tttttd|_d|j_t dddt t _ dS)N)memoryiZkernelT)nameignore) r rZ_appsrPackageManagerMockrdump_memory_mocktracerZ timestampZ_append_application ProcessesMockrZprocesses_factoryselfr|j}|t|ttdtdg||tdS)Nbazqux)rZtrace_affectedZassertSetEqualsetrfindassertIsInstancer )rZ init_systemaffectedrrrtest_trace_affecteds $zTestRules.test_trace_affectedcCsV|jtdt}||t|t|d|d}||t ||j ddS)Nrrr) rZtrace_applicationrrAffectedProcessMockrr Z assertEquallenrpid)rr processrrrtest_trace_application s   z TestRules.test_trace_applicationN)__name__ __module__ __qualname__rr r!r'rrrrrs  rc@sXeZdZddZddZeddZeddZed d Zd d Z d dZ ddZ dS) ProcessMockcCs||_||_||_||_dSN)r%files_name _create_time)rr%r create_timer-rrr__init__+szProcessMock.__init__cCs|jSr,r.rrrrr1szProcessMock.namecCs|jSr,r2rrrr real_name4szProcessMock.real_namecCsdSNFrrrrris_interpreted8szProcessMock.is_interpretedcCsdSr4rrrrr is_session<szProcessMock.is_sessioncCs|jSr,)r/rrrrr0@szProcessMock.create_timecCsgSr,rrrrrchildrenCszProcessMock.childrencCsdSr,rrrrrparentFszProcessMock.parentN) r(r)r*r1rpropertyr3r5r6r0r7r8rrrrr+*s   r+c@seZdZdddZdS)r#NcCs||_t|_t|_dSr,)r%rZpackagesr-)rr%rrrr1KszAffectedProcessMock.__init__)Nr(r)r*r1rrrrr#Jsr#c@seZdZeddZdS)rc CsHttdddgdtdddgdtd d d gd td ddddggS)NZfooiWfile1Zfile2file3Zbari'Zfile10Zfile11Zfile12r"ri )file7r=r>rafile4file9)r r+rrrrallSs zProcessesMock.allN)r(r)r* staticmethodrFrrrrrRsrc@seZdZddZdS) PackageMockcCs||_||_||_dSr,)rmodifiedr-)rrrIr-rrrr1^szPackageMock.__init__Nr:rrrrrH]srHc@sXeZdZeddgdeddgdeddgd ed d gd gZd dZddZdS)rAi r<Bi\)rDZfile5Zfile6CrC)rAZfile8rEDi"r@csttfdd|jS)Ncs |jkSr,)rI)p unix_timerrmz8PackageManagerMock.packages_newer_than..)r filter _packages)rrPrrOrpackages_newer_thanlsz&PackageManagerMock.packages_newer_thancCs$|jD]}|j|kr|jSqdSr,)rTrr-)rpkg_namepackagerrr package_filesos  z PackageManagerMock.package_filesN)r(r)r*rHrTrUrXrrrrrdsrNcCsDi}tD]2}|jD]&}||vr2|||q|g||<qq |Sr,)rrFr-append)userrr&filerrrrus  r__main__)N)Z__meta__Ztracer.resources.tracerrZtracer.resources.rulesrZtracer.resources.applicationsrrZtracer.resources.processesrZtracer.resources.collectionsr r r r Z unittest.mockr ZmockZunittestZTestCaserobjectr+r#rrHrrr(mainrrrrs$      PKkz[o2VV&__pycache__/test_tracer.cpython-39.pycnu[a "e @sddlTddlmZddlmZddlmZmZddlm Z ddl m Z m Z m Z mZzddlmZWnddlmZYn0Gd d d ejZGd d d eZGd dde ZGdddeZGdddeZGdddeZdddZedkredS))*)Tracer)Rules) Applications Application)AffectedProcess)ProcessesCollectionPackagesCollectionApplicationsCollectionAffectedProcessesCollection)patchc@s0eZdZddZedddddZdd Zd S) TestRulescCs>tt_tttttd|_d|j_t dddt t _ dS)N)memoryiZkernelT)nameignore) r rZ_appsrPackageManagerMockrdump_memory_mocktracerZ timestampZ_append_application ProcessesMockrZprocesses_factoryselfr|j}|t|ttdtdg||tdS)Nbazqux)rZtrace_affectedZassertSetEqualsetrfindassertIsInstancer )rZ init_systemaffectedrrrtest_trace_affecteds $zTestRules.test_trace_affectedcCsV|jtdt}||t|t|d|d}||t ||j ddS)Nrrr) rZtrace_applicationrrAffectedProcessMockrr Z assertEquallenrpid)rr processrrrtest_trace_application s   z TestRules.test_trace_applicationN)__name__ __module__ __qualname__rr r!r'rrrrrs  rc@sXeZdZddZddZeddZeddZed d Zd d Z d dZ ddZ dS) ProcessMockcCs||_||_||_||_dSN)r%files_name _create_time)rr%r create_timer-rrr__init__+szProcessMock.__init__cCs|jSr,r.rrrrr1szProcessMock.namecCs|jSr,r2rrrr real_name4szProcessMock.real_namecCsdSNFrrrrris_interpreted8szProcessMock.is_interpretedcCsdSr4rrrrr is_session<szProcessMock.is_sessioncCs|jSr,)r/rrrrr0@szProcessMock.create_timecCsgSr,rrrrrchildrenCszProcessMock.childrencCsdSr,rrrrrparentFszProcessMock.parentN) r(r)r*r1rpropertyr3r5r6r0r7r8rrrrr+*s   r+c@seZdZdddZdS)r#NcCs||_t|_t|_dSr,)r%rZpackagesr-)rr%rrrr1KszAffectedProcessMock.__init__)Nr(r)r*r1rrrrr#Jsr#c@seZdZeddZdS)rc CsHttdddgdtdddgdtd d d gd td ddddggS)NZfooiWfile1Zfile2file3Zbari'Zfile10Zfile11Zfile12r"ri )file7r=r>rafile4file9)r r+rrrrallSs zProcessesMock.allN)r(r)r* staticmethodrFrrrrrRsrc@seZdZddZdS) PackageMockcCs||_||_||_dSr,)rmodifiedr-)rrrIr-rrrr1^szPackageMock.__init__Nr:rrrrrH]srHc@sXeZdZeddgdeddgdeddgd ed d gd gZd dZddZdS)rAi r<Bi\)rDZfile5Zfile6CrC)rAZfile8rEDi"r@csttfdd|jS)Ncs |jkSr,)rI)p unix_timerrmz8PackageManagerMock.packages_newer_than..)r filter _packages)rrPrrOrpackages_newer_thanlsz&PackageManagerMock.packages_newer_thancCs$|jD]}|j|kr|jSqdSr,)rTrr-)rpkg_namepackagerrr package_filesos  z PackageManagerMock.package_filesN)r(r)r*rHrTrUrXrrrrrdsrNcCsDi}tD]2}|jD]&}||vr2|||q|g||<qq |Sr,)rrFr-append)userrr&filerrrrus  r__main__)N)Z__meta__Ztracer.resources.tracerrZtracer.resources.rulesrZtracer.resources.applicationsrrZtracer.resources.processesrZtracer.resources.collectionsr r r r Z unittest.mockr ZmockZunittestZTestCaserobjectr+r#rrHrrr(mainrrrrs$      PKkz[Er""+__pycache__/test_views.cpython-39.opt-1.pycnu[a "e@'@s&ddlmZddlTddlmZddlmZddlmZddl m Z m Z ddl m Z dd lmZdd lmZmZdd lZdd lZdd lZdd lZejd d dgdZejZzddlmZWnddlmZYn0eejj_eejj_eejj _Gddde!j"Z#Gddde$Z%Gddde$Zd S))unicode_literals)*)StringIO) DefaultView) HelperView) Applications Application)ApplicationsCollection)Package) ProcessMockAffectedProcessMockNtracerTen)fallback languages)patchc@sxeZdZddZddZddZddZd d Zd d Zd dZ ddZ ddZ ddZ ddZ edddddZdS) TestViewscCs t|_dSN)routselfr;/usr/lib/python3.9/site-packages/tracer/tests/test_views.pysetUp#szTestViews.setUpcCsFt|j}|dt|dtg|||jddS)Nargs applications)rrassignArgsMockr render assertEqualgetvaluerviewrrrtest_default_none&s  zTestViews.test_default_nonec Cspt|j}|dt|dttddddtddddtdd d dg|||jd dS) Nrr application first helperfirsttypehelpername second helpersecond third helperthirdzkYou should restart: * Some applications using: first helper second helper third helper rrrrr r r r!r"r#rrrtest_default_with_helpers-s  z#TestViews.test_default_with_helpersc Cspt|j}|dt|dttddddtddddtddddg|||jddS) Nrrr&foor*r,r+barbazzSYou should restart: * These applications manually: bar baz foo r1r#rrrtest_default_without_helpers>s  z&TestViews.test_default_without_helperscCst|j}|dt|dttddddtddddtdd d dtdd dd tdd dd tdddd g|||jddS)Nrrr&r'r(r)r-r.r/r0r3r4r5r6zYou should restart: * Some applications using: first helper second helper third helper * These applications manually: bar baz foo r1r#rrr!test_default_with_without_helpersOs  z+TestViews.test_default_with_without_helpersc Cstt|j}|dtdd|dttddddtdd d dtdd d dg|||jd dS)NrTallrsessionr3h1r4r5h2r6h3zbYou should restart: * These applications restarting your session: bar baz foo r1r#rrrtest_default_all_sessionhs  z"TestViews.test_default_all_sessionc Cstt|j}|dtdd|dttddddtdd d dtdd d dg|||jd dS)NrTr9rstaticr3r<r4r5r=r6r>zbYou should restart: * These applications rebooting your computer: bar baz foo r1r#rrrtest_default_all_staticys  z!TestViews.test_default_all_staticcCst|j}|dtdd|dttddddtdd d dtdd d dtd dddtd dddtd dddg|||jddS)NrTr9rr;r3r<r4r5r=r6r>r@aaah4bbbZh5ZcccZh6zYou should restart: * These applications restarting your session: bar baz foo * These applications rebooting your computer: aaa bbb ccc r1r#rrrtest_default_all_session_statics  z)TestViews.test_default_all_session_staticcCst|j}|dtdd|dttddddtdd d dtdd dd tdd dd tdddd tdddd tdddd tdddd g|||jddS)NrTr9rr&r'r(r)r-r.r3r4r5r;r6r<quxr=r@rBr>rDrCaYou should restart: * Some applications using: first helper second helper * These applications manually: bar foo * These applications restarting your session: baz qux * These applications rebooting your computer: aaa bbb r1r#rrrtest_default_alls    zTestViews.test_default_allcCst|j}|dt|dttddddtddddtdd dd tdd dd td d dd td ddd tdddd g|||jddS)Nrrr&r'r(r)r-r.r3r4r5r;r6r<rFr=r@rBr>a!You should restart: * Some applications using: first helper second helper * These applications manually: bar foo Additionally, there are: - 2 processes requiring restart of your session (i.e. Logging out & Logging in again) - 1 processes requiring reboot r1r#rrrtest_default_not_alls   zTestViews.test_default_not_allc Cspt|j}|dt|dttddddtddddtd d d dg|||jd dS) Nrrr;r3r<r4r5r=r@r6r>zThere are: - 2 processes requiring restart of your session (i.e. Logging out & Logging in again) - 1 processes requiring reboot r1r#rrrtest_default_note_onlys  z TestViews.test_default_note_onlyz0tracer.resources.applications.System.init_systemZdummy)Z return_valuecCstdddddgtdddddgg}td }d|_d |_d |_ddg|_td}t|g|_|g}t |j }| d t dd | d|| dt d| d|| d|| dd|||j ddS)Nr3iZfile1Zfile2i.Zfile3Z foopackagezFoo package descriptionZcategr)verbose processesr&package affected_byZaffectsa;* foo Package: foopackage Description: Foo package description Type: Application State: foo has been started by None some-time ago. PID - 2 foo has been started by None some-time ago. PID - 3 Affected by: foopackage file1 file2 )r r Zmodified descriptioncategoryfilesr setZpackagesrrrrrfindr r!r")rZ init_systemrMrNZa1rOr$rrr test_helpers,        zTestViews.test_helperN)__name__ __module__ __qualname__rr%r2r7r8r?rArErGrHrIrrUrrrrr!s! rc@seZdZdZZdddZdS)rNFcCs||_||_||_||_dSr)r:quietuserrL)rr:rYrZrLrrr__init__szArgsMock.__init__)FFFF)rVrWrXr:rYr[rrrrrsrc@s4eZdZddZddZddZddZd d Zd S) r cCs(d|_||_||_||_||_d|_dS)Nz some-time)parentpidrR_name _create_timeZstr_started_ago)rr]r, create_timerRrrrr["s zProcessMock.__init__cCs|jSr)r^rrrrr,*szProcessMock.namecCs|jSr)r_rrrrr`-szProcessMock.create_timecCsgSrrrrrrchildren0szProcessMock.childrencCsdSrrrrrrusername3szProcessMock.usernameN)rVrWrXr[r,r`rarbrrrrr !s r )&Z __future__rZ__meta__Ztracer.resources.pycomprZtracer.views.defaultrZtracer.views.helperrZtracer.resources.applicationsrr Ztracer.resources.collectionsr Ztracer.resources.packager Z test_tracerr r rZtracer.views.note_for_hiddengettext translationtZugettext_Z unittest.mockrZmockZviewsdefaultr+Znote_for_hiddenZunittestZTestCaserobjectrrrrrs2         w PKkz[Er""%__pycache__/test_views.cpython-39.pycnu[a "e@'@s&ddlmZddlTddlmZddlmZddlmZddl m Z m Z ddl m Z dd lmZdd lmZmZdd lZdd lZdd lZdd lZejd d dgdZejZzddlmZWnddlmZYn0eejj_eejj_eejj _Gddde!j"Z#Gddde$Z%Gddde$Zd S))unicode_literals)*)StringIO) DefaultView) HelperView) Applications Application)ApplicationsCollection)Package) ProcessMockAffectedProcessMockNtracerTen)fallback languages)patchc@sxeZdZddZddZddZddZd d Zd d Zd dZ ddZ ddZ ddZ ddZ edddddZdS) TestViewscCs t|_dSN)routselfr;/usr/lib/python3.9/site-packages/tracer/tests/test_views.pysetUp#szTestViews.setUpcCsFt|j}|dt|dtg|||jddS)Nargs applications)rrassignArgsMockr render assertEqualgetvaluerviewrrrtest_default_none&s  zTestViews.test_default_nonec Cspt|j}|dt|dttddddtddddtdd d dg|||jd dS) Nrr application first helperfirsttypehelpername second helpersecond third helperthirdzkYou should restart: * Some applications using: first helper second helper third helper rrrrr r r r!r"r#rrrtest_default_with_helpers-s  z#TestViews.test_default_with_helpersc Cspt|j}|dt|dttddddtddddtddddg|||jddS) Nrrr&foor*r,r+barbazzSYou should restart: * These applications manually: bar baz foo r1r#rrrtest_default_without_helpers>s  z&TestViews.test_default_without_helperscCst|j}|dt|dttddddtddddtdd d dtdd dd tdd dd tdddd g|||jddS)Nrrr&r'r(r)r-r.r/r0r3r4r5r6zYou should restart: * Some applications using: first helper second helper third helper * These applications manually: bar baz foo r1r#rrr!test_default_with_without_helpersOs  z+TestViews.test_default_with_without_helpersc Cstt|j}|dtdd|dttddddtdd d dtdd d dg|||jd dS)NrTallrsessionr3h1r4r5h2r6h3zbYou should restart: * These applications restarting your session: bar baz foo r1r#rrrtest_default_all_sessionhs  z"TestViews.test_default_all_sessionc Cstt|j}|dtdd|dttddddtdd d dtdd d dg|||jd dS)NrTr9rstaticr3r<r4r5r=r6r>zbYou should restart: * These applications rebooting your computer: bar baz foo r1r#rrrtest_default_all_staticys  z!TestViews.test_default_all_staticcCst|j}|dtdd|dttddddtdd d dtdd d dtd dddtd dddtd dddg|||jddS)NrTr9rr;r3r<r4r5r=r6r>r@aaah4bbbZh5ZcccZh6zYou should restart: * These applications restarting your session: bar baz foo * These applications rebooting your computer: aaa bbb ccc r1r#rrrtest_default_all_session_statics  z)TestViews.test_default_all_session_staticcCst|j}|dtdd|dttddddtdd d dtdd dd tdd dd tdddd tdddd tdddd tdddd g|||jddS)NrTr9rr&r'r(r)r-r.r3r4r5r;r6r<quxr=r@rBr>rDrCaYou should restart: * Some applications using: first helper second helper * These applications manually: bar foo * These applications restarting your session: baz qux * These applications rebooting your computer: aaa bbb r1r#rrrtest_default_alls    zTestViews.test_default_allcCst|j}|dt|dttddddtddddtdd dd tdd dd td d dd td ddd tdddd g|||jddS)Nrrr&r'r(r)r-r.r3r4r5r;r6r<rFr=r@rBr>a!You should restart: * Some applications using: first helper second helper * These applications manually: bar foo Additionally, there are: - 2 processes requiring restart of your session (i.e. Logging out & Logging in again) - 1 processes requiring reboot r1r#rrrtest_default_not_alls   zTestViews.test_default_not_allc Cspt|j}|dt|dttddddtddddtd d d dg|||jd dS) Nrrr;r3r<r4r5r=r@r6r>zThere are: - 2 processes requiring restart of your session (i.e. Logging out & Logging in again) - 1 processes requiring reboot r1r#rrrtest_default_note_onlys  z TestViews.test_default_note_onlyz0tracer.resources.applications.System.init_systemZdummy)Z return_valuecCstdddddgtdddddgg}td }d|_d |_d |_ddg|_td}t|g|_|g}t |j }| d t dd | d|| dt d| d|| d|| dd|||j ddS)Nr3iZfile1Zfile2i.Zfile3Z foopackagezFoo package descriptionZcategr)verbose processesr&package affected_byZaffectsa;* foo Package: foopackage Description: Foo package description Type: Application State: foo has been started by None some-time ago. PID - 2 foo has been started by None some-time ago. PID - 3 Affected by: foopackage file1 file2 )r r Zmodified descriptioncategoryfilesr setZpackagesrrrrrfindr r!r")rZ init_systemrMrNZa1rOr$rrr test_helpers,        zTestViews.test_helperN)__name__ __module__ __qualname__rr%r2r7r8r?rArErGrHrIrrUrrrrr!s! rc@seZdZdZZdddZdS)rNFcCs||_||_||_||_dSr)r:quietuserrL)rr:rYrZrLrrr__init__szArgsMock.__init__)FFFF)rVrWrXr:rYr[rrrrrsrc@s4eZdZddZddZddZddZd d Zd S) r cCs(d|_||_||_||_||_d|_dS)Nz some-time)parentpidrR_name _create_timeZstr_started_ago)rr]r, create_timerRrrrr["s zProcessMock.__init__cCs|jSr)r^rrrrr,*szProcessMock.namecCs|jSr)r_rrrrr`-szProcessMock.create_timecCsgSrrrrrrchildren0szProcessMock.childrencCsdSrrrrrrusername3szProcessMock.usernameN)rVrWrXr[r,r`rarbrrrrr !s r )&Z __future__rZ__meta__Ztracer.resources.pycomprZtracer.views.defaultrZtracer.views.helperrZtracer.resources.applicationsrr Ztracer.resources.collectionsr Ztracer.resources.packager Z test_tracerr r rZtracer.views.note_for_hiddengettext translationtZugettext_Z unittest.mockrZmockZviewsdefaultr+Znote_for_hiddenZunittestZTestCaserobjectrrrrrs2         w PKkz[ȇ)__pycache__/test_yum.cpython-39.opt-1.pycnu[a "e @snddlTzddlmZddlmZWney6Yn0eedkdGdddej Z e d krje d S) )*)IPackageManager)YumZfedoraz/Skipping tests because they are distro-specificc@s<eZdZddZddZddZddZd d Zd d Zd S)TestYumcCs t|_dS)N)rmanagerselfr 9/usr/lib/python3.9/site-packages/tracer/tests/test_yum.pysetUp sz TestYum.setUpcCs||jtddS)Nz9Every package manager should inherit from IPackageManager)ZassertIsInstancerrrr r r )test_implements_package_manager_interface sz1TestYum.test_implements_package_manager_interfacecCsBz|jdWn,ty,|dYnty<Yn0dS)Nrz)packages_newer_than() is not implemented!)rZpackages_newer_thanNotImplementedErrorfail Exceptionrr r r #test_package_newer_than_implementedsz+TestYum.test_package_newer_than_implementedcCsBz|jdWn,ty,|dYnty<Yn0dS)Nz'load_package_info() is not implemented!)rZload_package_inforrrrr r r test_load_package_infoszTestYum.test_load_package_infocCsBz|jdWn,ty,|dYnty<Yn0dS)Nrz$packages_files() is not implemented!)rZ package_filesrrrrr r r test_package_files_implementedsz&TestYum.test_package_files_implementedcCsBz|jdWn,ty,|dYnty<Yn0dS)Nrz!provided_by() is not implemented!)rZ provided_byrrrrr r r test_provided_byszTestYum.test_provided_byN) __name__ __module__ __qualname__r r rrrrr r r r rs r__main__N) Z__meta__Z&tracer.packageManagers.ipackageManagerrZtracer.packageManagers.yumr ImportErrorZunittestZskipIfZDISTROZTestCaserrmainr r r r s PKkz[ȇ#__pycache__/test_yum.cpython-39.pycnu[a "e @snddlTzddlmZddlmZWney6Yn0eedkdGdddej Z e d krje d S) )*)IPackageManager)YumZfedoraz/Skipping tests because they are distro-specificc@s<eZdZddZddZddZddZd d Zd d Zd S)TestYumcCs t|_dS)N)rmanagerselfr 9/usr/lib/python3.9/site-packages/tracer/tests/test_yum.pysetUp sz TestYum.setUpcCs||jtddS)Nz9Every package manager should inherit from IPackageManager)ZassertIsInstancerrrr r r )test_implements_package_manager_interface sz1TestYum.test_implements_package_manager_interfacecCsBz|jdWn,ty,|dYnty<Yn0dS)Nrz)packages_newer_than() is not implemented!)rZpackages_newer_thanNotImplementedErrorfail Exceptionrr r r #test_package_newer_than_implementedsz+TestYum.test_package_newer_than_implementedcCsBz|jdWn,ty,|dYnty<Yn0dS)Nz'load_package_info() is not implemented!)rZload_package_inforrrrr r r test_load_package_infoszTestYum.test_load_package_infocCsBz|jdWn,ty,|dYnty<Yn0dS)Nrz$packages_files() is not implemented!)rZ package_filesrrrrr r r test_package_files_implementedsz&TestYum.test_package_files_implementedcCsBz|jdWn,ty,|dYnty<Yn0dS)Nrz!provided_by() is not implemented!)rZ provided_byrrrrr r r test_provided_byszTestYum.test_provided_byN) __name__ __module__ __qualname__r r rrrrr r r r rs r__main__N) Z__meta__Z&tracer.packageManagers.ipackageManagerrZtracer.packageManagers.yumr ImportErrorZunittestZskipIfZDISTROZTestCaserrmainr r r r s PKkz[Z)__pycache__/__init__.cpython-39.opt-1.pycnu[a "e@sdS)Nrrr9/usr/lib/python3.9/site-packages/tracer/tests/__init__.pyPKkz[Z#__pycache__/__init__.cpython-39.pycnu[a "e@sdS)Nrrr9/usr/lib/python3.9/site-packages/tracer/tests/__init__.pyPKkz[)__pycache__/__meta__.cpython-39.opt-1.pycnu[a "e&@s\ddlZejejejeZejjdeddlZddlZddl m Z e Z dS)N)System) ospathdirnamerealpath__file__Z parentdirsysinsertZunittestZtracer.resources.systemrZ distributionZDISTROr r 9/usr/lib/python3.9/site-packages/tracer/tests/__meta__.pys  PKkz[#__pycache__/__meta__.cpython-39.pycnu[a "e&@s\ddlZejejejeZejjdeddlZddlZddl m Z e Z dS)N)System) ospathdirnamerealpath__file__Z parentdirsysinsertZunittestZtracer.resources.systemrZ distributionZDISTROr r 9/usr/lib/python3.9/site-packages/tracer/tests/__meta__.pys  PKkz[S)s5__pycache__/test_FilenameCleaner.cpython-39.opt-1.pycnu[a "e@s,ddlmZddlmZGdddeZdS))TestCase)FilenameCleanerc@seZdZddZddZdS)TestFilenameCleanercCs t|_dS)N)rcleanerselfrE/usr/lib/python3.9/site-packages/tracer/tests/test_FilenameCleaner.pysetUpszTestFilenameCleaner.setUpcCs|d|jd|d|jd|d|jd|d|jd|d|jd|d |jd |d |jd dS) Nz /lib/libdl.soz/lib/libdl-2.19.soz/lib/libncurses.soz/lib/libncurses.so.5.9z /bin/bashz%/usr/share/wicd/curses/wicd-curses.pyz /usr/bin/gvimz/usr/bin/gvim#new (deleted)z)/usr/lib64/kde4/kded_networkmanagement.soz2/usr/lib64/kde4/kded_networkmanagement.so;53c7cd86z#/usr/lib64/firefox/plugin-containerz>/usr/lib64/firefox/plugin-container.#prelink#.N3n7Rk (deleted))Z assertEqualrstriprrrr test_strip s  zTestFilenameCleaner.test_stripN)__name__ __module__ __qualname__r r rrrr rsrN)ZunittestrZ tracer.resources.FilenameCleanerrrrrrr s  PKkz[S)s/__pycache__/test_FilenameCleaner.cpython-39.pycnu[a "e@s,ddlmZddlmZGdddeZdS))TestCase)FilenameCleanerc@seZdZddZddZdS)TestFilenameCleanercCs t|_dS)N)rcleanerselfrE/usr/lib/python3.9/site-packages/tracer/tests/test_FilenameCleaner.pysetUpszTestFilenameCleaner.setUpcCs|d|jd|d|jd|d|jd|d|jd|d|jd|d |jd |d |jd dS) Nz /lib/libdl.soz/lib/libdl-2.19.soz/lib/libncurses.soz/lib/libncurses.so.5.9z /bin/bashz%/usr/share/wicd/curses/wicd-curses.pyz /usr/bin/gvimz/usr/bin/gvim#new (deleted)z)/usr/lib64/kde4/kded_networkmanagement.soz2/usr/lib64/kde4/kded_networkmanagement.so;53c7cd86z#/usr/lib64/firefox/plugin-containerz>/usr/lib64/firefox/plugin-container.#prelink#.N3n7Rk (deleted))Z assertEqualrstriprrrr test_strip s  zTestFilenameCleaner.test_stripN)__name__ __module__ __qualname__r r rrrr rsrN)ZunittestrZ tracer.resources.FilenameCleanerrrrrrr s  PKkz[E*__pycache__/test_alpm.cpython-39.opt-1.pycnu[a "e&@svddlTzddlmZddlmZWney6Yn0eedkoJedkdGdd d ej Z e d krre d S) )*)IPackageManager)AlpmZarchZarcharmz/Skipping tests because they are distro-specificc@s<eZdZddZddZddZddZd d Zd d Zd S)TestAlpmcCs t|_dS)N)rmanagerselfr :/usr/lib/python3.9/site-packages/tracer/tests/test_alpm.pysetUp szTestAlpm.setUpcCs||jtddS)Nz9Every package manager should inherit from IPackageManager)ZassertIsInstancerrrr r r )test_implements_package_manager_interface sz2TestAlpm.test_implements_package_manager_interfacecCsBz|jdWn,ty,|dYnty<Yn0dS)Nrz)packages_newer_than() is not implemented!)rZpackages_newer_thanNotImplementedErrorfail Exceptionrr r r #test_package_newer_than_implementedsz,TestAlpm.test_package_newer_than_implementedcCsBz|jdWn,ty,|dYnty<Yn0dS)Nz'load_package_info() is not implemented!)rZload_package_inforrrrr r r test_load_package_infoszTestAlpm.test_load_package_infocCsBz|jdWn,ty,|dYnty<Yn0dS)Nrz$packages_files() is not implemented!)rZ package_filesrrrrr r r test_package_files_implementedsz'TestAlpm.test_package_files_implementedcCsBz|jdWn,ty,|dYnty<Yn0dS)Nrz!provided_by() is not implemented!)rZ provided_byrrrrr r r test_provided_byszTestAlpm.test_provided_byN) __name__ __module__ __qualname__r r rrrrr r r r rs r__main__N) Z__meta__Z&tracer.packageManagers.ipackageManagerrZtracer.packageManagers.alpmr ImportErrorZunittestZskipIfZDISTROZTestCaserrmainr r r r s PKkz[E$__pycache__/test_alpm.cpython-39.pycnu[a "e&@svddlTzddlmZddlmZWney6Yn0eedkoJedkdGdd d ej Z e d krre d S) )*)IPackageManager)AlpmZarchZarcharmz/Skipping tests because they are distro-specificc@s<eZdZddZddZddZddZd d Zd d Zd S)TestAlpmcCs t|_dS)N)rmanagerselfr :/usr/lib/python3.9/site-packages/tracer/tests/test_alpm.pysetUp szTestAlpm.setUpcCs||jtddS)Nz9Every package manager should inherit from IPackageManager)ZassertIsInstancerrrr r r )test_implements_package_manager_interface sz2TestAlpm.test_implements_package_manager_interfacecCsBz|jdWn,ty,|dYnty<Yn0dS)Nrz)packages_newer_than() is not implemented!)rZpackages_newer_thanNotImplementedErrorfail Exceptionrr r r #test_package_newer_than_implementedsz,TestAlpm.test_package_newer_than_implementedcCsBz|jdWn,ty,|dYnty<Yn0dS)Nz'load_package_info() is not implemented!)rZload_package_inforrrrr r r test_load_package_infoszTestAlpm.test_load_package_infocCsBz|jdWn,ty,|dYnty<Yn0dS)Nrz$packages_files() is not implemented!)rZ package_filesrrrrr r r test_package_files_implementedsz'TestAlpm.test_package_files_implementedcCsBz|jdWn,ty,|dYnty<Yn0dS)Nrz!provided_by() is not implemented!)rZ provided_byrrrrr r r test_provided_byszTestAlpm.test_provided_byN) __name__ __module__ __qualname__r r rrrrr r r r rs r__main__N) Z__meta__Z&tracer.packageManagers.ipackageManagerrZtracer.packageManagers.alpmr ImportErrorZunittestZskipIfZDISTROZTestCaserrmainr r r r s PKkz[ּ@@2__pycache__/test_applications.cpython-39.opt-1.pycnu[a "e@sddlTddlmZddlmZmZddlmZmZzddl m Z m Z dZ Wn ddl m Z m Z dZ Yn0Gd d d ejZed kred S) )*)DATA_DIR) Applications Application)ApplicationsCollectionProcessesCollection)patch mock_openz builtins.openz__builtin__.openc@seZdZeddZddZddZddZd d Zd d Z e d ddddZ ddZ ddZ ddZddZe dddddZddZd S)!TestApplicationscCsddtjD|_dS)NcSsg|]}|tr|qS) startswithr.0xr r B/usr/lib/python3.9/site-packages/tracer/tests/test_applications.py s z/TestApplications.setUpClass..)r DEFINITIONS)clsr r r setUpClassszTestApplications.setUpClasscCs|jt_dt_dSN)rrZ_appsselfr r rsetUpszTestApplications.setUpcCs|ttdSr)assertIsInstancerallrrr r rtest_apps_typessz TestApplications.test_apps_typescCstd}||jtdS)Nr)rrrZ instancesr)r applicationr r rtest_application_processess z+TestApplications.test_application_processescCsd}tD]}d|vs$t|dkr6|dt|d|vr^|jtjvr^|d|jd|vrjdnd}|t||d |j |d7}q dS) NrnamezMissing name in definition #typezUnknown type in application: rename)Application {0} has unsupported attribute) rrlenfailstrr ZTYPESvalues assertEqualformatr)rianr r rtest_apps_attributes s z%TestApplications.test_apps_attributescCs8t}|D]&}||j|dkr |d|jq dS)NrzDuplicate definitions for: )rr_countrr&)rappsr,r r rtest_apps_duplicity.sz$TestApplications.test_apps_duplicityz0tracer.resources.applications.System.init_systemZdummy)Z return_valuecCsfd}t|}||j|||jtj||jd||jd|t|dd |jdS)NZNON_EXISTING_APPLICATIONr#r$) rfindr)rr Z DEFAULT_TYPEhelperZnoter%r*)rZ init_systemapp_nameZappr r rtest_app_with_no_definition4s z,TestApplications.test_app_with_no_definitioncCs0tddi}|t|d|t|ddS)Nrfooz)rr)r'repr)rZruler r rtest_representations>s z%TestApplications.test_representationscCs<tdddd}tdddd}||j||jdS)Nr6 applicaiton some helperrr r3rz some helper with {NAME} argument)r assertFalsehelper_contains_name assertTrue)ra1Za2r r rtest_contains_nameCs z#TestApplications.test_contains_namecCs<tdddd}tdddd}||j||jdS)Nr6r9r:r;rzsome helper with {FOO} argument)rr<helper_contains_formatingr>)rr?a3r r rtest_contains_formatingIs z(TestApplications.test_contains_formatingcCs,tdddd}||j||jdS)Nr6r9r;)rr<rAr=)rr?r r rtest_helper_contains_when_noneOs z/TestApplications.test_helper_contains_when_nonez*tracer.resources.system.System.init_systemZsystemdcCsdgt_d}ttt|dt}|t|d|tdd|D||dj d||dj d ||d j d | d |d j Wd n1s0Yd S)z6 Test parsing a single XML file with applications zwhatever-file.xmlz )Z read_datacSsg|]}t|tqSr ) isinstancerrr r rrfz.TestApplications.test_load..rr6zsystemctl restart fooZsessionzkill itN)rrr builtins_openr rr)r%r>rr3endswithr ZassertIn)rZ _init_systemdatar0r r r test_loadTs zTestApplications.test_loadcCs$d}|D]}|j|kr|d7}q|S)Nrr)r)rr4r0countr,r r rr/ls   zTestApplications._countN)__name__ __module__ __qualname__ classmethodrrrrr.r1r r5r8r@rCrDrLr/r r r rr s      r __main__N)Z__meta__Z tracer.pathsrZtracer.resources.applicationsrrZtracer.resources.collectionsrrZ unittest.mockr r rIZmockZunittestZTestCaser rNmainr r r rs  fPKkz[ּ@@,__pycache__/test_applications.cpython-39.pycnu[a "e@sddlTddlmZddlmZmZddlmZmZzddl m Z m Z dZ Wn ddl m Z m Z dZ Yn0Gd d d ejZed kred S) )*)DATA_DIR) Applications Application)ApplicationsCollectionProcessesCollection)patch mock_openz builtins.openz__builtin__.openc@seZdZeddZddZddZddZd d Zd d Z e d ddddZ ddZ ddZ ddZddZe dddddZddZd S)!TestApplicationscCsddtjD|_dS)NcSsg|]}|tr|qS) startswithr.0xr r B/usr/lib/python3.9/site-packages/tracer/tests/test_applications.py s z/TestApplications.setUpClass..)r DEFINITIONS)clsr r r setUpClassszTestApplications.setUpClasscCs|jt_dt_dSN)rrZ_appsselfr r rsetUpszTestApplications.setUpcCs|ttdSr)assertIsInstancerallrrr r rtest_apps_typessz TestApplications.test_apps_typescCstd}||jtdS)Nr)rrrZ instancesr)r applicationr r rtest_application_processess z+TestApplications.test_application_processescCsd}tD]}d|vs$t|dkr6|dt|d|vr^|jtjvr^|d|jd|vrjdnd}|t||d |j |d7}q dS) NrnamezMissing name in definition #typezUnknown type in application: rename)Application {0} has unsupported attribute) rrlenfailstrr ZTYPESvalues assertEqualformatr)rianr r rtest_apps_attributes s z%TestApplications.test_apps_attributescCs8t}|D]&}||j|dkr |d|jq dS)NrzDuplicate definitions for: )rr_countrr&)rappsr,r r rtest_apps_duplicity.sz$TestApplications.test_apps_duplicityz0tracer.resources.applications.System.init_systemZdummy)Z return_valuecCsfd}t|}||j|||jtj||jd||jd|t|dd |jdS)NZNON_EXISTING_APPLICATIONr#r$) rfindr)rr Z DEFAULT_TYPEhelperZnoter%r*)rZ init_systemapp_nameZappr r rtest_app_with_no_definition4s z,TestApplications.test_app_with_no_definitioncCs0tddi}|t|d|t|ddS)Nrfooz)rr)r'repr)rZruler r rtest_representations>s z%TestApplications.test_representationscCs<tdddd}tdddd}||j||jdS)Nr6 applicaiton some helperrr r3rz some helper with {NAME} argument)r assertFalsehelper_contains_name assertTrue)ra1Za2r r rtest_contains_nameCs z#TestApplications.test_contains_namecCs<tdddd}tdddd}||j||jdS)Nr6r9r:r;rzsome helper with {FOO} argument)rr<helper_contains_formatingr>)rr?a3r r rtest_contains_formatingIs z(TestApplications.test_contains_formatingcCs,tdddd}||j||jdS)Nr6r9r;)rr<rAr=)rr?r r rtest_helper_contains_when_noneOs z/TestApplications.test_helper_contains_when_nonez*tracer.resources.system.System.init_systemZsystemdcCsdgt_d}ttt|dt}|t|d|tdd|D||dj d||dj d ||d j d | d |d j Wd n1s0Yd S)z6 Test parsing a single XML file with applications zwhatever-file.xmlz )Z read_datacSsg|]}t|tqSr ) isinstancerrr r rrfz.TestApplications.test_load..rr6zsystemctl restart fooZsessionzkill itN)rrr builtins_openr rr)r%r>rr3endswithr ZassertIn)rZ _init_systemdatar0r r r test_loadTs zTestApplications.test_loadcCs$d}|D]}|j|kr|d7}q|S)Nrr)r)rr4r0countr,r r rr/ls   zTestApplications._countN)__name__ __module__ __qualname__ classmethodrrrrr.r1r r5r8r@rCrDrLr/r r r rr s      r __main__N)Z__meta__Z tracer.pathsrZtracer.resources.applicationsrrZtracer.resources.collectionsrrZ unittest.mockr r rIZmockZunittestZTestCaser rNmainr r r rs  fPKkz[F;;1__pycache__/test_collections.cpython-39.opt-1.pycnu[a "e @sbddlTddlmZmZddlmZmZddlmZddl m Z m Z m Z m Z GdddejZd S) )*) Applications Application) ProcessesAffectedProcess)Package)ApplicationsCollectionProcessesCollectionPackagesCollectionAffectedProcessesCollectionc@sXeZdZddZddZddZeddd d Zd d Z d dZ ddZ ddZ dS)TestCollectionscCstj}tdd|d}tdd|d}tdd|d}t|||g}||dt|||g||d t|||g||tdS) NfoobarnamehelpertypebazquxZquuxZcorgerr)r DEFAULT_TYPErr assertEqualsortedassertIsInstance)self default_typea1a2a3 collectionr A/usr/lib/python3.9/site-packages/tracer/tests/test_collections.pytest_applications_sorted sz(TestCollections.test_applications_sortedcCs<t}||t||dt||dtdS)NusergffA)rallrr owned_byZ newer_thanrrr r r!test_processes_typess z$TestCollections.test_processes_typescCs"td}|t|ddS)Nr)rr$r%Z assertGreaterlenr&r r r!test_processes_none_usersz(TestCollections.test_processes_none_userTz%@TODO Create Mock for Processes classcCsdtd}td}tgd|_t}||g||g||||d|||jdS)Ni)rrrr)rsetfilesr updateZassertInindex)rp1p2cr r r!test_processes_updates   z%TestCollections.test_processes_updatecCstd}td}td}tdd}td}t||||g}||||gdt||gd||d||||gdjdS)Nrrrr{rr)rr r intersectionrZassertIsNotNoneZmodified)rr.r/Zp3Zp4Zp5c1r r r!test_packages_intersection,s *z*TestCollections.test_packages_intersectioncCsDtddi}tddi}tddi}t|||g}|ddddS)Nrrrrr)rr Zreplace_values)rrrrr4r r r!test_replace_values7s    z#TestCollections.test_replace_valuescCsPt}|d}tt|dD](}||||dkr"tdq"dS)N create_timerz$The collection isn't sorted properly)rr$rranger(r7 Exception)rr4Zc2ir r r!test_collection_sorted_callableAs  z/TestCollections.test_collection_sorted_callablecCsZtj}tdd|d}tdd|d}t||g}|d}|dd|DddgdS) za https://github.com/FrostyX/tracer/issues/151 https://github.com/FrostyX/tracer/issues/156 rNrrrrcSsg|] }|jqSr )r).0Zappr r r! SzGTestCollections.test_application_sorted_none_helper..)rrrr rr)rrrrrZcollection_sortedr r r!#test_application_sorted_none_helperIs  z3TestCollections.test_application_sorted_none_helperN) __name__ __module__ __qualname__r"r'r)unittestZskipIfr1r5r6r;r?r r r r!r s     r N)Z__meta__Ztracer.resources.applicationsrrZtracer.resources.processesrrZtracer.resources.packagerZtracer.resources.collectionsr r r r rCZTestCaser r r r r!s  PKkz[4+__pycache__/test_collections.cpython-39.pycnu[a "e @sbddlTddlmZmZddlmZmZddlmZddl m Z m Z m Z m Z GdddejZd S) )*) Applications Application) ProcessesAffectedProcess)Package)ApplicationsCollectionProcessesCollectionPackagesCollectionAffectedProcessesCollectionc@sXeZdZddZddZddZeddd d Zd d Z d dZ ddZ ddZ dS)TestCollectionscCstj}tdd|d}tdd|d}tdd|d}t|||g}||dt|||g||d t|||g||tdS) NfoobarnamehelpertypebazquxZquuxZcorgerr)r DEFAULT_TYPErr assertEqualsortedassertIsInstance)self default_typea1a2a3 collectionr A/usr/lib/python3.9/site-packages/tracer/tests/test_collections.pytest_applications_sorted sz(TestCollections.test_applications_sortedcCs<t}||t||dt||dtdS)NusergffA)rallrr owned_byZ newer_thanrrr r r!test_processes_typess z$TestCollections.test_processes_typescCs"td}|t|ddS)Nr)rr$r%Z assertGreaterlenr&r r r!test_processes_none_usersz(TestCollections.test_processes_none_userTz%@TODO Create Mock for Processes classcCsdtd}td}tgd|_t}||g||g||||d|||jdS)Ni)rrrr)rsetfilesr updateZassertInindex)rp1p2cr r r!test_processes_updates   z%TestCollections.test_processes_updatecCstd}td}td}tdd}td}t||||g}||||gdt||gd||d||||gdjdS)Nrrrr{rr)rr r intersectionrZassertIsNotNoneZmodified)rr.r/Zp3Zp4Zp5c1r r r!test_packages_intersection,s *z*TestCollections.test_packages_intersectioncCsxtddi}tddi}tddi}t|||g}dd|DhdksLJ|dddd d|Dhd kstJdS) NrrrrcSsh|] }|jqSr r.0ar r r! =z6TestCollections.test_replace_values..>rrrrcSsh|] }|jqSr r6r7r r r!r:?r;>rrr)rr Zreplace_values)rrrrr4r r r!test_replace_values7s   z#TestCollections.test_replace_valuescCsPt}|d}tt|dD](}||||dkr"tdq"dS)N create_timerz$The collection isn't sorted properly)rr$rranger(r= Exception)rr4Zc2ir r r!test_collection_sorted_callableAs  z/TestCollections.test_collection_sorted_callablecCsZtj}tdd|d}tdd|d}t||g}|d}|dd|DddgdS) za https://github.com/FrostyX/tracer/issues/151 https://github.com/FrostyX/tracer/issues/156 rNrrrrcSsg|] }|jqSr )r)r8Zappr r r! Sr;zGTestCollections.test_application_sorted_none_helper..)rrrr rr)rrrrrZcollection_sortedr r r!#test_application_sorted_none_helperIs  z3TestCollections.test_application_sorted_none_helperN) __name__ __module__ __qualname__r"r'r)unittestZskipIfr1r5r<rArCr r r r!r s     r N)Z__meta__Ztracer.resources.applicationsrrZtracer.resources.processesrrZtracer.resources.packagerZtracer.resources.collectionsr r r r rGZTestCaser r r r r!s  PKkz[ ij)__pycache__/test_dnf.cpython-39.opt-1.pycnu[a "e%@svddlTzddlmZddlmZWney6Yn0eedkoJedkdGdd d ej Z e d krre d S) )*)IPackageManager)DnfZfedoraZmageiaz/Skipping tests because they are distro-specificc@s<eZdZddZddZddZddZd d Zd d Zd S)TestDnfcCs t|_dS)N)rmanagerselfr 9/usr/lib/python3.9/site-packages/tracer/tests/test_dnf.pysetUp sz TestDnf.setUpcCs||jtddS)Nz9Every package manager should inherit from IPackageManager)ZassertIsInstancerrrr r r )test_implements_package_manager_interface sz1TestDnf.test_implements_package_manager_interfacecCsBz|jdWn,ty,|dYnty<Yn0dS)Nrz)packages_newer_than() is not implemented!)rZpackages_newer_thanNotImplementedErrorfail Exceptionrr r r #test_package_newer_than_implementedsz+TestDnf.test_package_newer_than_implementedcCsBz|jdWn,ty,|dYnty<Yn0dS)Nz'load_package_info() is not implemented!)rZload_package_inforrrrr r r test_load_package_infoszTestDnf.test_load_package_infocCsBz|jdWn,ty,|dYnty<Yn0dS)Nrz$packages_files() is not implemented!)rZ package_filesrrrrr r r test_package_files_implementedsz&TestDnf.test_package_files_implementedcCsBz|jdWn,ty,|dYnty<Yn0dS)Nrz!provided_by() is not implemented!)rZ provided_byrrrrr r r test_provided_byszTestDnf.test_provided_byN) __name__ __module__ __qualname__r r rrrrr r r r rs r__main__N) Z__meta__Z&tracer.packageManagers.ipackageManagerrZtracer.packageManagers.dnfr ImportErrorZunittestZskipIfZDISTROZTestCaserrmainr r r r s PKkz[ ij#__pycache__/test_dnf.cpython-39.pycnu[a "e%@svddlTzddlmZddlmZWney6Yn0eedkoJedkdGdd d ej Z e d krre d S) )*)IPackageManager)DnfZfedoraZmageiaz/Skipping tests because they are distro-specificc@s<eZdZddZddZddZddZd d Zd d Zd S)TestDnfcCs t|_dS)N)rmanagerselfr 9/usr/lib/python3.9/site-packages/tracer/tests/test_dnf.pysetUp sz TestDnf.setUpcCs||jtddS)Nz9Every package manager should inherit from IPackageManager)ZassertIsInstancerrrr r r )test_implements_package_manager_interface sz1TestDnf.test_implements_package_manager_interfacecCsBz|jdWn,ty,|dYnty<Yn0dS)Nrz)packages_newer_than() is not implemented!)rZpackages_newer_thanNotImplementedErrorfail Exceptionrr r r #test_package_newer_than_implementedsz+TestDnf.test_package_newer_than_implementedcCsBz|jdWn,ty,|dYnty<Yn0dS)Nz'load_package_info() is not implemented!)rZload_package_inforrrrr r r test_load_package_infoszTestDnf.test_load_package_infocCsBz|jdWn,ty,|dYnty<Yn0dS)Nrz$packages_files() is not implemented!)rZ package_filesrrrrr r r test_package_files_implementedsz&TestDnf.test_package_files_implementedcCsBz|jdWn,ty,|dYnty<Yn0dS)Nrz!provided_by() is not implemented!)rZ provided_byrrrrr r r test_provided_byszTestDnf.test_provided_byN) __name__ __module__ __qualname__r r rrrrr r r r rs r__main__N) Z__meta__Z&tracer.packageManagers.ipackageManagerrZtracer.packageManagers.dnfr ImportErrorZunittestZskipIfZDISTROZTestCaserrmainr r r r s PKkz[N*__pycache__/test_dpkg.cpython-39.opt-1.pycnu[a "e@snddlTzddlmZddlmZWney6Yn0eedkdGdddej Z e d krje d S) )*)IPackageManager)DpkgZdebianz/Skipping tests because they are distro-specificc@s<eZdZddZddZddZddZd d Zd d Zd S)TestDpkgcCs t|_dS)N)rmanagerselfr :/usr/lib/python3.9/site-packages/tracer/tests/test_dpkg.pysetUp szTestDpkg.setUpcCs||jtddS)Nz9Every package manager should inherit from IPackageManager)ZassertIsInstancerrrr r r )test_implements_package_manager_interface sz2TestDpkg.test_implements_package_manager_interfacecCsBz|jdWn,ty,|dYnty<Yn0dS)Nrz)packages_newer_than() is not implemented!)rZpackages_newer_thanNotImplementedErrorfail Exceptionrr r r #test_package_newer_than_implementedsz,TestDpkg.test_package_newer_than_implementedcCsBz|jdWn,ty,|dYnty<Yn0dS)Nz'load_package_info() is not implemented!)rZload_package_inforrrrr r r test_load_package_infoszTestDpkg.test_load_package_infocCsBz|jdWn,ty,|dYnty<Yn0dS)Nrz$packages_files() is not implemented!)rZ package_filesrrrrr r r test_package_files_implementedsz'TestDpkg.test_package_files_implementedcCsBz|jdWn,ty,|dYnty<Yn0dS)Nrz!provided_by() is not implemented!)rZ provided_byrrrrr r r test_provided_byszTestDpkg.test_provided_byN) __name__ __module__ __qualname__r r rrrrr r r r rs r__main__N) Z__meta__Z&tracer.packageManagers.ipackageManagerrZtracer.packageManagers.dpkgr ImportErrorZunittestZskipIfZDISTROZTestCaserrmainr r r r s PKkz[N$__pycache__/test_dpkg.cpython-39.pycnu[a "e@snddlTzddlmZddlmZWney6Yn0eedkdGdddej Z e d krje d S) )*)IPackageManager)DpkgZdebianz/Skipping tests because they are distro-specificc@s<eZdZddZddZddZddZd d Zd d Zd S)TestDpkgcCs t|_dS)N)rmanagerselfr :/usr/lib/python3.9/site-packages/tracer/tests/test_dpkg.pysetUp szTestDpkg.setUpcCs||jtddS)Nz9Every package manager should inherit from IPackageManager)ZassertIsInstancerrrr r r )test_implements_package_manager_interface sz2TestDpkg.test_implements_package_manager_interfacecCsBz|jdWn,ty,|dYnty<Yn0dS)Nrz)packages_newer_than() is not implemented!)rZpackages_newer_thanNotImplementedErrorfail Exceptionrr r r #test_package_newer_than_implementedsz,TestDpkg.test_package_newer_than_implementedcCsBz|jdWn,ty,|dYnty<Yn0dS)Nz'load_package_info() is not implemented!)rZload_package_inforrrrr r r test_load_package_infoszTestDpkg.test_load_package_infocCsBz|jdWn,ty,|dYnty<Yn0dS)Nrz$packages_files() is not implemented!)rZ package_filesrrrrr r r test_package_files_implementedsz'TestDpkg.test_package_files_implementedcCsBz|jdWn,ty,|dYnty<Yn0dS)Nrz!provided_by() is not implemented!)rZ provided_byrrrrr r r test_provided_byszTestDpkg.test_provided_byN) __name__ __module__ __qualname__r r rrrrr r r r rs r__main__N) Z__meta__Z&tracer.packageManagers.ipackageManagerrZtracer.packageManagers.dpkgr ImportErrorZunittestZskipIfZDISTROZTestCaserrmainr r r r s PKkz[ګ>>+__pycache__/test_hooks.cpython-39.opt-1.pycnu[a "e@sddlTddlmZmZdaedddZedd gd d Zed d dZedddZGddde j Z e dkre dS))*) HooksObservermatchNapp1cCsdadS)Ndummycalledr r ;/usr/lib/python3.9/site-packages/tracer/tests/test_hooks.py hook_dummysr app2app3cCsdadS)N dummy_listrr r r r hook_dummy_list srfoocCstddS)Nrr appendr r r r hook_dummy_append1srbarcCstddS)Nrrr r r r hook_dummy_append2src@s,eZdZddZddZddZddZd S) TestHookscCst|_dadS)N)robserverr selfr r r setUpszTestHooks.setUpcCsF|d|td|d|td|d|tddS)Nrrr rr)rZ assertEqualr rr r r test_hook"s      zTestHooks.test_hookcCs,ga|d|d|tddgdS)Nrr)r rZassertListEqualrr r r test_hooks_list,s  zTestHooks.test_hooks_listcCs|d|tdS)NZ undefined)rZ assertIsNoner rr r r test_undefined_hook3s zTestHooks.test_undefined_hookN)__name__ __module__ __qualname__rrrrr r r r rs r__main__)Z__meta__Z tracer.hooksrrr r rrrZunittestZTestCaserrmainr r r r s     PKkz[ګ>>%__pycache__/test_hooks.cpython-39.pycnu[a "e@sddlTddlmZmZdaedddZedd gd d Zed d dZedddZGddde j Z e dkre dS))*) HooksObservermatchNapp1cCsdadS)Ndummycalledr r ;/usr/lib/python3.9/site-packages/tracer/tests/test_hooks.py hook_dummysr app2app3cCsdadS)N dummy_listrr r r r hook_dummy_list srfoocCstddS)Nrr appendr r r r hook_dummy_append1srbarcCstddS)Nrrr r r r hook_dummy_append2src@s,eZdZddZddZddZddZd S) TestHookscCst|_dadS)N)robserverr selfr r r setUpszTestHooks.setUpcCsF|d|td|d|td|d|tddS)Nrrr rr)rZ assertEqualr rr r r test_hook"s      zTestHooks.test_hookcCs,ga|d|d|tddgdS)Nrr)r rZassertListEqualrr r r test_hooks_list,s  zTestHooks.test_hooks_listcCs|d|tdS)NZ undefined)rZ assertIsNoner rr r r test_undefined_hook3s zTestHooks.test_undefined_hookN)__name__ __module__ __qualname__rrrrr r r r rs r__main__)Z__meta__Z tracer.hooksrrr r rrrZunittestZTestCaserrmainr r r r s     PKkz[&^*__pycache__/test_lang.cpython-39.opt-1.pycnu[a "e@sHddlTddlmmZddlZGdddejZedkrDe dS))*Nc@seZdZddZdS)TestLangcCs|ttddS)N_)Z assertTruehasattrlang)selfr :/usr/lib/python3.9/site-packages/tracer/tests/test_lang.py test_provide_underscore_functionsz)TestLang.test_provide_underscore_functionN)__name__ __module__ __qualname__r r r r r rsr__main__) Z__meta__Ztracer.resources.langZ resourcesrosZunittestZTestCaserr mainr r r r s PKkz[9udd+__pycache__/test_query.cpython-39.opt-1.pycnu[a "e>@sNddlTddlmZmZGdddejZGdddeZe dkrJe d S) )*)QueryLazyc@seZdZddZddZdS) TestQuerycCsttd|_dS)N)Ztracer)r TracerMockquery)selfr ;/usr/lib/python3.9/site-packages/tracer/tests/test_query.pysetUpszTestQuery.setUpcCsB|j}||t|t|d|t|gddS)NgetABC) rZaffected_applicationsZassertIsInstancerZ assertTruehasattrZassertListEquallistr )r Z apps_queryr r r test_affected_applications s  z$TestQuery.test_affected_applicationsN)__name__ __module__ __qualname__r rr r r r rsrc@seZdZddZdddZdS)rcGsdS)Nr )r argsr r r __init__szTracerMock.__init__NcCsgdS)Nrr )r userr r r trace_affectedszTracerMock.trace_affected)N)rrrrrr r r r rsr__main__N) Z__meta__Z tracer.queryrrZunittestZTestCaserobjectrrmainr r r r s   PKkz[ __init__.pynu[PKkz[f&& __meta__.pynu[# Enable importing modules from parent directory (tracer's root directory) import os parentdir = os.path.dirname(os.path.dirname(os.path.realpath(__file__))) os.sys.path.insert(0, parentdir) import sys import unittest from tracer.resources.system import System DISTRO = System.distribution() PKkz[3yjtest_FilenameCleaner.pynu[from unittest import TestCase from tracer.resources.FilenameCleaner import FilenameCleaner class TestFilenameCleaner(TestCase): def setUp(self): self.cleaner = FilenameCleaner() def test_strip(self): self.assertEqual("/lib/libdl.so", self.cleaner.strip("/lib/libdl-2.19.so")) self.assertEqual("/lib/libncurses.so", self.cleaner.strip("/lib/libncurses.so.5.9")) self.assertEqual("/bin/bash", self.cleaner.strip("/bin/bash")) self.assertEqual("/usr/share/wicd/curses/wicd-curses.py", self.cleaner.strip("/usr/share/wicd/curses/wicd-curses.py")) self.assertEqual("/usr/bin/gvim", self.cleaner.strip("/usr/bin/gvim#new (deleted)")) self.assertEqual("/usr/lib64/kde4/kded_networkmanagement.so", self.cleaner.strip("/usr/lib64/kde4/kded_networkmanagement.so;53c7cd86") ) self.assertEqual("/usr/lib64/firefox/plugin-container", self.cleaner.strip("/usr/lib64/firefox/plugin-container.#prelink#.N3n7Rk (deleted)") ) PKkz[YPO&& test_alpm.pynu[from .__meta__ import * try: from tracer.packageManagers.ipackageManager import IPackageManager from tracer.packageManagers.alpm import Alpm except ImportError: pass @unittest.skipIf((DISTRO != "arch" and DISTRO != "archarm"), "Skipping tests because they are distro-specific") class TestAlpm(unittest.TestCase): def setUp(self): self.manager = Alpm() def test_implements_package_manager_interface(self): self.assertIsInstance(self.manager, IPackageManager, "Every package manager should inherit from IPackageManager") def test_package_newer_than_implemented(self): try: self.manager.packages_newer_than(0) except NotImplementedError: self.fail("packages_newer_than() is not implemented!") except Exception: pass def test_load_package_info(self): try: self.manager.load_package_info("") except NotImplementedError: self.fail("load_package_info() is not implemented!") except Exception: pass def test_package_files_implemented(self): try: self.manager.package_files("") except NotImplementedError: self.fail("packages_files() is not implemented!") except Exception: pass def test_provided_by(self): try: self.manager.provided_by("") except NotImplementedError: self.fail("provided_by() is not implemented!") except Exception: pass if __name__ == '__main__': unittest.main() PKkz[ atest_applications.pynu[from .__meta__ import * from tracer.paths import DATA_DIR from tracer.resources.applications import Applications, Application from tracer.resources.collections import ApplicationsCollection, ProcessesCollection try: from unittest.mock import patch, mock_open builtins_open = "builtins.open" except: from mock import patch, mock_open builtins_open = "__builtin__.open" class TestApplications(unittest.TestCase): @classmethod def setUpClass(cls): cls.DEFINITIONS = [x for x in Applications.DEFINITIONS if x.startswith(DATA_DIR)] def setUp(self): Applications.DEFINITIONS = self.DEFINITIONS Applications._apps = None def test_apps_types(self): self.assertIsInstance(Applications.all(), ApplicationsCollection) def test_application_processes(self): application = Applications.all()[0] self.assertIsInstance(application.instances, ProcessesCollection) def test_apps_attributes(self): i = 1 for a in Applications.all(): if ("name" not in a) or len(a) <= 1: self.fail("Missing name in definition #" + str(i)) if "type" in a and a.type not in Applications.TYPES.values(): self.fail("Unknown type in application: " + a.type) n = 6 if "rename" in a else 5 self.assertEqual(len(a), n, "Application {0} has unsupported attribute".format(a.name)) i += 1 def test_apps_duplicity(self): apps = Applications.all() for a in apps: if self._count(a.name, apps) > 1: self.fail("Duplicate definitions for: " + a.name) @patch('tracer.resources.applications.System.init_system', return_value="dummy") def test_app_with_no_definition(self, init_system): app_name = "NON_EXISTING_APPLICATION" app = Applications.find(app_name) self.assertEqual(app.name, app_name) self.assertEqual(app.type, Applications.DEFAULT_TYPE) self.assertEqual(app.helper, None) self.assertEqual(app.note, None) self.assertEqual(len(app), 5, "Application {0} has unsupported attribute".format(app.name)) def test_representations(self): rule = Application({"name": "foo"}) self.assertEqual(str(rule), "") self.assertEqual(repr(rule), "") def test_contains_name(self): a1 = Application({"name": "foo", "type": "applicaiton", "helper": "some helper"}) a2 = Application({"name": "foo", "type": "application", "helper": "some helper with {NAME} argument"}) self.assertFalse(a1.helper_contains_name) self.assertTrue(a2.helper_contains_name) def test_contains_formating(self): a1 = Application({"name": "foo", "type": "applicaiton", "helper": "some helper"}) a3 = Application({"name": "foo", "type": "application", "helper": "some helper with {FOO} argument"}) self.assertFalse(a1.helper_contains_formating) self.assertTrue(a3.helper_contains_formating) def test_helper_contains_when_none(self): a1 = Application({"name": "foo", "type": "applicaiton", "helper": None}) self.assertFalse(a1.helper_contains_formating) self.assertFalse(a1.helper_contains_name) @patch("tracer.resources.system.System.init_system", return_value="systemd") def test_load(self, _init_system): """ Test parsing a single XML file with applications """ Applications.DEFINITIONS = ["whatever-file.xml"] data = ( "" " " " " " " " " " " "" ) with patch(builtins_open, mock_open(read_data=data)): apps = Applications.all() self.assertEqual(len(apps), 3) self.assertTrue(all([isinstance(x, Application) for x in apps])) self.assertEqual(apps[0].name, "foo") self.assertTrue(apps[0].helper.endswith("systemctl restart foo")) self.assertEqual(apps[2].type, "session") self.assertIn("kill it", apps[2].helper) def _count(self, app_name, apps): count = 0 for a in apps: if a.name == app_name: count += 1 return count if __name__ == '__main__': unittest.main() PKkz[۞ test_collections.pynu[from .__meta__ import * from tracer.resources.applications import Applications, Application from tracer.resources.processes import Processes, AffectedProcess from tracer.resources.package import Package from tracer.resources.collections import ApplicationsCollection, ProcessesCollection, PackagesCollection, AffectedProcessesCollection class TestCollections(unittest.TestCase): def test_applications_sorted(self): default_type = Applications.DEFAULT_TYPE a1 = Application({'name': 'foo', 'helper': 'bar', 'type': default_type}) a2 = Application({'name': 'baz', 'helper': 'qux', 'type': default_type}) a3 = Application({'name': 'quux', 'helper': 'corge', 'type': default_type}) collection = ApplicationsCollection([a1, a2, a3]) self.assertEqual(collection.sorted('name'), ApplicationsCollection([a2, a1, a3])) self.assertEqual(collection.sorted('helper'), ApplicationsCollection([a1, a3, a2])) self.assertIsInstance(collection, ApplicationsCollection) def test_processes_types(self): collection = Processes.all() self.assertIsInstance(collection, ProcessesCollection) self.assertIsInstance(collection.owned_by('user'), ProcessesCollection) self.assertIsInstance(collection.newer_than(1414006430.1), ProcessesCollection) def test_processes_none_user(self): collection = Processes.all().owned_by(None) self.assertGreater(len(collection), 0) @unittest.skipIf(True, "@TODO Create Mock for Processes class") def test_processes_update(self): p1 = AffectedProcess(1234) p2 = AffectedProcess(1234) p2.files = set(['foo', 'bar', 'baz']) c = AffectedProcessesCollection() c.update([p1]) c.update([p2]) self.assertIn(p1, c) self.assertIn('bar', c[c.index(p1)].files) def test_packages_intersection(self): p1 = Package("foo") p2 = Package("bar") p3 = Package("baz") p4 = Package("qux", 123) p5 = Package("qux") c1 = PackagesCollection([p1, p2, p3, p4]) self.assertEqual(c1.intersection([p1, p3]).sorted("name"), PackagesCollection([p1, p3]).sorted("name")) self.assertEqual(c1.intersection(None), c1) self.assertIsNotNone(c1.intersection([p5])[0].modified) def test_replace_values(self): a1 = Application({"name": "foo"}) a2 = Application({"name": "bar"}) a3 = Application({"name": "baz"}) c1 = ApplicationsCollection([a1, a2, a3]) assert {a.name for a in c1} == {"foo", "bar", "baz"} c1.replace_values("name", "foo", "qux") assert {a.name for a in c1} == {"qux", "bar", "baz"} def test_collection_sorted_callable(self): c1 = Processes.all() c2 = c1.sorted("create_time") for i in range(len(c2) - 1): if c2[i].create_time() > c2[i+1].create_time(): raise Exception("The collection isn't sorted properly") def test_application_sorted_none_helper(self): """ https://github.com/FrostyX/tracer/issues/151 https://github.com/FrostyX/tracer/issues/156 """ default_type = Applications.DEFAULT_TYPE a1 = Application({'name': 'foo', 'helper': None, 'type': default_type}) a2 = Application({'name': 'baz', 'helper': 'qux', 'type': default_type}) collection = ApplicationsCollection([a1, a2]) collection_sorted = collection.sorted('helper') self.assertEqual([app.helper for app in collection_sorted], ["qux", None]) PKkz[x!%% test_dnf.pynu[from .__meta__ import * try: from tracer.packageManagers.ipackageManager import IPackageManager from tracer.packageManagers.dnf import Dnf except ImportError: pass @unittest.skipIf((DISTRO != 'fedora') and (DISTRO != 'mageia'), "Skipping tests because they are distro-specific") class TestDnf(unittest.TestCase): def setUp(self): self.manager = Dnf() def test_implements_package_manager_interface(self): self.assertIsInstance(self.manager, IPackageManager, "Every package manager should inherit from IPackageManager") def test_package_newer_than_implemented(self): try: self.manager.packages_newer_than(0) except NotImplementedError: self.fail("packages_newer_than() is not implemented!") except Exception: pass def test_load_package_info(self): try: self.manager.load_package_info("") except NotImplementedError: self.fail("load_package_info() is not implemented!") except Exception: pass def test_package_files_implemented(self): try: self.manager.package_files("") except NotImplementedError: self.fail("packages_files() is not implemented!") except Exception: pass def test_provided_by(self): try: self.manager.provided_by("") except NotImplementedError: self.fail("provided_by() is not implemented!") except Exception: pass if __name__ == '__main__': unittest.main() PKkz[LKB test_dpkg.pynu[from .__meta__ import * try: from tracer.packageManagers.ipackageManager import IPackageManager from tracer.packageManagers.dpkg import Dpkg except ImportError: pass @unittest.skipIf(DISTRO != 'debian', "Skipping tests because they are distro-specific") class TestDpkg(unittest.TestCase): def setUp(self): self.manager = Dpkg() def test_implements_package_manager_interface(self): self.assertIsInstance(self.manager, IPackageManager, "Every package manager should inherit from IPackageManager") def test_package_newer_than_implemented(self): try: self.manager.packages_newer_than(0) except NotImplementedError: self.fail("packages_newer_than() is not implemented!") except Exception: pass def test_load_package_info(self): try: self.manager.load_package_info("") except NotImplementedError: self.fail("load_package_info() is not implemented!") except Exception: pass def test_package_files_implemented(self): try: self.manager.package_files("") except NotImplementedError: self.fail("packages_files() is not implemented!") except Exception: pass def test_provided_by(self): try: self.manager.provided_by("") except NotImplementedError: self.fail("provided_by() is not implemented!") except Exception: pass if __name__ == '__main__': unittest.main() PKkz[iM test_hooks.pynu[from .__meta__ import * from tracer.hooks import HooksObserver, match called = None @match("app1") def hook_dummy(): global called called = "dummy" @match(["app2", "app3"]) def hook_dummy_list(): global called called = "dummy_list" @match("foo") def hook_dummy_append1(): global called called.append("foo") @match("bar") def hook_dummy_append2(): global called called.append("bar") class TestHooks(unittest.TestCase): def setUp(self): self.observer = HooksObserver() global called called = None def test_hook(self): self.observer("app1") self.assertEqual(called, "dummy") self.observer("app2") self.assertEqual(called, "dummy_list") self.observer("app3") self.assertEqual(called, "dummy_list") def test_hooks_list(self): global called called = [] self.observer("foo") self.observer("bar") self.assertListEqual(called, ["foo", "bar"]) def test_undefined_hook(self): global called self.observer("undefined") self.assertIsNone(called) if __name__ == '__main__': unittest.main() PKkz[8{Be test_lang.pynu[from .__meta__ import * import tracer.resources.lang as lang import os class TestLang(unittest.TestCase): def test_provide_underscore_function(self): self.assertTrue(hasattr(lang, '_')) if __name__ == '__main__': unittest.main() PKkz[C4sstest_package.pynu[from .__meta__ import * from tracer.resources.package import Package class TestPackage(unittest.TestCase): def test_equality(self): p1 = Package("foo") p2 = Package("foo") p3 = Package("bar") self.assertEqual(p1, p2) self.assertNotEqual(p1, p3) def test_representation(self): package = Package("foo") self.assertEqual(repr(package), "") PKkz[0,test_portage.pynu[from .__meta__ import * try: from tracer.packageManagers.ipackageManager import IPackageManager from tracer.packageManagers.portage import Portage except ImportError: pass @unittest.skipIf(DISTRO != 'gentoo', "Skipping tests because they are distro-specific") class TestPortage(unittest.TestCase): def setUp(self): self.manager = Portage() def test_implements_package_manager_interface(self): self.assertIsInstance(self.manager, IPackageManager, "Every package manager should inherit from IPackageManager") def test_package_newer_than_implemented(self): try: self.manager.packages_newer_than(0) except NotImplementedError: self.fail("packages_newer_than() is not implemented!") except Exception: pass def test_load_package_info(self): try: self.manager.load_package_info("") except NotImplementedError: self.fail("load_package_info() is not implemented!") except Exception: pass def test_package_files_implemented(self): try: self.manager.package_files("") except NotImplementedError: self.fail("packages_files() is not implemented!") except Exception: pass def test_provided_by(self): try: self.manager.provided_by("") except NotImplementedError: self.fail("provided_by() is not implemented!") except Exception: pass if __name__ == '__main__': unittest.main() PKkz[ = test_processes.pynu[from .__meta__ import * from tracer.resources.processes import Processes, Process, ProcessWrapper from tracer.resources.SystemdDbus import SystemdDbus from tracer.resources.collections import ProcessesCollection import os import subprocess class TestProcesses(unittest.TestCase): @unittest.skipIf(True, "@TODO Create Mock for Processes class") def test_children(self): process = Processes.all()[0] children = process.children() self.assertIsInstance(children, ProcessesCollection) for child in children: self.assertIsInstance(child, Process) @unittest.skipIf(True, "@TODO Create Mock for Processes class") def test_unique_process(self): process = Process(os.getpid()) parent = Process(os.getppid()) self.assertIs(process, Process(os.getpid())) self.assertIs(parent, process.parent()) self.assertIn(process, parent.children()) Process.reset_cache() process2 = Process(os.getpid()) self.assertEqual(process, process2) self.assertIsNot(process, process2) @unittest.skipIf(True, "@TODO Create Mock for Processes class") def test_process_caching(self): process = Process(os.getpid()) # Populate the cache entry for children process.children() child = subprocess.Popen(os.sys.executable, stdin=subprocess.PIPE) self.assertEqual(0, len(process.children())) process.rebuild_cache() self.assertEqual(1, len(process.children())) child.terminate() def test_name_sshd(self): p1 = ProcessMock() p1.data = {"name": "sshd", "exe": "/usr/sbin/sshd", "cmdline": ["/usr/sbin/sshd", "-D", "foo", "bar"]} assert p1.name() == "sshd" p2 = ProcessMock() p2.data = {"name": "sshd", "exe": "/usr/sbin/sshd", "cmdline": ["some", "thing", "and", "arguments", "idk", "what"]} assert p2.name() == "ssh-thing-session" # I don't know what case this is in a real life but see #129 and #125 p3 = ProcessMock() p3.data = {"name": "sshd", "exe": "/usr/sbin/sshd", "cmdline": ["withoutparams"]} assert p3.name() == "sshd" @unittest.skipIf(True, "@TODO Create Mock for Processes class") def test_dbus(self): dbus = SystemdDbus() pids = Processes.pids() nonexisting = max(pids) + 999 assert dbus.has_service_property_from_pid(1, "PAMName") is False assert dbus.has_service_property_from_pid(nonexisting, "PAMName") is False class ProcessMock(ProcessWrapper): def __init__(self): self.data = {} def _attr(self, name): return self.data[name] PKkz[kK>> test_query.pynu[from .__meta__ import * from tracer.query import Query, Lazy class TestQuery(unittest.TestCase): def setUp(self): self.query = Query(tracer=TracerMock) def test_affected_applications(self): apps_query = self.query.affected_applications() self.assertIsInstance(apps_query, Lazy) self.assertTrue(hasattr(apps_query, "get")) self.assertListEqual(list(apps_query.get()), ["A", "B", "C"]) class TracerMock(object): def __init__(self, *args): pass def trace_affected(self, user=None): return ["A", "B", "C"] if __name__ == '__main__': unittest.main() PKkz[v test_rules.pynu[from .__meta__ import * from tracer.paths import DATA_DIR from tracer.resources.rules import Rules, Rule try: from unittest.mock import patch, mock_open builtins_open = "builtins.open" except: from mock import patch, mock_open builtins_open = "__builtin__.open" class TestRules(unittest.TestCase): @classmethod def setUpClass(cls): cls.DEFINITIONS = [x for x in Rules.DEFINITIONS if x.startswith(DATA_DIR)] def setUp(self): Rules.DEFINITIONS = self.DEFINITIONS Rules._rules = None def test_rules_types(self): for rule in Rules.all(): self.assertIsInstance(rule, Rule) def test_rules_attributes(self): i = 1 for r in Rules.all(): if ("name" not in r) or ("action" not in r): self.fail("Missing attributes in rule #" + str(i)) if r.action not in Rules.ACTIONS.values(): self.fail("Unknown action in rule: " + r.name) if len(r) > 2: self.fail("Unsupported attributes in rule: " + r.name) i += 1 def test_rules_duplicity(self): rules = Rules.all() for r in rules: if rules.count(r) > 1: self.fail("Duplicate rules for: " + r.name) def test_app_with_no_rule(self): self.assertIsNone(Rules.find("NON_EXISTING_APPLICATION")) def test_representations(self): rule = Rule({"name": "foo"}) self.assertEqual(str(rule), "") self.assertEqual(repr(rule), "") def test_update(self): r1 = Rule({"name": "foo", "action": "bar"}) r2 = Rule({"name": "foo", "action": "baz"}) r1.update(r2) self.assertEqual(r1.action, "baz") def test_load(self): """ Test parsing a single XML file with rules """ Rules.DEFINITIONS = ["whatever-file.xml"] data = ( "" " " " " "" ) with patch(builtins_open, mock_open(read_data=data)): rules = Rules.all() self.assertEqual(len(rules), 2) self.assertTrue(all([isinstance(x, Rule) for x in rules])) self.assertEqual(rules[0].name, "foo") self.assertEqual(rules[0].action, "return") self.assertEqual(rules[1].name, "bar") def _count(self, app_name, apps): count = 0 for a in apps: if a.name == app_name: count += 1 return count if __name__ == '__main__': unittest.main() PKkz[ test_tracer.pynu[from .__meta__ import * from tracer.resources.tracer import Tracer from tracer.resources.rules import Rules from tracer.resources.applications import Applications, Application from tracer.resources.processes import AffectedProcess from tracer.resources.collections import \ ProcessesCollection, \ PackagesCollection, \ ApplicationsCollection, \ AffectedProcessesCollection try: from unittest.mock import patch except: from mock import patch class TestRules(unittest.TestCase): def setUp(self): Applications._apps = ApplicationsCollection() self.tracer = Tracer(PackageManagerMock(), Rules, Applications, memory=dump_memory_mock) self.tracer.timestamp = 5555 # Sure, it should be a UNIX timestamp value Applications._append_application({"name": "kernel", "ignore": True}) Application.processes_factory = ProcessesMock @patch('tracer.resources.applications.System.init_system', return_value="dummy") def test_trace_affected(self, init_system): affected = self.tracer.trace_affected() self.assertSetEqual(set(affected), set([Applications.find("baz"), Applications.find("qux")])) self.assertIsInstance(affected, ApplicationsCollection) def test_trace_application(self): affected = self.tracer.trace_application(Applications.find("baz"), AffectedProcessMock) self.assertIsInstance(affected, AffectedProcessesCollection) self.assertEqual(len(affected), 1) process = affected[0] self.assertIsInstance(process, AffectedProcess) self.assertEqual(process.pid, 4) # pid of "baz" in our mock class ProcessMock(object): def __init__(self, pid, name, create_time, files): self.pid = pid self.files = files self._name = name self._create_time = create_time def name(self): return self._name @property def real_name(self): return self._name @property def is_interpreted(self): return False @property def is_session(self): return False def create_time(self): return self._create_time def children(self): return [] def parent(self): return None class AffectedProcessMock(AffectedProcess): def __init__(self, pid=None): # Do not run the parent __init__ self.pid = pid self.packages = set() self.files = set() class ProcessesMock(object): @staticmethod def all(): return ProcessesCollection([ ProcessMock(2, "foo", 1111, ["file1", "file2", "file3"]), ProcessMock(3, "bar", 9999, ["file10", "file11", "file12"]), ProcessMock(4, "baz", 6666, ["file7", "file1", "file3"]), ProcessMock(5, "qux", 7777, ["file4", "file9"]), ]) class PackageMock(object): def __init__(self, name, modified, files): self.name = name self.modified = modified self.files = files class PackageManagerMock(object): _packages = [ PackageMock("A", 3333, ["file1", "file2", "file3"]), PackageMock("B", 4444, ["file4", "file5", "file6"]), PackageMock("C", 7777, ["file7", "file8", "file9"]), PackageMock("D", 8888, ["file10", "file11", "file12"]), ] def packages_newer_than(self, unix_time): return PackagesCollection(filter(lambda p: p.modified >= unix_time, self._packages)) def package_files(self, pkg_name): for package in self._packages: if package.name == pkg_name: return package.files def dump_memory_mock(user=None): memory = {} for process in ProcessesMock.all(): for file in process.files: if file in memory: memory[file].append(process) else: memory[file] = [process] return memory if __name__ == '__main__': unittest.main() PKkz[@'@' test_views.pynu[from __future__ import unicode_literals from .__meta__ import * from tracer.resources.pycomp import StringIO from tracer.views.default import DefaultView from tracer.views.helper import HelperView from tracer.resources.applications import Applications, Application from tracer.resources.collections import ApplicationsCollection from tracer.resources.package import Package from .test_tracer import ProcessMock, AffectedProcessMock import tracer.views.default import tracer.views.helper import tracer.views.note_for_hidden import gettext t = gettext.translation('tracer', fallback=True, languages=["en"]) _ = t.ugettext try: from unittest.mock import patch except: from mock import patch # Mock the gettext function to use only english tracer.views.default._ = _ tracer.views.helper._ = _ tracer.views.note_for_hidden._ = _ class TestViews(unittest.TestCase): def setUp(self): self.out = StringIO() def test_default_none(self): view = DefaultView(self.out) view.assign("args", ArgsMock()) view.assign("applications", ApplicationsCollection([])) view.render() self.assertEqual(self.out.getvalue(), "") def test_default_with_helpers(self): view = DefaultView(self.out) view.assign("args", ArgsMock()) view.assign("applications", ApplicationsCollection([ Application({"type": "application", "helper": "first helper", "name": "first"}), Application({"type": "application", "helper": "second helper", "name": "second"}), Application({"type": "application", "helper": "third helper", "name": "third"}), ])) view.render() self.assertEqual(self.out.getvalue(), ( "You should restart:\n" " * Some applications using:\n" " first helper\n" " second helper\n" " third helper\n" )) def test_default_without_helpers(self): view = DefaultView(self.out) view.assign("args", ArgsMock()) view.assign("applications", ApplicationsCollection([ Application({"type": "application", "name": "foo", "helper": None}), Application({"type": "application", "name": "bar", "helper": None}), Application({"type": "application", "name": "baz", "helper": None}), ])) view.render() self.assertEqual(self.out.getvalue(), ( "You should restart:\n" " * These applications manually:\n" " bar\n" " baz\n" " foo\n" )) def test_default_with_without_helpers(self): view = DefaultView(self.out) view.assign("args", ArgsMock()) view.assign("applications", ApplicationsCollection([ Application({"type": "application", "helper": "first helper", "name": "first"}), Application({"type": "application", "helper": "second helper", "name": "second"}), Application({"type": "application", "helper": "third helper", "name": "third"}), Application({"type": "application", "name": "foo", "helper": None}), Application({"type": "application", "name": "bar", "helper": None}), Application({"type": "application", "name": "baz", "helper": None}), ])) view.render() self.assertEqual(self.out.getvalue(), ( "You should restart:\n" " * Some applications using:\n" " first helper\n" " second helper\n" " third helper\n" "\n" " * These applications manually:\n" " bar\n" " baz\n" " foo\n" )) def test_default_all_session(self): view = DefaultView(self.out) view.assign("args", ArgsMock(all=True)) view.assign("applications", ApplicationsCollection([ Application({"type": "session", "name": "foo", "helper": "h1"}), Application({"type": "session", "name": "bar", "helper": "h2"}), Application({"type": "session", "name": "baz", "helper": "h3"}), ])) view.render() self.assertEqual(self.out.getvalue(), ( "You should restart:\n" " * These applications restarting your session:\n" " bar\n" " baz\n" " foo\n" )) def test_default_all_static(self): view = DefaultView(self.out) view.assign("args", ArgsMock(all=True)) view.assign("applications", ApplicationsCollection([ Application({"type": "static", "name": "foo", "helper": "h1"}), Application({"type": "static", "name": "bar", "helper": "h2"}), Application({"type": "static", "name": "baz", "helper": "h3"}), ])) view.render() self.assertEqual(self.out.getvalue(), ( "You should restart:\n" " * These applications rebooting your computer:\n" " bar\n" " baz\n" " foo\n" )) def test_default_all_session_static(self): view = DefaultView(self.out) view.assign("args", ArgsMock(all=True)) view.assign("applications", ApplicationsCollection([ Application({"type": "session", "name": "foo", "helper": "h1"}), Application({"type": "session", "name": "bar", "helper": "h2"}), Application({"type": "session", "name": "baz", "helper": "h3"}), Application({"type": "static", "name": "aaa", "helper": "h4"}), Application({"type": "static", "name": "bbb", "helper": "h5"}), Application({"type": "static", "name": "ccc", "helper": "h6"}), ])) view.render() self.assertEqual(self.out.getvalue(), ( "You should restart:\n" " * These applications restarting your session:\n" " bar\n" " baz\n" " foo\n" "\n" " * These applications rebooting your computer:\n" " aaa\n" " bbb\n" " ccc\n" )) def test_default_all(self): view = DefaultView(self.out) view.assign("args", ArgsMock(all=True)) view.assign("applications", ApplicationsCollection([ Application({"type": "application", "helper": "first helper", "name": "first"}), Application({"type": "application", "helper": "second helper", "name": "second"}), Application({"type": "application", "name": "foo", "helper": None}), Application({"type": "application", "name": "bar", "helper": None}), Application({"type": "session", "name": "baz", "helper": "h1"}), Application({"type": "session", "name": "qux", "helper": "h2"}), Application({"type": "static", "name": "aaa", "helper": "h3"}), Application({"type": "static", "name": "bbb", "helper": "h4"}), ])) view.render() self.assertEqual(self.out.getvalue(), ( "You should restart:\n" " * Some applications using:\n" " first helper\n" " second helper\n" "\n" " * These applications manually:\n" " bar\n" " foo\n" "\n" " * These applications restarting your session:\n" " baz\n" " qux\n" "\n" " * These applications rebooting your computer:\n" " aaa\n" " bbb\n" )) def test_default_not_all(self): view = DefaultView(self.out) view.assign("args", ArgsMock()) view.assign("applications", ApplicationsCollection([ Application({"type": "application", "helper": "first helper", "name": "first"}), Application({"type": "application", "helper": "second helper", "name": "second"}), Application({"type": "application", "name": "foo", "helper": None}), Application({"type": "application", "name": "bar", "helper": None}), Application({"type": "session", "name": "baz", "helper": "h1"}), Application({"type": "session", "name": "qux", "helper": "h2"}), Application({"type": "static", "name": "aaa", "helper": "h3"}), ])) view.render() self.assertEqual(self.out.getvalue(), ( "You should restart:\n" " * Some applications using:\n" " first helper\n" " second helper\n" "\n" " * These applications manually:\n" " bar\n" " foo\n" "\n" "Additionally, there are:\n" " - 2 processes requiring restart of your session (i.e. Logging out & Logging in again)\n" " - 1 processes requiring reboot\n" )) def test_default_note_only(self): view = DefaultView(self.out) view.assign("args", ArgsMock()) view.assign("applications", ApplicationsCollection([ Application({"type": "session", "name": "foo", "helper": "h1"}), Application({"type": "session", "name": "bar", "helper": "h2"}), Application({"type": "static", "name": "baz", "helper": "h3"}), ])) view.render() self.assertEqual(self.out.getvalue(), ( "There are:\n" " - 2 processes requiring restart of your session (i.e. Logging out & Logging in again)\n" " - 1 processes requiring reboot\n" )) @patch('tracer.resources.applications.System.init_system', return_value="dummy") def test_helper(self, init_system): processes = [ ProcessMock(2, "foo", 1234, ["file1", "file2"]), ProcessMock(3, "foo", 5678, ["file2", "file3"]), ] package = Package("foopackage") package.modified = None package.description = "Foo package description" package.category = "categ" package.files = ["file1", "file2"] a1 = AffectedProcessMock(2) a1.packages = set([package]) affected_by = [a1] view = HelperView(self.out) view.assign("args", ArgsMock(verbose=2)) view.assign("processes", processes) view.assign("application", Applications.find("foo")) view.assign("package", package) view.assign("affected_by", affected_by) view.assign("affects", None) view.render() self.assertEqual(self.out.getvalue(), ( "* foo\n" " Package: foopackage\n" " Description: Foo package description\n" " Type: Application\n" " State: foo has been started by None some-time ago. PID - 2\n" " foo has been started by None some-time ago. PID - 3\n" "\n" " Affected by:\n" " foopackage\n" " file1\n" " file2\n" )) class ArgsMock(object): all = quiet = None def __init__(self, all=False, quiet=False, user=False, verbose=False): self.all = all self.quiet = quiet self.user = user self.verbose = verbose class ProcessMock(object): def __init__(self, pid, name, create_time, files): self.parent = None self.pid = pid self.files = files self._name = name self._create_time = create_time self.str_started_ago = "some-time" def name(self): return self._name def create_time(self): return self._create_time def children(self): return [] def username(self): return None PKkz[Ȗ   test_yum.pynu[from .__meta__ import * try: from tracer.packageManagers.ipackageManager import IPackageManager from tracer.packageManagers.yum import Yum except ImportError: pass @unittest.skipIf(DISTRO != 'fedora', "Skipping tests because they are distro-specific") class TestYum(unittest.TestCase): def setUp(self): self.manager = Yum() def test_implements_package_manager_interface(self): self.assertIsInstance(self.manager, IPackageManager, "Every package manager should inherit from IPackageManager") def test_package_newer_than_implemented(self): try: self.manager.packages_newer_than(0) except NotImplementedError: self.fail("packages_newer_than() is not implemented!") except Exception: pass def test_load_package_info(self): try: self.manager.load_package_info("") except NotImplementedError: self.fail("load_package_info() is not implemented!") except Exception: pass def test_package_files_implemented(self): try: self.manager.package_files("") except NotImplementedError: self.fail("packages_files() is not implemented!") except Exception: pass def test_provided_by(self): try: self.manager.provided_by("") except NotImplementedError: self.fail("provided_by() is not implemented!") except Exception: pass if __name__ == '__main__': unittest.main() PKkz[&^$__pycache__/test_lang.cpython-39.pycnu[PKkz[mhh-__pycache__/test_package.cpython-39.opt-1.pycnu[PKkz[mhh'__pycache__/test_package.cpython-39.pycnu[PKkz[` - __pycache__/test_portage.cpython-39.opt-1.pycnu[PKkz[` '__pycache__/test_portage.cpython-39.pycnu[PKkz[5 /M__pycache__/test_processes.cpython-39.opt-1.pycnu[PKkz[St t )|(__pycache__/test_processes.cpython-39.pycnu[PKkz[9udd%I4__pycache__/test_query.cpython-39.pycnu[PKkz[avcc+:__pycache__/test_rules.cpython-39.opt-1.pycnu[PKkz[avcc%H__pycache__/test_rules.cpython-39.pycnu[PKkz[o2VV,xW__pycache__/test_tracer.cpython-39.opt-1.pycnu[PKkz[o2VV&*m__pycache__/test_tracer.cpython-39.pycnu[PKkz[Er""+ւ__pycache__/test_views.cpython-39.opt-1.pycnu[PKkz[Er""%__pycache__/test_views.cpython-39.pycnu[PKkz[ȇ)D__pycache__/test_yum.cpython-39.opt-1.pycnu[PKkz[ȇ#__pycache__/test_yum.cpython-39.pycnu[PKkz[Z)__pycache__/__init__.cpython-39.opt-1.pycnu[PKkz[Z#__pycache__/__init__.cpython-39.pycnu[PKkz[)__pycache__/__meta__.cpython-39.opt-1.pycnu[PKkz[#f__pycache__/__meta__.cpython-39.pycnu[PKkz[S)s5:__pycache__/test_FilenameCleaner.cpython-39.opt-1.pycnu[PKkz[S)s/__pycache__/test_FilenameCleaner.cpython-39.pycnu[PKkz[E*__pycache__/test_alpm.cpython-39.opt-1.pycnu[PKkz[E$9__pycache__/test_alpm.cpython-39.pycnu[PKkz[ּ@@2__pycache__/test_applications.cpython-39.opt-1.pycnu[PKkz[ּ@@,,__pycache__/test_applications.cpython-39.pycnu[PKkz[F;;1)__pycache__/test_collections.cpython-39.opt-1.pycnu[PKkz[4+d9__pycache__/test_collections.cpython-39.pycnu[PKkz[ ij)UJ__pycache__/test_dnf.cpython-39.opt-1.pycnu[PKkz[ ij#S__pycache__/test_dnf.cpython-39.pycnu[PKkz[N*\__pycache__/test_dpkg.cpython-39.opt-1.pycnu[PKkz[N$1f__pycache__/test_dpkg.cpython-39.pycnu[PKkz[ګ>>+so__pycache__/test_hooks.cpython-39.opt-1.pycnu[PKkz[ګ>>% w__pycache__/test_hooks.cpython-39.pycnu[PKkz[&^*~__pycache__/test_lang.cpython-39.opt-1.pycnu[PKkz[9udd+__pycache__/test_query.cpython-39.opt-1.pycnu[PKkz[ a__init__.pynu[PKkz[f&& __meta__.pynu[PKkz[3yjtest_FilenameCleaner.pynu[PKkz[YPO&& test_alpm.pynu[PKkz[ aTtest_applications.pynu[PKkz[۞ >test_collections.pynu[PKkz[x!%% "test_dnf.pynu[PKkz[LKB test_dpkg.pynu[PKkz[iM ̹test_hooks.pynu[PKkz[8{Be test_lang.pynu[PKkz[C4ssAtest_package.pynu[PKkz[0,test_portage.pynu[PKkz[ = Ltest_processes.pynu[PKkz[kK>> test_query.pynu[PKkz[v test_rules.pynu[PKkz[ test_tracer.pynu[PKkz[@'@' itest_views.pynu[PKkz[Ȗ   test_yum.pynu[PK66I+