--- /dev/null
+#!/usr/bin/perl -w
+
+# checks all built plugins by running gst-inspect on each element
+# and checking for warnings on stderr
+
+### packages
+
+use File::Basename;
+
+my $num_warnings = 0;
+
+sub check_all_elements
+{
+ #send stderr to /dev/null
+ my $command = "gst-inspect 2>/dev/null";
+ my @lines = `$command`;
+
+ while ($_ = shift(@lines)){
+ my @matches = m/^\w+\s+element:\s+(\w+):/g;
+ if(@matches){
+ check_element($matches[0]);
+ }
+ }
+ if ($num_warnings > 0){
+ print("there are $num_warnings warnings to be fixed\n");
+ return -1;
+ }
+ return 0;
+}
+
+sub check_element($)
+{
+ my ($element) = @_;
+ print "running inspect on $element\n";
+
+ # capture stderr, send stdout to /dev/null
+ my $command = "gst-inspect $element 2>&1 1>/dev/null";
+
+ my @lines = `$command`;
+
+ while ($_ = shift(@lines)){
+ # ignore INFO lines, they are ok
+ if (! /INFO/){
+ print $_;
+
+ # do this to ignore empty lines
+ if (length > 1){
+ $num_warnings++;
+ }
+ }
+ }
+ system("gst-inspect $element 2>/dev/null 1>/dev/null");
+ if ($? != 0){
+ my $exit_value = $? >> 8;
+ my $signal_num = $? & 127;
+ my $dumped_core = $? & 128;
+ if ($exit_value){
+ print("error value on exit: $exit_value\n");
+ }
+ if ($signal_num){
+ print("signal caused exit: $signal_num\n");
+ }
+ if ($dumped_core){
+ print("dumped core: $dumped_core\n");
+ }
+ $num_warnings++
+ }
+}
+
+### main
+
+exit check_all_elements ();
+