validate: Add support for setting a report level for an issue type
Until now we could set report levels to the monitor, this adds support for setting report level for the issue types too.
This commit is contained in:
parent
80cc6f29ef
commit
64560aea32
@ -503,13 +503,19 @@ gst_validate_runner_get_reporting_level_for_name (GstValidateRunner * runner,
|
||||
const gchar * name)
|
||||
{
|
||||
GList *tmp;
|
||||
gchar *fixed_name = g_strdup (name);
|
||||
|
||||
_replace_double_colons (fixed_name);
|
||||
for (tmp = runner->priv->report_pattern_levels; tmp; tmp = tmp->next) {
|
||||
PatternLevel *pattern_level = (PatternLevel *) tmp->data;
|
||||
if (g_pattern_match_string (pattern_level->pattern, name))
|
||||
if (g_pattern_match_string (pattern_level->pattern, fixed_name)) {
|
||||
g_free (fixed_name);
|
||||
|
||||
return pattern_level->level;
|
||||
}
|
||||
}
|
||||
|
||||
g_free (fixed_name);
|
||||
return GST_VALIDATE_SHOW_UNKNOWN;
|
||||
}
|
||||
|
||||
@ -535,14 +541,22 @@ void
|
||||
gst_validate_runner_add_report (GstValidateRunner * runner,
|
||||
GstValidateReport * report)
|
||||
{
|
||||
GstValidateReportingDetails reporter_level =
|
||||
gst_validate_reporter_get_reporting_level (report->reporter);
|
||||
GstValidateReportingDetails details, reporter_details, issue_type_details;
|
||||
|
||||
gst_validate_send (json_boxed_serialize (GST_MINI_OBJECT_TYPE (report),
|
||||
report));
|
||||
|
||||
details = reporter_details =
|
||||
gst_validate_reporter_get_reporting_level (report->reporter);
|
||||
issue_type_details =
|
||||
gst_validate_runner_get_reporting_level_for_name (runner,
|
||||
g_quark_to_string (report->issue->issue_id));
|
||||
|
||||
if (reporter_details == GST_VALIDATE_SHOW_UNKNOWN)
|
||||
details = issue_type_details;
|
||||
|
||||
/* Let's use our own reporting strategy */
|
||||
if (reporter_level == GST_VALIDATE_SHOW_UNKNOWN) {
|
||||
if (details == GST_VALIDATE_SHOW_UNKNOWN) {
|
||||
gst_validate_report_set_reporting_level (report,
|
||||
runner->priv->default_level);
|
||||
switch (runner->priv->default_level) {
|
||||
@ -560,6 +574,9 @@ gst_validate_runner_add_report (GstValidateRunner * runner,
|
||||
default:
|
||||
break;
|
||||
}
|
||||
} else if (details == GST_VALIDATE_SHOW_NONE) {
|
||||
GST_DEBUG ("Not reporting.");
|
||||
return;
|
||||
}
|
||||
|
||||
GST_VALIDATE_RUNNER_LOCK (runner);
|
||||
|
@ -206,10 +206,11 @@ _create_issues (GstValidateRunner * runner)
|
||||
gst_object_unref (sinkpad);
|
||||
gst_object_unref (funnel_sink1);
|
||||
gst_object_unref (funnel_sink2);
|
||||
check_destroyed (fakemixer, funnel_sink1, funnel_sink2, NULL);
|
||||
check_destroyed (src1, srcpad1, NULL);
|
||||
check_destroyed (src2, srcpad2, NULL);
|
||||
check_destroyed (sink, sinkpad, NULL);
|
||||
gst_check_objects_destroyed_on_unref (fakemixer, funnel_sink1, funnel_sink2,
|
||||
NULL);
|
||||
gst_check_objects_destroyed_on_unref (src1, srcpad1, NULL);
|
||||
gst_check_objects_destroyed_on_unref (src2, srcpad2, NULL);
|
||||
gst_check_objects_destroyed_on_unref (sink, sinkpad, NULL);
|
||||
}
|
||||
|
||||
#define TEST_LEVELS(name, details, num_issues) \
|
||||
@ -245,6 +246,8 @@ TEST_LEVELS
|
||||
/* 2 issues repeated on the fakesink's sink */
|
||||
TEST_LEVELS (none_fakesink_all, "none,fakesink*:all", 2);
|
||||
|
||||
TEST_LEVELS (issue_type, "event::flush-stop-unexpected:none", 0);
|
||||
|
||||
#undef TEST_LEVELS
|
||||
|
||||
static Suite *
|
||||
@ -271,6 +274,7 @@ gst_validate_suite (void)
|
||||
tcase_add_test (tc_chain,
|
||||
test_global_level_synthetic_fakesrc1_subchain_fakesrc2_subchain_fakemixer_src_monitor);
|
||||
tcase_add_test (tc_chain, test_global_level_none_fakesink_all);
|
||||
tcase_add_test (tc_chain, test_global_level_issue_type);
|
||||
|
||||
return s;
|
||||
}
|
||||
|
Loading…
x
Reference in New Issue
Block a user