Your IP : 172.28.240.42


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


5Oc@sddlZddlZddlZddlZddlZddlZddlZyddlmZWn!e	k
rddl
mZnXddlZdejfdYZ
edkrejndS(iN(tStringIOtTcBseZdZdZdZdZdZdZdZdZ	dZ
d	Zd
ZdZ
dZd
ZdZdZdZdZdZdZdZdZdZdZdZRS(cCstj}d|d<d|d<d|d<d|d<d|d<|j|dd|j|dd|j|dd	|jtj|d
|j|dd|j|dd|j|dddS(sbasic creation and operation.tbartfoos foo   bar
baz
   blip  t1sdash-keysdot.keytunderscore_keytProblemTypetCrashtDateN(tproblem_reportt
ProblemReporttassertEqualt
assertTruettimetstrptime(tselftpr((s2/usr/share/apport/testsuite/test_problem_report.pyttest_basic_operationss




cCsMtjd}|j|ddtjdd}|j|dddS(s"non-default constructor arguments.tKernelCrashRtdates19801224 12:34RN(R	R
R(RR((s2/usr/share/apport/testsuite/test_problem_report.pyttest_ctor_argumentsscCstj}|jt|jdd|jt|jdd|jt|jdd|jt|jdd	|jt|jdd
|jt|jddS(svarious error conditions.sa bRtais/tmp/nonexistantttNonexistantN(i(s/tmp/nonexistantR(R	R
tassertRaisestAssertionErrort__setitem__tKeyErrort__getitem__(RR((s2/usr/share/apport/testsuite/test_problem_report.pyttest_sanity_checks%scCskdd}tj}tjd|d<tj|d<|djddd	tj||d
<|jt|dtj|jt|dtj|j|djd|j|djddd	|j|d
j||jt|dd|jt|dd|jt|d
t|t	}|dj
||j|jddd	t	}|d
j
||j|j|tjd
|d<|j|djdddgt	}|j
||j
dtj}|j||j|dd|j|dddd	|j|d
|dS(s#handling of CompressedValue values.tAi@KLsFooFoo!tFootBintABi
ttZtLargeiis


t	MultilinesssiNtABABABABABABABABABABt
R&R'R&R'R&R'(R	R
tCompressedValuet	set_valueRt
isinstanceRt	get_valuetlenRtwritetgetvaluet
splitlinestseektload(Rt	large_valRtio((s2/usr/share/apport/testsuite/test_problem_report.pyttest_compressed_values0s>
" 			


cCstjdd}d|d<tjjdrtd|d<djd|d	<d
jd|d<d
jd|d<n1djd|d<d|d	<d
|d<d
|d<d
|d<t}|j||j	|j
ddS(swrite() and proper formatting.Rsnow!RtSimplet2s	1äö2Φ3t
SimpleUTF8sUTF-8t
SimpleUnicodespi-π
nu-ηtTwoLineUnicodetTwoLineUTF8s' foo   bar
baz
  blip  

afteremptylinet
WhiteSpacesProblemType: Crash
Date: now!
Simple: bar
SimpleUTF8: 1äö2Φ3
SimpleUnicode: 1äö2Φ3
TwoLineUTF8:
 pi-π
 nu-η
TwoLineUnicode:
 pi-π
 nu-η
WhiteSpace:
  foo   bar
 baz
   blip  
 
 afteremptyline
N(R	R
tsystversiont
startswithtdecodetencodeRR-RR.(RRR3((s2/usr/share/apport/testsuite/test_problem_report.pyt
test_writeYs 





	
cCsotjdd}d|d<d|d<t}|j||jd|d<|j||j|jd	tj}|jddd
|j	tjdd}|j
f|d<t}|j||j|jd|d<|j||jdtj}|j
||j|dd|j|dddd
|j|dddS(s+write() with appending to an existing file.Rsnow!RR5s foo   bar
baz
  blip  R;tappendedtExtrasaProblemType: Crash
Date: now!
Simple: bar
WhiteSpace:
  foo   bar
 baz
   blip  
Extra: appended
R!i
R"R#tFileiRNR&R'R&R'(R	R
RR-tclearRR.ttempfiletNamedTemporaryFiletflushtnametcloseR0R1(RRR3ttemp((s2/usr/share/apport/testsuite/test_problem_report.pyttest_write_appends6

	



	
	






cCstj}|jtd|j|dd|j|dd|j|dd|j|dd	|jtd
|j|dd|j|dd|j|dd|j|dd|jtd|j|dd|j|dd|j|dd|j|dd
tj}|jtd|j|dd|j|dd|jtd|j|dd	|j|ddtd}tj}|jt|j||jtd|jt|jdgdS(sload() with various formatting.sQProblemType: Crash
Date: now!
Simple: bar
WhiteSpace:
  foo   bar
 baz
   blip  
RRRsnow!R5RR;s foo   bar
baz
  blip  sSProblemType: Crash
Date: now!
Simple: bar
WhiteSpace:
  foo   bar
 baz
   blip  
 
s foo   bar
baz
  blip  
s?ProblemType: Crash
Date: now!
Simple: bar
WhiteSpace:
 foo
 barsfoo
barsFProblemType: Crash
WhiteSpace:
  foo   bar
 baz
 
   blip  
Last: foo
s foo   bar
baz

  blip  tLastRsFProblemType: Crash
WhiteSpace:
  foo   bar
 baz
   blip  
Last: foo
 
sfoo
sWhiteSpace:
 first

 second
sProblemType: CrashN(	R	R
R1RRRt
ValueErrortlisttkeys(RRtinvalid_spacing((s2/usr/share/apport/testsuite/test_problem_report.pyt	test_loadsD	
		
	
	
	
	cCsTtj}|jddd|jtjdd}|jf|d<|jf|d<t}|j||j|j	|j
d	tj}|jd
|jtjdd}|jtf|d<t}|j||j	|j
d|jtf|d<t}|j||j	|j
d|jd
S(s'writing a report with binary file data.R!i
R"R#Rsnow!RDtAfilesProblemType: Crash
Date: now!
Afile: base64
 H4sICAAAAAAC/0FmaWxlAA==
 c3RyxIAMcBAFAK/2p9MfAAAA
File: base64
 H4sICAAAAAAC/0ZpbGUA
 c3RyxIAMcBAFAK/2p9MfAAAA
tfoobars,ProblemType: Crash
Date: now!
File: foobar
s[ProblemType: Crash
Date: now!
File: base64
 H4sICAAAAAAC/0ZpbGUA
 S8vPZ0hKLAIACq50HgcAAAA=
NR&R'(
RFRGR-RHR	R
RIRRJRR.tFalsetTrue(RRKRR3((s2/usr/share/apport/testsuite/test_problem_report.pyttest_write_files4
	

	

	
	
cCstdd
d}td}tjdd}|f|d<|tf|d	<t}|j||jd
tj}|j||j|d|j|j|d	|jdS(s6writing a report with a pointer to a file-like object.R!i
R"R#sHello WorldRsnow!tBinFiletAscFileiNR&R'(	RR	R
RUR-R0R1RR.(RttempbinttempascRR3((s2/usr/share/apport/testsuite/test_problem_report.pyttest_write_fileobj7s
	


cCstd}td}tjdd}|tdtf|d<t}|jt|j|tjdd}|tdtf|d<t}|jt|j|dS(sSwriting a report with a pointer to a file-like object with enforcing non-emptyness.RRsnow!RXRYN(	RR	R
RVtNoneRtIOErrorR-RU(RRZR[RR3((s2/usr/share/apport/testsuite/test_problem_report.pyttest_write_empty_fileobjIs		cCs|tj\}}tjdkrtj|tjdtj|dddtjdtj|dtjdtj|dtj|tjdntj|tj	dd	}tj
|f|d
<t}|j|tjddkst
|jdtj	}|j||j|d
jd|jt|d
d
tddS(s5writing a report with file pointers and delayed data.ig333333?tabiithellos worldRsnow!RXis
abhello worldishello worldN(tostpipetforkRJR
tsleepR-t_exitR	R
tfdopenRtwaitRR0R1RtendswithRR,(RtfouttfinRR3tpr2((s2/usr/share/apport/testsuite/test_problem_report.pyttest_write_delayed_fileobjYs,





	


cCs d}tj}|jt||j|dd
dd|j|jt|jt|dt|j|dd|j|jt|jt|dd	|j|d
d|j|jt|jt	|dtj
|j|djddddS(s"reading a report with binary data.sdProblemType: Crash
Date: now!
File: base64
 H4sICAAAAAAC/0ZpbGUA
 c3RyxIAMcBAFAK/2p9MfAAAA
Foo: Bar
RDR!i
R"R#tbinaryRt
compressedRtBarNR&R'R&R'(R	R
R1RRthas_removed_fieldsRURVRR*R(R+(Rt
bin_reportR((s2/usr/share/apport/testsuite/test_problem_report.pyttest_read_filexs	cCsJd}dd
d}tj}|jt||j|d||j|jt|jt|dt|j|dd|j|jt|jt|dd	|j|jt|jt|dt||j|dj	|t}|dj
||jd
|j|j|dS(sOreading a report with binary data in legacy format without gzip
        header.sPProblemType: Crash
Date: now!
File: base64
 eJw=
 c3RyxIAMcBAFAG55BXk=
Foo: Bar
R!i
R"R#RDRnRRoiNR&R'(
R	R
R1RRRqRURVR,R+R-R0tread(RRrtdataRR3((s2/usr/share/apport/testsuite/test_problem_report.pyttest_read_file_legacys"
 	
cCsftj}tjd}|j||jtj}|jf|d<d|d<d|d<t	}|j||j
|jdtj}|j||j
|d|k|j|dd|j|ddt	}|j||j
|j|jk|jdtj}|j|dd	|j|dj|d
S(s*writing and re-decoding a big random file.iRDtxtestxtBeforetytestytZAfteriRnRoN(RFRGRbturandomR-RHR	R
RIRRJR0R1RRR.R+(RRKRuRR3tio2((s2/usr/share/apport/testsuite/test_problem_report.pyt
test_big_files0



	



	

cCstj}tjd}|j||jtj}|jt	df|d<|jt	df|d<|jt	df|d<|jt	df|d<|jt	df|d	<d
|d<d|d
<t}|j||j|j
dtj}|j||jd|k|jd|k|j|d|k|j|d|k|j|d	|k|j|dd
|j|d
ddS(s4writing and a big random file with a size limit key.iidtFileSmallLimititFileLimitMinus1tFileExactLimititFileLimitPlus1t
FileLimitNoneRwRxRyRziN(RFRGRbR{R-RHR	R
RIRVR]RRJR0R1tassertFalseRR(RRKRuRR3((s2/usr/share/apport/testsuite/test_problem_report.pyttest_size_limits2



	



cCstj}d|d<g}x|D]}|j|q#W|j|jdj|d|jtg|D]}|dkrm|^qmddS(s'problem_report.ProblemReport iteration.RRt sDate ProblemType fooiN(R	R
tappendtsortRtjoinR,(RRRPtk((s2/usr/share/apport/testsuite/test_problem_report.pyt	test_iters


cCsd}tj}|jt||j|ddt}|j||j|j|d|d<d|d<t}|j||j|jddS(	s,reading, modifying fields, and writing back.syProblemType: Crash
Date: now!
Long:
 xxx
 .
 yyy
Short: Bar
File: base64
 H4sICAAAAAAC/0ZpbGUA
 c3RyxIAMcBAFAK/2p9MfAAAA
tLongs	xxx
.
yyysaaa
bbbtShortt123svProblemType: Crash
Date: now!
Long: 123
Short:
 aaa
 bbb
File: base64
 H4sICAAAAAAC/0ZpbGUA
 c3RyxIAMcBAFAK/2p9MfAAAA
N(R	R
R1RRR-R.(RtreportRR3((s2/usr/share/apport/testsuite/test_problem_report.pyttest_modifys
	


	

cCs.tj}d|d<d|d<tj\}}tj||jt|dtj|}tj}|j	d|d<|j
|dttj|}|j|j
|j
|j|j|jd	|j|j|jd	tj}|jt||j|dd|j|dd|j|ddtjd	t|jtjd	tj}|j	d
|d<|j
|tj|}|j|j
|j
|j|j|jt}|}xt|d	krtjj|\}}	tjj|rx^tdD]P}
|
jd
d	d!\}}}
||kr3d|
jdkr3t}Pq3q3WPqqW|s|j|j|jntj}|jt||j|dd|j|dd|j|dd|j|dd
tj|dS(s)adding information to an existing report.t11told1t22told2twt33tnew1t
keep_timesit44tnew2s/proc/mountsRitnoatimet,N(R	R
RFtmkstempRbRJR-topentstatREtadd_to_existingRVRtst_modetassertAlmostEqualtst_atimetst_mtimeR1R
ReRttassertNotEqualRUR,tpathtsplittismounttunlink(RRtfdtreptorigstattnewstattnewprt
skip_atimetdirtfilenametlinetmounttfstoptions((s2/usr/share/apport/testsuite/test_problem_report.pyttest_add_to_existing9sd









!cCstjdd}d|d<tjjdrtd|d<djd|d	<d
jd|d<d
jd|d<n1djd|d<d|d	<d
|d<d
|d<d
|d<d|d<d|d<d|d<dd|d<ddddd|d<dd|d<ddddddd d|d!<t}|j||j	d"t
j|}g|jD]}|^qh}|j
t|d#|j|d"j|j|d$j|j
|d$jd%|j
|d$jd&|j
|d$jd/|j
|d$jd'td(|d|j|d)j|j
|d)jd%|j
|d)jd&|j
|d)jd*|j
|d)jd't|d!|j|d+j|j
|d+jd%|j
|d+jd&|j
|d+jd,|j
|d+jd't|d|j|d-j|j
|d-jd%|j
|d-jd&|j
|d-jd.|j
|d-jd'tdd/S(0swrite_mime() for text values.Rsnow!RR5R6s	1äö2Φ3R7sUTF-8R8spi-π
nu-η
R9R:sbar
t
SimpleLineEnds
first
second
tTwoLines first
second
third
fourth
fifth
tInlineMargins7 foo   bar
baz
  blip  
