<div dir="ltr">Hi Patrick:<div>    Thank for your kind reply and that's really helpful. I am trying to figure out the meson subprojects system but still encounter lot of barrier. I run unt test using command "meson buiildir && ninja -C builddir test" in my development environment but never work. Could you help to cite an example in current openbmc repository? Do openbmc contributor run unit test by meson subprojects or run-unit-test-docker.sh when they are developing?</div><div><br></div><div>Tyler</div></div><br><div class="gmail_quote"><div dir="ltr" class="gmail_attr">Patrick Williams <<a href="mailto:patrick@stwcx.xyz">patrick@stwcx.xyz</a>> 於 2021年12月14日 週二 上午12:00寫道:<br></div><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex">On Mon, Dec 13, 2021 at 04:46:13PM +0800, Deng Tyler wrote:<br>
> Hi All:<br>
>     Is there any easier way to run unit-test during development instead of<br>
> running run-unit-test-docker.sh?<br>
<br>
If the repository is built using autotools or CMake there probably aren't a lot<br>
of other options.  Yocto has something called 'ptest' which would, in theory,<br>
allow the package to build test-cases and deploy them onto the hardware to run<br>
the unit tests.  We don't have many repositories configured to support ptest<br>
though.<br>
<br>
Any repository that is building using Meson should be able to run the unit tests<br>
on a typical Linux development box.  Some of them have not fully implemented<br>
this though.  What you want to look for is if the repository has a 'meson.build'<br>
and 'subprojects' subdirectory that contains a number of 'foo.wrap' files.  If<br>
it has this, you can probably build the repository outside of<br>
`run-unit-test-docker.sh` or a Yocto OE-SDK environment.<br>
<br>
In that case, simply `meson builddir && ninja -C builddir test`.<br>
<br>
If you come across a repository that supports Meson (meson.build file) but<br>
doesn't have correct wrap files, those can be added fairly easily.  I suspect<br>
you could use these repositories as a reference:<br>
<br>
```<br>
$ ls */subprojects/phosphor-logging.wrap<br>
dbus-sensors/subprojects/phosphor-logging.wrap<br>
google-misc/subprojects/phosphor-logging.wrap<br>
openpower-debug-collector/subprojects/phosphor-logging.wrap<br>
openpower-occ-control/subprojects/phosphor-logging.wrap<br>
openpower-vpd-parser/subprojects/phosphor-logging.wrap<br>
phosphor-bmc-code-mgmt/subprojects/phosphor-logging.wrap<br>
phosphor-certificate-manager/subprojects/phosphor-logging.wrap<br>
phosphor-debug-collector/subprojects/phosphor-logging.wrap<br>
phosphor-health-monitor/subprojects/phosphor-logging.wrap<br>
phosphor-led-manager/subprojects/phosphor-logging.wrap<br>
phosphor-networkd/subprojects/phosphor-logging.wrap<br>
phosphor-objmgr/subprojects/phosphor-logging.wrap<br>
phosphor-sel-logger/subprojects/phosphor-logging.wrap<br>
phosphor-virtual-sensor/subprojects/phosphor-logging.wrap<br>
phosphor-watchdog/subprojects/phosphor-logging.wrap<br>
service-config-manager/subprojects/phosphor-logging.wrap<br>
telemetry/subprojects/phosphor-logging.wrap<br>
```<br>
<br>
-- <br>
Patrick Williams<br>
</blockquote></div>