summaryrefslogtreecommitdiffstats
path: root/kabc/vcardparser/checkvcard.pl
diff options
context:
space:
mode:
Diffstat (limited to 'kabc/vcardparser/checkvcard.pl')
-rwxr-xr-xkabc/vcardparser/checkvcard.pl75
1 files changed, 75 insertions, 0 deletions
diff --git a/kabc/vcardparser/checkvcard.pl b/kabc/vcardparser/checkvcard.pl
new file mode 100755
index 000000000..67160ea4a
--- /dev/null
+++ b/kabc/vcardparser/checkvcard.pl
@@ -0,0 +1,75 @@
+#!/usr/bin/perl
+
+if ( @ARGV != 1 ) {
+ print STDERR "Missing arg: filename\n";
+ exit 1;
+}
+
+$file = $ARGV[0];
+
+if ( !open( IN, "$file" ) ) {
+ print STDERR "Unable to open '$file'\n";
+ exit 1;
+}
+
+while( <IN> ) {
+ if (/^VERSION:(.*)$/ ) {
+ $version = $1;
+ if ( $version eq "2.1" ) { $options = "--vcard21"; }
+ }
+}
+
+close IN;
+
+$ref = "$file.ref";
+
+if ( !open( REF, "$ref" ) ) {
+ print STDERR "Unable to open $ref\n";
+ exit 1;
+}
+
+while( <REF> ) {
+ push @ref, $_;
+}
+
+close REF;
+
+if ( !open( READ, "./testread $file $options 2> /dev/null |" ) ) {
+ print STDERR "Unable to open testread\n";
+ exit 1;
+}
+
+print "Checking '$file':\n";
+
+$gotsomething = 0;
+$error = 0;
+$i = 0;
+while( <READ> ) {
+ $gotsomething = 1;
+ $out = $_;
+ $ref = @ref[$i++];
+
+ if ( $out ne $ref ) {
+ if ( $ref =~ /^UID/ && $out =~ /^UID/ ) { next; }
+ $error++;
+ print " Expected : $ref";
+ print " Parser output : $out";
+ }
+}
+
+close READ;
+
+if ( $gotsomething == 0 ) {
+ print "\n FAILED: testread didn't output anything\n";
+ system "touch FAILED";
+ exit 1;
+}
+if ( $error > 0 ) {
+ print "\n FAILED: $error errors found.\n";
+ system "touch FAILED";
+ exit 1;
+} else {
+ print " OK\n";
+}
+
+exit 0;