[pulseaudio-discuss] [PATCH] tests: Add tests for alsa-mixer paths
Tanu Kaskinen
tanuk at iki.fi
Fri Mar 22 12:17:53 PDT 2013
On Fri, 2013-03-22 at 19:43 +0100, David Henningsson wrote:
> On 03/22/2013 07:00 PM, Tanu Kaskinen wrote:
> > On Fri, 2013-03-22 at 15:37 +0100, David Henningsson wrote:
> >> It checks all files in the mixer/paths directory and checks
> >> - that the file can be parsed without errors
> >> - that the file is actually shipped in the makefile
> >>
> >> Signed-off-by: David Henningsson <david.henningsson at canonical.com>
> >> ---
> >>
> >> After I realized that my previous headset-mic patch did not event ship the new file,
> >> I also realized I might do the same mistake again.
> >>
> >> I guess this could be enhanced later with checking that profile-sets do not point
> >> to non-existent paths etc, but this will do for now.
> >>
> >> src/Makefile.am | 7 +++
> >> src/tests/alsa-mixer-path-test.c | 110 ++++++++++++++++++++++++++++++++++++++
> >> 2 files changed, 117 insertions(+)
> >> create mode 100644 src/tests/alsa-mixer-path-test.c
> >>
> >> diff --git a/src/Makefile.am b/src/Makefile.am
> >> index 7685e0c..3326a2c 100644
> >> --- a/src/Makefile.am
> >> +++ b/src/Makefile.am
> >> @@ -297,6 +297,8 @@ endif
> >> if HAVE_ALSA
> >> TESTS_norun += \
> >> alsa-time-test
> >> +TESTS_default += \
> >> + alsa-mixer-path-test
> >> endif
> >>
> >> if HAVE_TESTS
> >> @@ -545,6 +547,11 @@ alsa_time_test_LDADD = $(AM_LDADD) $(ASOUNDLIB_LIBS)
> >> alsa_time_test_CFLAGS = $(AM_CFLAGS) $(ASOUNDLIB_CFLAGS)
> >> alsa_time_test_LDFLAGS = $(AM_LDFLAGS) $(BINLDFLAGS)
> >>
> >> +alsa_mixer_path_test_SOURCES = tests/alsa-mixer-path-test.c
> >> +alsa_mixer_path_test_CFLAGS = $(AM_CFLAGS) $(LIBCHECK_CFLAGS) $(ASOUNDLIB_CFLAGS)
> >> +alsa_mixer_path_test_LDADD = $(AM_LDADD) libpulsecore- at PA_MAJORMINOR@.la libpulse.la libpulsecommon- at PA_MAJORMINOR@.la libalsa-util.la
> >> +alsa_mixer_path_test_LDFLAGS = $(AM_LDFLAGS) $(BINLDFLAGS) $(LIBCHECK_LIBS)
> >> +
> >> usergroup_test_SOURCES = tests/usergroup-test.c
> >> usergroup_test_LDADD = $(AM_LDADD) libpulsecore- at PA_MAJORMINOR@.la libpulse.la libpulsecommon- at PA_MAJORMINOR@.la
> >> usergroup_test_CFLAGS = $(AM_CFLAGS) $(LIBCHECK_CFLAGS)
> >> diff --git a/src/tests/alsa-mixer-path-test.c b/src/tests/alsa-mixer-path-test.c
> >> new file mode 100644
> >> index 0000000..2460c66
> >> --- /dev/null
> >> +++ b/src/tests/alsa-mixer-path-test.c
> >> @@ -0,0 +1,110 @@
> >> +#ifdef HAVE_CONFIG_H
> >> +#include <config.h>
> >> +#endif
> >> +
> >> +#include <check.h>
> >> +#include <dirent.h>
> >> +#include <stdbool.h>
> >> +#include <stdio.h>
> >> +
> >> +#include <pulse/pulseaudio.h>
> >> +#include <pulsecore/log.h>
> >> +#include <pulsecore/core-util.h>
> >> +#include <pulsecore/strlist.h>
> >> +#include <modules/alsa/alsa-mixer.h>
> >> +
> >> +
> >> +static const char *get_default_paths_dir(void) {
> >> + if (pa_run_from_build_tree())
> >> + return PA_BUILDDIR "/modules/alsa/mixer/paths/";
> >
> > This doesn't work if the build directory is different from the source
> > directory. Instead of PA_BUILDDIR, this should use PA_SRCDIR, which
> > doesn't currently exist, but it should be possible to add it.
>
> It is copy-pasted from existing pulseaudio code (in alsa-mixer.c, IIRC).
> If you fix it there, feel free to do so here to.
OK.
> But I do an out-of-source build normally (according to Colin's old but
> excellent instructions), and my test worked siccessfully. I do remember
> though that Colin's instructions include making some related symlink.
I tried this:
mkdir build
cd build
../configure
make check
This test failed.
> >
> >> + else
> >> + return PA_ALSA_PATHS_DIR;
> >> +}
> >> +
> >> +static pa_strlist *load_makefile() {
> >> + FILE *f;
> >> + bool lookforfiles = false;
> >> + char buf[2048];
> >> + pa_strlist *result = NULL;
> >> + const char *Makefile = PA_BUILDDIR "/Makefile";
> >> +
> >> + f = pa_fopen_cloexec(Makefile, "r");
> >> + fail_unless(f != NULL); /* Consider skipping this test instead of failing if Makefile not found? */
> >
> > If you want my opinion to the question, I think it's fine to assume that
> > Makefile is always found.
>
> Ok.
>
> >
> >> + while (!feof(f)) {
> >> + if (!fgets(buf, sizeof(buf), f)) {
> >> + fail_unless(feof(f));
> >
> > The loop condition is !feof(f), so this will always fail. The if could
> > be replaced with fail_unless(fgets(buf, sizeof(buf), f));
>
> Eh, I don't think so?
fgets() returns NULL in case there's an error or f is at EOF. The while
condition just checked that f is not at EOF, therefore an error must
have happened.
> If you're sure, could you please correct the code in pa_config_parse
> which works the same way?
Done.
--
Tanu
More information about the pulseaudio-discuss
mailing list