I mean this:

cd build
make runtests
<fails>
<edit ../test/unit/foot/python/Foo.py>
make runtests
<fails again since Foo.py has not been copied to build>

--
Anders


On Thu, Dec 19, 2013 at 12:00:57PM +0100, Johan Hake wrote:
> What do you mean with run the tests again, by `make runfootest` or by `cd 
> build
> /tests/unit/foo/python && python Bar.py`
>
> If it is the latter I am not so surprised, but if the test is not copied over
> to build when running `make runfootest` it is more problematic.
>
> Johan
>
>
> On Thu, Dec 19, 2013 at 11:51 AM, Anders Logg <[email protected]> wrote:
>
>     When running `make runtest` (or `make run_quicktest`) and the test
>     fails, it is not seldom that this is caused by an error in a unit
>     test. If then one fixes the error in the unit test and runs the test
>     again, the test keeps failing since it has not been copied to the
>     build directory.
>
>
>
>     On Thu, Dec 19, 2013 at 08:49:41AM +0100, Johan Hake wrote:
>     > It is hard to be consequent with CMake for such a large and complex
>     project as
>     > DOLFIN. That said I think the rationale is that we only copy stuff to 
> the
>     build
>     > directory if it is needed by a certain target. It is obvious that the
>     tests are
>     > needed for all run_foo_tests so therefor is the line:
>     >
>     >      DEPENDS copy_data_test_demo
>     >
>     > added to the target declaration. It should be equivalent to using
>     > add_dependencies. There are no direct requirements to have updated tests
>     in the
>     > build directory when dolfin is built and they are therefore not copied. 
> I
>     can
>     > see that it could be convenient to have them though. I do not have any
>     strong
>     > opinions of copying or not copying.
>     >
>     > Johan
>     >
>     >
>     > On Thu, Dec 19, 2013 at 8:24 AM, Anders Logg <[email protected]> wrote:
>     >
>     >     Yes, this is the correct list.
>     >
>     >     I have experienced similar problems with not being able to edit unit
>     >     tests and then rerun them from the build directory.
>     >
>     >     I don't know enough about CMake to say whether the fix is correct.
>     >     Johannes can comment.
>     >
>     >
>     >
>     >     On Wed, Dec 18, 2013 at 10:37:46PM +0000, Myles English wrote:
>     >     > Bah, it only 'works' now because of the 'fix' I made so my first
>     email
>     >     > is still correct.  (By the way is this the right list?)
>     >     >
>     >     > On 18 December 2013 22:05, Myles English <[email protected]>
>     wrote:
>     >     > > Nevermind, I caused a strange error whereby there was a file
>     called
>     >     > > dolfin/dolfin/la/.#Matrix.h which stopped CMake working 
> properly.
>     >     > >
>     >     > > Myles
>     >     > >
>     >     > > On 18 December 2013 15:07, Myles English 
> <[email protected]>
>     >     wrote:
>     >     > >> Hello,
>     >     > >>
>     >     > >> If I build with cmake.local, then change the file
>     >     > >> test/unit/la/python/Matrix.py in the source directory, then do
>     >     > >> 'make' again in the build directory, I would have expected the
>     >     > >> changes to be copied to the build directory, but they are not.
>     >     > >>
>     >     > >> If I do 'make run_quicktest' the changes are copied.
>     >     > >>
>     >     > >> I think this is because the initial copy was done using the
>     >     > >> script copy_data_test_demo called from the top level
>     >     > >> CMakeLists.txt and so CMake cannot keep track of the files
>     involved.
>     >     > >>
>     >     > >> I believe this could be changed by adding an add_dependencies()
>     >     > >> line, for example:
>     >     > >>
>     >     > >> if (DOLFIN_ENABLE_TESTING)
>     >     > >>
>     >     > >>   # Add target "run_memorytests" [sic] for running memory tests
>     >     > >>   add_custom_target(copy_data_test_demo
>     >     > >>     COMMAND ${PYTHON_EXECUTABLE}
>     >     > >> ${DOLFIN_SOURCE_DIR}/cmake/scripts/copy-test-demo-data
>     >     > >> ${CMAKE_CURRENT_BINARY_DIR}
>     >     > >>     WORKING_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR})
>     >     > >>
>     >     > >>  add_dependencies(dolfin copy_data_test_demo) <--- THIS LINE
>     ADDED
>     >     > >>
>     >     > >> [snip]
>     >     > >>
>     >     > >>   # Add target "run_quicktest" for running only Python unit
>     tests
>     >     > >>   add_custom_target(run_quicktest
>     >     > >>     COMMAND ${PYTHON_EXECUTABLE} test.py --only-python
>     >     > >>     DEPENDS copy_data_test_demo
>     >     > >>     WORKING_DIRECTORY "${CMAKE_CURRENT_BINARY_DIR}/test/unit")
>     >     > >>
>     >     > >> endif()
>     >     > >>
>     >     > >> However, I notice that there are no other occurences of
>     >     > >> add_dependencies() so I am wondering:
>     >     > >>
>     >     > >> 1) if the current behaviour is intentional, and also
>     >     > >>
>     >     > >> 2) if the change could have unintended consequences, and
>     >     > >>
>     >     > >> 3) what about all the other places where files are copied to 
> the
>     >     > >> build tree with a COMMAND?
>     >     > >>
>     >     > >> Thanks,
>     >     > >> Myles
>     >     > _______________________________________________
>     >     > fenics mailing list
>     >     > [email protected]
>     >     > http://fenicsproject.org/mailman/listinfo/fenics
>     >     _______________________________________________
>     >     fenics mailing list
>     >     [email protected]
>     >     http://fenicsproject.org/mailman/listinfo/fenics
>     >
>     >
>
>
_______________________________________________
fenics mailing list
[email protected]
http://fenicsproject.org/mailman/listinfo/fenics

Reply via email to