Re: What version of JUnit, again?

From: David Ventimiglia <dventimi(at)gmail(dot)com>
To: Dave Cramer <pg(at)fastcrypt(dot)com>
Cc: Sehrope Sarkuni <sehrope(at)jackdb(dot)com>, List <pgsql-jdbc(at)postgresql(dot)org>
Subject: Re: What version of JUnit, again?
Date: 2014-08-04 02:17:15
Message-ID: CALaE=t_VZV6YOSzFz=eH27Lg31hShgW1MxX0H9f88W=5hq0e5A@mail.gmail.com
Views: Raw Message | Whole Thread | Download mbox | Resend email
Thread:
Lists: pgsql-jdbc

Done.

I've no idea how to change this web page, however:

http://jdbc.postgresql.org/development/development.html

On Sun, Aug 3, 2014 at 6:50 PM, Dave Cramer <pg(at)fastcrypt(dot)com> wrote:

> Pull requests are welcome!
>
> Dave Cramer
>
> dave.cramer(at)credativ(dot)ca
> http://www.credativ.ca
>
>
> On 3 August 2014 21:36, David Ventimiglia <dventimi(at)gmail(dot)com> wrote:
>
>> Well, that's confusing to me also as AFAIK at no time have I ever set a
>> CLASSPATH environment variable. But, no matter. That worked.
>>
>> Is it possible that the pgjdbc build.xml file and/or the compilation docs
>> need a little spruced up? Not that it's a big deal.
>>
>> Thanks,
>> David
>>
>>
>> On Sun, Aug 3, 2014 at 6:32 PM, Sehrope Sarkuni <sehrope(at)jackdb(dot)com>
>> wrote:
>>
>>> I think that might be ant not respecting the CLASSPATH environment
>>> variable. You might have to specify it explicitly when you run ant
>>> instead.
>>>
>>> Try running it like this:
>>>
>>> $ ant -lib lib:/usr/share/java/junit4.jar test
>>>
>>> Regards,
>>> Sehrope Sarkuni
>>> Founder & CEO | JackDB, Inc. | http://www.jackdb.com/
>>>
>>> On Sun, Aug 3, 2014 at 9:00 PM, David Ventimiglia <dventimi(at)gmail(dot)com>
>>> wrote:
>>> > Spoke too soon. That produced a different error with your test (see
>>> below).
>>> >
>>> > Testsuite: org.postgresql.test.ssl.SingleCertValidatingFactoryTest
>>> > Tests run: 1, Failures: 0, Errors: 1, Skipped: 0, Time elapsed: 0 sec
>>> >
>>> > Null Test: Caused an ERROR
>>> > junit/framework/JUnit4TestAdapterCache
>>> > java.lang.NoClassDefFoundError: junit/framework/JUnit4TestAdapterCache
>>> > at java.lang.ClassLoader.defineClass1(Native Method)
>>> > at java.lang.ClassLoader.defineClass(ClassLoader.java:800)
>>> > at
>>> > java.security.SecureClassLoader.defineClass(SecureClassLoader.java:142)
>>> > at java.net.URLClassLoader.defineClass(URLClassLoader.java:449)
>>> > at java.net.URLClassLoader.access$100(URLClassLoader.java:71)
>>> > at java.net.URLClassLoader$1.run(URLClassLoader.java:361)
>>> > at java.net.URLClassLoader$1.run(URLClassLoader.java:355)
>>> > at java.security.AccessController.doPrivileged(Native Method)
>>> > at java.net.URLClassLoader.findClass(URLClassLoader.java:354)
>>> > at java.lang.ClassLoader.loadClass(ClassLoader.java:425)
>>> > at java.lang.ClassLoader.loadClass(ClassLoader.java:358)
>>> > at java.lang.Class.forName0(Native Method)
>>> > at java.lang.Class.forName(Class.java:190)
>>> > at java.net.URLClassLoader$1.run(URLClassLoader.java:366)
>>> > at java.net.URLClassLoader$1.run(URLClassLoader.java:355)
>>> > at java.security.AccessController.doPrivileged(Native Method)
>>> > at java.net.URLClassLoader.findClass(URLClassLoader.java:354)
>>> > at java.lang.ClassLoader.loadClass(ClassLoader.java:425)
>>> > at java.lang.ClassLoader.loadClass(ClassLoader.java:358)
>>> >
>>> >
>>> >
>>> > On Sun, Aug 3, 2014 at 5:55 PM, David Ventimiglia <dventimi(at)gmail(dot)com>
>>> > wrote:
>>> >>
>>> >> Indeed. The JUnit4 jar seems to include the old-style JUnit packages.
>>> >> Since I also have JUnit4 in my Maven repository, then in the
>>> build.xml file
>>> >> for the pgjdbc project, I changed it to use JUnit version="4.0"
>>> instead of
>>> >> version="3.8.2" and it worked fine (see patch below).
>>> >>
>>> >> diff --git a/build.xml b/build.xml
>>> >> index 9ce437d..956fb9c 100644
>>> >> --- a/build.xml
>>> >> +++ b/build.xml
>>> >> @@ -108,7 +108,7 @@
>>> >> </patternset>
>>> >>
>>> >>
>>> >> <artifact:dependencies pathId="dependency.classpath"
>>> useScope="test">
>>> >> - <dependency groupId="junit" artifactId="junit" version="3.8.2"
>>> >> scope="test"/>
>>> >> + <dependency groupId="junit" artifactId="junit" version="4.0"
>>> >> scope="test"/>
>>> >> </artifact:dependencies>
>>> >>
>>> >> <target name="check_versions">
>>> >>
>>> >>
>>> >>
>>> >> On Sun, Aug 3, 2014 at 5:46 PM, Sehrope Sarkuni <sehrope(at)jackdb(dot)com>
>>> >> wrote:
>>> >>>
>>> >>> The original unit tests use only junit 3.8.
>>> >>>
>>> >>> I wrote the newer SSL tests for the SingleCertValidatingFactory to
>>> use
>>> >>> the newer version of junit (and using annotations etc) as the
>>> expectation
>>> >>> was that it's only included in a JDBC 4/JDK5+ environment.
>>> >>>
>>> >>> I'll see if I can dig up my local config for running it when I get
>>> to my
>>> >>> computer but I think I just used used the Ubuntu packages for junit
>>> 4 and
>>> >>> manually add them to the CLASSPATH env variable.
>>> >>>
>>> >>> You should be able to run the original tests with just the newer
>>> junit on
>>> >>> the CLASSPATH.
>>> >>>
>>> >>> You might also want to take a peek at:
>>> >>> https://github.com/jackdb/pgjdbc-test-vm
>>> >>>
>>> >>> It's what I originally used to test the SSL factory patches. It sets
>>> up a
>>> >>> bunch of PG servers in a VM with know SSL configurations and users
>>> for
>>> >>> testing. It can also be used for testing the rest of the driver.
>>> >>>
>>> >>> Regards,
>>> >>> Sehrope Sarkuni
>>> >>> Founder & CEO | JackDB, Inc. | http://www.jackdb.com/
>>> >>>
>>> >>> On Aug 3, 2014, at 8:32 PM, David Ventimiglia <dventimi(at)gmail(dot)com>
>>> wrote:
>>> >>>
>>> >>> I have no CLASSPATH environment variable. As for the classpath that
>>> is
>>> >>> used by Ant, it's my assumption that's handled by Ant and/or Maven.
>>> What I
>>> >>> can tell you are these things.
>>> >>>
>>> >>> I'm on Ubuntu Linux, a Debian-based distro, where typically I install
>>> >>> things using the package manager rather than by direct download.
>>> >>> Therefore, I've both JUnit (3.8.2) and JUnit4 (4.0.0) "installed"
>>> >>> courtesy of the apt-get package manager. But they're not on any
>>> CLASSPATH
>>> >>> and Ant and Maven were unaware of them.
>>> >>> Within the pgjdbc project, I ran `ant' as instructed. That failed,
>>> >>> because the build.xml file has a dependency on JUnit 3.8.2.
>>> >>> Helpfully, the Ant build error included instructions for how to
>>> satisfy
>>> >>> the JUnit dependency (see below). I found the JUnit 3.8.2 JAR file
>>> that
>>> >>> apt-get had installed on my system and fed that path into the Maven
>>> command.
>>> >>> Ran `ant' again. This time, because the JUnit dependency had been
>>> >>> satisfied, it successfully built the JDBC driver. But because it
>>> didn't run
>>> >>> any tests, it didn't trigger any run-time error.
>>> >>> Ran `ant test' and got the errors that I sent you.
>>> >>> Noticed that the SingleCertValidatingFactoryTest class (if nothing
>>> else)
>>> >>> imports from org.junit, which I understood to be a JUnit4 package
>>> (but maybe
>>> >>> I'm wrong).
>>> >>> I became confused.
>>> >>>
>>> >>> The Maven command to install the JUnit jar was:
>>> >>>
>>> >>> mvn install:install-file -DgroupId=junit -DartifactId=junit
>>> >>> -Dversion=3.8.2 -Dpackaging=jar
>>> -Dfile=/usr/share/java/junit-3.8.2.jar
>>> >>>
>>> >>> I assure you that the jar file is a bona fide JUnit 3.8.2 jar file.
>>> >>>
>>> >>>
>>> >>>
>>> >>> On Sun, Aug 3, 2014 at 5:19 PM, Dave Cramer <pg(at)fastcrypt(dot)com>
>>> wrote:
>>> >>>>
>>> >>>> Is junit on the classpath ?
>>> >>>>
>>> >>>>
>>> >>>>
>>> >>>> Dave Cramer
>>> >>>>
>>> >>>> dave.cramer(at)credativ(dot)ca
>>> >>>> http://www.credativ.ca
>>> >>>>
>>> >>>>
>>> >>>> On 3 August 2014 20:15, David Ventimiglia <dventimi(at)gmail(dot)com>
>>> wrote:
>>> >>>>>
>>> >>>>> You bet. They're in the attached errors.txt file and also pasted
>>> in
>>> >>>>> below.
>>> >>>>>
>>> >>>>> Buildfile: /home/dventimi/work/pgjdbc/build.xml
>>> >>>>>
>>> >>>>> prepare:
>>> >>>>>
>>> >>>>> check_versions:
>>> >>>>>
>>> >>>>> check_driver:
>>> >>>>>
>>> >>>>> driver:
>>> >>>>>
>>> >>>>> compile:
>>> >>>>> [javac] /home/dventimi/work/pgjdbc/build.xml:243: warning:
>>> >>>>> 'includeantruntime' was not set, defaulting to
>>> build.sysclasspath=last; set
>>> >>>>> to false for repeatable builds
>>> >>>>>
>>> >>>>> artifact-version:
>>> >>>>> [echo] Artifact version string: postgresql-9.4-1200.jdbc41
>>> >>>>>
>>> >>>>> jar:
>>> >>>>>
>>> >>>>> testjar:
>>> >>>>> [mkdir] Created dir: /home/dventimi/work/pgjdbc/build/tests
>>> >>>>> [javac] /home/dventimi/work/pgjdbc/build.xml:451: warning:
>>> >>>>> 'includeantruntime' was not set, defaulting to
>>> build.sysclasspath=last; set
>>> >>>>> to false for repeatable builds
>>> >>>>> [javac] Compiling 84 source files to
>>> >>>>> /home/dventimi/work/pgjdbc/build/tests
>>> >>>>> [javac]
>>> >>>>>
>>> /home/dventimi/work/pgjdbc/org/postgresql/test/ssl/SingleCertValidatingFactoryTest.java:3:
>>> >>>>> error: package org.junit does not exist
>>> >>>>> [javac] import org.junit.Assert;
>>> >>>>> [javac] ^
>>> >>>>> [javac]
>>> >>>>>
>>> /home/dventimi/work/pgjdbc/org/postgresql/test/ssl/SingleCertValidatingFactoryTest.java:4:
>>> >>>>> error: package org.junit does not exist
>>> >>>>> [javac] import org.junit.Test;
>>> >>>>> [javac] ^
>>> >>>>> [javac]
>>> >>>>>
>>> /home/dventimi/work/pgjdbc/org/postgresql/test/ssl/SingleCertValidatingFactoryTest.java:5:
>>> >>>>> error: package org.junit does not exist
>>> >>>>> [javac] import org.junit.Before;
>>> >>>>> [javac] ^
>>> >>>>> [javac]
>>> >>>>>
>>> /home/dventimi/work/pgjdbc/org/postgresql/test/ssl/SingleCertValidatingFactoryTest.java:6:
>>> >>>>> error: package org.junit does not exist
>>> >>>>> [javac] import org.junit.BeforeClass;
>>> >>>>> [javac] ^
>>> >>>>> [javac]
>>> >>>>>
>>> /home/dventimi/work/pgjdbc/org/postgresql/test/ssl/SingleCertValidatingFactoryTest.java:7:
>>> >>>>> error: package org.junit.runners does not exist
>>> >>>>> [javac] import org.junit.runners.Parameterized;
>>> >>>>> [javac] ^
>>> >>>>> [javac]
>>> >>>>>
>>> /home/dventimi/work/pgjdbc/org/postgresql/test/ssl/SingleCertValidatingFactoryTest.java:8:
>>> >>>>> error: package org.junit.runners.Parameterized does not exist
>>> >>>>> [javac] import org.junit.runners.Parameterized.Parameters;
>>> >>>>> [javac] ^
>>> >>>>> [javac]
>>> >>>>>
>>> /home/dventimi/work/pgjdbc/org/postgresql/test/ssl/SingleCertValidatingFactoryTest.java:9:
>>> >>>>> error: package org.junit.runner does not exist
>>> >>>>> [javac] import org.junit.runner.RunWith;
>>> >>>>> [javac] ^
>>> >>>>> [javac]
>>> >>>>>
>>> /home/dventimi/work/pgjdbc/org/postgresql/test/ssl/SingleCertValidatingFactoryTest.java:23:
>>> >>>>> error: cannot find symbol
>>> >>>>> [javac] @RunWith(Parameterized.class)
>>> >>>>> [javac] ^
>>> >>>>> [javac] symbol: class RunWith
>>> >>>>> [javac]
>>> >>>>>
>>> /home/dventimi/work/pgjdbc/org/postgresql/test/ssl/SingleCertValidatingFactoryTest.java:42:
>>> >>>>> error: cannot find symbol
>>> >>>>> [javac] @Parameters
>>> >>>>> [javac] ^
>>> >>>>> [javac] symbol: class Parameters
>>> >>>>> [javac] location: class SingleCertValidatingFactoryTest
>>> >>>>> [javac]
>>> >>>>>
>>> /home/dventimi/work/pgjdbc/org/postgresql/test/ssl/SingleCertValidatingFactoryTest.java:181:
>>> >>>>> error: cannot find symbol
>>> >>>>> [javac] @Test
>>> >>>>> [javac] ^
>>> >>>>> [javac] symbol: class Test
>>> >>>>> [javac] location: class SingleCertValidatingFactoryTest
>>> >>>>> [javac]
>>> >>>>>
>>> /home/dventimi/work/pgjdbc/org/postgresql/test/ssl/SingleCertValidatingFactoryTest.java:203:
>>> >>>>> error: cannot find symbol
>>> >>>>> [javac] @Test
>>> >>>>> [javac] ^
>>> >>>>> [javac] symbol: class Test
>>> >>>>> [javac] location: class SingleCertValidatingFactoryTest
>>> >>>>> [javac]
>>> >>>>>
>>> /home/dventimi/work/pgjdbc/org/postgresql/test/ssl/SingleCertValidatingFactoryTest.java:213:
>>> >>>>> error: cannot find symbol
>>> >>>>> [javac] @Test
>>> >>>>> [javac] ^
>>> >>>>> [javac] symbol: class Test
>>> >>>>> [javac] location: class SingleCertValidatingFactoryTest
>>> >>>>> [javac]
>>> >>>>>
>>> /home/dventimi/work/pgjdbc/org/postgresql/test/ssl/SingleCertValidatingFactoryTest.java:223:
>>> >>>>> error: cannot find symbol
>>> >>>>> [javac] @Test
>>> >>>>> [javac] ^
>>> >>>>> [javac] symbol: class Test
>>> >>>>> [javac] location: class SingleCertValidatingFactoryTest
>>> >>>>> [javac]
>>> >>>>>
>>> /home/dventimi/work/pgjdbc/org/postgresql/test/ssl/SingleCertValidatingFactoryTest.java:240:
>>> >>>>> error: cannot find symbol
>>> >>>>> [javac] @Test
>>> >>>>> [javac] ^
>>> >>>>> [javac] symbol: class Test
>>> >>>>> [javac] location: class SingleCertValidatingFactoryTest
>>> >>>>> [javac]
>>> >>>>>
>>> /home/dventimi/work/pgjdbc/org/postgresql/test/ssl/SingleCertValidatingFactoryTest.java:257:
>>> >>>>> error: cannot find symbol
>>> >>>>> [javac] @Test
>>> >>>>> [javac] ^
>>> >>>>> [javac] symbol: class Test
>>> >>>>> [javac] location: class SingleCertValidatingFactoryTest
>>> >>>>> [javac]
>>> >>>>>
>>> /home/dventimi/work/pgjdbc/org/postgresql/test/ssl/SingleCertValidatingFactoryTest.java:274:
>>> >>>>> error: cannot find symbol
>>> >>>>> [javac] @Test
>>> >>>>> [javac] ^
>>> >>>>> [javac] symbol: class Test
>>> >>>>> [javac] location: class SingleCertValidatingFactoryTest
>>> >>>>> [javac]
>>> >>>>>
>>> /home/dventimi/work/pgjdbc/org/postgresql/test/ssl/SingleCertValidatingFactoryTest.java:307:
>>> >>>>> error: cannot find symbol
>>> >>>>> [javac] @Test
>>> >>>>> [javac] ^
>>> >>>>> [javac] symbol: class Test
>>> >>>>> [javac] location: class SingleCertValidatingFactoryTest
>>> >>>>> [javac]
>>> >>>>>
>>> /home/dventimi/work/pgjdbc/org/postgresql/test/ssl/SingleCertValidatingFactoryTest.java:327:
>>> >>>>> error: cannot find symbol
>>> >>>>> [javac] @Test
>>> >>>>> [javac] ^
>>> >>>>> [javac] symbol: class Test
>>> >>>>> [javac] location: class SingleCertValidatingFactoryTest
>>> >>>>> [javac]
>>> >>>>>
>>> /home/dventimi/work/pgjdbc/org/postgresql/test/ssl/SingleCertValidatingFactoryTest.java:351:
>>> >>>>> error: cannot find symbol
>>> >>>>> [javac] @Test
>>> >>>>> [javac] ^
>>> >>>>> [javac] symbol: class Test
>>> >>>>> [javac] location: class SingleCertValidatingFactoryTest
>>> >>>>> [javac]
>>> >>>>>
>>> /home/dventimi/work/pgjdbc/org/postgresql/test/ssl/SingleCertValidatingFactoryTest.java:141:
>>> >>>>> error: cannot find symbol
>>> >>>>> [javac] Assert.assertEquals(1, rs.getInt(1));
>>> >>>>> [javac] ^
>>> >>>>> [javac] symbol: variable Assert
>>> >>>>> [javac] location: class SingleCertValidatingFactoryTest
>>> >>>>> [javac]
>>> >>>>>
>>> /home/dventimi/work/pgjdbc/org/postgresql/test/ssl/SingleCertValidatingFactoryTest.java:147:
>>> >>>>> error: cannot find symbol
>>> >>>>> [javac] Assert.assertEquals(sslExpected,
>>> sslActual);
>>> >>>>> [javac] ^
>>> >>>>> [javac] symbol: variable Assert
>>> >>>>> [javac] location: class SingleCertValidatingFactoryTest
>>> >>>>> [javac]
>>> >>>>>
>>> /home/dventimi/work/pgjdbc/org/postgresql/test/ssl/SingleCertValidatingFactoryTest.java:172:
>>> >>>>> error: cannot find symbol
>>> >>>>> [javac] Assert.fail("Expected exception " +
>>> >>>>> expectedThrowable.getName() + " but it did not occur.");
>>> >>>>> [javac] ^
>>> >>>>> [javac] symbol: variable Assert
>>> >>>>> [javac] location: class SingleCertValidatingFactoryTest
>>> >>>>> [javac] Note: Some input files use or override a deprecated
>>> API.
>>> >>>>> [javac] Note: Recompile with -Xlint:deprecation for details.
>>> >>>>> [javac] Note: Some input files use unchecked or unsafe
>>> operations.
>>> >>>>> [javac] Note: Recompile with -Xlint:unchecked for details.
>>> >>>>> [javac] 22 errors
>>> >>>>>
>>> >>>>> BUILD FAILED
>>> >>>>> /home/dventimi/work/pgjdbc/build.xml:451: Compile failed; see the
>>> >>>>> compiler error output for details.
>>> >>>>>
>>> >>>>> Total time: 12 seconds
>>> >>>>>
>>> >>>>>
>>> >>>>>
>>> >>>>> On Sun, Aug 3, 2014 at 5:07 PM, Dave Cramer <pg(at)fastcrypt(dot)com>
>>> wrote:
>>> >>>>>>
>>> >>>>>> Pretty sure I use 3.8.2
>>> >>>>>>
>>> >>>>>> Can you provide me with the errors you are getting ?
>>> >>>>>>
>>> >>>>>> Dave Cramer
>>> >>>>>>
>>> >>>>>> dave.cramer(at)credativ(dot)ca
>>> >>>>>> http://www.credativ.ca
>>> >>>>>>
>>> >>>>>>
>>> >>>>>> On 3 August 2014 16:53, David Ventimiglia <dventimi(at)gmail(dot)com>
>>> wrote:
>>> >>>>>>>
>>> >>>>>>> Hi,
>>> >>>>>>>
>>> >>>>>>> I'm a little confused as to what version of JUnit I'm supposed
>>> to be
>>> >>>>>>> using in order to build/test the Postgresql JDBC driver. This
>>> page says
>>> >>>>>>> that "JUnit at least 3.7 is needed."
>>> >>>>>>>
>>> >>>>>>> http://jdbc.postgresql.org/development/development.html
>>> >>>>>>>
>>> >>>>>>> But, there's a big between JUnit 3.8 and earlier and JUnit 4.
>>> The
>>> >>>>>>> former has components in packages junit.framework while the
>>> latter has
>>> >>>>>>> components in org.junit and so test that directly import on or
>>> the other of
>>> >>>>>>> those packages are sensitive to the version of JUnit you're
>>> using.
>>> >>>>>>>
>>> >>>>>>> An example of such a test is
>>> SingleCertValidatingFactoryTest.java in
>>> >>>>>>> pgjdbc/org/postgresql/test/ssl directory (presumably other tests
>>> are like
>>> >>>>>>> this).
>>> >>>>>>>
>>> >>>>>>> On the other hand, the pgjdbc Ant build.xml file specifies JUnit
>>> >>>>>>> 3.8.2.:
>>> >>>>>>>
>>> >>>>>>> <artifact:dependencies pathId="dependency.classpath"
>>> >>>>>>> useScope="test">
>>> >>>>>>> <dependency groupId="junit" artifactId="junit"
>>> version="3.8.2"
>>> >>>>>>> scope="test"/>
>>> >>>>>>> </artifact:dependencies>
>>> >>>>>>>
>>> >>>>>>> Presumably, this is why running `ant test' in pgjdbc fails for me
>>> >>>>>>> with compilation errors. I confess, I'm not an expert with Ant
>>> and Maven,
>>> >>>>>>> so maybe I've done something wrong. But, exactly waht version
>>> of JUnit
>>> >>>>>>> should I be using? Thanks!
>>> >>>>>>>
>>> >>>>>>> Best,
>>> >>>>>>> David Ventimiglia
>>> >>>>>>
>>> >>>>>>
>>> >>>>>
>>> >>>>
>>> >>>
>>> >>
>>> >
>>>
>>
>>
>

In response to

Responses

Browse pgsql-jdbc by date

  From Date Subject
Next Message Dave Cramer 2014-08-04 04:08:48 Re: What version of JUnit, again?
Previous Message Dave Cramer 2014-08-04 01:50:17 Re: What version of JUnit, again?