line4
line♥5!!
łıµ€ ⅝
R%Rit	Largelineixs
tBiZtLargeMultilinei'tHugelineitCt
HugeMultilineiiis
text/plainsutf-8R?sProblemType: Crash
Date: now!
InlineMargin:
 first
 second
 third
 fourth
 fifth
LargeMultiline:
 AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
 BBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBB
Largeline: %s
Simple: bar
SimpleLineEnd: bar
SimpleUTF8: 1äö2Φ3
SimpleUnicode: 1äö2Φ3
TwoLine:
 first
 second
TwoLineUTF8:
 pi-π
 nu-η
TwoLineUnicode:
 pi-π
 nu-η
isHugeMultiline.txtisHugeline.txtis
Multiline.txtN(R	R
R<R=R>R?R@Rt
write_mimeR0temailtmessage_from_filetwalkRR,Rtis_multiparttget_content_typetget_content_charsettget_filenameR]tget_payloadRV(RRR3tmsgtptparts((s2/usr/share/apport/testsuite/test_problem_report.pyttest_write_mime_texts`








&	

$$cCsBd!d"d}tj}|j||jtj}tjddd|}|j||j|jtjdd	}d
|d<|j	f|d<|j	f|d<||d
<t
|j	j|d<tj||d<t
}|j||jdtj|}g|jD]}|^q'}	|jt|	d|j|	dj|j|	dj|j|	djd|j|	djd|j|	djd |j|	djdtd|j|	dj|j|	djd|j|	djdtj}
|
j|	djdt|
jd|jtjddd|
j||j|	dj|j|	djd|j|	djdtj}
|
j|	djdt|
jd|jtjddd|
j||j|	dj|j|	djd|j|	djdtj}
|
j|	djdt|
jd|jtjddd|
j||j|	dj|j|	djd|j|	djdtj}
|
j|	djdt|
jd|jtjddd|
j||j|	dj|j|	djd|j|	djdtj}
|
j|	djdt|
jd|jtjddd|
j|d S(#s3write_mime() for binary values and file references.R!i
R"R#tFile1RtfileobjRsnow!s
Test suitetContextsFile1.gztValue1s	Value1.gztZValueiiis
text/plainsutf-8R?s2ProblemType: Crash
Context: Test suite
Date: now!
isapplication/x-gziptmodetrbiiiis	ZValue.gzNR&R'(RFRGR-RHtgziptGzipFileRJR	R
RIRRtR(RRR0RRRRR,RRRRRR]RRVt
TemporaryFile(Rt	bin_valueRKttempgztgzRR3RRRtf((s2/usr/share/apport/testsuite/test_problem_report.pyttest_write_mime_binarys






	


(
(
(
(
cCs9tjdd}d|d<d|d<t}|j|didd	6d
d6|jdtj|}|j|d	d|j|dd
g|jD]}|^q}|jt	|d
|j
|dj|j
|dj|j|djd|j
d|dj
dtkdS(s write_mime() with extra headers.Rsnow!RR5s
first
second
Rt
extra_headersshello worldtGreetingRpRiiis
text/plainsSimple: barR?N(R	R
RRR0RRRRR,RRRRRV(RRR3RRR((s2/usr/share/apport/testsuite/test_problem_report.pyttest_write_mime_extra_headers@s 

	
cCsddd}tjdd}d|d<d	|d
<||d<ddd|d<t}|j|dd
dg|jdtj|}g|jD]}|^q}|jt	|d|j
|dj|j
|dj|j|djd|j|dj
d|j|djd|j|djdtd|j
|djtj}|j|djdt|jd|jtjddd|j|dS( swrite_mime() with key filters.R!i
R"R#Rsnow!tHitGoodTexttYouDontSeeMetBadTexttGoodBintYst-tBadBint	skip_keysiiis
text/plainsutf-8R?s+ProblemType: Crash
Date: now!
GoodText: Hi
iRRRNR&R's
(R	R
RRR0RRRRR,RRRRRR]RRVRFRR-RRRt(RRRR3RRRR((s2/usr/share/apport/testsuite/test_problem_report.pyttest_write_mime_filterZs0


	

cCsWtjdd}d|d<d|d<d|d<d	|d
<t}|j|dddd
ddg|jd
tj|}g|jD]}|^q}|jt	|d|j
|d
j|j
|dj|j|djd|j|dj
d|j|djd|j|djdtddS(swrite_mime() with keys ordered.Rsnow!tWhatt
SecondTexttWhot	FirstTexttTodayt
FourthTextsI Don't Knowt	ThirdTexttpriority_fieldstUnknowniiis
text/plainsutf-8R?shFirstText: Who
SecondText: What
ThirdText: I Don't Know
FourthText: Today
ProblemType: Crash
Date: now!
N(R	R
RRR0RRRRR,RRRRRR]RRV(RRR3RRR((s2/usr/share/apport/testsuite/test_problem_report.pyttest_write_mime_orders&



	
cCstj}|j|jtddg|jtd|j|jtd|d<d|d<|j|jtdgt}|j|dt|j|j	d	d
S(s*new_keys() and write() with only_new=True.RRs1ProblemType: Crash
Date: now!
Foo: bar
Baz: blob
tchangedRsnew newtNewKeytonly_newsNewKey: new new
N(
R	R
Rtnew_keystsetR1RR-RVR.(RRtout((s2/usr/share/apport/testsuite/test_problem_report.pyt
test_updatings"	


	cCstj}d|d<ddd|d<d|d	<i}d
|d<d|d
<d|d	<|j||j|dd|j|dddd|j|dd
|j|d
d|j|d	ddS(s%importing a dictionary with update().sHello worldtoldtextR!i
R"R#toldbins	I am crapt	overwrites
Goodbye worldtnewtextt11ZZtnewbins	I am goodNR&R'R&R'(R	R
tupdateR(RRtd((s2/usr/share/apport/testsuite/test_problem_report.pyttest_import_dicts





(t__name__t
__module__RRRR4RARLRRRWR\R_RmRsRvR}RRRRRRRRRRR(((s2/usr/share/apport/testsuite/test_problem_report.pyRs2				)	&	.	U	5					#	&	#		)	K	b	Z		'	"	t__main__(tunittestRFRbRRR
R<t	cStringIORtImportErrorR3R	tTestCaseRRtmain(((s2/usr/share/apport/testsuite/test_problem_report.pyt<module>sT