On 2021-09-28 7:44 a.m., Daniel J. Luke wrote:
On Sep 20, 2021, at 10:20 AM, Daniel J. Luke <dl...@geeklair.net> wrote:
On Sep 20, 2021, at 8:15 AM, Frank Dean <fr...@fdsd.co.uk> wrote:
Daniel J. Luke <dl...@geeklair.net> writes:
The newest version of clamav uses cmake for builds. In the 'configure' stage, I 
have it disabling tests because otherwise it won't build without the test 
dependencies installed (check and pytest).

Do we have a template or example of a canonical way to handle this? I don't see 
an obvious hook for when someone is running `port test` to change 
configure.args (I could, of course, add a post-extract/pre-configure and do 
some non-declaritive test to see if `port test` is being run and use that to 
branch - but that feels like a bad design choice).
The rapidjson port implements a 'tests' variant to handle a similar
situation.  I used the same pattern for the libosmium port.  The tests
can then be run with `sudo port -d test current +tests`.
That works, I guess.

Is there interest in having base auto-add +tests if `port test` is called? (I 
haven't looked at base/ code in a while, but it seems possible). I like to 
imagine a future where we have enough infrastructure that we would run `port 
test` for any ports that have test.run set.
On this same train of thought - clamav tests run against the installed 
libraries (like some other ports tend to do) - in long-ago times I'd solve this 
by setting DYLD_LIBRARY_PATH - but since SIP started removing these that no 
longer works normally. I think trace mode has a(n elaborate) workaround where 
it copies binaries and executes the copies, but that doesn't seem like 
something I should implement in a portfile ;-) [This is another instance where 
if trace mode were the default, things would 'just work']

Has anyone else already solved this?


The way our cmake PortGroup sets things up, running tests is harder. You can configure cmake to allow testing to find the libraries in the build tree. See for example what I did in libcbor:


variant tests description {enable tests} {
    depends_test-append         port:cmocka
    configure.args-append       -DWITH_TESTS=ON
    configure.pre_args-replace -DCMAKE_BUILD_WITH_INSTALL_RPATH:BOOL=ON \
-DCMAKE_BUILD_WITH_INSTALL_RPATH:BOOL=OFF
    test.run            yes
    test.target         test
}

Ken







Reply via email to