summaryrefslogtreecommitdiffstats
path: root/tools/gst-inspect-check
blob: 8f16ee7775a9c4a923ccac5337a76fa81ff80d15 (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
#!/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 ();