summaryrefslogtreecommitdiff
blob: 9146e1717feb9dfa94d09bda3b38bbffe47ea716 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
# Copyright 1999-2016 Gentoo Foundation
# Distributed under the terms of the GNU General Public License v2
# $Id$

# WARNING: JUNIT.JAR IS _NOT_ SYMLINKED TO ANT-CORE LIB FOLDER AS JUNIT3 IS

EAPI="5"

JAVA_PKG_IUSE="doc examples source test"

inherit java-pkg-2 java-ant-2

DESCRIPTION="Simple framework to write repeatable tests"
SRC_URI="mirror://github/${PN}-team/${PN}/${PN}${PV}.zip"
HOMEPAGE="http://www.junit.org/"

LICENSE="CPL-1.0"
SLOT="4"

KEYWORDS="amd64 ppc64 x86 ~amd64-fbsd ~x86-fbsd ~x64-freebsd ~x86-freebsd ~amd64-linux ~x86-linux ~ppc-macos ~x64-macos ~x86-macos ~sparc-solaris ~x64-solaris ~x86-solaris"

CDEPEND="dev-java/hamcrest-core:1.3"

RDEPEND=">=virtual/jre-1.5
	${CDEPEND}"

DEPEND=">=virtual/jdk-1.5
	userland_GNU? ( >=sys-apps/findutils-4.3 )
	${CDEPEND}"

S="${WORKDIR}/${PN}${PV}"

EANT_BUILD_TARGET="jars samples-and-tests"

src_unpack() {
	default

	# Unpack the source JAR.
	mkdir -p "${S}/src/main/java" "${S}/src/test/java" \
		|| die "Unable to create source directories"

	pushd "${S}/src/main/java" > /dev/null
		jar xf "${S}/${P}-src.jar" || die "Unable to unpack sources."
	popd >/dev/null

	# Copy the Gentoo manifest to the working directory.
	cp "${FILESDIR}/gentoo-manifest.mf" "${S}" || die
}

java_prepare() {
	epatch "${FILESDIR}"/${P}-do-not-unpack-hamcrest-sources.patch

	mkdir lib || die
	java-pkg_jar-from --into lib hamcrest-core{-1.3,.jar,-1.3.jar}

	# Fix javadoc compilation.
	if use doc ; then
		cp "${S}"/javadoc/stylesheet.css "${S}" \
			|| die "Unable to copy Javdoc stylesheet"
	fi

	# Remove binary and other generated files.
	rm -rf javadoc temp.hamcrest.source *.jar \
		|| die "Unable to clean generated files."
	find . -name "*.class" -delete \
		|| die "Unable to remove distributed class files"

	# Let Ant know where its hamcrest went.
	EANT_EXTRA_ARGS="-Dhamcrestlib=$(java-pkg_getjars hamcrest-core-1.3)"

	# Add Gentoo manifest information to generated JAR files.
	java-ant_xml-rewrite -f build.xml -c \
		-e jar -a manifest -v "gentoo-manifest.mf"
}

src_test() {
	mkdir classes || die "Unable to create build directory for tests."

	local cp=$(java-pkg_getjars hamcrest-core-1.3):"${S}"/target/main

	ejavac -classpath ${cp} \
		-d classes $(find org/junit/internal -name "*.java")
	ejavac -classpath ${cp}:"${S}/classes" \
		-d classes $(find junit/tests org/junit/tests -name "*.java")

	java -classpath ${cp}:classes \
		org.junit.runner.JUnitCore junit.tests.AllTests || die "Tests failed."
}

src_install() {
	java-pkg_newjar ${PN}${PV}-SNAPSHOT/${PN}-dep-${PV}-SNAPSHOT.jar
	dodoc README.html doc/ReleaseNotes${PV}.txt

	use examples && java-pkg_doexamples org/junit/samples
	use source && java-pkg_dosrc src/main/java/org src/main/java/junit

	if use doc; then
		dohtml -r doc/*
		java-pkg_dojavadoc ${PN}${PV}-SNAPSHOT/javadoc
	fi
}