Your IP : 172.28.240.42


Current Path : /usr/share/apport/testsuite/
Upload File :
Current File : //usr/share/apport/testsuite/test_backend_apt_dpkg.pyc


5Oc@s'ddlZddlZddlZddlZddlZddlZddlZddlZddlZej	j
drejddjZnddl
mZdZee_dejfdYZy>ejd	d
gdejdejd
krejnWnek
r"nXdS(iNtAPPORT_TEST_LOCALtsbackends/packaging-apt-dpkg.py(timplcCstjjdrtStjdkrtt_tjddgdtj	}x5|j
D]*}|jdjdrVt
t_qVqVW|jntjS(sjReturn if there is a default route.

    This is a reasonable indicator that online tests can be run.
    tSKIP_ONLINE_TESTSs/sbin/routes-ntstdoutsUTF-8s0.0.0.0 N(tostenvirontgettFalset_has_default_routetcachetNonet
subprocesstPopentPIPERtdecodet
startswithtTruetwait(troutetl((s4/usr/share/apport/testsuite/test_backend_apt_dpkg.pyR	s	
tTcBsFeZdZdZdZdZdZdZdZdZ	dZ
d	Zd
ZdZ
dZd
ZdZdZdZdZdZdZdZejeddZejeddZejeddZejeddZdZRS(cCsVtj|_tj|_ytjdt|_Wnt	k
rQt
|_nXdS(Nscoreutils-dbgsym(Rt
configurationt	orig_confttempfiletmkdtemptworkdirtget_available_versionRt
has_dbgsymt
ValueErrorR(tself((s4/usr/share/apport/testsuite/test_backend_apt_dpkg.pytsetUps


cCs |jt_tj|jdS(N(RRRtshutiltrmtreeR(R((s4/usr/share/apport/testsuite/test_backend_apt_dpkg.pyttearDown(scCstj}ztjj|d}tjj|d}tjj|d}t|d}|jdWdQXt|d}|jdWdQXt|d"}|jd	|d
|fWdQX|jtj	|gdt|d}|jdWdQX|jtj	||d
gd
t|d}|jdWdQX|jtj	||d
|gdt|d}|jdWdQX|jtj	||gdt|,}|jtj	|j
|gdWdQXWdtj|XdS(s_check_files_md5().s
test 1.txts
test:2.txtssums.txttws
Some stuffNs
More stufftwbst2e41290da2fa3f68bd3313174467e3b5  %s
f6423dfbc4faf022e58b4d3f5ff71a70  %s
deadbeef000001111110000011110000  /bin/ä
iscorrect md5sumssSome stuff!sfile 1 wrongsMore stuff!sfiles 1 and 2 wrongsfile 2 wrong(
RRRtpathtjointopentwritetassertEqualRt_check_files_md5treadR R!(Rttdtf1tf2tsumfiletfd((s4/usr/share/apport/testsuite/test_backend_apt_dpkg.pyttest_check_files_md5,s4#&cCsO|jtjdjd|jttjd|jttjddS(sget_version().tlibc6t2tnonexistingt
wukrainianN(t
assertTrueRtget_versionRtassertRaisesR(R((s4/usr/share/apport/testsuite/test_backend_apt_dpkg.pyttest_get_versionRscCs9|jtjdjd|jttjddS(sget_available_version().R2R3R4N(R6RRRR8R(R((s4/usr/share/apport/testsuite/test_backend_apt_dpkg.pyttest_get_available_versionYscCstjd}|jt|dk|jd|kx$|D]}|jtj|qBWtjd}|jt|dk|jd|kx$|D]}|jtj|qWtjd}|jt|dkx$|D]}|jtj|qWdS(sget_dependencies().tbashiR2t	coreutilsiN(Rtget_dependenciesR6tlenR7(Rtdtdep((s4/usr/share/apport/testsuite/test_backend_apt_dpkg.pyttest_get_dependencies_s


cCsO|jttjd|jtjdd|jdtjdkdS(s
get_source().R4R;tglibcR2N(R8RRt
get_sourceR)R6(R((s4/usr/share/apport/testsuite/test_backend_apt_dpkg.pyttest_get_sourcevscCsmtjddgjdj}|jttjd|jttjd|jtjd|dS(sget_package_origin().tlsb_releases-sisUTF-8R4srobocode-docR;N(	Rtcheck_outputRtstripR8RRtget_package_originR)(Rtdistro((s4/usr/share/apport/testsuite/test_backend_apt_dpkg.pyttest_get_package_origin}s$cCs0|jttjd|jtjddS(sis_distro_package().R4R;N(R8RRtis_distro_packageR6(R((s4/usr/share/apport/testsuite/test_backend_apt_dpkg.pyttest_is_distro_packagescCs|jttjdtjddgdtj}|jdjj	}|j
dkset|jtjd|dS(sget_architecture().R4tdpkgs--print-architectureRiR;N(
R8RRtget_architectureRR
RtcommunicateRRGt
returncodetAssertionErrorR)(RR?tsystem_arch((s4/usr/share/apport/testsuite/test_backend_apt_dpkg.pyttest_get_architecturescCs6|jttjd|jdtjdkdS(sget_files().R4s	/bin/bashR;N(R8RRt	get_filesR6(R((s4/usr/share/apport/testsuite/test_backend_apt_dpkg.pyttest_get_filesscCsh|jtjdd|jtjdd|jtjdd|jtjdddS(	s&get_file_package() on installed files.s	/bin/bashR;s/bin/catR<s/etc/blkid.tabt	libblkid1s/nonexistingN(R)Rtget_file_packageR(R((s4/usr/share/apport/testsuite/test_backend_apt_dpkg.pyttest_get_file_packagesc	Cstjddgdtj}|jdjdj}|jdksRttj	}zat
jj|d|}t
j
|tjt
jj|dtjd}|jd	Wd
QX|jtjdt|d
|jtjdt|d|jtjd
t|dtjd|jttjdttjd||jtjdtd|jtjd
tdt
jj|d}t
j||jtjdt|d|jtt
j|dt
j|d}|j|jd|jtjdt|dtjd|jtjdt|dt t!j!}t
j"t
jj||||df|jttjdt|Wd
t#j$|Xd
S(s+get_file_package() on uninstalled packages.REs-scRisUTF-8tdistssContents-%s.gzR#s
foo header
FILE                                                    LOCATION
usr/bin/frobnicate                                      foo/frob
usr/bin/frob                                            foo/frob-utils
bo/gu/s                                                 na/mypackage
Nsusr/bin/frobs
frob-utilss
/usr/bin/frobsfile:///foo/nonexistingsfile://R
is	Contents-s/bo/gu/st	mypackagei_(%RR
RRORRGRPRQRRRR%R&tmakedirstgzipR'Rtget_system_architectureR(R)RWRRRt
set_mirrorR8tIOErrortmkdirR>tlistdirR6RtintttimetutimeR R!(	RREtrelease_nametbasedirtmapdirtft	cache_dirt
cache_filetnow((s4/usr/share/apport/testsuite/test_backend_apt_dpkg.pyt!test_get_file_package_uninstalledsB




) cCstjddtdtj}|jdjd}|jdksLt|sXt|j}|d}|d}|j	t
j||dS(	s'get_file_package() for a diverted file.s'LC_ALL=C dpkg-divert --list | head -n 1tshellRisUTF-8iiN(RR
RRRORRPRQtsplitR)RRW(Rtptouttfieldstfiletpkg((s4/usr/share/apport/testsuite/test_backend_apt_dpkg.pyttest_get_file_package_diversions

cCss|jttjdti|jttjdti|jttjdtidS(sget_modified_conffiles()R;tapportR4N(R)ttypeRtget_modified_conffiles(R((s4/usr/share/apport/testsuite/test_backend_apt_dpkg.pyttest_get_modified_conffiless%%cCs3tj}|j|d|jd|kdS(sget_system_architecture().Rs
N(RR]tassertNotEqualR6(Rtarch((s4/usr/share/apport/testsuite/test_backend_apt_dpkg.pyttest_get_system_architecturescCsYtj}|j|d|jd|k|jd|k|jd|kdS(sget_library_paths().Rt:s/libs
N(Rtget_library_pathsRyR6(Rtpaths((s4/usr/share/apport/testsuite/test_backend_apt_dpkg.pyttest_get_library_pathss
cCs|jtjddd|jtjddd|jtjddd|jtjddd|jtjdd	d|jtjd
dddS(scompare_versions.t1R3is1.0-1ubuntu1s1.0-1ubuntu2iis1:1.0-1s2007-2s	1:1.0-1~1N(R)Rtcompare_versions(R((s4/usr/share/apport/testsuite/test_backend_apt_dpkg.pyttest_compare_versionsscCs"dt_|jtjttj}|jt_|jdj	|j
|jtjt|jtj}|jt_|jdj	|j
|jtjt|jtj}|jt_|jdj	|j
|jtjt|jdS(senabled.s/nonexistings # configuration file
enabled = 1s## configuration file
  enabled =0  s!# configuration file
nothing hereN(
RRR)tenabledRRtNamedTemporaryFiletnameR(tencodetflushtcloseR(RRh((s4/usr/share/apport/testsuite/test_backend_apt_dpkg.pyttest_enableds(	




cCs|jdtjkdS(sget_kernel_package().tlinuxN(R6Rtget_kernel_package(R((s4/usr/share/apport/testsuite/test_backend_apt_dpkg.pyttest_get_kernel_pacakge4scCsw|jttjddk|jdtjdk|jtjddg|jtjdgdS(spackage_name_glob().sa*iR;sba*hsxzywef*N(R6R>Rtpackage_name_globR)(R((s4/usr/share/apport/testsuite/test_backend_apt_dpkg.pyttest_package_name_glob9s"sonline testc	Csf|jtj|j|jdd"d#d$gt|j|jtj	j
tj	j|jd|jtj	j
tj	j|jd	|jtj	j
tj	j|jd
|jtj	j
tj	j|jd|jtj
|jdg|jtj
tj	j|jddgtj
tj	j|jdd
ddd
d}g|D]}|jdd^qh}|jd|k|jd|k|jd|k|jd|k|jd|ktjtj	j|jdtj|j|jdd%gt|j|jtj	j
tj	j|jdtj|j|jdd&g}|jt|jd|jd|k|jd|k|jtj	j
tj	j|jdtj|j|jdd'g}|jt|jd|jd|k|jd|ktjdddgdtj}|jdj}|j|jd|jtjd||jttjdtjtj	j|jdtj|j|jdd(d)gt|j|jtj	j
tj	j|jd|jtj	j
tj	j|jd d!S(*s/install_packages() with versions and with caches
Foonux 1.2R<s7.4-2ubuntu2R2s2.11.1-0ubuntu7ttzdatas2010i-1susr/bin/statsusr/lib/debug/usr/bin/statsusr/share/zoneinfo/zone.tabsusr/share/doc/libc6/copyrightssources.listtapttvarR
tarchivest_iscoreutils-dbgsyms	libc6-dbgsgnome-commons1.1isusr/bin/gnome-autogen.shtbuggerboggers	not exists
dpkg-querys
-Wf${Version}tdashRRMsusr/bin/dpkgN(s	coreutilss7.4-2ubuntu2(slibc6s2.11.1-0ubuntu7(Rs2010i-1(s	coreutilss7.4-2ubuntu2(sgnome-commons1.1(RN(s	coreutilss7.4-2ubuntu2(sdpkgN(t_setup_foonux_configRtinstall_packagestrootdirt	configdirRtcachedirR6RR%texistsR&R)RaRntunlinkR>t
splitlinesRRR
RRORRPR7R8RR(RR
Rotcache_namestresultRMtcoreutils_version((s4/usr/share/apport/testsuite/test_backend_apt_dpkg.pyttest_install_packages_versionedAst





$
&




cCs |jtj|j|jdd	d
gtd|jtj	j
tj	j|jd|jtj	j
tj	j|jd|jtj	j
tj	j|jd|jtj
|jdg|jtj
tj	j|jddg|jtj
|jgdS(s0install_packages() without versions and no caches
Foonux 1.2R<Rsusr/bin/statsusr/lib/debug/usr/bin/statsusr/share/zoneinfo/zone.tabssources.listN(s	coreutilsN(stzdataN(RRRRRRRR6RR%RR&R)RaR(R((s4/usr/share/apport/testsuite/test_backend_apt_dpkg.pyt!test_install_packages_unversioneds




$
c	Cstjd|jtj|jdddtjdfdgt|j}|jt	j
jt	j
j|jd|jt	j
jt	j
j|jd|j
t|jd|jd|k|jd|kt	jt	j
j|jdd	d
dd	d}g|D]}|jd
d^q}|jd|k|j
d|k|j|jd|kt	jt	j
j|jdt	j}z3t	j|jtjddddgtdWdt	j|X|jt	j
jt	j
j|jddS(s,install_packages() with system configurationRR<Rs1.1susr/bin/statsusr/share/zoneinfo/zone.tabitsystemRRR
RRiscoreutils-dbgsymtrootN(stzdatas1.1(s	coreutilsN(RR7RRRRRRR6RR%RR&R)R>RRaRnRRtgetcwdtchdirR(RRR
RoRtorig_cwd((s4/usr/share/apport/testsuite/test_backend_apt_dpkg.pyttest_install_packages_systems8



&c	Cs|jttjj|jddd}|jdWdQXy9tj|j	|jddgt|j|j
dWnEtk
r}|jdt|k|jd	t|knXttjj|jddd}|jd
WdQXy9tj|j	|jddgt|j|j
dWnNtk
r}|jdt|kt||jd
t|knXdS(sinstall_packages() with errorss
Foonux 1.2ssources.listR#sbogus formatNRsBinstall_packages() unexpectedly succeeded with broken sources.listtbogust	Exceptions7deb http://archive.ubuntu.com/nosuchdistro/ lucid main
s@install_packages() unexpectedly succeeded with broken server URLtnosuchdistrosindex files failed to download(stzdataN(stzdataN(RR'RR%R&RR(RRRRRRtfailtSystemErrorR6tstrtassertFalse(RRhte((s4/usr/share/apport/testsuite/test_backend_apt_dpkg.pyttest_install_packages_errors&
''"cCstjj|jd|_tjj|jd|_tjj|jd|_tj|jtj|jtj|jtjtjj|jdttjj|jddd!}|j	d|j	dWd	QXd	S(
s;Set up directories and configuration for install_packages()R
Rtconfigs
Foonux 1.2ssources.listR#s1deb http://archive.ubuntu.com/ubuntu/ lucid main
s(deb http://ddebs.ubuntu.com/ lucid main
N(
RR%R&RRRRR`R'R((RRh((s4/usr/share/apport/testsuite/test_backend_apt_dpkg.pyRs'
(t__name__t
__module__RR"R1R9R:RARDRJRLRSRURXRlRtRxR{RRRRRtunittestt
skipUnlessR	RRRRR(((s4/usr/share/apport/testsuite/test_backend_apt_dpkg.pyRs4			&					
					<				
	
			P-RMs--helpRtstderri(RR\timpRRR Rtos.pathRcRRtload_sourceRtapport.packaging_implR	RR
tTestCaseRtcallRtmaintOSError(((s4/usr/share/apport/testsuite/test_backend_apt_dpkg.pyt<module>sl