GitHub user srowen opened a pull request:

    https://github.com/apache/spark/pull/1879

    SPARK-2955 [BUILD] Test code fails to compile with "mvn compile" without 
"install"

    (This is the corrected follow-up to 
https://issues.apache.org/jira/browse/SPARK-2903)
    
    Right now, `mvn compile test-compile` fails to compile Spark. (Don't worry; 
`mvn package` works, so this is not major.) The issue stems from test code in 
some modules depending on test code in other modules. That is perfectly fine 
and supported by Maven.
    
    It takes extra work to get this to work with scalatest, and this has been 
attempted: https://github.com/apache/spark/blob/master/sql/catalyst/pom.xml#L86
    
    This formulation is not quite enough, since the SQL Core module's tests 
fail to compile for lack of finding test classes in SQL Catalyst, and likewise 
for most Streaming integration modules depending on core Streaming test code. 
Example:
    
    ```
    [error] 
/Users/srowen/Documents/spark/sql/core/src/test/scala/org/apache/spark/sql/QueryTest.scala:23:
 not found: type PlanTest
    [error] class QueryTest extends PlanTest {
    [error]                         ^
    [error] 
/Users/srowen/Documents/spark/sql/core/src/test/scala/org/apache/spark/sql/CachedTableSuite.scala:28:
 package org.apache.spark.sql.test is not a value
    [error]   test("SPARK-1669: cacheTable should be idempotent") {
    [error]   ^
    ...
    ```
    
    The issue I believe is that generation of a `test-jar` is bound here to the 
`compile` phase, but the test classes are not being compiled in this phase. It 
should bind to the `test-compile` phase.
    
    It works when executing `mvn package` or `mvn install` since test-jar 
artifacts are actually generated available through normal Maven mechanisms as 
each module is built. They are then found normally, regardless of scalatest 
configuration.
    
    It would be nice for a simple `mvn compile test-compile` to work since the 
test code is perfectly compilable given the Maven declarations.
    
    On the plus side, this change is low-risk as it only affects tests.
    @yhuai made the original scalatest change and has glanced at this and 
thinks it makes sense.

You can merge this pull request into a Git repository by running:

    $ git pull https://github.com/srowen/spark SPARK-2955

Alternatively you can review and apply these changes as the patch at:

    https://github.com/apache/spark/pull/1879.patch

To close this pull request, make a commit to your master/trunk branch
with (at least) the following in the commit message:

    This closes #1879
    
----
commit ad8242f124ced3779055a24744163091580b001d
Author: Sean Owen <[email protected]>
Date:   2014-08-07T22:16:28Z

    Generate test-jar on test-compile for modules whose tests are needed by 
others' tests

----


---
If your project is set up for it, you can reply to this email and have your
reply appear on GitHub as well. If your project does not have this feature
enabled and wishes so, or if the feature is enabled but not working, please
contact infrastructure at [email protected] or file a JIRA ticket
with INFRA.
---

---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]

Reply via email to