On 2019/09/02 08:25, Rafael Sadowski wrote:
> On Wed Aug 21, 2019 at 06:58:02PM +0200, Rafael Sadowski wrote:
> > The following diff switch the cmake test task to ctest(1). This enables us 
> > to
> > easily debug/report the tests.
> > 
> > In the normal state everything is as always. `make test` looks like:
> > 
> > ===>  Regression tests for cmocka-1.1.3
> > Test project /usr/ports/pobj/cmocka-1.1.3/build-amd64
> >       Start  1: test_alloc
> >  1/44 Test  #1: test_alloc ........................   Passed    0.00 sec
> >       Start  2: test_group_setup_assert
> >  2/44 Test  #2: test_group_setup_assert ...........   Passed    0.00 sec
> > 
> > ...
> > 
> > 42/44 Test #42: assert_module_test ................   Passed    0.00 sec
> >       Start 43: waiter_test_wrap
> > 43/44 Test #43: waiter_test_wrap ..................   Passed    0.00 sec
> >       Start 44: test_uptime
> > 44/44 Test #44: test_uptime .......................   Passed    0.00 sec
> > 
> > 100% tests passed, 0 tests failed out of 44
> > 
> > Total Test time (real) =   0.11 sec
> > 
> > 
> > ... but with the debug options it looks like:
> > 
> > `env MODCMAKE_DEBUG=yes make test`
> > 
> > 41/44 Test #41: assert_macro_test .................   Passed    0.00 sec
> > test 42
> >       Start 42: assert_module_test
> > 
> > 42: Test command: 
> > /usr/ports/pobj/cmocka-1.1.3/build-amd64/example/assert_module_test
> > 42: Test timeout computed to be: 1500
> > 42: [==========] Running 3 test(s).
> > 42: [ RUN      ] increment_value_fail
> > 42: [  ERROR   ] --- ASSERT: value
> > 42: [   LINE   ] --- 
> > /usr/ports/pobj/cmocka-1.1.3/cmocka-1.1.3/example/assert_module.c:30: 
> > error: Failure!
> > 42: [  FAILED  ] increment_value_fail
> > 42: [ RUN      ] increment_value_assert
> > 42: Expected assertion value occurred
> > 42: [       OK ] increment_value_assert
> > 42: [ RUN      ] decrement_value_fail
> > 42: Expected assert in decrement_value(NULL)
> > 42: [  ERROR   ] --- [   LINE   ] --- 
> > /usr/ports/pobj/cmocka-1.1.3/cmocka-1.1.3/example/assert_module_test.c:46: 
> > error: Failure!
> > 42: [  FAILED  ] decrement_value_fail
> > 42: [==========] 3 test(s) run.
> > 42: [  PASSED  ] 1 test(s).
> > 42: [  FAILED  ] 2 test(s), listed below:
> > 42: [  FAILED  ] increment_value_fail
> > 42: [  FAILED  ] decrement_value_fail
> > 42: 
> > 42:  2 FAILED TEST(S)
> > 42/44 Test #42: assert_module_test ................   Passed    0.00 sec
> > test 43
> >       Start 43: waiter_test_wrap
> > 
> > 43: Test command: 
> > /usr/ports/pobj/cmocka-1.1.3/build-amd64/example/mock/chef_wrap/waiter_test_wrap
> > 43: Test timeout computed to be: 1500
> > 43: [==========] Running 2 test(s).
> > 43: [ RUN      ] test_order_hotdog
> > 43: [       OK ] test_order_hotdog
> > 43: [ RUN      ] test_bad_dish
> > 43: [       OK ] test_bad_dish
> > 43: [==========] 2 test(s) run.
> > 43: [  PASSED  ] 2 test(s).
> > 43/44 Test #43: waiter_test_wrap ..................   Passed    0.00 sec
> > 
> > That means that also stderr from the test can be seen. It's very helpful to 
> > me.
> > You can also override CTEST_FLAGS and use a lot of ctest options to improve 
> > the
> > output:
> > 
> > https://cmake.org/cmake/help/latest/manual/ctest.1.html
> > 
> > What do you say?
> > 
> > Best Regards,
> > 
> > RS
> > 
> > 
> 
> Tweaked version blow, MODCMAKE_DEBUG was in the wrong scope.
> Objections?

I'm not so keen on MODCMAKE_DEBUG doing double-duty, both changing to
produce a debug build, and increasing verbosity in tests. Should this be
MODCMAKE_VERBOSE or something instead? Or perhaps just enabled by default?

If it's controlled by any variable, it needs a mention in port-modules(5).

> Index: cmake.port.mk
> ===================================================================
> RCS file: /cvs/ports/devel/cmake/cmake.port.mk,v
> retrieving revision 1.65
> diff -u -p -u -p -r1.65 cmake.port.mk
> --- cmake.port.mk     21 Aug 2019 05:47:40 -0000      1.65
> +++ cmake.port.mk     2 Sep 2019 06:22:45 -0000
> @@ -20,14 +20,21 @@ NINJA_FLAGS ?= -v -j ${MAKE_JOBS}
>  CONFIGURE_ARGS += -DCMAKE_MAKE_PROGRAM=${NINJA}
>  .endif
>  
> +MODCMAKE_DEBUG ?= "no"
> +
>  .if ${USE_NINJA:L} == "yes" || ${USE_NINJA:L} == "samurai"
>  _MODCMAKE_GEN = Ninja
>  MODCMAKE_BUILD_TARGET = cd ${WRKBUILD} && exec ${SETENV} ${MAKE_ENV} \
>       ${NINJA} ${NINJA_FLAGS} ${ALL_TARGET}
>  MODCMAKE_INSTALL_TARGET = cd ${WRKBUILD} && exec ${SETENV} ${MAKE_ENV} \
>       ${FAKE_SETUP} ${NINJA} ${NINJA_FLAGS} ${FAKE_TARGET}
> +
> +.if ${MODCMAKE_DEBUG:L} == "yes"
> +CTEST_FLAGS ?= -VV
> +.endif
> +
>  MODCMAKE_TEST_TARGET = cd ${WRKBUILD} && exec ${SETENV} ${ALL_TEST_ENV} \
> -     ${NINJA} ${NINJA_FLAGS} ${TEST_FLAGS} ${TEST_TARGET}
> +             ${LOCALBASE}/bin/ctest -j ${MAKE_JOBS} ${CTEST_FLAGS}
>  
>  .if !target(do-build)
>  do-build:
> @@ -68,11 +75,10 @@ CONFIGURE_ENV +=  MODJAVA_VER=${MODJAVA_V
>                       MODTCL_LIB=${MODTCL_LIB} \
>                       MODTK_LIB=${MODTK_LIB}
>  
> -MODCMAKE_DEBUG ?=            No
> -
>  .if empty(CONFIGURE_STYLE)
>  CONFIGURE_STYLE=     cmake
>  .endif
> +
>  MODCMAKE_configure=  cd ${WRKBUILD} && ${SETENV} \
>       CC="${CC}" CFLAGS="${CFLAGS}" \
>       CXX="${CXX}" CXXFLAGS="${CXXFLAGS}" \
> @@ -92,8 +98,6 @@ MODCMAKE_BUILD_SUFFIX =     -release.cmake
>  SUBST_VARS +=        MODCMAKE_BUILD_SUFFIX
>  
>  SEPARATE_BUILD ?=    Yes
> -
> -TEST_TARGET ?=       test
>  
>  MODCMAKE_WANTCOLOR ?= No
>  MODCMAKE_VERBOSE ?= Yes
> 

Reply via email to