[javapackages] [doc] Intro for Fedora Java Specifics section
by Michal Srb
commit a80a44f09273827f30ff87205064eae71f47b8ca
Author: Michal Srb <msrb(a)redhat.com>
Date: Wed Nov 13 10:43:03 2013 +0100
[doc] Intro for Fedora Java Specifics section
doc/fedora_java_specifics.txt | 3 +++
1 files changed, 3 insertions(+), 0 deletions(-)
---
diff --git a/doc/fedora_java_specifics.txt b/doc/fedora_java_specifics.txt
index 486d8c9..41527e8 100644
--- a/doc/fedora_java_specifics.txt
+++ b/doc/fedora_java_specifics.txt
@@ -1,3 +1,6 @@
+This section contains information about default Java implementation in
+Fedora, switching between different Java runtime environments and about
+few useful tools which can be used during packaging/development.
=== OpenJDK
Fedora ships with reference implementation of Java Standard Edition 7
10 years, 7 months
[javapackages] [doc] Few words about jdb
by Michal Srb
commit a80bd635eb93529e7fe413f99d53a9d036c1d230
Author: Michal Srb <msrb(a)redhat.com>
Date: Wed Nov 13 10:15:49 2013 +0100
[doc] Few words about jdb
doc/fedora_java_specifics.txt | 2 ++
1 files changed, 2 insertions(+), 0 deletions(-)
---
diff --git a/doc/fedora_java_specifics.txt b/doc/fedora_java_specifics.txt
index 11689a1..486d8c9 100644
--- a/doc/fedora_java_specifics.txt
+++ b/doc/fedora_java_specifics.txt
@@ -21,6 +21,8 @@ OpenJDK provides a lot of interesting tools for Java developers:
`javac` is a Java compiler which translates source files
to Java bytecode, which can be later interpreted by JVM.
+`jdb` is a simple command-line debugger for Java applications.
+
`javadoc` is a tool for generating Javadoc documentation.
`javap` can be used for disassembling Java class files.
10 years, 7 months
[javapackages] [doc] Separate section for switching between JREs
by Michal Srb
commit 7237ead2a1da437d086ec3fb4bf95aa548ce4014
Author: Michal Srb <msrb(a)redhat.com>
Date: Wed Nov 13 10:05:36 2013 +0100
[doc] Separate section for switching between JREs
doc/fedora_java_specifics.txt | 2 ++
1 files changed, 2 insertions(+), 0 deletions(-)
---
diff --git a/doc/fedora_java_specifics.txt b/doc/fedora_java_specifics.txt
index c498310..11689a1 100644
--- a/doc/fedora_java_specifics.txt
+++ b/doc/fedora_java_specifics.txt
@@ -25,6 +25,8 @@ to Java bytecode, which can be later interpreted by JVM.
`javap` can be used for disassembling Java class files.
+==== Switching between different Java implementations
+
Users and developers may want to have multiple Java environments
installed at the same time. It is possible in Fedora, but only one of
them can be default Java environment in system. Fedora uses
10 years, 7 months
[javapackages] [doc] Improve section about OpenJDK
by Michal Srb
commit 8c2e144cd909feecd13796f9adb4aca532b4265c
Author: Michal Srb <msrb(a)redhat.com>
Date: Wed Nov 13 09:45:56 2013 +0100
[doc] Improve section about OpenJDK
doc/fedora_java_specifics.txt | 18 +++++++++++-------
1 files changed, 11 insertions(+), 7 deletions(-)
---
diff --git a/doc/fedora_java_specifics.txt b/doc/fedora_java_specifics.txt
index f9a4a76..c498310 100644
--- a/doc/fedora_java_specifics.txt
+++ b/doc/fedora_java_specifics.txt
@@ -1,4 +1,6 @@
-Fedora ships with reference implementation of Java Standard Edition
+
+=== OpenJDK
+Fedora ships with reference implementation of Java Standard Edition 7
called http://openjdk.java.net/OpenJDK[OpenJDK]. OpenJDK provides Java
Runtime Environment for Java applications and set of development tools
for Java developers.
@@ -14,12 +16,14 @@ Here is an example how to run sample Java project from section 1.1.1:
$ java org/fedoraproject/helloworld/HelloWorld.class
--------
-For developers, `javac` command is probably one of the most important
-tools from OpenJDK. It's a Java compiler which translates source files
-to Java bytecode, which can be later interpreted by JVM. Other
-interesting tools are `javadoc` and `javap`. `javadoc` is a tool for
-generating Javadoc documentation and `javap` can be used for
-disassembling Java class files.
+OpenJDK provides a lot of interesting tools for Java developers:
+
+`javac` is a Java compiler which translates source files
+to Java bytecode, which can be later interpreted by JVM.
+
+`javadoc` is a tool for generating Javadoc documentation.
+
+`javap` can be used for disassembling Java class files.
Users and developers may want to have multiple Java environments
installed at the same time. It is possible in Fedora, but only one of
10 years, 7 months
[javapackages] [doc] Split "Java Specifics in Fedora"
by Michal Srb
commit 1c88516fe06ff5c297408fe4de9884299528617a
Author: Michal Srb <msrb(a)redhat.com>
Date: Wed Nov 13 09:08:04 2013 +0100
[doc] Split "Java Specifics in Fedora"
doc/fedora_java_specifics.txt | 4 ++++
1 files changed, 4 insertions(+), 0 deletions(-)
---
diff --git a/doc/fedora_java_specifics.txt b/doc/fedora_java_specifics.txt
index e762289..f9a4a76 100644
--- a/doc/fedora_java_specifics.txt
+++ b/doc/fedora_java_specifics.txt
@@ -54,6 +54,8 @@ See `man alternatives` for more information on how to use
Developers may want to use Java compiler from different JDK. This can be
also achieved with `alternatives --config javac`.
+=== Building classpath with `build-classpath`
+
Most of the Java application needs to specify classpath in order to work
correctly. Fedora contains several tools which make working with
classpaths easier.
@@ -79,6 +81,8 @@ $ build-classpath httpcomponents/httpclient.jar
/usr/share/java/httpcomponents/httpclient.jar
--------
+=== Building JAR repository with `build-jar-repository`
+
Another tool is `build-jar-repository`. It can fill specified directory
with symbolic/hard links to specified JAR files.Similarly to
`build-classpath`, JARs can be identified by their names or artifact
10 years, 7 months
[javapackages] [test] add tests for mvn_build environment
by Michael Šimáček
commit 1f1487dcfd4fbacb8f940b3ee64d698ce76a41c8
Author: Michael Simacek <msimacek(a)redhat.com>
Date: Wed Nov 13 10:43:40 2013 +0100
[test] add tests for mvn_build environment
test/mvn_macros_test.py | 109 +++++++++++++++++++++++++++++++++++++++++++++++
1 files changed, 109 insertions(+), 0 deletions(-)
---
diff --git a/test/mvn_macros_test.py b/test/mvn_macros_test.py
index 5281b02..7fa5330 100644
--- a/test/mvn_macros_test.py
+++ b/test/mvn_macros_test.py
@@ -261,6 +261,20 @@ class MvnMacrosTest(unittest.TestCase):
self.assertEquals(report, '', report)
@rpm_test()
+ def test_mvn_build_no_args(self, pack):
+ pack.append_to_build('%mvn_build')
+
+ _, stderr, return_value = pack.run_build()
+ self.assertEqual(return_value, 0, stderr)
+ argspath = os.path.join(pack.buildpath, '.xmvn', 'out')
+ with open(argspath, 'r') as argsfile:
+ exp = '--batch-mode --offline ' + \
+ 'verify org.fedoraproject.xmvn:xmvn-mojo:install ' + \
+ 'org.apache.maven.plugins:maven-javadoc-plugin:aggregate ' + \
+ 'org.fedoraproject.xmvn:xmvn-mojo:builddep\n'
+ self.assertEquals(argsfile.read(), exp)
+
+ @rpm_test()
def test_mvn_build_singleton(self, pack):
pack.append_to_build('%mvn_build -s')
_, stderr, return_value = pack.run_build()
@@ -282,3 +296,98 @@ class MvnMacrosTest(unittest.TestCase):
with open(expfile, 'r') as exp:
self.assertEquals(act.read(), exp.read())
+ @rpm_test()
+ def test_mvn_build_environment(self, pack):
+ pack.append_to_build('export MAVEN_OPTS="-Xmx1024M"')
+ pack.append_to_build('%mvn_build')
+ _, stderr, return_value = pack.run_build()
+ self.assertEqual(return_value, 0, stderr)
+ envpath = os.path.join(pack.buildpath, '.xmvn', 'env')
+ with open(envpath, 'r') as envfile:
+ for line in envfile:
+ if line == 'MAVEN_OPTS=-Xmx1024M\n':
+ break
+ else:
+ self.assertTrue(False, 'Environment varible not passed to XMvn')
+
+ @rpm_test()
+ def test_mvn_build_pass_args(self, pack):
+ pack.append_to_build('%mvn_build -s -- --log-file "/var/log/xmvn"')
+ _, stderr, return_value = pack.run_build()
+ self.assertEqual(return_value, 0, stderr)
+ argspath = os.path.join(pack.buildpath, '.xmvn', 'out')
+ with open(argspath, 'r') as argsfile:
+ exp = '--batch-mode --offline --log-file /var/log/xmvn ' + \
+ 'verify org.fedoraproject.xmvn:xmvn-mojo:install ' + \
+ 'org.apache.maven.plugins:maven-javadoc-plugin:aggregate ' + \
+ 'org.fedoraproject.xmvn:xmvn-mojo:builddep\n'
+ self.assertEquals(argsfile.read(), exp)
+
+ @rpm_test()
+ def test_mvn_build_bootstrap(self, pack):
+ pack.append_to_build('%define xmvn_bootstrap true')
+ pack.append_to_build('%mvn_build')
+
+ _, stderr, return_value = pack.run_build()
+ self.assertEqual(return_value, 0, stderr)
+ argspath = os.path.join(pack.buildpath, '.xmvn', 'out')
+ with open(argspath, 'r') as argsfile:
+ exp = '--batch-mode ' + \
+ 'verify org.fedoraproject.xmvn:xmvn-mojo:install ' + \
+ 'org.apache.maven.plugins:maven-javadoc-plugin:aggregate ' + \
+ 'org.fedoraproject.xmvn:xmvn-mojo:builddep\n'
+ self.assertEquals(argsfile.read(), exp)
+
+ @rpm_test()
+ def test_mvn_build_skip_javadoc(self, pack):
+ pack.prepend('%bcond_without javadoc')
+ pack.append_to_build('%mvn_build')
+
+ _, stderr, return_value = pack.run_build(['--without', 'javadoc'])
+ self.assertEqual(return_value, 0, stderr)
+ argspath = os.path.join(pack.buildpath, '.xmvn', 'out')
+ with open(argspath, 'r') as argsfile:
+ exp = '--batch-mode --offline ' + \
+ 'verify org.fedoraproject.xmvn:xmvn-mojo:install ' + \
+ 'org.fedoraproject.xmvn:xmvn-mojo:builddep\n'
+ self.assertEquals(argsfile.read(), exp)
+
+ @rpm_test()
+ def test_mvn_build_skip_test(self, pack):
+ pack.prepend('%bcond_without tests')
+ pack.append_to_build('%mvn_build')
+
+ _, stderr, return_value = pack.run_build(['--without', 'tests'])
+ self.assertEqual(return_value, 0, stderr)
+ argspath = os.path.join(pack.buildpath, '.xmvn', 'out')
+ with open(argspath, 'r') as argsfile:
+ exp = '--batch-mode --offline -Dmaven.test.skip=true ' + \
+ 'package org.fedoraproject.xmvn:xmvn-mojo:install ' + \
+ 'org.apache.maven.plugins:maven-javadoc-plugin:aggregate ' + \
+ 'org.fedoraproject.xmvn:xmvn-mojo:builddep\n'
+ self.assertEquals(argsfile.read(), exp)
+
+ @rpm_test()
+ def test_mvn_build_scl(self, pack):
+ pack.prepend('%{?scl:%scl_package mypackage}')
+ pack.prepend('%{?scl:%global pkg_name pkgname}')
+ pack.append_to_build('%mvn_build')
+
+ _, stderr, return_value = pack.run_build(['--define', 'scl myscl'])
+ self.assertEqual(return_value, 0, stderr)
+ argspath = os.path.join(pack.buildpath, '.xmvn', 'out')
+ with open(argspath, 'r') as argsfile:
+ exp = '--batch-mode --offline ' + \
+ 'verify org.fedoraproject.xmvn:xmvn-mojo:install ' + \
+ 'org.apache.maven.plugins:maven-javadoc-plugin:aggregate ' + \
+ 'org.fedoraproject.xmvn:xmvn-mojo:builddep\n'
+ self.assertEquals(argsfile.read(), exp)
+
+ confpath = os.path.join(pack.buildpath, '.xmvn', 'config.d')
+ filelist = sorted(os.listdir(confpath))
+ self.assertEquals(len(filelist), 1)
+ actfile = os.path.join(confpath, filelist[0])
+ expfile = os.path.join(DIRPATH, 'data', 'mvn_build', 'name_00001.xml')
+ report = compare_xml_files(actfile, expfile, ['artifactGlob'])
+ self.assertEquals(report, '', report)
+
10 years, 7 months
[javapackages] [test] more flexibility for rpm testing
by Michael Šimáček
commit 0371b388851be3f1dfa7259840f17c99362b5548
Author: Michael Simacek <msimacek(a)redhat.com>
Date: Wed Nov 13 10:41:57 2013 +0100
[test] more flexibility for rpm testing
test/test_rpmbuild.py | 15 ++++++++++-----
1 files changed, 10 insertions(+), 5 deletions(-)
---
diff --git a/test/test_rpmbuild.py b/test/test_rpmbuild.py
index bef4f82..325d611 100644
--- a/test/test_rpmbuild.py
+++ b/test/test_rpmbuild.py
@@ -20,6 +20,7 @@ class Package(object):
def __init__(self, name):
self.__name = name
self.__sources = {}
+ self.__begin = ''
self.__prep = ''
self.__build = ''
self.buildpath = os.path.join('rpmbuild', 'BUILD', name + '-1')
@@ -46,6 +47,10 @@ class Package(object):
newname = os.path.basename(sourcepath)
self.__sources[sourcepath] = newname
+ def prepend(self, to_prepend):
+ """Prepends given string to spec file"""
+ self.__begin += to_prepend
+
def append_to_prep(self, to_append):
"""Appends given string to %prep section of spec."""
self.__prep += to_append + '\n'
@@ -54,15 +59,15 @@ class Package(object):
"""Appends given string to %build section of spec."""
self.__build += to_append + '\n'
- def run_prep(self):
+ def run_prep(self, args=None):
"""Runs rpmbuild -bp (doing only prep phase) with current settings."""
self.__prepare_all()
- return self.__invoke_rpmbuild(['-bp'])
+ return self.__invoke_rpmbuild(['-bp'] + (args or []))
- def run_build(self):
+ def run_build(self, args=None):
"""Runs rpmbuild -bb (stop after build phase) with current settings."""
self.__prepare_all()
- return self.__invoke_rpmbuild(['-bb'])
+ return self.__invoke_rpmbuild(['-bb'] + (args or []))
def __invoke_rpmbuild(self, args):
outfile = open("tmpout", 'w')
@@ -104,7 +109,7 @@ class Package(object):
pass
def __prepare_spec(self):
- header = dedent("""\
+ header = self.__begin + dedent("""
Name: {name}
Version: 1
Release: 1%{{?dist}}
10 years, 7 months
[javapackages] [test] mocked xmvn captures its environment
by Michael Šimáček
commit d6d1233e0a646fb9a80f713327979594a43d5177
Author: Michael Simacek <msimacek(a)redhat.com>
Date: Mon Nov 11 15:21:40 2013 +0100
[test] mocked xmvn captures its environment
test/test_common.py | 4 +++-
test/xmvn | 1 +
2 files changed, 4 insertions(+), 1 deletions(-)
---
diff --git a/test/test_common.py b/test/test_common.py
index 292511a..a21db53 100644
--- a/test/test_common.py
+++ b/test/test_common.py
@@ -7,7 +7,9 @@ import re
DIRPATH = os.path.dirname(os.path.realpath(__file__))
PYTHONPATH = os.path.join(DIRPATH, '../python')
sys.path.append(PYTHONPATH)
-SCRIPT_ENV = {'PATH':DIRPATH, 'PYTHONPATH':PYTHONPATH}
+SCRIPT_ENV = {'PATH':'{mock}:{real}'.format(mock=DIRPATH,
+ real=os.environ['PATH']),
+ 'PYTHONPATH':PYTHONPATH}
def call_script(name, args, stdin = None, wrapped = False):
outfile = open("tmpout", 'w')
diff --git a/test/xmvn b/test/xmvn
index 7ea8c03..ca3f7b1 100755
--- a/test/xmvn
+++ b/test/xmvn
@@ -2,3 +2,4 @@
#mock script for testing arguments passed to xmvn
mkdir -p .xmvn
echo "${@}">.xmvn/out
+env >.xmvn/env
10 years, 7 months