1 /* NoClassDeffTest.java 2 Copyright (C) 2013 Red Hat, Inc. 3 4 This file is part of IcedTea. 5 6 IcedTea is free software; you can redistribute it and/or 7 modify it under the terms of the GNU General Public License as published by 8 the Free Software Foundation, version 2. 9 10 IcedTea is distributed in the hope that it will be useful, 11 but WITHOUT ANY WARRANTY; without even the implied warranty of 12 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU 13 General Public License for more details. 14 15 You should have received a copy of the GNU General Public License 16 along with IcedTea; see the file COPYING. If not, write to 17 the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 18 02110-1301 USA. 19 20 Linking this library statically or dynamically with other modules is 21 making a combined work based on this library. Thus, the terms and 22 conditions of the GNU General Public License cover the whole 23 combination. 24 25 As a special exception, the copyright holders of this library give you 26 permission to link this library with independent modules to produce an 27 executable, regardless of the license terms of these independent 28 modules, and to copy and distribute the resulting executable under 29 terms of your choice, provided that you also meet, for each linked 30 independent module, the terms and conditions of the license of that 31 module. An independent module is a module which is not derived from 32 or based on this library. If you modify this library, you may extend 33 this exception to your version of the library, but you are not 34 obligated to do so. If you do not wish to do so, delete this 35 exception statement from your version. 36 */ 37 38 import java.io.File; 39 import java.io.IOException; 40 import java.util.Arrays; 41 import java.util.List; 42 import net.sourceforge.jnlp.OptionsDefinitions; 43 import net.sourceforge.jnlp.ProcessResult; 44 import net.sourceforge.jnlp.ServerAccess; 45 import net.sourceforge.jnlp.annotations.Bug; 46 import net.sourceforge.jnlp.annotations.NeedsDisplay; 47 import net.sourceforge.jnlp.annotations.TestInBrowsers; 48 import net.sourceforge.jnlp.browsertesting.BrowserTest; 49 import net.sourceforge.jnlp.browsertesting.Browsers; 50 import net.sourceforge.jnlp.closinglisteners.AutoOkClosingListener; 51 import net.sourceforge.jnlp.closinglisteners.StringBasedClosingListener; 52 import net.sourceforge.jnlp.util.FileUtils; 53 54 import org.junit.Assert; 55 import org.junit.Test; 56 57 @Bug(id = "PR2219") 58 /** 59 * 60 * When NoClassDefFound is thrown from ITW. Current behaviour: javaws app 61 * correctly dies browsers and -html correctly dies 62 * 63 * javaws applet SURVIVES init and start throwing this. But correctly dies in 64 * paint 65 * 66 * 67 */ 68 public class NoClassDeffTest extends BrowserTest { 69 70 private class NoClassDefFoundErrorClosingListener extends StringBasedClosingListener { 71 NoClassDefFoundErrorClosingListener()72 public NoClassDefFoundErrorClosingListener() { 73 super(NoClassDefFoundError.class.getSimpleName()); 74 } 75 76 } 77 78 private static final String appletCloseString = AutoOkClosingListener.MAGICAL_OK_CLOSING_STRING; 79 private static final String[] HTMLA = new String[]{OptionsDefinitions.OPTIONS.HTML.option}; 80 private static final List<String> HTMLL = Arrays.asList(HTMLA); 81 82 private static final String JNLPAPP = "NoClassDeffApp.jnlp"; 83 private static final String JNLPAPPLET = "NoClassDeffApplet.jnlp"; 84 private static final String HTML = "NoClassDeff.html"; 85 private static final String HTMLHREF = "NoClassDeffJnlpHref.html"; 86 87 //jnlp app OK run 88 @Test 89 @NeedsDisplay noClassDeffTestWorksJnlp1()90 public void noClassDeffTestWorksJnlp1() throws Exception { 91 prepare("okRun", false); 92 ProcessResult pr = server.executeJavaws(JNLPAPP, new AutoOkClosingListener(), null); 93 Assert.assertFalse(pr.stdout.contains("Loading LostClass")); 94 Assert.assertTrue(pr.stdout.contains("main1")); 95 Assert.assertTrue(pr.stdout.contains("main2")); 96 Assert.assertTrue(pr.stdout.contains(appletCloseString)); 97 Assert.assertFalse(pr.stdout.contains("EX: ")); 98 } 99 100 //jnlp bad run 1 101 @Test 102 @NeedsDisplay noClassDeffTestThrowJnlp1()103 public void noClassDeffTestThrowJnlp1() throws Exception { 104 prepare("main", false); 105 ProcessResult pr = server.executeJavaws(JNLPAPP, new AutoOkClosingListener(), null); 106 Assert.assertTrue(pr.stdout.contains("Loading LostClass")); 107 Assert.assertTrue(pr.stdout.contains("main1")); 108 Assert.assertFalse(pr.stdout.contains("main2")); 109 Assert.assertFalse(pr.stdout.contains(appletCloseString)); 110 Assert.assertFalse(pr.stdout.contains("EX: ")); 111 } 112 113 //jnlp bad run 2 114 @Test 115 @NeedsDisplay noClassDeffTestThrowCatchJnlp1()116 public void noClassDeffTestThrowCatchJnlp1() throws Exception { 117 prepare("main", true); 118 ProcessResult pr = server.executeJavaws(JNLPAPP, new AutoOkClosingListener(), null); 119 Assert.assertTrue(pr.stdout.contains("Loading LostClass")); 120 Assert.assertTrue(pr.stdout.contains("main1")); 121 Assert.assertTrue(pr.stdout.contains("main2")); 122 Assert.assertTrue(pr.stdout.contains("EX: ")); 123 Assert.assertTrue(pr.stdout.contains(appletCloseString)); 124 } 125 126 //applets OK run 127 //opera should go correctly up to destroy WITHOUT paint 128 //epiphany only start and init 129 //midori up to paint 130 //firefox, no data 131 //-html and jnlp applet get init, start, paint 132 @Test 133 @NeedsDisplay 134 @TestInBrowsers(testIn = {Browsers.one}) noClassDeffTestWorksHtml1()135 public void noClassDeffTestWorksHtml1() throws Exception { 136 prepare("okRun", false); 137 ProcessResult pr = server.executeBrowser(HTML, new AutoOkClosingListener(), null); 138 Assert.assertFalse(pr.stdout.contains("Loading LostClass")); 139 Assert.assertFalse(pr.stdout.contains("EX: ")); 140 Assert.assertTrue(pr.stdout.contains("init1")); 141 Assert.assertTrue(pr.stdout.contains("init2")); 142 Assert.assertTrue(pr.stdout.contains("start1")); 143 Assert.assertTrue(pr.stdout.contains("start2")); 144 // Assert.assertTrue(pr.stdout.contains("paint1")); 145 // Assert.assertTrue(pr.stdout.contains("paint2")); 146 // Assert.assertTrue(pr.stdout.contains("stop1")); 147 // Assert.assertTrue(pr.stdout.contains("stop2")); 148 // Assert.assertTrue(pr.stdout.contains("destroy1")); 149 // Assert.assertTrue(pr.stdout.contains("destroy2")); 150 // Assert.assertTrue(pr.stdout.contains(appletCloseString)); 151 } 152 153 @Test 154 @NeedsDisplay 155 @TestInBrowsers(testIn = {Browsers.one}) noClassDeffTestWorksHtml2()156 public void noClassDeffTestWorksHtml2() throws Exception { 157 prepare("okRun", false); 158 ProcessResult pr = server.executeBrowser(HTMLHREF, new AutoOkClosingListener(), null); 159 Assert.assertFalse(pr.stdout.contains("Loading LostClass")); 160 Assert.assertFalse(pr.stdout.contains("EX: ")); 161 Assert.assertTrue(pr.stdout.contains("init1")); 162 Assert.assertTrue(pr.stdout.contains("init2")); 163 Assert.assertTrue(pr.stdout.contains("start1")); 164 Assert.assertTrue(pr.stdout.contains("start2")); 165 // Assert.assertTrue(pr.stdout.contains("paint1")); 166 // Assert.assertTrue(pr.stdout.contains("paint2")); 167 // Assert.assertTrue(pr.stdout.contains("stop1")); 168 // Assert.assertTrue(pr.stdout.contains("stop2")); 169 // Assert.assertTrue(pr.stdout.contains("destroy1")); 170 // Assert.assertTrue(pr.stdout.contains("destroy2")); 171 // Assert.assertTrue(pr.stdout.contains(appletCloseString)); 172 } 173 174 @Test 175 @NeedsDisplay noClassDeffTestWorksJnlp2()176 public void noClassDeffTestWorksJnlp2() throws Exception { 177 prepare("okRun", false); 178 ProcessResult pr = server.executeJavaws(JNLPAPPLET, new AutoOkClosingListener(), null); 179 Assert.assertFalse(pr.stdout.contains("Loading LostClass")); 180 Assert.assertFalse(pr.stdout.contains("EX: ")); 181 Assert.assertTrue(pr.stdout.contains("init1")); 182 Assert.assertTrue(pr.stdout.contains("init2")); 183 Assert.assertTrue(pr.stdout.contains("start1")); 184 Assert.assertTrue(pr.stdout.contains("start2")); 185 Assert.assertTrue(pr.stdout.contains("paint1")); 186 Assert.assertTrue(pr.stdout.contains("paint2")); 187 // Assert.assertTrue(pr.stdout.contains("stop1")); 188 // Assert.assertTrue(pr.stdout.contains("stop2")); 189 // Assert.assertTrue(pr.stdout.contains("destroy1")); 190 // Assert.assertTrue(pr.stdout.contains("destroy2")); 191 Assert.assertTrue(pr.stdout.contains(appletCloseString)); 192 } 193 194 @Test 195 @NeedsDisplay 196 @TestInBrowsers(testIn = {Browsers.one}) noClassDeffTestWorksJavawsHtml1()197 public void noClassDeffTestWorksJavawsHtml1() throws Exception { 198 prepare("okRun", false); 199 ProcessResult pr = server.executeJavaws(HTMLL, HTML, new AutoOkClosingListener(), null); 200 Assert.assertFalse(pr.stdout.contains("Loading LostClass")); 201 Assert.assertFalse(pr.stdout.contains("EX: ")); 202 Assert.assertTrue(pr.stdout.contains("init1")); 203 Assert.assertTrue(pr.stdout.contains("init2")); 204 Assert.assertTrue(pr.stdout.contains("start1")); 205 Assert.assertTrue(pr.stdout.contains("start2")); 206 // Assert.assertTrue(pr.stdout.contains("paint1")); 207 // Assert.assertTrue(pr.stdout.contains("paint2")); 208 // Assert.assertTrue(pr.stdout.contains("stop1")); 209 // Assert.assertTrue(pr.stdout.contains("stop2")); 210 // Assert.assertTrue(pr.stdout.contains("destroy1")); 211 // Assert.assertTrue(pr.stdout.contains("destroy2")); 212 } 213 214 @Test 215 @NeedsDisplay 216 @TestInBrowsers(testIn = {Browsers.one}) noClassDeffTestWorksJavawsHtml2()217 public void noClassDeffTestWorksJavawsHtml2() throws Exception { 218 prepare("okRun", false); 219 ProcessResult pr = server.executeJavaws(HTMLL, HTMLHREF, new AutoOkClosingListener(), null); 220 Assert.assertFalse(pr.stdout.contains("Loading LostClass")); 221 Assert.assertFalse(pr.stdout.contains("EX: ")); 222 Assert.assertTrue(pr.stdout.contains("init1")); 223 Assert.assertTrue(pr.stdout.contains("init2")); 224 Assert.assertTrue(pr.stdout.contains("start1")); 225 Assert.assertTrue(pr.stdout.contains("start2")); 226 // Assert.assertTrue(pr.stdout.contains("paint1")); 227 // Assert.assertTrue(pr.stdout.contains("paint2")); 228 // Assert.assertTrue(pr.stdout.contains("stop1")); 229 // Assert.assertTrue(pr.stdout.contains("stop2")); 230 // Assert.assertTrue(pr.stdout.contains("destroy1")); 231 // Assert.assertTrue(pr.stdout.contains("destroy2")); 232 Assert.assertTrue(pr.stdout.contains(appletCloseString)); 233 } 234 235 //jnlp applets crashes 236 //they behave a bit differently form browser ones 237 @Test 238 @NeedsDisplay noClassDeffTestThrowsInitJnlp2()239 public void noClassDeffTestThrowsInitJnlp2() throws Exception { 240 prepare("init", false); 241 ProcessResult pr = server.executeJavaws(JNLPAPPLET, new AutoOkClosingListener(), new NoClassDefFoundErrorClosingListener()); 242 Assert.assertTrue(pr.stdout.contains("Loading LostClass")); 243 Assert.assertFalse(pr.stdout.contains("EX: ")); 244 Assert.assertFalse(pr.stderr.contains(NoClassDefFoundError.class.getSimpleName())); 245 Assert.assertTrue(pr.stdout.contains("init1")); 246 Assert.assertFalse(pr.stdout.contains("init2")); 247 Assert.assertFalse(pr.stdout.contains("start1")); 248 Assert.assertFalse(pr.stdout.contains("start2")); 249 Assert.assertTrue(pr.stdout.contains("paint1")); 250 Assert.assertTrue(pr.stdout.contains("paint2")); 251 // Assert.assertTrue(pr.stdout.contains("stop1")); 252 // Assert.assertTrue(pr.stdout.contains("stop2")); 253 // Assert.assertTrue(pr.stdout.contains("destroy1")); 254 // Assert.assertTrue(pr.stdout.contains("destroy2")); 255 Assert.assertTrue(pr.stdout.contains(appletCloseString)); 256 } 257 258 @Test 259 @NeedsDisplay noClassDeffTestThrowsStartJnlp2()260 public void noClassDeffTestThrowsStartJnlp2() throws Exception { 261 prepare("start", false); 262 ProcessResult pr = server.executeJavaws(JNLPAPPLET, new AutoOkClosingListener(), new NoClassDefFoundErrorClosingListener()); 263 Assert.assertTrue(pr.stdout.contains("Loading LostClass")); 264 Assert.assertFalse(pr.stdout.contains("EX: ")); 265 Assert.assertFalse(pr.stderr.contains(NoClassDefFoundError.class.getSimpleName())); 266 Assert.assertTrue(pr.stdout.contains("init1")); 267 Assert.assertTrue(pr.stdout.contains("init2")); 268 Assert.assertTrue(pr.stdout.contains("start1")); 269 Assert.assertFalse(pr.stdout.contains("start2")); 270 Assert.assertTrue(pr.stdout.contains("paint1")); 271 Assert.assertTrue(pr.stdout.contains("paint2")); 272 // Assert.assertTrue(pr.stdout.contains("stop1")); 273 // Assert.assertTrue(pr.stdout.contains("stop2")); 274 // Assert.assertTrue(pr.stdout.contains("destroy1")); 275 // Assert.assertTrue(pr.stdout.contains("destroy2")); 276 Assert.assertTrue(pr.stdout.contains(appletCloseString)); 277 } 278 279 @Test 280 @NeedsDisplay noClassDeffTestThrowsPaintJnlp2()281 public void noClassDeffTestThrowsPaintJnlp2() throws Exception { 282 prepare("paint", false); 283 ProcessResult pr = server.executeJavaws(JNLPAPPLET, new AutoOkClosingListener(), new NoClassDefFoundErrorClosingListener()); 284 Assert.assertTrue(pr.stdout.contains("Loading LostClass")); 285 Assert.assertFalse(pr.stdout.contains("EX: ")); 286 Assert.assertTrue(pr.stderr.contains(NoClassDefFoundError.class.getSimpleName())); 287 Assert.assertTrue(pr.stdout.contains("init1")); 288 Assert.assertTrue(pr.stdout.contains("init2")); 289 Assert.assertTrue(pr.stdout.contains("start1")); 290 Assert.assertTrue(pr.stdout.contains("start2")); 291 Assert.assertTrue(pr.stdout.contains("paint1")); 292 Assert.assertFalse(pr.stdout.contains("paint2")); 293 // Assert.assertTrue(pr.stdout.contains("stop1")); 294 // Assert.assertTrue(pr.stdout.contains("stop2")); 295 // Assert.assertTrue(pr.stdout.contains("destroy1")); 296 // Assert.assertTrue(pr.stdout.contains("destroy2")); 297 Assert.assertFalse(pr.stdout.contains(appletCloseString)); 298 } 299 300 @Test 301 @NeedsDisplay noClassDeffTestThrowsCatchInitJnlp2()302 public void noClassDeffTestThrowsCatchInitJnlp2() throws Exception { 303 prepare("init", true); 304 ProcessResult pr = server.executeJavaws(JNLPAPPLET, new AutoOkClosingListener(), null); 305 Assert.assertTrue(pr.stdout.contains("Loading LostClass")); 306 Assert.assertTrue(pr.stdout.contains("EX: ")); 307 Assert.assertTrue(pr.stdout.contains("init1")); 308 Assert.assertTrue(pr.stdout.contains("init2")); 309 Assert.assertTrue(pr.stdout.contains("start1")); 310 Assert.assertTrue(pr.stdout.contains("start2")); 311 Assert.assertTrue(pr.stdout.contains("paint1")); 312 Assert.assertTrue(pr.stdout.contains("paint2")); 313 // Assert.assertTrue(pr.stdout.contains("stop1")); 314 // Assert.assertTrue(pr.stdout.contains("stop2")); 315 // Assert.assertTrue(pr.stdout.contains("destroy1")); 316 // Assert.assertTrue(pr.stdout.contains("destroy2")); 317 Assert.assertTrue(pr.stdout.contains(appletCloseString)); 318 } 319 320 @Test 321 @NeedsDisplay noClassDeffTestThrowsCatchStartJnlp2()322 public void noClassDeffTestThrowsCatchStartJnlp2() throws Exception { 323 prepare("start", true); 324 ProcessResult pr = server.executeJavaws(JNLPAPPLET, new AutoOkClosingListener(), null); 325 Assert.assertTrue(pr.stdout.contains("Loading LostClass")); 326 Assert.assertTrue(pr.stdout.contains("EX: ")); 327 Assert.assertTrue(pr.stdout.contains("init1")); 328 Assert.assertTrue(pr.stdout.contains("init2")); 329 Assert.assertTrue(pr.stdout.contains("start1")); 330 Assert.assertTrue(pr.stdout.contains("start2")); 331 Assert.assertTrue(pr.stdout.contains("paint1")); 332 Assert.assertTrue(pr.stdout.contains("paint2")); 333 // Assert.assertTrue(pr.stdout.contains("stop1")); 334 // Assert.assertTrue(pr.stdout.contains("stop2")); 335 // Assert.assertTrue(pr.stdout.contains("destroy1")); 336 // Assert.assertTrue(pr.stdout.contains("destroy2")); 337 Assert.assertTrue(pr.stdout.contains(appletCloseString)); 338 } 339 340 @Test 341 @NeedsDisplay noClassDeffTestThrowsCatchPaintJnlp2()342 public void noClassDeffTestThrowsCatchPaintJnlp2() throws Exception { 343 prepare("paint", true); 344 ProcessResult pr = server.executeJavaws(JNLPAPPLET, new AutoOkClosingListener(), null); 345 Assert.assertTrue(pr.stdout.contains("Loading LostClass")); 346 Assert.assertTrue(pr.stdout.contains("EX: ")); 347 Assert.assertTrue(pr.stdout.contains("init1")); 348 Assert.assertTrue(pr.stdout.contains("init2")); 349 Assert.assertTrue(pr.stdout.contains("start1")); 350 Assert.assertTrue(pr.stdout.contains("start2")); 351 Assert.assertTrue(pr.stdout.contains("paint1")); 352 Assert.assertTrue(pr.stdout.contains("paint2")); 353 // Assert.assertTrue(pr.stdout.contains("stop1")); 354 // Assert.assertTrue(pr.stdout.contains("stop2")); 355 // Assert.assertTrue(pr.stdout.contains("destroy1")); 356 // Assert.assertTrue(pr.stdout.contains("destroy2")); 357 Assert.assertTrue(pr.stdout.contains(appletCloseString)); 358 } 359 360 //-html and browser crashes 361 // 362 //applets crash init 1 363 @Test 364 @NeedsDisplay 365 @TestInBrowsers(testIn = {Browsers.one}) noClassDeffTestThrowsInitHtml1()366 public void noClassDeffTestThrowsInitHtml1() throws Exception { 367 prepare("init", false); 368 ProcessResult pr = server.executeBrowser(HTML, null, new NoClassDefFoundErrorClosingListener()); 369 Assert.assertTrue(pr.stdout.contains("Loading LostClass")); 370 Assert.assertFalse(pr.stdout.contains("EX: ")); 371 Assert.assertTrue(pr.stderr.contains(NoClassDefFoundError.class.getSimpleName())); 372 Assert.assertTrue(pr.stdout.contains("init1")); 373 Assert.assertFalse(pr.stdout.contains("init2")); 374 Assert.assertFalse(pr.stdout.contains("start1")); 375 Assert.assertFalse(pr.stdout.contains("start2")); 376 // Assert.assertTrue(pr.stdout.contains("paint1")); 377 // Assert.assertTrue(pr.stdout.contains("paint2")); 378 // Assert.assertTrue(pr.stdout.contains("stop1")); 379 // Assert.assertTrue(pr.stdout.contains("stop2")); 380 // Assert.assertTrue(pr.stdout.contains("destroy1")); 381 // Assert.assertTrue(pr.stdout.contains("destroy2")); 382 // Assert.assertTrue(pr.stdout.contains(appletCloseString)); 383 } 384 385 @Test 386 @NeedsDisplay 387 @TestInBrowsers(testIn = {Browsers.one}) noClassDeffTestThrowsInitHtml2()388 public void noClassDeffTestThrowsInitHtml2() throws Exception { 389 prepare("init", false); 390 ProcessResult pr = server.executeBrowser(HTMLHREF, null, new NoClassDefFoundErrorClosingListener()); 391 Assert.assertTrue(pr.stdout.contains("Loading LostClass")); 392 Assert.assertFalse(pr.stdout.contains("EX: ")); 393 Assert.assertTrue(pr.stderr.contains(NoClassDefFoundError.class.getSimpleName())); 394 Assert.assertTrue(pr.stdout.contains("init1")); 395 Assert.assertFalse(pr.stdout.contains("init2")); 396 Assert.assertFalse(pr.stdout.contains("start1")); 397 Assert.assertFalse(pr.stdout.contains("start2")); 398 // Assert.assertTrue(pr.stdout.contains("paint1")); 399 // Assert.assertTrue(pr.stdout.contains("paint2")); 400 // Assert.assertTrue(pr.stdout.contains("stop1")); 401 // Assert.assertTrue(pr.stdout.contains("stop2")); 402 // Assert.assertTrue(pr.stdout.contains("destroy1")); 403 // Assert.assertTrue(pr.stdout.contains("destroy2")); 404 // Assert.assertTrue(pr.stdout.contains(appletCloseString)); 405 } 406 407 @Test 408 @NeedsDisplay 409 @TestInBrowsers(testIn = {Browsers.one}) noClassDeffTestThrowsInitJavawsHtml1()410 public void noClassDeffTestThrowsInitJavawsHtml1() throws Exception { 411 prepare("init", false); 412 ProcessResult pr = server.executeJavaws(HTMLL, HTML, null, new NoClassDefFoundErrorClosingListener()); 413 Assert.assertTrue(pr.stdout.contains("Loading LostClass")); 414 Assert.assertFalse(pr.stdout.contains("EX: ")); 415 Assert.assertTrue(pr.stdout.contains("init1")); 416 Assert.assertTrue(pr.stderr.contains(NoClassDefFoundError.class.getSimpleName())); 417 Assert.assertFalse(pr.stdout.contains("init2")); 418 Assert.assertFalse(pr.stdout.contains("start1")); 419 Assert.assertFalse(pr.stdout.contains("start2")); 420 // Assert.assertTrue(pr.stdout.contains("paint1")); 421 // Assert.assertTrue(pr.stdout.contains("paint2")); 422 // Assert.assertTrue(pr.stdout.contains("stop1")); 423 // Assert.assertTrue(pr.stdout.contains("stop2")); 424 // Assert.assertTrue(pr.stdout.contains("destroy1")); 425 // Assert.assertTrue(pr.stdout.contains("destroy2")); 426 } 427 428 @Test 429 @NeedsDisplay 430 @TestInBrowsers(testIn = {Browsers.one}) noClassDeffTestThrowsInitJavawsHtml2()431 public void noClassDeffTestThrowsInitJavawsHtml2() throws Exception { 432 prepare("init", false); 433 ProcessResult pr = server.executeJavaws(HTMLL, HTMLHREF, null, new NoClassDefFoundErrorClosingListener()); 434 Assert.assertTrue(pr.stdout.contains("Loading LostClass")); 435 Assert.assertFalse(pr.stdout.contains("EX: ")); 436 Assert.assertTrue(pr.stderr.contains(NoClassDefFoundError.class.getSimpleName())); 437 Assert.assertTrue(pr.stdout.contains("init1")); 438 Assert.assertFalse(pr.stdout.contains("init2")); 439 Assert.assertFalse(pr.stdout.contains("start1")); 440 Assert.assertFalse(pr.stdout.contains("start2")); 441 // Assert.assertTrue(pr.stdout.contains("paint1")); 442 // Assert.assertTrue(pr.stdout.contains("paint2")); 443 // Assert.assertTrue(pr.stdout.contains("stop1")); 444 // Assert.assertTrue(pr.stdout.contains("stop2")); 445 // Assert.assertTrue(pr.stdout.contains("destroy1")); 446 // Assert.assertTrue(pr.stdout.contains("destroy2")); 447 Assert.assertFalse(pr.stdout.contains(appletCloseString)); 448 } 449 450 //applets crash start 1 451 @Test 452 @NeedsDisplay 453 @TestInBrowsers(testIn = {Browsers.one}) noClassDeffTestThrowsStartHtml1()454 public void noClassDeffTestThrowsStartHtml1() throws Exception { 455 prepare("start", false); 456 ProcessResult pr = server.executeBrowser(HTML, null, new NoClassDefFoundErrorClosingListener()); 457 Assert.assertTrue(pr.stdout.contains("Loading LostClass")); 458 Assert.assertFalse(pr.stdout.contains("EX: ")); 459 Assert.assertTrue(pr.stderr.contains(NoClassDefFoundError.class.getSimpleName())); 460 Assert.assertTrue(pr.stdout.contains("init1")); 461 Assert.assertTrue(pr.stdout.contains("init2")); 462 Assert.assertTrue(pr.stdout.contains("start1")); 463 Assert.assertFalse(pr.stdout.contains("start2")); 464 // Assert.assertTrue(pr.stdout.contains("paint1")); 465 // Assert.assertTrue(pr.stdout.contains("paint2")); 466 // Assert.assertTrue(pr.stdout.contains("stop1")); 467 // Assert.assertTrue(pr.stdout.contains("stop2")); 468 // Assert.assertTrue(pr.stdout.contains("destroy1")); 469 // Assert.assertTrue(pr.stdout.contains("destroy2")); 470 // Assert.assertTrue(pr.stdout.contains(appletCloseString)); 471 } 472 473 @Test 474 @NeedsDisplay 475 @TestInBrowsers(testIn = {Browsers.one}) noClassDeffTestThrowsStartHtml2()476 public void noClassDeffTestThrowsStartHtml2() throws Exception { 477 prepare("start", false); 478 ProcessResult pr = server.executeBrowser(HTMLHREF, null, new NoClassDefFoundErrorClosingListener()); 479 Assert.assertTrue(pr.stdout.contains("Loading LostClass")); 480 Assert.assertFalse(pr.stdout.contains("EX: ")); 481 Assert.assertTrue(pr.stderr.contains(NoClassDefFoundError.class.getSimpleName())); 482 Assert.assertTrue(pr.stdout.contains("init1")); 483 Assert.assertTrue(pr.stdout.contains("init2")); 484 Assert.assertTrue(pr.stdout.contains("start1")); 485 Assert.assertFalse(pr.stdout.contains("start2")); 486 // Assert.assertTrue(pr.stdout.contains("paint1")); 487 // Assert.assertTrue(pr.stdout.contains("paint2")); 488 // Assert.assertTrue(pr.stdout.contains("stop1")); 489 // Assert.assertTrue(pr.stdout.contains("stop2")); 490 // Assert.assertTrue(pr.stdout.contains("destroy1")); 491 // Assert.assertTrue(pr.stdout.contains("destroy2")); 492 // Assert.assertTrue(pr.stdout.contains(appletCloseString)); 493 } 494 495 @Test 496 @NeedsDisplay 497 @TestInBrowsers(testIn = {Browsers.one}) noClassDeffTestThrowsStartJavawsHtml1()498 public void noClassDeffTestThrowsStartJavawsHtml1() throws Exception { 499 prepare("start", false); 500 ProcessResult pr = server.executeJavaws(HTMLL, HTML, null, new NoClassDefFoundErrorClosingListener()); 501 Assert.assertTrue(pr.stdout.contains("Loading LostClass")); 502 Assert.assertFalse(pr.stdout.contains("EX: ")); 503 Assert.assertTrue(pr.stdout.contains("init1")); 504 Assert.assertTrue(pr.stderr.contains(NoClassDefFoundError.class.getSimpleName())); 505 Assert.assertTrue(pr.stdout.contains("init2")); 506 Assert.assertTrue(pr.stdout.contains("start1")); 507 Assert.assertFalse(pr.stdout.contains("start2")); 508 // Assert.assertTrue(pr.stdout.contains("paint1")); 509 // Assert.assertTrue(pr.stdout.contains("paint2")); 510 // Assert.assertTrue(pr.stdout.contains("stop1")); 511 // Assert.assertTrue(pr.stdout.contains("stop2")); 512 // Assert.assertTrue(pr.stdout.contains("destroy1")); 513 // Assert.assertTrue(pr.stdout.contains("destroy2")); 514 } 515 516 @Test 517 @NeedsDisplay 518 @TestInBrowsers(testIn = {Browsers.one}) noClassDeffTestThrowsStartJavawsHtml2()519 public void noClassDeffTestThrowsStartJavawsHtml2() throws Exception { 520 prepare("start", false); 521 ProcessResult pr = server.executeJavaws(HTMLL, HTMLHREF, null, new NoClassDefFoundErrorClosingListener()); 522 Assert.assertTrue(pr.stdout.contains("Loading LostClass")); 523 Assert.assertFalse(pr.stdout.contains("EX: ")); 524 Assert.assertTrue(pr.stderr.contains(NoClassDefFoundError.class.getSimpleName())); 525 Assert.assertTrue(pr.stdout.contains("init1")); 526 Assert.assertTrue(pr.stdout.contains("init2")); 527 Assert.assertTrue(pr.stdout.contains("start1")); 528 Assert.assertFalse(pr.stdout.contains("start2")); 529 // Assert.assertTrue(pr.stdout.contains("paint1")); 530 // Assert.assertTrue(pr.stdout.contains("paint2")); 531 // Assert.assertTrue(pr.stdout.contains("stop1")); 532 // Assert.assertTrue(pr.stdout.contains("stop2")); 533 // Assert.assertTrue(pr.stdout.contains("destroy1")); 534 // Assert.assertTrue(pr.stdout.contains("destroy2")); 535 Assert.assertFalse(pr.stdout.contains(appletCloseString)); 536 } 537 prepare(String when, boolean catchError)538 private void prepare(String when, boolean catchError) throws IOException { 539 File dir = ServerAccess.getInstance().getDir(); 540 String[] files = new String[]{"NoClassDeffApp.jnlp", "NoClassDeff.html", "NoClassDeffApplet.jnlp", "NoClassDeffJnlpHref.html"}; 541 for (String file : files) { 542 String s = FileUtils.loadFileAsString(new File(dir, file + ".in")); 543 s = s.replaceAll("DIE_ON_STAGE", when); 544 s = s.replaceAll("CATCH_ERROR", String.valueOf(catchError)); 545 FileUtils.saveFile(s, new File(dir, file)); 546 } 547 } 548 549 //applets crash init 2 550 @Test 551 @NeedsDisplay 552 @TestInBrowsers(testIn = {Browsers.one}) noClassDeffTestThrowsCatchInitHtml1()553 public void noClassDeffTestThrowsCatchInitHtml1() throws Exception { 554 prepare("init", true); 555 ProcessResult pr = server.executeBrowser(HTML, new AutoOkClosingListener(), null); 556 Assert.assertTrue(pr.stdout.contains("Loading LostClass")); 557 Assert.assertTrue(pr.stdout.contains("EX: ")); 558 Assert.assertTrue(pr.stderr.contains(NoClassDefFoundError.class.getSimpleName())); 559 Assert.assertTrue(pr.stdout.contains("init1")); 560 Assert.assertTrue(pr.stdout.contains("init2")); 561 Assert.assertTrue(pr.stdout.contains("start1")); 562 Assert.assertTrue(pr.stdout.contains("start2")); 563 // Assert.assertTrue(pr.stdout.contains("paint1")); 564 // Assert.assertTrue(pr.stdout.contains("paint2")); 565 // Assert.assertTrue(pr.stdout.contains("stop1")); 566 // Assert.assertTrue(pr.stdout.contains("stop2")); 567 // Assert.assertTrue(pr.stdout.contains("destroy1")); 568 // Assert.assertTrue(pr.stdout.contains("destroy2")); 569 // Assert.assertTrue(pr.stdout.contains(appletCloseString)); 570 } 571 572 @Test 573 @NeedsDisplay 574 @TestInBrowsers(testIn = {Browsers.one}) noClassDeffTestThrowsCatchInitHtml2()575 public void noClassDeffTestThrowsCatchInitHtml2() throws Exception { 576 prepare("init", true); 577 ProcessResult pr = server.executeBrowser(HTMLHREF, new AutoOkClosingListener(), null); 578 Assert.assertTrue(pr.stdout.contains("Loading LostClass")); 579 Assert.assertTrue(pr.stdout.contains("EX: ")); 580 Assert.assertTrue(pr.stderr.contains(NoClassDefFoundError.class.getSimpleName())); 581 Assert.assertTrue(pr.stdout.contains("init1")); 582 Assert.assertTrue(pr.stdout.contains("init2")); 583 Assert.assertTrue(pr.stdout.contains("start1")); 584 Assert.assertTrue(pr.stdout.contains("start2")); 585 // Assert.assertTrue(pr.stdout.contains("paint1")); 586 // Assert.assertTrue(pr.stdout.contains("paint2")); 587 // Assert.assertTrue(pr.stdout.contains("stop1")); 588 // Assert.assertTrue(pr.stdout.contains("stop2")); 589 // Assert.assertTrue(pr.stdout.contains("destroy1")); 590 // Assert.assertTrue(pr.stdout.contains("destroy2")); 591 // Assert.assertTrue(pr.stdout.contains(appletCloseString)); 592 } 593 594 @Test 595 @NeedsDisplay 596 @TestInBrowsers(testIn = {Browsers.one}) noClassDeffTestThrowsCatchInitJavawsHtml1()597 public void noClassDeffTestThrowsCatchInitJavawsHtml1() throws Exception { 598 prepare("init", true); 599 ProcessResult pr = server.executeJavaws(HTMLL, HTML, new AutoOkClosingListener(), null); 600 Assert.assertTrue(pr.stdout.contains("Loading LostClass")); 601 Assert.assertTrue(pr.stdout.contains("EX: ")); 602 Assert.assertTrue(pr.stdout.contains("init1")); 603 Assert.assertTrue(pr.stderr.contains(NoClassDefFoundError.class.getSimpleName())); 604 Assert.assertTrue(pr.stdout.contains("init2")); 605 Assert.assertTrue(pr.stdout.contains("start1")); 606 Assert.assertTrue(pr.stdout.contains("start2")); 607 // Assert.assertTrue(pr.stdout.contains("paint1")); 608 // Assert.assertTrue(pr.stdout.contains("paint2")); 609 // Assert.assertTrue(pr.stdout.contains("stop1")); 610 // Assert.assertTrue(pr.stdout.contains("stop2")); 611 // Assert.assertTrue(pr.stdout.contains("destroy1")); 612 // Assert.assertTrue(pr.stdout.contains("destroy2")); 613 } 614 615 @Test 616 @NeedsDisplay 617 @TestInBrowsers(testIn = {Browsers.one}) noClassDeffTestThrowsCatchInitJavawsHtml2()618 public void noClassDeffTestThrowsCatchInitJavawsHtml2() throws Exception { 619 prepare("init", true); 620 ProcessResult pr = server.executeJavaws(HTMLL, HTMLHREF, new AutoOkClosingListener(), null); 621 Assert.assertTrue(pr.stdout.contains("Loading LostClass")); 622 Assert.assertTrue(pr.stdout.contains("EX: ")); 623 Assert.assertTrue(pr.stderr.contains(NoClassDefFoundError.class.getSimpleName())); 624 Assert.assertTrue(pr.stdout.contains("init1")); 625 Assert.assertTrue(pr.stdout.contains("init2")); 626 Assert.assertTrue(pr.stdout.contains("start1")); 627 Assert.assertTrue(pr.stdout.contains("start2")); 628 // Assert.assertTrue(pr.stdout.contains("paint1")); 629 // Assert.assertTrue(pr.stdout.contains("paint2")); 630 // Assert.assertTrue(pr.stdout.contains("stop1")); 631 // Assert.assertTrue(pr.stdout.contains("stop2")); 632 // Assert.assertTrue(pr.stdout.contains("destroy1")); 633 // Assert.assertTrue(pr.stdout.contains("destroy2")); 634 Assert.assertTrue(pr.stdout.contains(appletCloseString)); 635 } 636 637 //applets crash start 2 638 @Test 639 @NeedsDisplay 640 @TestInBrowsers(testIn = {Browsers.one}) noClassDeffTestThrowsCatchStartHtml1()641 public void noClassDeffTestThrowsCatchStartHtml1() throws Exception { 642 prepare("start", true); 643 ProcessResult pr = server.executeBrowser(HTML, new AutoOkClosingListener(), null); 644 Assert.assertTrue(pr.stdout.contains("Loading LostClass")); 645 Assert.assertTrue(pr.stdout.contains("EX: ")); 646 Assert.assertTrue(pr.stderr.contains(NoClassDefFoundError.class.getSimpleName())); 647 Assert.assertTrue(pr.stdout.contains("init1")); 648 Assert.assertTrue(pr.stdout.contains("init2")); 649 Assert.assertTrue(pr.stdout.contains("start1")); 650 Assert.assertTrue(pr.stdout.contains("start2")); 651 // Assert.assertTrue(pr.stdout.contains("paint1")); 652 // Assert.assertTrue(pr.stdout.contains("paint2")); 653 // Assert.assertTrue(pr.stdout.contains("stop1")); 654 // Assert.assertTrue(pr.stdout.contains("stop2")); 655 // Assert.assertTrue(pr.stdout.contains("destroy1")); 656 // Assert.assertTrue(pr.stdout.contains("destroy2")); 657 // Assert.assertTrue(pr.stdout.contains(appletCloseString)); 658 } 659 660 @Test 661 @NeedsDisplay 662 @TestInBrowsers(testIn = {Browsers.one}) noClassDeffTestThrowsCatchStartHtml2()663 public void noClassDeffTestThrowsCatchStartHtml2() throws Exception { 664 prepare("start", true); 665 ProcessResult pr = server.executeBrowser(HTMLHREF, new AutoOkClosingListener(), null); 666 Assert.assertTrue(pr.stdout.contains("Loading LostClass")); 667 Assert.assertTrue(pr.stdout.contains("EX: ")); 668 Assert.assertTrue(pr.stderr.contains(NoClassDefFoundError.class.getSimpleName())); 669 Assert.assertTrue(pr.stdout.contains("init1")); 670 Assert.assertTrue(pr.stdout.contains("init2")); 671 Assert.assertTrue(pr.stdout.contains("start1")); 672 Assert.assertTrue(pr.stdout.contains("start2")); 673 // Assert.assertTrue(pr.stdout.contains("paint1")); 674 // Assert.assertTrue(pr.stdout.contains("paint2")); 675 // Assert.assertTrue(pr.stdout.contains("stop1")); 676 // Assert.assertTrue(pr.stdout.contains("stop2")); 677 // Assert.assertTrue(pr.stdout.contains("destroy1")); 678 // Assert.assertTrue(pr.stdout.contains("destroy2")); 679 // Assert.assertTrue(pr.stdout.contains(appletCloseString)); 680 } 681 682 @Test 683 @NeedsDisplay 684 @TestInBrowsers(testIn = {Browsers.one}) noClassDeffTestThrowsCatchStartJavawsHtml1()685 public void noClassDeffTestThrowsCatchStartJavawsHtml1() throws Exception { 686 prepare("start", true); 687 ProcessResult pr = server.executeJavaws(HTMLL, HTML, new AutoOkClosingListener(), null); 688 Assert.assertTrue(pr.stdout.contains("Loading LostClass")); 689 Assert.assertTrue(pr.stdout.contains("EX: ")); 690 Assert.assertTrue(pr.stdout.contains("init1")); 691 Assert.assertTrue(pr.stderr.contains(NoClassDefFoundError.class.getSimpleName())); 692 Assert.assertTrue(pr.stdout.contains("init2")); 693 Assert.assertTrue(pr.stdout.contains("start1")); 694 Assert.assertTrue(pr.stdout.contains("start2")); 695 // Assert.assertTrue(pr.stdout.contains("paint1")); 696 // Assert.assertTrue(pr.stdout.contains("paint2")); 697 // Assert.assertTrue(pr.stdout.contains("stop1")); 698 // Assert.assertTrue(pr.stdout.contains("stop2")); 699 // Assert.assertTrue(pr.stdout.contains("destroy1")); 700 // Assert.assertTrue(pr.stdout.contains("destroy2")); 701 } 702 703 @Test 704 @NeedsDisplay 705 @TestInBrowsers(testIn = {Browsers.one}) noClassDeffTestThrowsCatchStartJavawsHtml2()706 public void noClassDeffTestThrowsCatchStartJavawsHtml2() throws Exception { 707 prepare("start", true); 708 ProcessResult pr = server.executeJavaws(HTMLL, HTMLHREF, new AutoOkClosingListener(), null); 709 Assert.assertTrue(pr.stdout.contains("Loading LostClass")); 710 Assert.assertTrue(pr.stdout.contains("EX: ")); 711 Assert.assertTrue(pr.stderr.contains(NoClassDefFoundError.class.getSimpleName())); 712 Assert.assertTrue(pr.stdout.contains("init1")); 713 Assert.assertTrue(pr.stdout.contains("init2")); 714 Assert.assertTrue(pr.stdout.contains("start1")); 715 Assert.assertTrue(pr.stdout.contains("start2")); 716 // Assert.assertTrue(pr.stdout.contains("paint1")); 717 // Assert.assertTrue(pr.stdout.contains("paint2")); 718 // Assert.assertTrue(pr.stdout.contains("stop1")); 719 // Assert.assertTrue(pr.stdout.contains("stop2")); 720 // Assert.assertTrue(pr.stdout.contains("destroy1")); 721 // Assert.assertTrue(pr.stdout.contains("destroy2")); 722 Assert.assertTrue(pr.stdout.contains(appletCloseString)); 723 } 724 725 726 727 } 728