You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

ajcCommandLineTest.sh 4.5KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179
  1. #!/bin/sh
  2. # info: test ajc command line
  3. # syntax: $0 (define JDKDIR and AJ_BASE)
  4. # @testcase PR#655 ajc errors when output dir is bad
  5. # @process-test ajc acjCommandLineTest.sh # test PR#655 ajc errors when output dir is bad
  6. [ -n "$DEBUG" ] && set -vx
  7. errMssg() {
  8. [ -n "$1" ] && echo "## $0 $1"
  9. [ -n "$2" ] && exit "$2"
  10. }
  11. generateMinimalSource() { # todo: share with other tests
  12. mkdir -p src src/pack
  13. genSource "" Main "Main pack.Main" > src/Main.java
  14. genSource pack Main "pack.Main" > src/pack/Main.java
  15. cat > src/minimal_pack.Main_0.lst <<EOF
  16. pack/Main.java
  17. EOF
  18. cat > src/minimal_Main_1.lst <<EOF
  19. Main.java
  20. pack/Main.java
  21. EOF
  22. cat > src/pack/minimal_Main_2.lst <<EOF
  23. ../Main.java
  24. Main.java
  25. EOF
  26. cat > src/pack/minimal_Main_3.lst <<EOF
  27. ../*.java
  28. *.java
  29. EOF
  30. cat > minimal_Main_4.lst <<EOF
  31. @src/minimal_Main_1.lst
  32. EOF
  33. cat > src/minimal_Main_5.lst <<EOF
  34. @minimal_Main_1.lst
  35. EOF
  36. cat > src/minimal_Main_6.lst <<EOF
  37. @../src/minimal_Main_1.lst
  38. EOF
  39. cat > src/minimal_Main_7.lst <<EOF
  40. // starting comment
  41. Main.java // end of line comment
  42. // middle comment
  43. pack/Main.java
  44. // end comment
  45. EOF
  46. cat > src/minimal_Main_8.lst <<EOF
  47. *.java
  48. pack/*.java
  49. EOF
  50. echo "minimal"
  51. }
  52. genSource() { # todo share with other tests
  53. package="$1"
  54. class="$2"
  55. refs="$3"
  56. if [ -z "$package" ] ; then
  57. name="$class"
  58. else
  59. echo "package $package;"
  60. name="$package.$class"
  61. fi
  62. cat<<EOF
  63. public class $class {
  64. public static final String NAME = "$name";
  65. public static String[] ARGS = new String[]
  66. EOF
  67. sep='{'
  68. for i in $refs ; do
  69. echo " $sep ${i}.NAME"
  70. sep=','
  71. done
  72. cat<<EOF
  73. };
  74. public static void main (String[] args) {
  75. util.Util.signal(NAME + ".main",ARGS);
  76. }
  77. } // class $class
  78. EOF
  79. }
  80. getMain() {
  81. [ -n "$1" ] && echo "$1" | sed 's|.*_\([^_][^_]*\)_.*|\1|'
  82. }
  83. compile() {
  84. ccdir="${globalClasses:-classes}"
  85. [ -d "$ccdir" ] || mkdir "$ccdir"
  86. rm -rf "$ccdir"/*
  87. $JDKDIR/bin/java -classpath "$toolsjar" org.aspectj.tools.ajc.Main \
  88. -d "$ccdir" -classpath "$utiljar${PS}$rtjar" "${@}"
  89. }
  90. run() {
  91. $JDKDIR/bin/java -classpath "$utiljar${PS}$rtjar${PS}$ccdir" "${@}"
  92. }
  93. testAjc() {
  94. argfile="$1"
  95. shift
  96. [ -n "$VERBOSE" ] && echo "# $1"
  97. [ -f "$argfile" ] || errMssg "testAjc argfile: $1" 3
  98. main=`getMain "$argfile"`
  99. [ -n "$main" ] || errMssg "testAjc no main for argfile: $argfile" 3
  100. compile -argfile "$argfile" "${@}" || errMssg "testAjc compile 1 fail: $argfile" 3
  101. run "$main" || errMssg "testAjc run 1 fail: $argfile" 3
  102. compile @"$argfile" "${@}" || errMssg "testAjc compile 2 fail: $argfile" 3
  103. run "$main" || errMssg "testAjc run 2 fail: $argfile" 3
  104. }
  105. createUtilJar() {
  106. mkdir util
  107. cat > util/Util.java <<EOF
  108. package util;
  109. public class Util {
  110. public static void signal(String label, String[] names) {
  111. boolean printing = $printing;
  112. if (printing) {
  113. StringBuffer sb = new StringBuffer();
  114. sb.append(label);
  115. sb.append("=[");
  116. for (int i = 0; i < names.length; i++) {
  117. if (i > 0) sb.append(", ");
  118. sb.append(names[i]);
  119. }
  120. sb.append("]");
  121. System.out.println(sb.toString());
  122. }
  123. }
  124. }
  125. EOF
  126. compile util/Util.java
  127. "$JDKDIR/bin/jar" cf "$utiljar" -C classes .
  128. rm -rf util
  129. }
  130. getArgFiles() {
  131. name="$1"
  132. find . -name "$1"\*.lst | sed 's|./||'
  133. }
  134. echoSetup() {
  135. cat<<EOF
  136. ##### setup for $0
  137. JDKDIR: $JDKDIR
  138. AJ_BASE: $AJ_BASE
  139. uname -a: `uname -a`
  140. EOF
  141. }
  142. ############################################################## execution
  143. printing=true # must be true or false
  144. JDKDIR="${JDKDIR:-c:/home/apps/jdk13}"
  145. AJ_BASE="${AJ_BASE:-c:/home/wes/aj/aj-dist/tools}"
  146. [ -d "$JDKDIR" ] || errMssg "require JDKDIR=$JDKDIR" 3
  147. [ -d "$AJ_BASE" ] || errMssg "require AJ_BASE=$AJ_BASE" 3
  148. toolsjar="$AJ_BASE/lib/aspectjtools.jar"
  149. rtjar="$AJ_BASE/lib/aspectjrt.jar"
  150. utiljar="$AJ_BASE/lib/argfilesUtil.jar"
  151. [ -f "$toolsjar" ] || errMssg "require toolsjar=$toolsjar" 3
  152. [ -f "$rtjar" ] || errMssg "require rtjar=$rtjar" 3
  153. [ -f "$utiljar" ] || createUtilJar
  154. echoSetup
  155. d=temp`basename $0`
  156. [ -d $d ] && rm -rf $d
  157. mkdir $d && cd $d
  158. export globalClasses='bad dir '
  159. name=`generateMinimalSource`
  160. for i in `getArgFiles "$name"` ; do
  161. testAjc "$i" # expecting CE, not stack trace
  162. done
  163. echo "tests passed if no compiler failures, only output"