xref: /aoo4110/main/solenv/inc/javaunittest.mk (revision b1cdbd2c)
1*b1cdbd2cSJim Jagielski#**************************************************************
2*b1cdbd2cSJim Jagielski#
3*b1cdbd2cSJim Jagielski#  Licensed to the Apache Software Foundation (ASF) under one
4*b1cdbd2cSJim Jagielski#  or more contributor license agreements.  See the NOTICE file
5*b1cdbd2cSJim Jagielski#  distributed with this work for additional information
6*b1cdbd2cSJim Jagielski#  regarding copyright ownership.  The ASF licenses this file
7*b1cdbd2cSJim Jagielski#  to you under the Apache License, Version 2.0 (the
8*b1cdbd2cSJim Jagielski#  "License"); you may not use this file except in compliance
9*b1cdbd2cSJim Jagielski#  with the License.  You may obtain a copy of the License at
10*b1cdbd2cSJim Jagielski#
11*b1cdbd2cSJim Jagielski#    http://www.apache.org/licenses/LICENSE-2.0
12*b1cdbd2cSJim Jagielski#
13*b1cdbd2cSJim Jagielski#  Unless required by applicable law or agreed to in writing,
14*b1cdbd2cSJim Jagielski#  software distributed under the License is distributed on an
15*b1cdbd2cSJim Jagielski#  "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
16*b1cdbd2cSJim Jagielski#  KIND, either express or implied.  See the License for the
17*b1cdbd2cSJim Jagielski#  specific language governing permissions and limitations
18*b1cdbd2cSJim Jagielski#  under the License.
19*b1cdbd2cSJim Jagielski#
20*b1cdbd2cSJim Jagielski#**************************************************************
21*b1cdbd2cSJim Jagielski
22*b1cdbd2cSJim Jagielski
23*b1cdbd2cSJim Jagielski
24*b1cdbd2cSJim Jagielski# Makefile template for directories that contain Java unit tests.
25*b1cdbd2cSJim Jagielski#
26*b1cdbd2cSJim Jagielski# Before including this makefile, the following variables should be set:
27*b1cdbd2cSJim Jagielski# - PRJ, PRJNAME, TARGET
28*b1cdbd2cSJim Jagielski# - PACKAGE
29*b1cdbd2cSJim Jagielski# - JAVATESTFILES: the unit test classes;
30*b1cdbd2cSJim Jagielski#     each one of the form <basename>.java;
31*b1cdbd2cSJim Jagielski#     these java files must only define classes within the package corresponding
32*b1cdbd2cSJim Jagielski#     to PACKAGE, the name of each defined (outer) class should end with "_Test"
33*b1cdbd2cSJim Jagielski# - JAVAFILES: optional java files, corresponding class files are generated
34*b1cdbd2cSJim Jagielski#     that can be used when compiling or running the tests;
35*b1cdbd2cSJim Jagielski#     each one of the form <basename>.java;
36*b1cdbd2cSJim Jagielski#     these java files must only define classes within the package corresponding
37*b1cdbd2cSJim Jagielski#     to PACKAGE, the name of each defined (outer) class should start with
38*b1cdbd2cSJim Jagielski#     "Test"
39*b1cdbd2cSJim Jagielski# - IDLTESTFILES: optional idl files, corresponding class files are generated
40*b1cdbd2cSJim Jagielski#     that can be used when compiling or running the tests;
41*b1cdbd2cSJim Jagielski#     each one of the form <basename>.idl;
42*b1cdbd2cSJim Jagielski#     these idl files must only define entities within the module corresponding
43*b1cdbd2cSJim Jagielski#     to PACKAGE, the name of each defined entity should start with "Test"
44*b1cdbd2cSJim Jagielski# - JARFILES: optional jar files that can be used when compiling or running the
45*b1cdbd2cSJim Jagielski#     tests;
46*b1cdbd2cSJim Jagielski#     each one of the form <basename>.jar
47*b1cdbd2cSJim Jagielski# All generated class files are placed into <platform>/class/test/ instead of
48*b1cdbd2cSJim Jagielski# <platform>/class/, so that they are not accidentally included in jar files
49*b1cdbd2cSJim Jagielski# packed from <platform>/class/ subdirectories.
50*b1cdbd2cSJim Jagielski
51*b1cdbd2cSJim JagielskiJAVAFILES +:= $(JAVATESTFILES)
52*b1cdbd2cSJim JagielskiEXTRAJARFILES += $(OOO_JUNIT_JAR)
53*b1cdbd2cSJim Jagielski
54*b1cdbd2cSJim Jagielski.INCLUDE: settings.mk
55*b1cdbd2cSJim Jagielski
56*b1cdbd2cSJim Jagielski.IF "$(XCLASSPATH)" == ""
57*b1cdbd2cSJim JagielskiXCLASSPATH := $(CLASSDIR)
58*b1cdbd2cSJim Jagielski.ELSE
59*b1cdbd2cSJim JagielskiXCLASSPATH !:= $(XCLASSPATH)$(PATH_SEPERATOR)$(CLASSDIR)
60*b1cdbd2cSJim Jagielski.ENDIF
61*b1cdbd2cSJim JagielskiCLASSDIR !:= $(CLASSDIR)/test
62*b1cdbd2cSJim Jagielski
63*b1cdbd2cSJim Jagielski.INCLUDE: target.mk
64*b1cdbd2cSJim Jagielski
65*b1cdbd2cSJim Jagielski$(JAVATARGET) : $(MISC)/$(TARGET).classdir.flag
66*b1cdbd2cSJim Jagielski
67*b1cdbd2cSJim Jagielski$(MISC)/$(TARGET).classdir.flag:
68*b1cdbd2cSJim Jagielski    - $(MKDIR) $(CLASSDIR)
69*b1cdbd2cSJim Jagielski    $(TOUCH) $@
70*b1cdbd2cSJim Jagielski
71*b1cdbd2cSJim Jagielski.IF "$(JAVATESTFILES)" != ""
72*b1cdbd2cSJim JagielskiALLTAR : test
73*b1cdbd2cSJim Jagielski.END
74*b1cdbd2cSJim Jagielski
75*b1cdbd2cSJim Jagielski.IF "$(SOLAR_JAVA)" == "TRUE" && "$(OOO_JUNIT_JAR)" != ""
76*b1cdbd2cSJim Jagielskitest .PHONY : $(JAVATARGET)
77*b1cdbd2cSJim Jagielski    $(JAVAI) $(JAVAIFLAGS) $(JAVACPS) \
78*b1cdbd2cSJim Jagielski        '$(OOO_JUNIT_JAR)$(PATH_SEPERATOR)$(CLASSPATH)' \
79*b1cdbd2cSJim Jagielski        org.junit.runner.JUnitCore \
80*b1cdbd2cSJim Jagielski        $(foreach,i,$(JAVATESTFILES) $(subst,/,. $(PACKAGE)).$(i:s/.java//))
81*b1cdbd2cSJim Jagielski.ELSE
82*b1cdbd2cSJim Jagielskitest .PHONY :
83*b1cdbd2cSJim Jagielski    echo 'test needs SOLAR_JAVA=TRUE and OOO_JUNIT_JAR'
84*b1cdbd2cSJim Jagielski.END
85*b1cdbd2cSJim Jagielski
86*b1cdbd2cSJim Jagielski.IF "$(IDLTESTFILES)" != ""
87*b1cdbd2cSJim Jagielski
88*b1cdbd2cSJim Jagielski# The following dependency (to execute javac whenever javamaker has run) does
89*b1cdbd2cSJim Jagielski# not work reliably, see #i28827#:
90*b1cdbd2cSJim Jagielski$(JAVAFILES) $(JAVACLASSFILES): $(MISC)/$(TARGET).javamaker.flag
91*b1cdbd2cSJim Jagielski
92*b1cdbd2cSJim Jagielski$(MISC)/$(TARGET).javamaker.flag: $(MISC)/$(TARGET).rdb
93*b1cdbd2cSJim Jagielski    $(JAVAMAKER) -O$(CLASSDIR) -BUCR -nD $< -X$(SOLARBINDIR)/types.rdb
94*b1cdbd2cSJim Jagielski    $(TOUCH) $@
95*b1cdbd2cSJim Jagielski
96*b1cdbd2cSJim Jagielski$(MISC)/$(TARGET).rdb .ERRREMOVE: \
97*b1cdbd2cSJim Jagielski        $(foreach,i,$(IDLTESTFILES) $(subst,.idl,.urd $(MISC)/$(TARGET)/$i))
98*b1cdbd2cSJim Jagielski    - rm $@
99*b1cdbd2cSJim Jagielski    $(REGMERGE) $@ /UCR $<
100*b1cdbd2cSJim Jagielski
101*b1cdbd2cSJim Jagielski$(foreach,i,$(IDLTESTFILES) $(subst,.idl,.urd $(MISC)/$(TARGET)/$i)): \
102*b1cdbd2cSJim Jagielski        $(IDLTESTFILES)
103*b1cdbd2cSJim Jagielski    - $(MKDIR) $(MISC)/$(TARGET)
104*b1cdbd2cSJim Jagielski    $(IDLC) -O$(MISC)/$(TARGET) -I$(SOLARIDLDIR) -cid -we $<
105*b1cdbd2cSJim Jagielski
106*b1cdbd2cSJim Jagielski.ENDIF
107