You are viewing a plain text version of this content. The canonical link for it is here.
Posted to derby-dev@db.apache.org by "Aaron Digulla (JIRA)" <ji...@apache.org> on 2009/03/10 15:10:50 UTC

[jira] Created: (DERBY-4089) It should be possible to run unit tests right after "ant all"

It should be possible to run unit tests right after "ant all"
-------------------------------------------------------------

                 Key: DERBY-4089
                 URL: https://issues.apache.org/jira/browse/DERBY-4089
             Project: Derby
          Issue Type: Improvement
          Components: Build tools
    Affects Versions: 10.4.2.0
            Reporter: Aaron Digulla


Right now, the property "derby.junit.classpath" is empty by default. There should be an ant target which sets the correct classpath to run all tests after an initial checkout and "ant all".

The current situation is very confusing to beginners and people who try to build Derby for the first time. For example, when running the tests, I got this exception:

java.lang.ClassNotFoundException: org.apache.derbyTesting.junit.EnvTest

but that class was there, the file was there, everything was correct. Googling for the error didn't turn anything up, either. It took me a while to believe that build.xml just wouldn't try to setup a classpath for the tests.


-- 
This message is automatically generated by JIRA.
-
You can reply to this email to add a comment to the issue online.


[jira] Commented: (DERBY-4089) It should be possible to run unit tests right after "ant all"

