harmony-dev mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From "Rui Hu" <roberthu...@gmail.com>
Subject Re: [classlib][test] "fail" statements omitted in many exception catching test cases
Date Thu, 28 Sep 2006 01:35:29 GMT
Great Mark!
I've merged your code into my script. The script can be downloaded at [1].

Usage:
perl failFinder.pl root_of_module

e.g. Search out all related lines in luni module and redirect it to
result.txt

perl failFinder.pl trunk/modules/luni > result.txt

e.g. Search out all related lines in all modules and redirect it to
result.txt

perl failFinder.pl trunk/modules/ > result.txt

Anyone can find out the related lines of any modules.

[1]:
http://wiki.apache.org/harmony-data/attachments/failstatementsomitted/attachments/failFinder.pl



On 9/27/06, Mark Hindess <mark.hindess@googlemail.com> wrote:
>
>
> This perl script does a marginally better job by being slightly stricter
> on matching context around 'catch'/'fail', by handling comments slightly
> better and by handling 'catch (...) { }' appearing on a single line.
>
> It also finds a few more hits such as:
>
> sql/src/test/java/org/apache/harmony/sql/tests/java/sql/TimeTest.java +208
>
> which is a false positive but which uses "assertTrue(false);" which
> should be fixed anyway.
>
> -Mark.
>
> #!/usr/bin/perl -w
> use strict;
>
> my $previous_line = "";
> my $possible_line_number;
> while (<>) {
> next if (/^\s*$/); # skip blank lines
> if ($possible_line_number) {
>    if (m!^\s*(//|/\*|})!) {
>      print $ARGV, ' +', $possible_line_number, "\n";
>    }
>    undef $possible_line_number;
> }
> if (!m!^\s*(/?\*|//)! && /\bcatch\s*\(/ && $previous_line !~
> /\bfail\s*\(/) {
>    $possible_line_number = $.;
>    if (/catch\s*\([^\)]+\)\s*{\s*}/) {
>      print $ARGV, ' +', $possible_line_number, "\n";
>      undef $possible_line_number;
>    }
> }
> $previous_line = $_;
> }
>
> On 27 September 2006 at 15:02, Robert Hu <roberthurui@gmail.com> wrote:
> > --------------090601000506020908060004
> > Content-Transfer-Encoding: 7bit
> > Content-Type: text/plain; charset=GB2312
> >
> > Hi All,
> >
> > In our unit test of classlib, there are huge number of test cases about
> excep
> > tion catching. The typical style of those cases is like that:
> >
> >       try {
> >               someStatementShouldThrowAnException;
> > *           fail("Expected an exception");*
> >       } catch (SomeException e){
> >               // Expected
> >       }
> >
> > If we omit the "fail" statement, the test case is wrong because the
> exception
> > -throwing checking is disabled.
> >
> > I've found that the "fail" statement is omitted in many test cases of
> our Har
> > mony classlib. So I set some rules to find out all lines of code related
> with
> >  it. If a line of code comform all the 5 rules, it may be a bug:
> > 1.in a "*Test.java" file
> > 2.does not start with "//"
> > 3.contains "catch"
> > 4.its previous line does not contains "fail"
> > 5.its next line contains "//" or "}"
> >
> >
> > Then I found out 1711 lines of code in 309 files comform all the 5 rules
> in r
> > 450321. (Attachment file is the result.)
> > Of course not all of them are bug, because some test cases are not of
> above s
> > tyle.
> >
> > And I also find out some real bugs, we can fix them easilly:
> >
> trunk\modules\awt\src\test\api\java\common\java\awt\font\TextLayoutTest.java:
> > 652\658\664\670\676\685\698\704\711(line number)
> >
> trunk\modules\luni\src\test\java\org\apache\harmony\tests\java\lang\EnumTest.
> > java:57
> >
> trunk\modules\luni\src\test\java\org\apache\harmony\luni\tests\java\io\FileIn
> > putStreamTest.java:36
> >
> trunk\modules\luni\src\test\java\org\apache\harmony\luni\tests\java\io\FileOu
> > tputStreamTest.java:35
> > <more>......
> >
> > *I must say frankly that it's hard to find out all bugs of this kind
> without
> > any "victims" automatically, we must find out real bugs ourselves.*
> >
> > Hope the result in attachment file can help us to find out more bugs.
> >
> > Anybody has better search rules or better solution to find out those
> bugs? Pl
> > s. share with us, thanks a lot.
> >
> > --
> > Robert Hu
> > China Software Development Lab, IBM
> >
> >
> > --------------090601000506020908060004
> > Content-Type: text/plain;
> >  name="result.txt"
> > Content-Disposition: inline;
> >  filename="result.txt"
> > Content-Transfer-Encoding: quoted-printable
> >
> > current position is trunk\modules
> >
> .\archive\src\test\java\org\apache\harmony\archive\tests\java\util\jar\JarF=
> > ileTest.java:66\79\190
> >
> .\archive\src\test\java\org\apache\harmony\archive\tests\java\util\zip\Defl=
> > aterOutputStreamTest.java:220\230
> >
> .\archive\src\test\java\org\apache\harmony\archive\tests\java\util\zip\Defl=
> > aterTest.java
> :188\619\724\785\792\859\1006\1013\1070\1077\1091\1092\1098\10=
> > 99\1105\1106\1113\1114\1120\1121\1127\1128\1134\1135\1143\1179
> >
> .\archive\src\test\java\org\apache\harmony\archive\tests\java\util\zip\ZipF=
> > ileTest.java:67\291
> >
> .\archive\src\test\java\org\apache\harmony\archive\tests\java\util\zip\ZipI=
> > nputStreamTest.java:200
> >
> .\auth\src\test\java\common\javax\security\auth\callback\ConfirmationCallba=
> > ckTest.java:60\147
> >
> .\auth\src\test\java\common\javax\security\auth\callback\LanguageCallbackTe=
> > st.java:60
> >
> .\auth\src\test\java\common\javax\security\auth\kerberos\ServicePermissionT=
> > est.java:302
> > .\auth\src\test\java\common\javax\security\auth\PolicyTest.java:132
> >
> .\auth\src\test\java\common\javax\security\auth\PrivateCredentialPermission=
> > Test.java:267\386
> >
> .\auth\src\test\java\common\javax\security\auth\SubjectTest.java:239\248\25=
> > 7\269\992\1109\1301\1314\1423\1851\2049\2061\2089\2101\2127\2139
> >
> .\auth\src\test\java\common\javax\security\auth\x500\X500PrincipalTest.java=
> > :2404
> >
> .\auth\src\test\java\common\javax\security\auth\x500\X500PrivateCredentialT=
> > est.java:169\179\189
> >
> .\auth\src\test\java\common\org\apache\harmony\auth\internal\SecurityTest.j=
> >
> ava:807\855\950\971\987\995\1003\1011\1065\1089\1090\1101\1116\1125\1133\11=
> > 41\1142\1151\1152\1161\1162
> >
> .\auth\src\test\java\common\org\apache\harmony\auth\login\DefaultConfigPars=
> > erTest.java:79\182
> > .\awt\src\test\api\java\common\java\awt\color\ICC=5FProfileRTest.java:37
> > .\awt\src\test\api\java\common\java\awt\ComponentTest.java:751
> >
> .\awt\src\test\api\java\common\java\awt\font\TextLayoutTest.java:652\658\66=
> > 4\670\676\685\698\704\711
> >
> .\awt\src\test\api\java\windows\org\apache\harmony\awt\tests\java\awt\WinFo=
> > ntTest.java:427
> >
> .\beans\src\test\java\org\apache\harmony\beans\tests\java\beans\beancontext=
> > \BeanContextServicesSupportTest.java:739
> >
> .\beans\src\test\java\org\apache\harmony\beans\tests\java\beans\beancontext=
> > \BeanContextSupportTest.java:234\251\1388
> >
> .\beans\src\test\java\org\apache\harmony\beans\tests\java\beans\Introspecto=
> > rTest.java:1266\1304
> >
> .\beans\src\test\java\org\apache\harmony\beans\tests\java\beans\StatementTe=
> > st.java:93
> >
> .\beans\src\test\java\org\apache\harmony\beans\tests\java\beans\XMLDecoderT=
> > est.java:92
> >
> .\beans\src\test\java\org\apache\harmony\beans\tests\java\beans\XMLEncoderT=
> > est.java:334
> >
> .\concurrent\standard\src\test\java\AbstractExecutorServiceTest.java:215\23=
> >
> 5\253\306\311\340\341\353\389\403\418\436\454\473\488\521\541\562\578\595\6=
> > 10\628\646\665\680\697\730\750\771
> >
> .\concurrent\standard\src\test\java\AbstractQueuedSynchronizerTest.java:76\=
> >
> 92\162\365\514\531\631\645\660\677\692\709\724\741\756\976\1007\1039\1236\1=
> > 260
> >
> .\concurrent\standard\src\test\java\AbstractQueueTest.java:62\74\94\115\128=
> > \140\154\169\183
> >
> .\concurrent\standard\src\test\java\ArrayBlockingQueueTest.java:53\64\76\90=
> >
> \104\162\173\196\209\221\235\250\264\293\395\433\459\528\555\597\611\743\75=
> > 4\946\958\1011\1023
> >
> .\concurrent\standard\src\test\java\AtomicIntegerArrayTest.java:40\64\68\72=
> > \76
> >
> .\concurrent\standard\src\test\java\AtomicIntegerFieldUpdaterTest.java:34\4=
> > 7\60
> >
> .\concurrent\standard\src\test\java\AtomicLongArrayTest.java:38\62\66\70\74
> >
> .\concurrent\standard\src\test\java\AtomicLongFieldUpdaterTest.java:35\48\62
> >
> .\concurrent\standard\src\test\java\AtomicReferenceArrayTest.java:40\65\69\=
> > 73\77
> >
> .\concurrent\standard\src\test\java\AtomicReferenceFieldUpdaterTest.java:50=
> > \64\77
> >
> .\concurrent\standard\src\test\java\ConcurrentHashMapTest.java:320\330\340\=
> > 351\362\373\384\395\406\417\428\439\450\462\473\484\497\509
> >
> .\concurrent\standard\src\test\java\ConcurrentLinkedQueueTest.java:53\65\79=
> > \134\145\178\190\203\218\277\291\416\427
> >
> .\concurrent\standard\src\test\java\CopyOnWriteArrayListTest.java:251\414\4=
> > 25\438\449\462\473\486\497\510\521\534\545\558\570\582\595
> > .\concurrent\standard\src\test\java\CopyOnWriteArraySetTest.java:182\268
> > .\concurrent\standard\src\test\java\CountDownLatchTest.java:28\126\150
> >
> .\concurrent\standard\src\test\java\CyclicBarrierTest.java:33\43\142\171\18=
> > 2\210\236\247\274\285\323
> >
> .\concurrent\standard\src\test\java\DelayQueueTest.java:147\159\173\232\243=
> > \275\288\301\316\346\450\476\545\572\614\628\763\774\893\905\950\962
> > .\concurrent\standard\src\test\java\ExchangerTest.java:114\138\163\189
> >
> .\concurrent\standard\src\test\java\ExecutorCompletionServiceTest.java:32\4=
> > 4\58\74
> >
> .\concurrent\standard\src\test\java\ExecutorsTest.java:94\129\140\177\189\2=
> > 12\223\349\359\406\417\461\467\518\531\537\627\638\649\660
> >
> .\concurrent\standard\src\test\java\FutureTaskTest.java:40\52\267\296\334\3=
> > 45\379\400\418
> >
> .\concurrent\standard\src\test\java\LinkedBlockingQueueTest.java:57\68\80\9=
> >
> 4\152\163\186\199\211\224\239\253\282\384\422\448\517\544\585\599\731\742\9=
> > 32\944\997\1009
> >
> .\concurrent\standard\src\test\java\LinkedListTest.java:51\140\172\186\227\=
> > 241\367\379
> >
> .\concurrent\standard\src\test\java\PriorityBlockingQueueTest.java:67\78\90=
> >
> \104\181\192\215\238\250\263\278\308\412\438\507\534\576\590\724\735\847\85=
> > 9\908\920
> >
> .\concurrent\standard\src\test\java\PriorityQueueTest.java:63\74\86\100\173=
> > \184\207\230\242\257\316\330
> >
> .\concurrent\standard\src\test\java\ReentrantLockTest.java:32\48\106\215\29=
> > 8\452\469\567\581\596\613\628\645\660\677\692\912\943\975
> >
> .\concurrent\standard\src\test\java\ReentrantReadWriteLockTest.java:32\48\1=
> >
> 50\166\190\213\237\490\520\544\561\696\727\759\887\995\1009\1024\1040\1055\=
> > 1072\1087\1104\1119
> >
> .\concurrent\standard\src\test\java\ScheduledExecutorTest.java:217\218\235\=
> >
> 236\251\252\267\268\283\284\409\425\439\459\744\759\777\794\813\828\861\881=
> > \902\917\934\949\967\985\1004\1019\1036\1069\1089\1110
> >
> .\concurrent\standard\src\test\java\SemaphoreTest.java:44\60\273\296\762\78=
> > 5\808\832
> >
> .\concurrent\standard\src\test\java\SynchronousQueueTest.java:54\65\85\98\1=
> >
> 10\123\137\149\166\227\252\276\337\362\417\444\468\495\527\538\628\643\656\=
> > 770\782\834\846
> >
> .\concurrent\standard\src\test\java\ThreadPoolExecutorTest.java:173\210\295=
> >
> \315\428\439\450\461\472\483\495\506\517\528\539\550\562\574\585\596\607\61=
> >
> 8\629\641\653\664\675\686\697\708\720\732\772\799\822\929\931\948\950\967\9=
> >
> 69\988\990\1017\1097\1112\1130\1147\1166\1181\1214\1234\1255\1272\1289\1304=
> > \1322\1340\1359\1374\1391\1424\1444\1465
> > .\concurrent\standard\src\test\java\ThreadTest.java:59
> > .\concurrent\standard\src\test\java\TimeUnitTest.java:204\263\270\296
> >
> .\crypto\src\test\api\java\org\apache\harmony\crypto\tests\javax\crypto\Enc=
> > ryptedPrivateKeyInfoTest.java
> :317\381\523\587\654\695\727\763\795\823\858\8=
> >
> 89\918\953\990\1024\1044\1050\1089\1090\1126\1127\1147\1153\1190\1191\1223\=
> >
> 1224\1244\1266\1270\1318\1361\1365\1411\1459\1502\1505\1547\1558\1619\1622
> >
> .\crypto\src\test\api\java\org\apache\harmony\crypto\tests\javax\crypto\Key=
> > AgreementTest.java:122\166\208\251\439\445\451
> >
> .\crypto\src\test\api\java\org\apache\harmony\crypto\tests\javax\crypto\Key=
> > GeneratorTest.java:143\157\201\242\282\354\359
> >
> .\crypto\src\test\api\java\org\apache\harmony\crypto\tests\javax\crypto\Mac=
> > Test.java:116\123\172\194\201\258\265\549\692
> >
> .\crypto\src\test\api\java\org\apache\harmony\crypto\tests\javax\crypto\Sec=
> > retKeyFactoryTest.java:154\199\207\231\237\246\288\295\316
> >
> .\crypto\src\test\api\java\org\apache\harmony\crypto\tests\javax\crypto\spe=
> > c\DESedeKeySpecTest.java:48\73\149
> >
> .\crypto\src\test\api\java\org\apache\harmony\crypto\tests\javax\crypto\spe=
> > c\DESKeySpecTest.java:111\134
> >
> .\crypto\src\test\api\java\org\apache\harmony\crypto\tests\javax\crypto\spe=
> > c\IvParameterSpecTest.java:49\91\103
> >
> .\crypto\src\test\api\java\org\apache\harmony\crypto\tests\javax\crypto\spe=
> > c\OAEPParameterSpecTest.java:56\63\70
> >
> .\crypto\src\test\api\java\org\apache\harmony\crypto\tests\javax\crypto\spe=
> > c\PBEKeySpecTest.java:95\102\109\116\123\173\180\187\213
> >
> .\crypto\src\test\api\java\org\apache\harmony\crypto\tests\javax\crypto\spe=
> > c\PBEParameterSpecTest.java:50
> >
> .\crypto\src\test\api\java\org\apache\harmony\crypto\tests\javax\crypto\spe=
> > c\RC2ParameterSpecTest.java:52\59\84\91
> >
> .\crypto\src\test\api\java\org\apache\harmony\crypto\tests\javax\crypto\spe=
> > c\RC5ParameterSpecTest.java:53\60\67\95\102\109\117
> >
> .\crypto\src\test\api\java\org\apache\harmony\crypto\tests\javax\crypto\spe=
> > c\SecretKeySpecTest.java:51\58\65\91\98\105\112\128
> >
> .\crypto\src\test\api\java.injected\javax\crypto\CipherOutputStreamTest.jav=
> > a:124
> >
> .\crypto\src\test\api\java.injected\javax\crypto\CipherSpiTest.java:90\103\=
> > 116\157\208
> > .\crypto\src\test\api\java.injected\javax\crypto\MacSpiTest.java:111
> >
> .\crypto\src\test\api\java.injected\javax\crypto\SealedObjectTest.java:79\9=
> > 2\164\197\205
> >
> .\crypto\src\test\api\java.injected\javax\crypto\spec\PSourceTest.java:47\90
> >
> .\crypto\src\test\impl\java\org\apache\harmony\crypto\tests\javax\crypto\En=
> > cryptedPrivateKeyInfo=5FImplTest.java:64\89\118
> >
> .\crypto\src\test\impl\java\org\apache\harmony\crypto\tests\javax\crypto\Ex=
> > emptionMechanism=5FImplTest.java:157\164\195\203\212\223\256\263\272
> >
> .\crypto\src\test\impl\java\org\apache\harmony\crypto\tests\javax\crypto\Ke=
> > yAgreement=5FImplTest.java:134\141\171\179\188\194\203\237\244\253
> >
> .\crypto\src\test\impl\java\org\apache\harmony\crypto\tests\javax\crypto\Ke=
> > yGenerator=5FImplTest.java:138\145\175\183\192\198\207\239\246\255
> >
> .\crypto\src\test\impl\java\org\apache\harmony\crypto\tests\javax\crypto\Ma=
> > c=5FImplTest.java:113\114\137\144\174\182\191\202\235\242\251
> >
> .\crypto\src\test\impl\java\org\apache\harmony\crypto\tests\javax\crypto\Se=
> > cretKeyFactory=5FImplTest.java:104\111\141\149\158\164\173\205\212\221
> >
> .\jndi\src\test\java\org\apache\harmony\jndi\provider\dns\DNSNameParserTest=
> > .java:100
> >
> .\jndi\src\test\java\org\apache\harmony\jndi\tests\javax\naming\CompositeNa=
> > meTest.java:595
> >
> .\jndi\src\test\java\org\apache\harmony\jndi\tests\javax\naming\CompoundNam=
> > eTest.java:1649
> >
> .\jndi\src\test\java\org\apache\harmony\jndi\tests\javax\naming\directory\B=
> > asicAttributeTest.java:523\547
> >
> .\jndi\src\test\java\org\apache\harmony\jndi\tests\javax\naming\directory\S=
> > earchResultTest.java:96
> >
> .\jndi\src\test\java\org\apache\harmony\jndi\tests\javax\naming\ldap\Unsoli=
> > citedNotificationEventTest.java:69
> >
> .\jndi\src\test\java\org\apache\harmony\jndi\tests\javax\naming\spi\Directo=
> > ryManagerJCKTest.java:97\103
> >
> .\jndi\src\test\java\org\apache\harmony\jndi\tests\javax\naming\spi\Directo=
> > ryManagerTest.java
> :73\919\933\949\965\1015\1031\1046\1061\1130\1147\1279\13=
> > 37\1356\1367
> >
> .\jndi\src\test\java\org\apache\harmony\jndi\tests\javax\naming\spi\NamingM=
> > anagerTest.java:206\1069\1089\1148\1228\1250\1344
> >
> .\jndi\src\test\java\org\apache\harmony\jndi\tests\javax\naming\spi\Resolve=
> > ResultTest.java:83
> >
> .\logging\src\test\java\org\apache\harmony\logging\tests\java\util\logging\=
> > FileHandlerTest.java:230\340\344
> >
> .\logging\src\test\java\org\apache\harmony\logging\tests\java\util\logging\=
> > LevelTest.java:181
> >
> .\logging\src\test\java\org\apache\harmony\logging\tests\java\util\logging\=
> > LogManagerTest.java:974
> >
> .\logging\src\test\java\org\apache\harmony\logging\tests\java\util\logging\=
> > SocketHandlerTest.java:832
> >
> .\luni\src\test\java\org\apache\harmony\luni\tests\java\io\FileInputStreamT=
> > est.java:36
> >
> .\luni\src\test\java\org\apache\harmony\luni\tests\java\io\FileOutputStream=
> > Test.java:35
> >
> .\luni\src\test\java\org\apache\harmony\luni\tests\java\io\InputStreamReade=
> > rTest.java:66
> >
> .\luni\src\test\java\org\apache\harmony\luni\tests\java\io\ObjectInputStrea=
> > mTest.java:109
> >
> .\luni\src\test\java\org\apache\harmony\luni\tests\java\io\OutputStreamWrit=
> > erTest.java:48
> >
> .\luni\src\test\java\org\apache\harmony\luni\tests\java\lang\ByteTest.java:=
> > 448\457\466\475
> >
> .\luni\src\test\java\org\apache\harmony\luni\tests\java\lang\ClassLoaderTes=
> > t.java:103
> >
> .\luni\src\test\java\org\apache\harmony\luni\tests\java\lang\ClassTest.java=
> > :178\353\431
> >
> .\luni\src\test\java\org\apache\harmony\luni\tests\java\lang\IntegerTest.ja=
> >
> va:96\106\115\124\133\142\275\284\293\327\338\347\356\365\374\517\526\564\5=
> > 75\584\593\603
> >
> .\luni\src\test\java\org\apache\harmony\luni\tests\java\lang\LongTest.java:=
> >
> 98\107\116\125\134\143\213\222\259\269\278\287\296\305\427\437\447\480\490\=
> > 500
> >
> .\luni\src\test\java\org\apache\harmony\luni\tests\java\lang\ShortTest.java=
> > :84\94\103\112\121\147\156\199\211\222\231\240\249\325\335
> >
> .\luni\src\test\java\org\apache\harmony\luni\tests\java\lang\String2Test.ja=
> > va:373\389\401\413
> >
> .\luni\src\test\java\org\apache\harmony\luni\tests\java\lang\StringBuffer2T=
> > est.java:237\267\335\357
> >
> .\luni\src\test\java\org\apache\harmony\luni\tests\java\lang\SystemTest.jav=
> > a:104
> >
> .\luni\src\test\java\org\apache\harmony\luni\tests\java\lang\ThreadGroupTes=
> > t.java:36\103\142\154\1105\1179\1278\1443
> >
> .\luni\src\test\java\org\apache\harmony\luni\tests\java\lang\ThreadTest.jav=
> >
> a:82\89\206\225\269\289\348\358\373\427\446\474\540\974\980\987\1028\1035\1=
> > 043\1065\1129\1147\1251\1256\1261\1269
> > .\luni\src\test\java\org\apache\harmony\luni\tests\util\NYITest.java:31
> >
> .\luni\src\test\java\org\apache\harmony\tests\internal\net\www\protocol\htt=
> > p\HttpURLConnectionTest.java:67\108
> >
> .\luni\src\test\java\org\apache\harmony\tests\java\lang\EnumTest.java:57\12=
> > 5\127\149\157\165
> >
> .\luni\src\test\java\tests\api\java\io\BufferedInputStreamTest.java:128\400
> > .\luni\src\test\java\tests\api\java\io\BufferedReaderTest.java:463
> > .\luni\src\test\java\tests\api\java\io\BufferedWriterTest.java:60\274
> > .\luni\src\test\java\tests\api\java\io\ByteArrayInputStreamTest.java:215
> >
> .\luni\src\test\java\tests\api\java\io\ByteArrayOutputStreamTest.java:43\85
> >
> .\luni\src\test\java\tests\api\java\io\DataInputStreamTest.java:592\623\627
> > .\luni\src\test\java\tests\api\java\io\DataOutputStreamTest.java:337
> >
> .\luni\src\test\java\tests\api\java\io\FileDescriptorTest.java:103\107\111\=
> > 115
> > .\luni\src\test\java\tests\api\java\io\FileInputStreamTest.java:95
> > .\luni\src\test\java\tests\api\java\io\FileOutputStreamTest.java:252
> > .\luni\src\test\java\tests\api\java\io\FileReaderTest.java:120\126
> > .\luni\src\test\java\tests\api\java\io\FileTest.java:253
> > .\luni\src\test\java\tests\api\java\io\FileWriterTest.java:168\172
> > .\luni\src\test\java\tests\api\java\io\FilterOutputStreamTest.java:162
> >
> .\luni\src\test\java\tests\api\java\io\InputStreamReaderTest.java:125\429\4=
> > 69\479\488\501
> >
> .\luni\src\test\java\tests\api\java\io\InvalidClassExceptionTest.java:30\50
> >
> .\luni\src\test\java\tests\api\java\io\LineNumberInputStreamTest.java:148
> > .\luni\src\test\java\tests\api\java\io\NotActiveExceptionTest.java:33\51
> >
> .\luni\src\test\java\tests\api\java\io\NotSerializableExceptionTest.java:35=
> > \53
> >
> .\luni\src\test\java\tests\api\java\io\ObjectOutputStreamTest.java:64\996\1=
> > 082
> >
> .\luni\src\test\java\tests\api\java\io\OutputStreamWriterTest.java:81\476\4=
> > 80\530\534\615
> >
> .\luni\src\test\java\tests\api\java\io\PipedInputStreamTest.java:260\273\31=
> > 7\341
> > .\luni\src\test\java\tests\api\java\io\PipedOutputStreamTest.java:53\137
> > .\luni\src\test\java\tests\api\java\io\PipedReaderTest.java:45
> >
> .\luni\src\test\java\tests\api\java\io\PipedWriterTest.java:266\279\329\343
> > .\luni\src\test\java\tests\api\java\io\PrintStreamTest.java:630
> > .\luni\src\test\java\tests\api\java\io\PrintWriterTest.java:741
> >
> .\luni\src\test\java\tests\api\java\io\PushbackInputStreamTest.java:37\56
> >
> .\luni\src\test\java\tests\api\java\io\PushbackReaderTest.java:42\77\211\396
> >
> .\luni\src\test\java\tests\api\java\io\SerializationStressTest.java:271\309=
> > \312\1013
> >
> .\luni\src\test\java\tests\api\java\io\StreamCorruptedExceptionTest.java:36=
> > \56
> > .\luni\src\test\java\tests\api\java\io\StreamTokenizerTest.java:448
> > .\luni\src\test\java\tests\api\java\io\StringReaderTest.java:187
> > .\luni\src\test\java\tests\api\java\lang\ref\ReferenceQueueTest.java:39
> >
> .\luni\src\test\java\tests\api\java\lang\reflect\ArrayTest.java:41\51\77\87=
> >
> \113\123\149\159\185\196\222\232\258\268\290\314\324\350\360\413\423\458\46=
> > 8\493\503\528\538\563\573\598\608\633\643\668\678\703\713
> >
> .\luni\src\test\java\tests\api\java\lang\reflect\FieldTest.java:135\150\498=
> >
> \529\560\615\647\678\709\778\826\834\871\880\912\921\953\962\994\1003\1035\=
> > 1043\1075\1083\1115\1123\1155\1163
> >
> .\luni\src\test\java\tests\api\java\lang\reflect\InvocationTargetExceptionT=
> > est.java:119\122\123\141\146\162
> >
> .\luni\src\test\java\tests\api\java\lang\reflect\MethodTest.java:455\470\48=
> > 5\500
> >
> .\luni\src\test\java\tests\api\java\lang\reflect\ProxyTest.java:122\129\138=
> > \139\148
> > .\luni\src\test\java\tests\api\java\net\AuthenticatorTest.java:50
> >
> .\luni\src\test\java\tests\api\java\net\DatagramPacketTest.java:315\326\363=
> > \374\433\443
> >
> .\luni\src\test\java\tests\api\java\net\DatagramSocketTest.java:783\793\800=
> > \821\831\838\1162\1174\1788\1933
> > .\luni\src\test\java\tests\api\java\net\Inet6AddressTest.java:814\822
> > .\luni\src\test\java\tests\api\java\net\InetAddressTest.java:155
> > .\luni\src\test\java\tests\api\java\net\InetSocketAddressTest.java:70
> >
> .\luni\src\test\java\tests\api\java\net\MalformedURLExceptionTest.java:32
> >
> .\luni\src\test\java\tests\api\java\net\MulticastSocketTest.java:388\402\56=
> > 8\603\649\663\679\689\702\738\811\1081\1121
> > .\luni\src\test\java\tests\api\java\net\NetworkInterfaceTest.java:336
> > .\luni\src\test\java\tests\api\java\net\ProxyTest.java:199\216
> >
> .\luni\src\test\java\tests\api\java\net\ServerSocketTest.java:72\147\210\22=
> > 0\227\440\467\531\866\937\963
> > .\luni\src\test\java\tests\api\java\net\SocketPermissionTest.java:157
> >
> .\luni\src\test\java\tests\api\java\net\SocketTest.java:62\69\109\114\149\1=
> >
> 81\226\352\362\366\373\492\504\1087\1151\1187\1318\1397\1420\1613\2310\2464=
> > \2469\2474
> >
> .\luni\src\test\java\tests\api\java\net\UnknownServiceExceptionTest.java:30
> > .\luni\src\test\java\tests\api\java\net\URITest.java:377\1548\1562\1877
> > .\luni\src\test\java\tests\api\java\net\URLClassLoaderTest.java:383
> >
> .\luni\src\test\java\tests\api\java\net\URLConnectionTest.java:652\974\984\=
> > 1002\1012
> >
> .\luni\src\test\java\tests\api\java\net\URLTest.java:639\833\901\923\953\11=
> > 25\1153
> > .\luni\src\test\java\tests\api\java\util\BitSetTest.java:58
> >
> .\luni\src\test\java\tests\api\java\util\CollectionsTest.java:645\1237\1326=
> > \1374\1439\1493\1550\1589\1648\1711\1722\1732\1743\1791\1838\1870
> > .\luni\src\test\java\tests\api\java\util\DateTest.java:109
> > .\luni\src\test\java\tests\api\java\util\FormatterTest.java:1147
> > .\luni\src\test\java\tests\api\java\util\HashtableTest.java:464\465
> > .\luni\src\test\java\tests\api\java\util\LinkedListTest.java:359
> >
> .\luni\src\test\java\tests\api\java\util\PropertiesTest.java:147\154\161\16=
> > 8\177\187
> > .\luni\src\test\java\tests\api\java\util\ResourceBundleTest.java:111
> > .\luni\src\test\java\tests\api\java\util\ScannerTest.java:356\5474\5479
> >
> .\luni\src\test\java\tests\api\java\util\TimerTaskTest.java:48\99\104\116\1=
> > 29\146\160\170\182\201\228\249\274\285\297
> >
> .\luni\src\test\java\tests\api\java\util\TimerTest.java:65\103\129\155\179\=
> >
> 217\226\239\250\271\279\410\426\452\533\548\570\681\696\719\836\852\879\948=
> > \971\993\1078\1092\1108\1131\1154
> > .\luni\src\test\java\tests\api\java\util\TreeSetTest.java:172\245
> > .\luni\src\test\java\tests\api\java\util\VectorTest.java:403
> >
> .\nio\src\test\java\common\org\apache\harmony\nio\tests\java\nio\ByteBuffer=
> > Test.java:76\114\439\1257\1326\1611
> >
> .\nio\src\test\java\common\org\apache\harmony\nio\tests\java\nio\channels\D=
> > atagramChannelTest.java:86\93\100\107\435\1962\2060\2218\2275
> >
> .\nio\src\test\java\common\org\apache\harmony\nio\tests\java\nio\channels\F=
> > ileChannelLockingTest.java:126
> >
> .\nio\src\test\java\common\org\apache\harmony\nio\tests\java\nio\channels\F=
> > ileChannelTest.java
> :131\138\145\152\160\177\184\191\198\205\213\220\1330\15=
> > 76\1584
> >
> .\nio\src\test\java\common\org\apache\harmony\nio\tests\java\nio\channels\S=
> > electorTest.java:67\72\266\298\313\358\392\398\452\459\465\470\505\521
> >
> .\nio\src\test\java\common\org\apache\harmony\nio\tests\java\nio\channels\S=
> > erverSocketChannelTest.java:67\75
> >
> .\nio\src\test\java\common\org\apache\harmony\nio\tests\java\nio\channels\S=
> > ocketChannelTest.java:82\89\96\103\725\747\821\993\1150\1367\1613\1672
> >
> .\nio=5Fchar\src\test\java\tests\api\java\nio\charset\ASCCharsetEncoderTest=
> > .java:53
> >
> .\nio=5Fchar\src\test\java\tests\api\java\nio\charset\CharsetTest.java:116\=
> > 233\324
> >
> .\nio=5Fchar\src\test\java\tests\api\java\nio\charset\ISOCharsetEncoderTest=
> > .java:55
> >
> .\prefs\src\test\java\org\apache\harmony\prefs\tests\java\util\prefs\Abstra=
> > ctPreferencesTest.java:107\705\817
> >
> .\prefs\src\test\java\org\apache\harmony\prefs\tests\java\util\prefs\Prefer=
> > encesTest.java:191\267\271\275\276\280\281\285\297\303\316\324
> >
> .\regex\src\test\java\org\apache\harmony\tests\java\util\regex\MatcherTest.=
> > java:421
> >
> .\regex\src\test\java\org\apache\harmony\tests\java\util\regex\Pattern2Test=
> > .java:1181
> >
> .\regex\src\test\java\org\apache\harmony\tests\java\util\regex\PatternError=
> > Test.java:64
> >
> .\security\src\test\api\java\org\apache\harmony\security\tests\java\securit=
> > y\AlgorithmParameterGenerator1Test.java:102\177\200\208\271\279
> >
> .\security\src\test\api\java\org\apache\harmony\security\tests\java\securit=
> >
> y\AlgorithmParameterGenerator2Test.java:129\136\166\174\183\194\226\233\242
> >
> .\security\src\test\api\java\org\apache\harmony\security\tests\java\securit=
> >
> y\cert\CertificateFactory1Test.java:140\147\193\202\264\273\371\378\383\391=
> > \397\398\405\406\411\420\461\469\475\483\511\525\526\532
> >
> .\security\src\test\api\java\org\apache\harmony\security\tests\java\securit=
> >
> y\cert\CertificateFactory2Test.java:196\203\230\238\247\253\264\294\301\310
> >
> .\security\src\test\api\java\org\apache\harmony\security\tests\java\securit=
> > y\cert\CertificateFactory4Test.java:76\94\115\137
> >
> .\security\src\test\api\java\org\apache\harmony\security\tests\java\securit=
> > y\cert\CertPathBuilder1Test.java:136\225\290
> >
> .\security\src\test\api\java\org\apache\harmony\security\tests\java\securit=
> > y\cert\CertPathBuilder2Test.java:127\134\162\170\179\185\196\226\233\242
> >
> .\security\src\test\api\java\org\apache\harmony\security\tests\java\securit=
> > y\cert\CertPathValidator1Test.java:141\230\297
> >
> .\security\src\test\api\java\org\apache\harmony\security\tests\java\securit=
> >
> y\cert\CertPathValidator2Test.java:103\107\124\131\159\167\176\182\193\224\=
> > 231\240
> >
> .\security\src\test\api\java\org\apache\harmony\security\tests\java\securit=
> > y\cert\CertPathValidatorExceptionTest.java:288\356
> >
> .\security\src\test\api\java\org\apache\harmony\security\tests\java\securit=
> > y\cert\CertStore1Test.java:204\302\360
> >
> .\security\src\test\api\java\org\apache\harmony\security\tests\java\securit=
> > y\cert\PolicyQualifierInfoTest.java:55
> >
> .\security\src\test\api\java\org\apache\harmony\security\tests\java\securit=
> > y\cert\serialization\CertificateTest.java:101
> >
> .\security\src\test\api\java\org\apache\harmony\security\tests\java\securit=
> > y\cert\serialization\CertPathTest.java:117
> >
> .\security\src\test\api\java\org\apache\harmony\security\tests\java\securit=
> > y\cert\X509CRLTest.java:250
> >
> .\security\src\test\api\java\org\apache\harmony\security\tests\java\securit=
> > y\CodeSourceTest.java:376
> >
> .\security\src\test\api\java\org\apache\harmony\security\tests\java\securit=
> >
> y\DigestInputStreamTest.java:95\136\171\206\236\314\353\403\436\475\495\517=
> > \556\576
> >
> .\security\src\test\api\java\org\apache\harmony\security\tests\java\securit=
> >
> y\DigestOutputStreamTest.java:91\132\170\198\275\310\351\392\412\434\473\493
> >
> .\security\src\test\api\java\org\apache\harmony\security\tests\java\securit=
> > y\IdentityScope2Test.java:46
> >
> .\security\src\test\api\java\org\apache\harmony\security\tests\java\securit=
> > y\KeyFactory2Test.java:77
> >
> .\security\src\test\api\java\org\apache\harmony\security\tests\java\securit=
> >
> y\KeyPairGenerator1Test.java:106\113\181\203\212\274\282\362\369\402\408\47=
> > 5\481\496
> >
> .\security\src\test\api\java\org\apache\harmony\security\tests\java\securit=
> > y\KeyPairGenerator2Test.java:121\192\199\231\238\248\259\290\297\307
> >
> .\security\src\test\api\java\org\apache\harmony\security\tests\java\securit=
> > y\KeyStoreSpiTest.java:73\78\88
> >
> .\security\src\test\api\java\org\apache\harmony\security\tests\java\securit=
> > y\KeyStoreTest.java:108\115\213
> >
> .\security\src\test\api\java\org\apache\harmony\security\tests\java\securit=
> > y\MessageDigest2Test.java:79\294\296\298\309\311
> >
> .\security\src\test\api\java\org\apache\harmony\security\tests\java\securit=
> > y\Policy2Test.java:63
> >
> .\security\src\test\api\java\org\apache\harmony\security\tests\java\securit=
> > y\ProviderTest.java:180\210
> >
> .\security\src\test\api\java\org\apache\harmony\security\tests\java\securit=
> > y\Security2Test.java:214
> >
> .\security\src\test\api\java\org\apache\harmony\security\tests\java\securit=
> > y\SecurityPermissionTest.java:80
> >
> .\security\src\test\api\java\org\apache\harmony\security\tests\java\securit=
> > y\SecurityTest.java:53
> >
> .\security\src\test\api\java\org\apache\harmony\security\tests\java\securit=
> > y\serialization\CodeSourceTest.java:80\104\127
> >
> .\security\src\test\api\java\org\apache\harmony\security\tests\java\securit=
> > y\serialization\GuardedObjectTest.java:57
> >
> .\security\src\test\api\java\org\apache\harmony\security\tests\java\securit=
> > y\Signature2Test.java:91\127\129\144\146
> >
> .\security\src\test\api\java\org\apache\harmony\security\tests\java\securit=
> > y\spec\ECFieldFpTest.java:77\91\105
> >
> .\security\src\test\api\java\org\apache\harmony\security\tests\java\securit=
> > y\TimestampTest.java:60
> >
> .\security\src\test\api\java\org\apache\harmony\security\tests\javax\securi=
> > ty\cert\X509CertificateTest.java:84\88\122\148
> >
> .\security\src\test\api\java\tests\api\java\security\AccessControlContextTe=
> > st.java:56\63
> >
> .\security\src\test\api\java.injected\java\security\BasicPermissionTest.jav=
> > a:81
> >
> .\security\src\test\impl\java\org\apache\harmony\security\tests\fortress\Po=
> > licyUtilsTest.java:71\126
> >
> .\security\src\test\impl\java\org\apache\harmony\security\tests\java\securi=
> > ty\cert\CertificateFactory=5FImplTest.java:132\135
> >
> .\security\src\test\impl\java\org\apache\harmony\security\tests\java\securi=
> > ty\cert\CertStore=5FImplTest.java
> :113\120\166\174\183\189\200\247\254\263
> >
> .\security\src\test\impl\java\org\apache\harmony\security\tests\java\securi=
> > ty\cert\TrustAnchor=5FImplTest.java:348
> >
> .\security\src\test\impl\java\org\apache\harmony\security\tests\java\securi=
> > ty\KeyStore=5FImpl1Test.java
> :103\109\127\145\153\185\203\211\530\531\594\60=
> > 7\756\763
> >
> .\security\src\test\impl\java\org\apache\harmony\security\tests\java\securi=
> > ty\KeyStore=5FImpl2Test.java:146\309\316\346\353\362\372\404\411\420
> >
> .\security\src\test\impl\java\org\apache\harmony\security\tests\java\securi=
> > ty\KeyStore=5FImpl3Test.java:141
> >
> .\security\src\test\impl\java\org\apache\harmony\security\tests\java\securi=
> > ty\KSBuilder=5FImplTest.java:216\222\390\403\459\469
> >
> .\security\src\test\impl\java\org\apache\harmony\security\tests\java\securi=
> > ty\SecureRandom=5FImplTest.java:83\122
> >
> .\security\src\test\impl\java\org\apache\harmony\security\tests\provider\ce=
> > rt\X509CertFactoryPerfTest.java:127
> >
> .\security\src\test\impl\java\org\apache\harmony\security\tests\provider\ce=
> > rt\X509CertImplTest.java:129
> >
> .\security\src\test\impl\java\org\apache\harmony\security\tests\provider\ce=
> > rt\X509CRLImplTest.java:369\525
> >
> .\security\src\test\impl\java\org\apache\harmony\security\tests\x509\Certif=
> > icateTest.java:180
> >
> .\security\src\test\impl\java\org\apache\harmony\security\tests\x509\Genera=
> > lNameTest.java:68
> >
> .\security\src\test\impl\java.injected\java\security\Signature=5FImpl2Test.=
> > java:193
> >
> .\security\src\test\impl\java.injected\java\security\UnresolvedPermissionCo=
> > llection=5FImplTest.java:63
> >
> .\sql\src\test\java\org\apache\harmony\sql\tests\java\sql\DateTest.java:381
> >
> .\sql\src\test\java\org\apache\harmony\sql\tests\java\sql\DriverManagerTest=
> > .java:264\315
> >
> .\swing\src\test\api\java\common\javax\swing\DefaultDesktopManagerTest.java=
> > :276\299
> > .\swing\src\test\api\java\common\javax\swing\GrayFilterTest.java:79
> >
> .\swing\src\test\api\java\common\javax\swing\JComponent=5FAddRemoveNotifyTe=
> > st.java:138
> > .\swing\src\test\api\java\common\javax\swing\JEditorPaneRTest.java:92
> >
> .\swing\src\test\api\java\common\javax\swing\JEditorPaneTest.java:311\624
> >
> .\swing\src\test\api\java\common\javax\swing\JInternalFrameTest.java:563\84=
> > 6\1565\1569
> >
> .\swing\src\test\api\java\common\javax\swing\JInternalFrame=5FMultithreaded=
> > Test.java:122
> >
> .\swing\src\test\api\java\common\javax\swing\JTabbedPaneTest.java:521\529\5=
> > 31\546\554\556
> > .\swing\src\test\api\java\common\javax\swing\JTextAreaTest.java:618\693
> > .\swing\src\test\api\java\common\javax\swing\JTextPaneRTest.java:76
> >
> .\swing\src\test\api\java\common\javax\swing\plaf\basic\BasicDesktopIconUIT=
> > est.java:120
> >
> .\swing\src\test\api\java\common\javax\swing\plaf\basic\BasicTextUITest.jav=
> > a:186\206\259\285\341\346
> > .\swing\src\test\api\java\common\javax\swing\RepaintManagerTest.java:631
> >
> .\swing\src\test\api\java\common\javax\swing\SwingUtilitiesTest.java:1586\1=
> > 587\1588
> >
> .\swing\src\test\api\java\common\javax\swing\text\AbstractDocument=5FAbstra=
> > ctElementTest.java:183
> >
> .\swing\src\test\api\java\common\javax\swing\text\AbstractDocument=5FAbstra=
> > ctElement=5FMASNoLockTest.java:70\79\88\97\106\115\124
> >
> .\swing\src\test\api\java\common\javax\swing\text\AbstractDocument=5FBranch=
> > ElementTest.java:153
> >
> .\swing\src\test\api\java\common\javax\swing\text\AbstractDocument=5FConten=
> > tTest.java:105
> >
> .\swing\src\test\api\java\common\javax\swing\text\AbstractDocument=5FFilter=
> > Test.java:195\231\238\273\280\287\294
> >
> .\swing\src\test\api\java\common\javax\swing\text\BoxView=5FWithChildrenTes=
> > t.java:403
> >
> .\swing\src\test\api\java\common\javax\swing\text\CompositeView=5FNextNSVis=
> > PosTest.java:143
> >
> .\swing\src\test\api\java\common\javax\swing\text\DefaultCaretTest.java:585
> >
> .\swing\src\test\api\java\common\javax\swing\text\DefaultEditorKitRTest.jav=
> > a:163
> >
> .\swing\src\test\api\java\common\javax\swing\text\FlowView=5FFlowStrategyTe=
> > st.java:330\331\345\346
> >
> .\swing\src\test\api\java\common\javax\swing\text\GapContent=5FGapVectorTes=
> > t.java:148
> >
> .\swing\src\test\api\java\common\javax\swing\text\JTextComponentTest.java:2=
> > 88\463\472\922\923
> >
> .\swing\src\test\api\java\common\javax\swing\text\JTextComponent=5FAccessib=
> > leJTextComponentTest.java:265\274\285\297\312\320\509\510
> >
> .\swing\src\test\api\java\common\javax\swing\text\JTextComponent=5FAccessib=
> > leJTextComponent=5FvariousTextTest.java:69\74
> >
> .\swing\src\test\api\java\common\javax\swing\text\JTextComponent=5FIMLocati=
> > onTest.java:159
> >
> .\swing\src\test\api\java\common\javax\swing\text\JTextComponent=5FMultithr=
> > eadedTest.java:160
> >
> .\swing\src\test\api\java\common\javax\swing\text\PasswordViewTest.java:161
> >
> .\swing\src\test\api\java\common\javax\swing\text\StringContentTest.java:60
> >
> .\swing\src\test\api\java\common\javax\swing\text\UtilitiesTest.java:655\72=
> > 1\737\773\782\863\936\951\989\1004
> > .\swing\src\test\api\java\common\javax\swing\text\ViewTest.java:481
> > .\swing\src\test\api\java\common\javax\swing\text\View=
> 5FChangesTest.java:1=
> > 043
> > .\swing\src\test\api\java\common\javax\swing\Timer=
> 5FMultithreadedTest.java=
> > :57
> > .\swing\src\test\api\java\common\javax\swing\UIDefaultsTest.java:215
> >
> .\swing\src\test\api\java.injected\javax\swing\text\html\parser\AttributeLi=
> > stTest.java:131
> >
> .\swing\src\test\api\java.injected\javax\swing\text\html\parser\ContentMode=
> > lTest.java
> :141\148\155\162\169\176\183\189\195\201\212\217\222\228\235\241\=
> > 247\254
> >
> .\swing\src\test\api\java.injected\javax\swing\text\html\parser\DTDTest.jav=
> > a:114\119\124
> >
> .\text\src\test\java\org\apache\harmony\text\tests\java\text\CollatorTest.j=
> > ava:113
> >
> .\text\src\test\java\org\apache\harmony\text\tests\java\text\DataFormatFiel=
> > dTest.java:217
> >
> .\text\src\test\java\org\apache\harmony\text\tests\java\text\DecimalFormatS=
> > ymbolsTest.java:421
> >
> .\text\src\test\java\org\apache\harmony\text\tests\java\text\DecimalFormatT=
> > est.java:1515
> >
> .\text\src\test\java\org\apache\harmony\text\tests\java\text\MessageFormatT=
> > est.java:147
> >
> .\text\src\test\java\org\apache\harmony\text\tests\java\text\RuleBasedColla=
> > torTest.java:263\275
> >
> .\x-net\src\test\api\java\org\apache\harmony\xnet\tests\javax\net\ssl\SSLEn=
> > gineTest.java:64
> >
> .\x-net\src\test\api\java\org\apache\harmony\xnet\tests\javax\net\ssl\SSLSo=
> > cketTest.java:44\89\108
> >
> .\x-net\src\test\impl\java.injected\javax\net\ServerSocketFactoryTest.java:=
> > 64\69\74
> >
> .\x-net\src\test\impl\java.injected\javax\net\SocketFactoryTest.java:64\69\=
> > 74\79
> >
> .\x-net\src\test\impl\java.injected\javax\net\ssl\SSLServerSocketFactoryTes=
> > t.java:50
> >
> .\x-net\src\test\impl\java.injected\javax\net\ssl\SSLSocketFactoryTest.java=
> > :50=
> >
> >
> > --------------090601000506020908060004
> > Content-Type: text/plain; charset=us-ascii
> >
> > ---------------------------------------------------------------------
> > Terms of use : http://incubator.apache.org/harmony/mailing.html
> > To unsubscribe, e-mail: harmony-dev-unsubscribe@incubator.apache.org
> > For additional commands, e-mail: harmony-dev-help@incubator.apache.org
> > --------------090601000506020908060004--
> >
>
>
>


-- 
Robert Hu
China Software Development Lab, IBM

Mime
  • Unnamed multipart/alternative (inline, None, 0 bytes)
View raw message