1#!/usr/bin/perl -w 2# ----------------------------------------------------------------------------- 3 4use strict; 5use lib ($0 =~ m|^(.*/)| ? $1 : "."); 6use GnumericTest; 7 8&message ("Check that the gnumeric exporter produces valid files."); 9 10my $schema = "$topsrc/gnumeric.xsd"; 11&GnumericTest::report_skip ("Cannot find schema") unless -r $schema; 12 13my $xmllint = &GnumericTest::find_program ("xmllint"); 14 15my @sources = &GnumericTest::corpus(); 16 17my $nskipped = 0; 18my $ngood = 0; 19my $nbad = 0; 20 21foreach my $src (@sources) { 22 if (!-r $src) { 23 $nskipped++; 24 next; 25 } 26 27 print STDERR "Checking $src\n"; 28 29 my $tmp = $src; 30 $tmp =~ s|^.*/||; 31 $tmp =~ s|\..*|.xml|; 32 &GnumericTest::junkfile ($tmp); 33 system ("$ssconvert $src $tmp"); 34 if (!-r $tmp) { 35 print STDERR "ssconvert failed to produce $tmp\n"; 36 die "Fail\n"; 37 } 38 39 my $out = `$xmllint --nonet --noout --schema $schema $tmp 2>&1`; 40 if ($out !~ /validates$/) { 41 print STDERR "While checking $tmp:\n"; 42 &GnumericTest::dump_indented ($out); 43 $nbad++; 44 } else { 45 $ngood++; 46 } 47 48 &GnumericTest::removejunk ($tmp); 49} 50 51&GnumericTest::report_skip ("No source files present") if $nbad + $ngood == 0; 52 53if ($nskipped > 0) { 54 print STDERR "$nskipped files skipped.\n"; 55} 56 57if ($nbad > 0) { 58 die "Fail\n"; 59} else { 60 print STDERR "Pass\n"; 61} 62