Posted by "Aaron Digulla (JIRA)" <ji...@apache.org>.
    [ https://issues.apache.org/jira/browse/DERBY-4089?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=12680518#action_12680518 ] 

Aaron Digulla commented on DERBY-4089:
--------------------------------------

The default should work for most people, that's why it's the "default". As soon as you know your way around the source, a developer can define his own property file and override the default. But that simply doesn't work for novices.

Also, novices have no commit rights. So I can't see how making life harder for them is going to help solve deeper development issues with Java and the Derby team. :)

> It should be possible to run unit tests right after "ant all"
> -------------------------------------------------------------
>
>                 Key: DERBY-4089
>                 URL: https://issues.apache.org/jira/browse/DERBY-4089
>             Project: Derby
>          Issue Type: Improvement
>          Components: Build tools
>    Affects Versions: 10.4.2.0
>            Reporter: Aaron Digulla
>
> Right now, the property "derby.junit.classpath" is empty by default. There should be an ant target which sets the correct classpath to run all tests after an initial checkout and "ant all".
> The current situation is very confusing to beginners and people who try to build Derby for the first time. For example, when running the tests, I got this exception:
> java.lang.ClassNotFoundException: org.apache.derbyTesting.junit.EnvTest
> but that class was there, the file was there, everything was correct. Googling for the error didn't turn anything up, either. It took me a while to believe that build.xml just wouldn't try to setup a classpath for the tests.

-- 
This message is automatically generated by JIRA.
-
You can reply to this email to add a comment to the issue online.


[jira] Commented: (DERBY-4089) It should be possible to run unit tests right after "ant all"

Posted by "Kristian Waagan (JIRA)" <ji...@apache.org>.
    [ https://issues.apache.org/jira/browse/DERBY-4089?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=12680514#action_12680514 ] 

Kristian Waagan commented on DERBY-4089:
----------------------------------------

Rick,

Do you consider both the sane and the insane jars as a production configuration?

I actually find that building the jars is a small burden when I do quick iterative development. If we choose to use the jars as the default, I think we should consider including the build target for the jars in the default target (currently 'buildsource') or 'all'.
It's acceptable that the subsequent test run fails the first time when I haven't built the jars, but after that first time my new code will be ignored unless the jars are automatically updated. We could of course make the build detect stale jars.
If we aim for testing of the production configuration, also for novice users / casual developers, shouldn't we also include the 'clobber' target in the default target?

Even experienced developers have checked in code that breaks the build or tests because they didn't run the tests against jars, so I'm thinking there must be a reason why [some] people choose the classes directory over the jars. I agree that running with jars catches more issues, I feel the question is more whether it should be the default configuration to do so or not ("out-of-the-box experience"?).

> It should be possible to run unit tests right after "ant all"
> -------------------------------------------------------------
>
>                 Key: DERBY-4089
>                 URL: https://issues.apache.org/jira/browse/DERBY-4089
>             Project: Derby
>          Issue Type: Improvement
>          Components: Build tools
>    Affects Versions: 10.4.2.0
>            Reporter: Aaron Digulla
>
> Right now, the property "derby.junit.classpath" is empty by default. There should be an ant target which sets the correct classpath to run all tests after an initial checkout and "ant all".
> The current situation is very confusing to beginners and people who try to build Derby for the first time. For example, when running the tests, I got this exception:
> java.lang.ClassNotFoundException: org.apache.derbyTesting.junit.EnvTest
> but that class was there, the file was there, everything was correct. Googling for the error didn't turn anything up, either. It took me a while to believe that build.xml just wouldn't try to setup a classpath for the tests.

-- 
This message is automatically generated by JIRA.
-
You can reply to this email to add a comment to the issue online.


[jira] Commented: (DERBY-4089) It should be possible to run unit tests right after "ant all"

Posted by "Aaron Digulla (JIRA)" <ji...@apache.org>.
    [ https://issues.apache.org/jira/browse/DERBY-4089?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=12680479#action_12680479 ] 

Aaron Digulla commented on DERBY-4089:
--------------------------------------

I suggest to make "classes" the default (because a novice user will use that first and it fits 95% of the use cases). Experienced developers can then override the default with sane and insane jars (nice name ;), as they see fit because they have the information to make such a decision.

> It should be possible to run unit tests right after "ant all"
> -------------------------------------------------------------
>
>                 Key: DERBY-4089
>                 URL: https://issues.apache.org/jira/browse/DERBY-4089
>             Project: Derby
>          Issue Type: Improvement
>          Components: Build tools
>    Affects Versions: 10.4.2.0
>            Reporter: Aaron Digulla
>
> Right now, the property "derby.junit.classpath" is empty by default. There should be an ant target which sets the correct classpath to run all tests after an initial checkout and "ant all".
> The current situation is very confusing to beginners and people who try to build Derby for the first time. For example, when running the tests, I got this exception:
> java.lang.ClassNotFoundException: org.apache.derbyTesting.junit.EnvTest
> but that class was there, the file was there, everything was correct. Googling for the error didn't turn anything up, either. It took me a while to believe that build.xml just wouldn't try to setup a classpath for the tests.

-- 
This message is automatically generated by JIRA.
-
You can reply to this email to add a comment to the issue online.


[jira] Commented: (DERBY-4089) It should be possible to run unit tests right after "ant all"

Posted by "Kristian Waagan (JIRA)" <ji...@apache.org>.
    [ https://issues.apache.org/jira/browse/DERBY-4089?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=12680499#action_12680499 ] 

Kristian Waagan commented on DERBY-4089:
----------------------------------------

Sounds like a good approach to me.
A problem with using the jars, is that novice users may end up running the tests against stale code as the 'ant all' target doesn't rebuild the jar files.

> It should be possible to run unit tests right after "ant all"
> -------------------------------------------------------------
>
>                 Key: DERBY-4089
>                 URL: https://issues.apache.org/jira/browse/DERBY-4089
>             Project: Derby
>          Issue Type: Improvement
>          Components: Build tools
>    Affects Versions: 10.4.2.0
>            Reporter: Aaron Digulla
>
> Right now, the property "derby.junit.classpath" is empty by default. There should be an ant target which sets the correct classpath to run all tests after an initial checkout and "ant all".
> The current situation is very confusing to beginners and people who try to build Derby for the first time. For example, when running the tests, I got this exception:
> java.lang.ClassNotFoundException: org.apache.derbyTesting.junit.EnvTest
> but that class was there, the file was there, everything was correct. Googling for the error didn't turn anything up, either. It took me a while to believe that build.xml just wouldn't try to setup a classpath for the tests.

-- 
This message is automatically generated by JIRA.
-
You can reply to this email to add a comment to the issue online.


[jira] Commented: (DERBY-4089) It should be possible to run unit tests right after "ant all"

Posted by "Rick Hillegas (JIRA)" <ji...@apache.org>.
    [ https://issues.apache.org/jira/browse/DERBY-4089?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=12680505#action_12680505 ] 

Rick Hillegas commented on DERBY-4089:
--------------------------------------

Hi Aaron and Kristian,

I think that the jar files are a better default than the classpath. I think that the tests are more meaningful when they run against the production configuration (jar files)--and building the jar files does not seem like a big burden to me. I would go so far as to say that testing against the production configuration is the only meaningful barrier to checkin. Some tests only run against jar files (like the autoloading of the jdbc drivers and the automatic installation of the network security manager). The production configuration catches tricky packaging issues in which developers forget to update the build logic to supplement the jars with classes which are loaded by reflection rather than reference.

> It should be possible to run unit tests right after "ant all"
> -------------------------------------------------------------
>
>                 Key: DERBY-4089
>                 URL: https://issues.apache.org/jira/browse/DERBY-4089
>             Project: Derby
>          Issue Type: Improvement
>          Components: Build tools
>    Affects Versions: 10.4.2.0
>            Reporter: Aaron Digulla
>
> Right now, the property "derby.junit.classpath" is empty by default. There should be an ant target which sets the correct classpath to run all tests after an initial checkout and "ant all".
> The current situation is very confusing to beginners and people who try to build Derby for the first time. For example, when running the tests, I got this exception:
> java.lang.ClassNotFoundException: org.apache.derbyTesting.junit.EnvTest
> but that class was there, the file was there, everything was correct. Googling for the error didn't turn anything up, either. It took me a while to believe that build.xml just wouldn't try to setup a classpath for the tests.

-- 
This message is automatically generated by JIRA.
-
You can reply to this email to add a comment to the issue online.


[jira] Commented: (DERBY-4089) It should be possible to run unit tests right after "ant all"

Posted by "Kristian Waagan (JIRA)" <ji...@apache.org>.
    [ https://issues.apache.org/jira/browse/DERBY-4089?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=12680470#action_12680470 ] 

Kristian Waagan commented on DERBY-4089:
----------------------------------------

I agree this problem should be addressed.
A few of the targets do set the classpath, most don't. 
It should be possible to easily override the classpath, as there are three sources; classes, sane jars and insane jars.

The classes directory is nice to use when doing development, as you don't have to wait for the jars to be built, but additional problems can be detected when running with the product jars.

> It should be possible to run unit tests right after "ant all"
> -------------------------------------------------------------
>
>                 Key: DERBY-4089
>                 URL: https://issues.apache.org/jira/browse/DERBY-4089
>             Project: Derby
>          Issue Type: Improvement
>          Components: Build tools
>    Affects Versions: 10.4.2.0
>            Reporter: Aaron Digulla
>
> Right now, the property "derby.junit.classpath" is empty by default. There should be an ant target which sets the correct classpath to run all tests after an initial checkout and "ant all".
> The current situation is very confusing to beginners and people who try to build Derby for the first time. For example, when running the tests, I got this exception:
> java.lang.ClassNotFoundException: org.apache.derbyTesting.junit.EnvTest
> but that class was there, the file was there, everything was correct. Googling for the error didn't turn anything up, either. It took me a while to believe that build.xml just wouldn't try to setup a classpath for the tests.

-- 
This message is automatically generated by JIRA.
-
You can reply to this email to add a comment to the issue online.


[jira] Commented: (DERBY-4089) It should be possible to run unit tests right after "ant all"

Posted by "Rick Hillegas (JIRA)" <ji...@apache.org>.
    [ https://issues.apache.org/jira/browse/DERBY-4089?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=12680521#action_12680521 ] 

Rick Hillegas commented on DERBY-4089:
--------------------------------------

Hi Kristian,

Technically, I think that we should run the tests against both the sane and the insane jars. One configuration verifies the production configuration. The other verifies some assumptions. But over the last 4 years we haven't seen a lot of difference in tests run against sane vs. insane jars. I would say that we have seen a number of cases where the jar tests broke even though the classpath tests succeeded.

> It should be possible to run unit tests right after "ant all"
> -------------------------------------------------------------
>
>                 Key: DERBY-4089
>                 URL: https://issues.apache.org/jira/browse/DERBY-4089
>             Project: Derby
>          Issue Type: Improvement
>          Components: Build tools
>    Affects Versions: 10.4.2.0
>            Reporter: Aaron Digulla
>
> Right now, the property "derby.junit.classpath" is empty by default. There should be an ant target which sets the correct classpath to run all tests after an initial checkout and "ant all".
> The current situation is very confusing to beginners and people who try to build Derby for the first time. For example, when running the tests, I got this exception:
> java.lang.ClassNotFoundException: org.apache.derbyTesting.junit.EnvTest
> but that class was there, the file was there, everything was correct. Googling for the error didn't turn anything up, either. It took me a while to believe that build.xml just wouldn't try to setup a classpath for the tests.

-- 
This message is automatically generated by JIRA.
-
You can reply to this email to add a comment to the issue online.