Also, we should look for solutions not workaround( or hacks) in remaining time. I think classpath was that problem we trying avoid (or solve) with jigsaw.
On Wed, Mar 30, 2016 at 1:56 PM, Stephen Colebourne <scolebou...@joda.org> wrote: > On 29 March 2016 at 17:33, Russell Gold <russell.g...@oracle.com> wrote: > > Hi Stephen, > > Why do you need any kind of friend access? > > It seems to me that this is making things harder than they need to be. > The tests can simply run with the production code on the class path, and > then there are no module issues at all. > > The underlying message of Jigsaw is that the classpath is going away. > An approach that requires use of the classpath is therefore not really > a solution to the real problem. > > Stephen > > > > I think a larger problem is that you can do what I just said with the > jars, even a jar which has been designated as a module by virtue of having > a module-info.class in it. That means that, when users are up taking jars, > they are not prevented from accessing module internals. They can put the > jars on the module path, of course, but they can still use them on the > class path! > > > > - Russ > > > >> > >> On 28 March 2016 at 11:13, Remi Forax <fo...@univ-mlv.fr> wrote: > >>> Hi Stephen, Hi all, > >>> I think that delivering tests as a separated module is a bad idea. > >>> > >>> I see that from the point of a developer, seeing the code and the test > as different modules can be attractive because everything seems to be put > at the right place but there is a big drawback. Because modules are reified > at runtime, it means that the runtime environment of the tests will be > different from the production environment. > >> > >> This last sentence doesn't make sense to me - tests are not run in a > >> production environment. > >> > >> Tests have all the qualities of modules - code, dependencies, > >> compilation phase, deployment. The only special part is the need for > >> special "friend-like" access, which Jigsaw already has for other cases > >> (the export...to clause). > >> > >> Put simply, I consider that module = > >> deployment-artifact-with-dependencies. With that mental model, putting > >> tests inside the module is just not acceptable, because tests should > >> not be deployed with the main application and they have different > >> dependencies. If we disagree that module = > >> deployment-artifact-with-dependencies, then perhaps we have bigger > >> problems to solve here. > >> > >> Stephen > >> (And to Paul Benedict, the classpath is going to die over time, so any > >> solution that uses that is flawed IMO). > >> > >> > >>> So as Alan said, from the jigsaw point of view at runtime, the tests > and the code should be in the same module. > >>> > >>> So the building tools have to come with a way to support to have 2 > different module-info.java in two different folders and package them as one > module, > >>> maybe javac should help by providing a way to merge 2 module-info at > compile time. > >>> > >>> Rémi > >>> > >>> ----- Mail original ----- > >>>> De: "Alan Bateman" <alan.bate...@oracle.com> > >>>> À: "Stephen Colebourne" <scolebou...@joda.org>, "jigsaw-dev" < > jigsaw-dev@openjdk.java.net> > >>>> Envoyé: Mercredi 23 Mars 2016 16:18:50 > >>>> Objet: Re: modulepath and classpath mixture > >>>> > >>>> > >>>> On 23/03/2016 14:42, Stephen Colebourne wrote: > >>>>> : > >>>>> > >>>>> I don't particularly care what the mechanism is for this, but at the > >>>>> requirements level: > >>>>> - there are two modules - main and test > >>>>> - each has its own source tree > >>>>> - each has its own dependencies > >>>>> - each is released separately > >>>>> - each could be hosted on a central repo > >>>>> - the test module needs to be able to contain the same packages as > the > >>>>> main module > >>>>> - the test module needs to be able to invoke package-scoped code in > >>>>> the same package in the main module > >>>>> > >>>>> To clarify further consider 4 modules, A, B, A-test and B-test where > B > >>>>> depends on A. Module A-test may have a method foo() that uses package > >>>>> scope to access something in A. Module B-test will depend on A-test > >>>>> and rely on foo() to get access to that internal object. > >>>> To your list, I would add the ability to make use of testing > frameworks > >>>> like TestNG and JUnit. > >>>> > >>>> In any case, and as things currently stand, you've got most of the > >>>> above. One differences is that the tests are not a separate module, > they > >>>> are instead compiled and run in a way that patches the main module. > The > >>>> second difference is that they don't have their own module > declaration, > >>>> instead the compilation or run augments the dependences with any > >>>> additional dependences that the tests have. As I said, if they tools > >>>> makes it easy then I don't think it's too bad. > >>>> > >>>>> > >>>>> (Note that I view the thread discussion of > >>>>> references to test classes on the classpath as another hack. > >>>>> > >>>> Packages can't be split between modules and classpath so there is no > >>>> support for that. > >>>> > >>>> -Alan > >>>> > > > -- Best Regards, Ali Ebrahimi