summaryrefslogtreecommitdiff
path: root/testsuite/gst-inspect-check
blob: 38586412b3421a624711b247473bea060ee519b6 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
#!/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;
my $path = `dirname $0`;
chomp $path;
$path .= "/../tools";

sub check_all_elements
{
	#send stderr to /dev/null
	my $command = "$path/gst-inspect 2>/dev/null";
	my @lines = `$command`;

	while ($_ = shift(@lines)){
		my @matches = m/^\w+:\s+(\w+):/;
		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 = "$path/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 ();