1 28 29 package com.idaremedia.antx.ut; 30 31 import java.io.File ; 32 import java.io.InputStream ; 33 import java.io.PrintStream ; 34 import java.net.URL ; 35 36 import org.apache.tools.ant.BuildFileTest; 37 import org.apache.tools.ant.BuildException; 38 import com.idaremedia.antx.AntX; 39 import com.idaremedia.antx.AntXFixture; 40 import com.idaremedia.antx.Problems; 41 import com.idaremedia.antx.helpers.Tk; 42 43 59 60 public abstract class HTC extends BuildFileTest 61 { 62 67 protected HTC(String groupid, String methodName) 68 { 69 super(methodName); 70 m_groupid= groupid==null ? "" : groupid; 71 initIfMustBlockCDATA(); 72 } 73 74 75 78 protected HTC(String methodName) 79 { 80 super(methodName); 81 initIfMustBlockCDATA(); 82 } 83 84 85 88 protected HTC() 89 { 90 super("checkBaseline"); 91 initIfMustBlockCDATA(); 92 } 93 94 98 101 public static void cvfail(String message) 102 { 103 throw new TestError(message); 104 } 105 106 107 111 public final void require_(boolean cond, String msg) 112 { 113 if (!cond) { 114 cvfail("require:"+msg); 115 } 116 } 117 118 119 123 public final void ensure_(boolean cond, String msg) 124 { 125 if (!cond) { 126 cvfail("ensure:"+msg); 127 } 128 } 129 130 131 136 public final void verify_(boolean cond, String msg) 137 { 138 if (!cond) { 139 cvfail("verify:"+msg); 140 } 141 } 142 143 144 149 public void unexpected_(Throwable tbtn, String msg) 150 { 151 System.err.println("** ERROR[internal]:"+msg+tbtn); 152 } 153 154 155 159 protected void irupted_(InterruptedException ix, String msg) 160 { 161 System.err.println("** WARNG[internal]: Interrupted Thread:"+msg+ix); 162 Thread.currentThread().interrupt(); 163 } 164 165 166 170 171 private String m_groupid= ""; 172 173 174 protected PrintStream m_stdout= System.out; 175 176 177 180 protected final boolean isBlockedCDATA(String s) 181 { 182 if (m_blockCDATA) { 183 if (s.indexOf("<![CDATA[")>=0) { 184 return true; } 186 } 187 return false; 188 } 189 190 194 protected void println(String s) 195 { 196 if (!isBlockedCDATA(s)) { 197 m_stdout.println(s); 198 } else { 199 m_stdout.println("** ALERT[internal]: BLOCKED"); 200 } 201 } 202 203 204 208 protected void println(String label, Object o) 209 { 210 String s= String.valueOf(o); 211 if (!isBlockedCDATA(s)) { 212 m_stdout.println(label+"\n"+s); 213 } else { 214 m_stdout.println("** ALERT[internal]: BLOCKED"); 215 } 216 } 217 218 219 222 protected final void println() 223 { 224 println(""); 225 } 226 227 228 234 protected final void setupStandardOut(PrintStream outp) 235 { 236 require_(outp!=null,"stdout- nonzro stream"); 237 m_stdout= outp; 238 } 239 240 241 245 246 249 protected final InputStream getFileResourceAsStream(String resource, Class forClass) 250 { 251 require_(resource!=null && forClass!=null,"getRez- nonzro inputs"); 252 InputStream resFile = forClass.getResourceAsStream(resource); 253 if (resFile==null) { resFile= ClassLoader.getSystemResourceAsStream(resource); } 254 assertNotNil(resFile,"Class "+forClass.getName()+" input resource' ("+resource+")'"); 255 return resFile; 256 } 257 258 259 262 protected final InputStream getFileResourceAsStream(String resource) 263 { 264 return getFileResourceAsStream(resource, getClass()); 265 } 266 267 268 275 protected final File getFileResource(String resource, Class forClass) 276 { 277 require_(forClass!=null,"getFil- nonzro clas"); 278 require_(resource!=null,"getFil- nonzro rez"); 279 280 final String what = "Class "+forClass.getName()+" input resource' ("+resource+")'"; 281 282 URL url = forClass.getResource(resource); 283 if (url==null) { url = ClassLoader.getSystemResource(resource); } 284 assertNotNil(url, what); 285 286 File f = Tk.toFile(url); 287 assertNotNil(f, what); 288 assertTrue(f.canRead(), "CanRead: "+what); 289 290 return f; 291 } 292 293 294 297 protected final File getFileResource(String resource) 298 { 299 return getFileResource(resource, getClass()); 300 } 301 302 303 307 protected final void configureProjectFromResource(String resource) 308 { 309 configureProject(getFileResource(resource).getPath()); 310 } 311 312 313 317 318 323 public static final void failASAP(String msg) 324 { 325 fail(msg); } 327 328 329 334 public static final void failASAP(Throwable t) 335 { 336 fail(t.getMessage()); } 338 339 340 344 public static final void failNotEqualASAP(Object actual, Object expected, String msg) 345 { 346 String formatted=""; 347 if (msg!=null) { 348 formatted = msg+" "; 349 } 350 formatted = formatted+"expected:[["+expected+"]] but was:[["+actual+"]]"; 352 fail(formatted); } 354 355 356 360 public static final void failEqualASAP(Object actual, Object expected, String msg) 361 { 362 String formatted=""; 363 if (msg!=null) { 364 formatted = msg+" "; 365 } 366 formatted = formatted+"expected NOT to equal:[["+expected+"]]"; 368 fail(formatted); } 370 371 372 374 377 protected void enter_(String methodName) 378 { 379 println("\n------("+m_groupid+methodName+"[Ant="+AntX.ANT_VERSIONSTRING+"]): \n"); 380 } 381 382 383 386 protected void leave_(String methodName) 387 { 388 } 389 390 391 395 public void runBare() throws Throwable 396 { 397 AntXFixture.reset(Problems.IgnoringHandler); enter_(getName()); 399 setUp(); 400 try { 401 runTest(); 402 } finally { 404 tearDown(); 406 leave_(getName()); 407 } 408 } 409 410 411 415 protected void tearDown() throws Exception { 416 if (getProject()!=null && getProject().getTargets()==null) { 417 super.tearDown(); 418 } 419 } 420 421 425 429 public static final void fail(Throwable t) 430 { 431 fail(t.getMessage()); 432 } 433 434 435 439 public static final void assertEqual(Object actual, Object expected, String msg) 440 { 441 if (expected == null && actual == null) { 442 return; 443 } 444 if (expected != null && expected.equals(actual)) { 445 return; 446 } 447 448 String formatted=""; 450 if (msg!=null) { 451 formatted = msg+" "; 452 } 453 formatted = formatted+"expected:[["+expected+"]] but was:[["+actual+"]]"; 454 fail(formatted); } 456 457 458 462 public static final void assertNotEqual(Object actual, Object expected, String msg) 463 { 464 if (expected==null && actual!=null) { 465 return; 466 } 467 if (expected!=null && actual==null) { 468 return; 469 } 470 if (!actual.equals(expected)) { 471 return; 472 } 473 474 String formatted=""; 476 if (msg!=null) { 477 formatted = msg+" "; 478 } 479 formatted = formatted+"expected NOT to equal:[["+expected+"]]"; 480 fail(formatted); } 482 483 485 489 public static final void assertIdent(Object actual, Object expected, String msg) 490 { 491 if (expected==actual) { 492 return; 493 } 494 String formatted=""; 495 if (msg!=null) { 496 formatted = msg+" "; 497 } 498 failASAP(formatted+"expected identical"); 499 } 500 501 502 503 public static final void assertIdent(Object actual, Object expected) 504 { 505 assertIdent(expected,actual,null); 506 } 507 508 509 513 public static final void assertNotIdent(Object actual, Object expected, String msg) 514 { 515 if (expected==actual) { 516 String formatted=""; 517 if (msg!=null) { 518 formatted = msg+" "; 519 } 520 failASAP(formatted+"expected NOT to be identical"); 521 } 522 } 523 524 525 526 public static final void assertNotIdent(Object actual, Object expected) 527 { 528 assertNotIdent(actual,expected,null); 529 } 530 531 533 537 public static final void assertFalse(boolean actual) 538 { 539 assertEqual(actual, false); 540 } 541 542 543 547 public static final void assertFalse(boolean actual, String msg) 548 { 549 assertEqual(actual,false,msg); 550 } 551 552 553 557 public static final void assertTrue(boolean actual) { 559 assertEqual(actual,true); 560 } 561 562 563 567 public static final void assertTrue(boolean actual, String msg) 568 { 569 assertEqual(actual,true,msg); 570 } 571 572 574 575 public static final void assertNil(Object actual) 576 { 577 assertNil(actual,null); 578 } 579 580 581 public static final void assertNil(Object actual, String msg) 582 { 583 585 589 if (actual!=null) { 590 String formatted=""; 591 if (msg!=null) { 592 formatted = msg+" "; 593 } 594 595 formatted = formatted+"expected TO BE NULL but was not."; 596 fail(formatted); 597 } 598 } 599 600 601 public static final void assertNotNil(Object actual) 602 { 603 assertNotNil(actual,null); 604 } 605 606 607 public static final void assertNotNil(Object actual, String msg) 608 { 609 611 615 if (actual==null) { 616 String formatted=""; 617 if (msg!=null) { 618 formatted = msg+" "; 619 } 620 621 formatted = formatted+"expected NOT TO BE NULL but was."; 622 fail(formatted); 623 } 624 } 625 626 630 631 public static final void assertEqual(Object actual, Object expected) 632 { 633 assertEqual(actual,expected,null); 634 } 635 636 637 public static final void assertEqual(boolean actual, boolean expected) 638 { 639 assertEqual(actual,expected,null); 640 } 641 642 public static final void assertEqual(boolean actual, boolean expected, String msg) 643 { 644 assertEqual(actual ? Boolean.TRUE : Boolean.FALSE, expected ? Boolean.TRUE : Boolean.FALSE, msg); 645 } 646 647 648 public static final void assertEqual(char actual, char expected) 649 { 650 assertEqual(actual,expected,null); 651 } 652 653 public static final void assertEqual(char actual, char expected, String msg) 654 { 655 assertEqual(new Character (actual),new Character (expected),msg); 656 } 657 658 659 public static final void assertEqual(float actual, float expected, float delta) 660 { 661 assertEqual(actual,expected,delta,null); 662 } 663 664 public static final void assertEqual(float actual, float expected, float delta, String msg) 665 { 666 if (Float.isInfinite(expected)) { 667 if (!(expected==actual)) { 668 failNotEqualASAP(new Float (actual), new Float (expected), msg); 669 } 670 } else if (!(Math.abs(expected-actual)<=delta)) { 671 failNotEqualASAP(new Float (actual), new Float (expected), msg); 672 } 673 } 674 675 public static final void assertEqual(float actual, float expected) 676 { 677 assertEqual(actual,expected,0f,null); 678 } 679 680 681 public static final void assertEqual(double actual, double expected, double delta) 682 { 683 assertEqual(actual,expected,delta,null); 684 } 685 686 public static final void assertEqual(double actual, double expected, double delta, String msg) 687 { 688 if (Double.isInfinite(expected)) { 689 if (!(expected==actual)) { 690 failNotEqualASAP(new Double (actual), new Double (expected), msg); 691 } 692 } else if (!(Math.abs(expected-actual)<=delta)) { 693 failNotEqualASAP(new Double (actual), new Double (expected), msg); 694 } 695 } 696 697 public static final void assertEqual(double actual, double expected) 698 { 699 assertEqual(actual,expected,0d,null); 700 } 701 702 703 public static final void assertEqual(byte actual, byte expected) 704 { 705 assertEqual(actual,expected,null); 706 } 707 708 public static final void assertEqual(byte actual, byte expected, String msg) 709 { 710 assertEqual(new Byte (actual),new Byte (expected),msg); 711 } 712 713 714 public static final void assertEqual(short actual, short expected) 715 { 716 assertEqual(actual,expected,null); 717 } 718 719 public static final void assertEqual(short actual, short expected, String msg) 720 { 721 assertEqual(new Short (actual), new Short (expected), msg); 722 } 723 724 725 public static final void assertEqual(int actual, int expected) 726 { 727 assertEqual(actual,expected,null); 728 } 729 730 public static final void assertEqual(int actual, int expected, String msg) 731 { 732 assertEqual(new Integer (actual), new Integer (expected), msg); 733 } 734 735 736 public static final void assertEqual(long actual, long expected) 737 { 738 assertEqual(actual,expected,null); 739 } 740 741 public static final void assertEqual(long actual, long expected, String msg) 742 { 743 assertEqual(new Long (actual), new Long (expected), msg); 744 } 745 746 750 754 public static final void assertNotEqual(Object actual, Object expected) 755 { 756 assertNotEqual(actual,expected,null); 757 } 758 759 760 public static void assertNotEqual(boolean actual, boolean expected, String msg) 761 { 762 assertNotEqual(new Boolean (actual), new Boolean (expected), msg); 763 } 764 765 public static void assertNotEqual(boolean actual, boolean expected) 766 { 767 assertNotEqual(actual, expected, null); 768 } 769 770 771 public static final void assertNotEqual(char actual, char expected, String msg) 772 { 773 assertNotEqual(new Character (actual), new Character (expected), msg); 774 } 775 776 public static void assertNotEqual(char actual, char expected) 777 { 778 assertNotEqual(actual, expected, null); 779 } 780 781 782 public static void assertNotEqual(byte actual, byte expected, String msg) 783 { 784 assertNotEqual(new Byte (actual), new Byte (expected), msg); 785 } 786 787 public static void assertNotEqual(byte actual, byte expected) 788 { 789 assertNotEqual(actual, expected, null); 790 } 791 792 793 public static void assertNotEqual(short actual, short expected, String msg) 794 { 795 assertNotEqual(new Short (actual), new Short (expected), msg); 796 } 797 798 public static void assertNotEqual(short actual, short expected) 799 { 800 assertNotEqual(actual, expected, null); 801 } 802 803 804 public static void assertNotEqual(int actual, int expected, String msg) 805 { 806 assertNotEqual(new Integer (actual), new Integer (expected), msg); 807 } 808 809 public static void assertNotEqual(int actual, int expected) 810 { 811 assertNotEqual(actual, expected, null); 812 } 813 814 815 public static void assertNotEqual(long actual, long expected, String msg) 816 { 817 assertNotEqual(new Long (actual), new Long (expected), msg); 818 } 819 820 public static void assertNotEqual(long actual, long expected) 821 { 822 assertNotEqual(actual, expected, null); 823 } 824 825 828 public static void assertNotEqual(float actual, float expected, float delta) 829 { 830 assertNotEqual(actual,expected,delta,null); 831 } 832 835 public static void assertNotEqual(float actual, float expected, float delta, String msg) 836 { 837 if (Float.isInfinite(expected)) { 838 if (expected==actual) { 839 failEqualASAP(new Float (actual),new Float (expected),msg); 840 } 841 } else if ((Math.abs(expected-actual)<=delta)) { 842 failEqualASAP(new Float (actual), new Float (expected), msg); 843 } 844 } 845 848 public static void assertNotEqual(float actual, float expected) 849 { 850 assertNotEqual(actual,expected,0f,null); 851 } 852 853 856 public static void assertNotEqual(double actual, double expected, double delta, String msg) 857 { 858 if (Double.isInfinite(expected)) { 859 if (expected==actual) { 860 failEqualASAP(new Double (actual),new Double (expected),msg); 861 } 862 } else if ((Math.abs(expected-actual)<=delta)) { 863 failEqualASAP(new Double (actual), new Double (expected), msg); 864 } 865 } 866 869 public static void assertNotEqual(double actual, double expected, double delta) 870 { 871 assertNotEqual(actual,expected,delta,null); 872 } 873 876 public static void assertNotEqual(double actual, double expected) 877 { 878 assertNotEqual(actual,expected,0d,null); 879 } 880 881 885 888 protected final void assertExpected(Throwable thr, String tag) 889 { 890 require_(thr!=null, "verfyXpected- nonzro throwable"); 891 String s= thr.getMessage(); 892 if (s==null) { 893 failASAP("Barfage from("+tag+") expected but got NULL message"); 894 } else if (s.indexOf(tag)<0) { 895 failASAP("Barfage from("+tag+") expected but not found. Actual:[["+s+"]]"); 896 } 897 } 898 899 900 904 protected final void assertExpected(Throwable thr, Class thrClass, String tag) 905 { 906 require_(thr!=null, "verfyXpected- nonzro throwable"); 907 if (!thrClass.isAssignableFrom(thr.getClass())) { 908 failASAP("Barfage from("+tag+") expected throwable of class[["+thrClass.getName()+"]]. "+ 909 "Actual class[["+thr.getClass().getName()+"]]"); 910 } else { 911 assertExpected(thr,tag); 912 } 913 } 914 915 916 917 919 public final void assertNotWhitespace(String s) 920 { 921 assertNotWhitespace(s,"Is whitespace?"); 922 } 923 924 925 927 public final void assertNotWhitespace(String s, String msg) 928 { 929 if (s==null) { 930 failEqualASAP(s,"NULL string",msg); 931 } else if (s.length()==0) { 932 failEqualASAP(s,"zero length string",msg); 933 } else { 934 for (int i=0,n=s.length();i<n;i++) { 935 if (!Character.isWhitespace(s.charAt(i))) { 936 return; 937 } 938 } 939 } 940 failASAP(msg); 941 } 942 943 944 948 952 protected void expectFullLogContaining(String target, String log) { 953 executeTarget(target); 954 String realLog = getFullLog(); 955 assertTrue("expecting fulllog to contain \""+log+"\" log was \"" 956 + realLog + "\"", 957 realLog.indexOf(log) >= 0); 958 } 959 960 961 965 protected final String runTarget(String target) 966 { 967 require_(target!=null,"runTarget- nonzro name"); 968 String log=null; 969 try { 970 executeTarget(target); 971 }finally { 972 log= getLog(); 973 println("ANT's INFO+WARN+ERR LLLOOOGGG: ----",log); 974 } 975 return log; 976 } 977 978 979 983 protected final String runTargetDumpFullLog(String target) 984 { 985 try { 986 return runTarget(target); 987 }finally { 988 println(); 989 println("FFFUUUUUULLLLL LOG:",getFullLog()); 990 } 991 } 992 993 994 998 protected final String runTargetNoOutput(String target) 999 { 1000 String log = runTarget(target); 1001 assertEqual(log.length(),0,"Generated log output"); 1002 return log; 1003 } 1004 1005 1006 1010 protected final void verifyOccurances(final String log, final String ofStr, 1011 final int Nexpected) 1012 { 1013 int Nfound = 0; 1014 int i, from=0; 1015 while ((i=log.indexOf(ofStr,from))>=0) { 1016 Nfound++; 1017 from = i+ofStr.length(); 1018 } 1019 assertTrue("Expecting Log to contain \""+Nexpected+"\" occurances of ["+ofStr+ 1020 "] but Log was \"" + log + "\"", 1021 Nfound==Nexpected); 1022 } 1023 1024 1025 1029 protected final String runExpecting(String target, String cause) 1030 { 1031 expectBuildException(target,cause); 1032 String log = getLog(); 1033 println("ANT's INFO+WARN+ERR LLLOOOGGG: ----",log); 1034 return log; 1035 } 1036 1037 1038 1042 protected final void verifyOutputInOrder(final String log, String [] strings) 1043 { 1044 final int Nmax = log.length(); 1045 int ilast=0; 1046 for (int i=0;i<strings.length;i++) { 1047 int at = log.indexOf(strings[i], ilast); 1048 assertTrue("Expecting Log to contain \""+strings[i]+"\" in relative position ["+i+ 1049 "] but Log was \"" + log + "\"", 1050 at>=0); 1051 ilast = at+strings[i].length(); 1052 if ((ilast==Nmax) && (i!=strings.length-1)) { 1053 fail("Expecting Log to contain more messages("+strings[i+1]+", ...etc.) but "+ 1054 "Log is ended after ("+strings[i]+") Log was \""+ log + "\""); 1055 } 1056 } 1057 } 1058 1059 1060 1064 protected final void verifyCantLoadFile(String resource, String problem) 1065 { 1066 try { 1067 configureProjectFromResource(resource); 1068 if (AntX.STRICT_SCRIPTS || "true".equals(System.getProperty(AntX.STRICT_SCRIPTCHECK_PROP))) { 1069 runTarget(getProject().getDefaultTarget()); } 1071 fail("Should not be able parse file with "+problem+ 1072 "! Strict="+AntX.STRICT_SCRIPTS); 1073 }catch(BuildException x) { 1074 println("LOADFILE-BARFAGE: ",x.getMessage()); 1075 1076 } 1077 } 1078 1079 1080 1081 1087 private boolean m_blockCDATA=false; 1088 1089 private void initIfMustBlockCDATA() 1090 { 1091 String s; 1092 s= readEnv(HTestConstants.BLOCK_CDATA_STDIO); 1093 if (s!=null) { 1094 s= s.toLowerCase(); 1095 } 1096 if ("true".equals(s) || "on".equals(s)) { 1097 m_blockCDATA=true; 1098 } 1099 } 1100 1101 private String readEnv(String name) 1102 { 1103 try { 1104 return System.getProperty(name); 1105 } catch(SecurityException sx) { 1106 } 1107 return null; } 1109 1110} 1111 1112 1113 | Popular Tags |