kselftest/alsa: Report failures to set the requested sample rate as skips
authorMark Brown <broonie@kernel.org>
Thu, 1 Dec 2022 17:07:41 +0000 (17:07 +0000)
committerTakashi Iwai <tiwai@suse.de>
Thu, 1 Dec 2022 19:02:11 +0000 (20:02 +0100)
If constraint selection gives us a sample rate other than the one that we
asked for that isn't a failure, that is the device implementing sample
rate constraints and advertising that it can't support whatever we asked
for. Report such cases as a test skip rather than failure so we don't have
false positives.

Signed-off-by: Mark Brown <broonie@kernel.org>
Link: https://lore.kernel.org/r/20221201170745.1111236-3-broonie@kernel.org
Signed-off-by: Takashi Iwai <tiwai@suse.de>
tools/testing/selftests/alsa/pcm-test.c

index dc36f4099954da3d617af5222f0a5640154ff0c6..edb820fe2ee6f3a01c0f94d7a8e7fa03c7a50795 100644 (file)
@@ -247,6 +247,7 @@ static void test_pcm_time1(struct pcm_data *data,
        bool pass = false, automatic = true;
        snd_pcm_hw_params_t *hw_params;
        snd_pcm_sw_params_t *sw_params;
+       bool skip = false;
 
        snd_pcm_hw_params_alloca(&hw_params);
        snd_pcm_sw_params_alloca(&sw_params);
@@ -321,7 +322,8 @@ __format:
                goto __close;
        }
        if (rrate != rate) {
-               snprintf(msg, sizeof(msg), "rate mismatch %ld != %ld", rate, rrate);
+               snprintf(msg, sizeof(msg), "rate unsupported %ld != %ld", rate, rrate);
+               skip = true;
                goto __close;
        }
        rperiod_size = period_size;
@@ -417,11 +419,20 @@ __format:
        msg[0] = '\0';
        pass = true;
 __close:
-       ksft_test_result(pass, "%s.%d.%d.%d.%s%s%s\n",
-                        test->cfg_prefix,
-                        data->card, data->device, data->subdevice,
-                        snd_pcm_stream_name(data->stream),
-                        msg[0] ? " " : "", msg);
+       if (!skip) {
+               ksft_test_result(pass, "%s.%d.%d.%d.%s%s%s\n",
+                                test->cfg_prefix,
+                                data->card, data->device, data->subdevice,
+                                snd_pcm_stream_name(data->stream),
+                                msg[0] ? " " : "", msg);
+       } else {
+               ksft_test_result_skip("%s.%d.%d.%d.%s%s%s\n",
+                                     test->cfg_prefix,
+                                     data->card, data->device,
+                                     data->subdevice,
+                                     snd_pcm_stream_name(data->stream),
+                                     msg[0] ? " " : "", msg);
+       }
        free(samples);
        if (handle)
                snd_pcm_close(handle);