Обсуждение: What version of JUnit, again?

Поиск
Список
Период
Сортировка

What version of JUnit, again?

От
David Ventimiglia
Дата:
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

Re: What version of JUnit, again?

От
Dave Cramer
Дата:
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@gmail.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

Re: What version of JUnit, again?

От
David Ventimiglia
Дата:
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@fastcrypt.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@gmail.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


Вложения

Re: What version of JUnit, again?

От
Dave Cramer
Дата:
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@gmail.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@fastcrypt.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@gmail.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



Re: What version of JUnit, again?

От
David Ventimiglia
Дата:
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@fastcrypt.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@gmail.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@fastcrypt.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@gmail.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




Re: What version of JUnit, again?

От
Sehrope Sarkuni
Дата:
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@gmail.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@fastcrypt.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@gmail.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@fastcrypt.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@gmail.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




Re: What version of JUnit, again?

От
David Ventimiglia
Дата:
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@jackdb.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@gmail.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@fastcrypt.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@gmail.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@fastcrypt.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@gmail.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





Re: What version of JUnit, again?

От
David Ventimiglia
Дата:
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@gmail.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@jackdb.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@gmail.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@fastcrypt.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@gmail.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@fastcrypt.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@gmail.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






Re: What version of JUnit, again?

От
Sehrope Sarkuni
Дата:
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@gmail.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@gmail.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@jackdb.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@gmail.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@fastcrypt.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@gmail.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@fastcrypt.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@gmail.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
>>>>>>
>>>>>>
>>>>>
>>>>
>>>
>>
>


Re: What version of JUnit, again?

От
Dave Cramer
Дата:
Sehrope,

I do not specify it on my build. 

at the moment you need to use ant -lib lib <target> to run it to pick up the maven tasks

Dave

Dave Cramer

dave.cramer(at)credativ(dot)ca
http://www.credativ.ca


On 3 August 2014 21:32, Sehrope Sarkuni <sehrope@jackdb.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@gmail.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@gmail.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@jackdb.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@gmail.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@fastcrypt.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@gmail.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@fastcrypt.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@gmail.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
>>>>>>
>>>>>>
>>>>>
>>>>
>>>
>>
>

Re: What version of JUnit, again?

От
David Ventimiglia
Дата:
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@jackdb.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@gmail.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@gmail.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@jackdb.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@gmail.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@fastcrypt.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@gmail.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@fastcrypt.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@gmail.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
>>>>>>
>>>>>>
>>>>>
>>>>
>>>
>>
>

Re: What version of JUnit, again?

От
Dave Cramer
Дата:
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@gmail.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@jackdb.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@gmail.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@gmail.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@jackdb.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@gmail.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@fastcrypt.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@gmail.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@fastcrypt.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@gmail.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
>>>>>>
>>>>>>
>>>>>
>>>>
>>>
>>
>


Re: What version of JUnit, again?

От
David Ventimiglia
Дата:
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@fastcrypt.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@gmail.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@jackdb.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@gmail.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@gmail.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@jackdb.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@gmail.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@fastcrypt.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@gmail.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@fastcrypt.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@gmail.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
>>>>>>
>>>>>>
>>>>>
>>>>
>>>
>>
>



Re: What version of JUnit, again?

От
Dave Cramer
Дата:
there is another project https://github.com/pgjdbc/www

Thanks,

Dave

Dave Cramer

dave.cramer(at)credativ(dot)ca
http://www.credativ.ca


On 3 August 2014 22:17, David Ventimiglia <dventimi@gmail.com> wrote:
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@fastcrypt.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@gmail.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@jackdb.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@gmail.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@gmail.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@jackdb.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@gmail.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@fastcrypt.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@gmail.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@fastcrypt.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@gmail.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
>>>>>>
>>>>>>
>>>>>
>>>>
>>>
>>
>




Re: What version of JUnit, again?

От
David Ventimiglia
Дата:

You bet. I'll look at that tomorrow.  I didn't include a link to the other pull request in my previous message because I assume GitHub would email you.

On Aug 3, 2014 9:09 PM, "Dave Cramer" <pg@fastcrypt.com> wrote:
there is another project https://github.com/pgjdbc/www

Thanks,

Dave

Dave Cramer

dave.cramer(at)credativ(dot)ca
http://www.credativ.ca


On 3 August 2014 22:17, David Ventimiglia <dventimi@gmail.com> wrote:
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@fastcrypt.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@gmail.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@jackdb.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@gmail.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@gmail.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@jackdb.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@gmail.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@fastcrypt.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@gmail.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@fastcrypt.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@gmail.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
>>>>>>
>>>>>>
>>>>>
>>>>
>>>
>>
>