Lines 21-26
Link Here
|
21 |
import junit.framework.*; |
21 |
import junit.framework.*; |
22 |
|
22 |
|
23 |
import org.netbeans.junit.*; |
23 |
import org.netbeans.junit.*; |
|
|
24 |
import org.w3c.dom.Document; |
24 |
|
25 |
|
25 |
|
26 |
|
26 |
/** Check the behaviour Arch task. |
27 |
/** Check the behaviour Arch task. |
Lines 52-57
Link Here
|
52 |
|
53 |
|
53 |
assertTrue ("File is generated", answers.exists ()); |
54 |
assertTrue ("File is generated", answers.exists ()); |
54 |
} |
55 |
} |
|
|
56 |
|
57 |
public void testGenerateArchFileWhenEmptyWithDefaultAnswerForNbDepsQuestion() throws Exception { |
58 |
java.io.File answers = PublicPackagesInProjectizedXMLTest.extractString (""); |
59 |
answers.delete (); |
60 |
assertFalse ("Really deleted", answers.exists ()); |
61 |
|
62 |
java.io.File f = PublicPackagesInProjectizedXMLTest.extractString ( |
63 |
"<?xml version=\"1.0\" encoding=\"UTF-8\"?>" + |
64 |
"<project name=\"Test Arch\" basedir=\".\" default=\"all\" >" + |
65 |
" <taskdef name=\"arch\" classname=\"org.netbeans.nbbuild.Arch\" classpath=\"${nb_all}/nbbuild/nbantext.jar\"/>" + |
66 |
" <arch answers=\"" + answers + "\" output=\"x.html\" />" + |
67 |
"<target name=\"all\" >" + |
68 |
" " + |
69 |
"</target>" + |
70 |
"</project>" |
71 |
|
72 |
); |
73 |
PublicPackagesInProjectizedXMLTest.execute (f, new String[] { }); |
74 |
|
75 |
assertTrue ("File is generated", answers.exists ()); |
76 |
|
77 |
String res = PublicPackagesInProjectizedXMLTest.readFile(answers); |
78 |
|
79 |
org.w3c.dom.Document dom = DocumentBuilderFactory.newInstance().newDocumentBuilder().parse(answers); |
80 |
|
81 |
org.w3c.dom.NodeList list = dom.getElementsByTagName("defaultanswer"); |
82 |
assertTrue("There is at least one defaultanswer: " + res, list.getLength() > 0); |
83 |
for (int i = 0; i < list.getLength(); i++) { |
84 |
org.w3c.dom.Node n = list.item(i); |
85 |
while (n != null) { |
86 |
n = n.getParentNode(); |
87 |
if (n.getNodeName().equals ("answer")) { |
88 |
String id = n.getAttributes().getNamedItem("id").getNodeValue(); |
89 |
if (id.equals ("dep-nb")) { |
90 |
// ok, we were searching for answer to dep-nb question |
91 |
return; |
92 |
} |
93 |
} |
94 |
} |
95 |
} |
96 |
|
97 |
fail ("dep-nb question should have a defaultanswer: " + res); |
98 |
} |
55 |
|
99 |
|
56 |
public void testDoNotCorruptTheFileWhenItExists() throws Exception { |
100 |
public void testDoNotCorruptTheFileWhenItExists() throws Exception { |
57 |
java.io.File answers = PublicPackagesInProjectizedXMLTest.extractString ( |
101 |
java.io.File answers = PublicPackagesInProjectizedXMLTest.extractString ( |
Lines 315-320
Link Here
|
315 |
list = dom.getElementsByTagName("change"); |
359 |
list = dom.getElementsByTagName("change"); |
316 |
assertEquals("Two change elements:\n" + txt, 2, list.getLength()); |
360 |
assertEquals("Two change elements:\n" + txt, 2, list.getLength()); |
317 |
|
361 |
|
|
|
362 |
} |
363 |
|
364 |
|
365 |
public void testReadNbDepsFromProjectXML() throws Exception { |
366 |
String[] txt = new String[1]; |
367 |
Document dom = doReadNbDepsFromProjectXML("", txt); |
368 |
|
369 |
|
370 |
org.w3c.dom.NodeList list; |
371 |
list = dom.getElementsByTagName("api"); |
372 |
assertTrue("There is more than one api tag: " + txt[0], list.getLength() > 0); |
373 |
|
374 |
for (int i = 0; i < list.getLength(); i++) { |
375 |
org.w3c.dom.Node n = list.item(i); |
376 |
|
377 |
assertEquals ("group is java", "java", n.getAttributes().getNamedItem("group").getNodeValue()); |
378 |
assertEquals ("type is import", "import", n.getAttributes().getNamedItem("type").getNodeValue()); |
379 |
} |
380 |
} |
381 |
|
382 |
|
383 |
public void testReadNbDepsFromProjectXMLWhenDefaultAnswerRequested() throws Exception { |
384 |
String[] txt = new String[1]; |
385 |
Document dom = doReadNbDepsFromProjectXML(" <defaultanswer generate='here'/>", txt); |
386 |
|
387 |
|
388 |
org.w3c.dom.NodeList list; |
389 |
list = dom.getElementsByTagName("api"); |
390 |
assertTrue("There is more than one api tag: " + txt[0], list.getLength() > 0); |
391 |
|
392 |
for (int i = 0; i < list.getLength(); i++) { |
393 |
org.w3c.dom.Node n = list.item(i); |
394 |
|
395 |
assertEquals ("group is java", "java", n.getAttributes().getNamedItem("group").getNodeValue()); |
396 |
assertEquals ("type is import", "import", n.getAttributes().getNamedItem("type").getNodeValue()); |
397 |
} |
398 |
|
399 |
assertEquals("Warnings are not included if defaultanswer is present: " + txt[0], -1, txt[0].indexOf("Default answer to this question")); |
400 |
} |
401 |
|
402 |
public void testReadNbDepsFromProjectXMLWhenDefaultAnswerProhibited () throws Exception { |
403 |
String[] txt = new String[1]; |
404 |
Document dom = doReadNbDepsFromProjectXML(" <defaultanswer generate='none'/>", txt); |
405 |
|
406 |
|
407 |
org.w3c.dom.NodeList list; |
408 |
list = dom.getElementsByTagName("api"); |
409 |
|
410 |
assertEquals("There is no api tag", 0, list.getLength()); |
411 |
} |
412 |
|
413 |
private Document doReadNbDepsFromProjectXML(String inlinedCode, String[] txt) throws Exception { |
414 |
java.io.File answers = PublicPackagesInProjectizedXMLTest.extractString ( |
415 |
"<?xml version='1.0' encoding='UTF-8'?>\n" + |
416 |
"<!--\n" + |
417 |
"Sun Public License Notice\n" + |
418 |
"-->\n" + |
419 |
// "<!DOCTYPE api-answers PUBLIC '-//NetBeans//DTD Arch Answers//EN' '../../nbbuild/antsrc/org/netbeans/nbbuild/Arch.dtd' [\n" + |
420 |
// The following lines needs to be commented out as we do not have the right relative locations! |
421 |
// instead there is a part of Arch-api-questions directly inserted into the document bellow |
422 |
// "<!ENTITY api-questions SYSTEM '../../nbbuild/antsrc/org/netbeans/nbbuild/Arch-api-questions.xml'>\n" + |
423 |
//"]>\n" + |
424 |
"\n" + |
425 |
"<api-answers\n" + |
426 |
"question-version='1.25'\n" + |
427 |
"module='Input/Output System'\n" + |
428 |
"author='jglick@netbeans.org'\n" + |
429 |
">\n" + |
430 |
"\n" + |
431 |
// "&api-questions;\n" + |
432 |
// replaced by part of api-questions entity |
433 |
"<api-questions version='1.25'>\n" + |
434 |
"<category id='dep' name='Dependencies'>\n" + |
435 |
"<question id='dep-nb' when='init' >\n" + |
436 |
"What other nb project this one depends on?\n" + |
437 |
"<hint>\n" + |
438 |
"Please provide here a few lines describing the project, \n" + |
439 |
"what problem it should solve, provide links to documentation, \n" + |
440 |
"specifications, etc.\n" + |
441 |
"</hint>\n" + |
442 |
"</question>\n" + |
443 |
"</category>\n" + |
444 |
"</api-questions> \n" + |
445 |
// end of Arch-api-questionx.xmls |
446 |
"\n" + |
447 |
"\n" + |
448 |
"<answer id='dep-nb'>\n" + |
449 |
"The Input/Output API is a small API module\n" + |
450 |
"which contains <code>InputOutput</code> and related interfaces used in\n" + |
451 |
"driving the Output Window. The normal implementation is <code>org.netbeans.core.output2</code>.\n" + |
452 |
inlinedCode + "\n" + |
453 |
"</answer>\n" + |
454 |
"\n" + |
455 |
"</api-answers> \n" |
456 |
); |
457 |
|
458 |
java.io.File project = PublicPackagesInProjectizedXMLTest.extractString( |
459 |
"<?xml version='1.0' encoding='UTF-8'?>\n" + |
460 |
"<!--\n" + |
461 |
"Sun Public License Notice\n" + |
462 |
"-->\n" + |
463 |
"<project xmlns='http://www.netbeans.org/ns/project/1'>\n" + |
464 |
"<type>org.netbeans.modules.apisupport.project</type>\n" + |
465 |
"<configuration>\n" + |
466 |
"<data xmlns='http://www.netbeans.org/ns/nb-module-project/2'>\n" + |
467 |
"<code-name-base>org.openide.loaders</code-name-base>\n" + |
468 |
"<module-dependencies>\n" + |
469 |
"<dependency>\n" + |
470 |
"<code-name-base>org.openide.util</code-name-base>\n" + |
471 |
"<build-prerequisite/>\n" + |
472 |
"<compile-dependency/>\n" + |
473 |
"<run-dependency>\n" + |
474 |
"<specification-version>6.2</specification-version>\n" + |
475 |
"</run-dependency>\n" + |
476 |
"</dependency>\n" + |
477 |
"<dependency>\n" + |
478 |
"<code-name-base>org.openide.filesystems</code-name-base>\n" + |
479 |
"<build-prerequisite/>\n" + |
480 |
"<compile-dependency/>\n" + |
481 |
"<run-dependency>\n" + |
482 |
"<specification-version>6.2</specification-version>\n" + |
483 |
"</run-dependency>\n" + |
484 |
"</dependency>\n" + |
485 |
"<dependency>\n" + |
486 |
"<code-name-base>org.openide.nodes</code-name-base>\n" + |
487 |
"<build-prerequisite/>\n" + |
488 |
"<compile-dependency/>\n" + |
489 |
"<run-dependency>\n" + |
490 |
"<specification-version>6.2</specification-version>\n" + |
491 |
"</run-dependency>\n" + |
492 |
"</dependency>\n" + |
493 |
"<dependency>\n" + |
494 |
"<code-name-base>org.openide.dialogs</code-name-base>\n" + |
495 |
"<build-prerequisite/>\n" + |
496 |
"<compile-dependency/>\n" + |
497 |
"<run-dependency>\n" + |
498 |
"<specification-version>6.2</specification-version>\n" + |
499 |
"</run-dependency>\n" + |
500 |
"</dependency>\n" + |
501 |
"<dependency>\n" + |
502 |
"<code-name-base>org.openide.modules</code-name-base>\n" + |
503 |
"<build-prerequisite/>\n" + |
504 |
"<compile-dependency/>\n" + |
505 |
"<run-dependency>\n" + |
506 |
"<specification-version>6.2</specification-version>\n" + |
507 |
"</run-dependency>\n" + |
508 |
"</dependency>\n" + |
509 |
"<dependency>\n" + |
510 |
"<code-name-base>org.openide.awt</code-name-base>\n" + |
511 |
"<build-prerequisite/>\n" + |
512 |
"<compile-dependency/>\n" + |
513 |
"<run-dependency>\n" + |
514 |
"<specification-version>6.2</specification-version>\n" + |
515 |
"</run-dependency>\n" + |
516 |
"</dependency>\n" + |
517 |
"<dependency>\n" + |
518 |
"<code-name-base>org.openide.explorer</code-name-base>\n" + |
519 |
"<build-prerequisite/>\n" + |
520 |
"<compile-dependency/>\n" + |
521 |
"<run-dependency>\n" + |
522 |
"<specification-version>6.2</specification-version>\n" + |
523 |
"</run-dependency>\n" + |
524 |
"</dependency>\n" + |
525 |
"<dependency>\n" + |
526 |
"<code-name-base>org.openide.actions</code-name-base>\n" + |
527 |
"<build-prerequisite/>\n" + |
528 |
"<compile-dependency/>\n" + |
529 |
"<run-dependency>\n" + |
530 |
"<specification-version>6.2</specification-version>\n" + |
531 |
"</run-dependency>\n" + |
532 |
"</dependency>\n" + |
533 |
"<dependency>\n" + |
534 |
"<code-name-base>org.openide.text</code-name-base>\n" + |
535 |
"<build-prerequisite/>\n" + |
536 |
"<compile-dependency/>\n" + |
537 |
"<run-dependency>\n" + |
538 |
"<specification-version>6.2</specification-version>\n" + |
539 |
"</run-dependency>\n" + |
540 |
"</dependency>\n" + |
541 |
"<dependency>\n" + |
542 |
"<code-name-base>org.openide.windows</code-name-base>\n" + |
543 |
"<build-prerequisite/>\n" + |
544 |
"<compile-dependency/>\n" + |
545 |
"<run-dependency>\n" + |
546 |
"<specification-version>6.2</specification-version>\n" + |
547 |
"</run-dependency>\n" + |
548 |
"</dependency>\n" + |
549 |
"</module-dependencies>\n" + |
550 |
"<public-packages>\n" + |
551 |
"<package>org.openide.awt</package>\n" + |
552 |
"<package>org.openide.actions</package>\n" + |
553 |
"<package>org.openide.loaders</package>\n" + |
554 |
"<package>org.openide.text</package>\n" + |
555 |
"</public-packages>\n" + |
556 |
"</data>\n" + |
557 |
"</configuration>\n" + |
558 |
"</project>\n" + |
559 |
""); |
560 |
|
561 |
|
562 |
java.io.File output = PublicPackagesInProjectizedXMLTest.extractString(""); |
563 |
assertTrue("File can be deleted: " + output, output.delete()); |
564 |
|
565 |
java.io.File xsl = PublicPackagesInProjectizedXMLTest.extractString( |
566 |
"<?xml version='1.0' encoding='UTF-8' ?>\n" + |
567 |
"<xsl:stylesheet version='1.0' xmlns:xsl='http://www.w3.org/1999/XSL/Transform'>\n" + |
568 |
"<xsl:output method='xml'/>\n" + |
569 |
"<!-- Format random HTML elements as is: -->\n" + |
570 |
"<xsl:template match='@*|node()'>\n" + |
571 |
"<xsl:copy>\n" + |
572 |
"<xsl:apply-templates select='@*|node()'/>\n" + |
573 |
"</xsl:copy>\n" + |
574 |
"</xsl:template>\n" + |
575 |
"</xsl:stylesheet> \n" |
576 |
); |
577 |
|
578 |
java.io.File f = PublicPackagesInProjectizedXMLTest.extractString ( |
579 |
"<?xml version=\"1.0\" encoding=\"UTF-8\"?>" + |
580 |
"<project name=\"Test Arch\" basedir=\".\" default=\"all\" >" + |
581 |
" <taskdef name=\"arch\" classname=\"org.netbeans.nbbuild.Arch\" classpath=\"${nb_all}/nbbuild/nbantext.jar\"/>" + |
582 |
" <arch answers=\"" + answers + "\" output='" + output + "'" + |
583 |
" project='" + project + "' \n" + |
584 |
" xsl='" + xsl + "' \n" + |
585 |
" />\n" + |
586 |
"<target name=\"all\" >" + |
587 |
" " + |
588 |
"</target>" + |
589 |
"</project>" |
590 |
|
591 |
); |
592 |
PublicPackagesInProjectizedXMLTest.execute (f, new String[] { |
593 |
"-Darch.private.disable.validation.for.test.purposes=true", |
594 |
}); |
595 |
|
596 |
assertTrue ("Answers still exists", answers.exists ()); |
597 |
assertTrue ("Output file generated", output.exists ()); |
598 |
|
599 |
txt[0] = PublicPackagesInProjectizedXMLTest.readFile(output); |
600 |
|
601 |
org.w3c.dom.Document dom = DocumentBuilderFactory.newInstance().newDocumentBuilder().parse(output); |
602 |
return dom; |
318 |
} |
603 |
} |
319 |
|
604 |
|
320 |
} |
605 |
} |