[gnumeric] Tests: add basic syntax check for xlsx files.
- From: Morten Welinder <mortenw src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [gnumeric] Tests: add basic syntax check for xlsx files.
- Date: Wed, 12 Mar 2014 18:05:23 +0000 (UTC)
commit 372e50e0d1201466e15dffa8c0407e4a63ac7bb9
Author: Morten Welinder <terra gnome org>
Date: Wed Mar 12 14:04:47 2014 -0400
Tests: add basic syntax check for xlsx files.
We do not check against a schema yet.
test/Makefile.am | 1 +
test/t6152-xlsx-syntax.pl | 136 +++++++++++++++++++++++++++++++++++++++++++++
2 files changed, 137 insertions(+), 0 deletions(-)
---
diff --git a/test/Makefile.am b/test/Makefile.am
index 82e113d..3c8dcc5 100644
--- a/test/Makefile.am
+++ b/test/Makefile.am
@@ -73,6 +73,7 @@ TESTS = t1000-statfuns.pl \
t6104-finfuns-ods.pl \
t6150-ods-syntax.pl \
t6151-gnumeric-syntax.pl \
+ t6152-xlsx-syntax.pl \
t6500-strings.pl \
t6501-numbers.pl \
t6502-styles.pl \
diff --git a/test/t6152-xlsx-syntax.pl b/test/t6152-xlsx-syntax.pl
new file mode 100755
index 0000000..c4caef4
--- /dev/null
+++ b/test/t6152-xlsx-syntax.pl
@@ -0,0 +1,136 @@
+#!/usr/bin/perl -w
+# -----------------------------------------------------------------------------
+
+use strict;
+use lib ($0 =~ m|^(.*/)| ? $1 : ".");
+use GnumericTest;
+
+&message ("Check that the xlsx exporter produces valid files.");
+
+my $format = "Gnumeric_Excel:xlsx";
+# FIXME: until get figure out how to check xlsx files against a schema,
+# this is a very limited test.
+#my $schema = ..;
+#&GnumericTest::report_skip ("Cannot find schema") unless -r $schema;
+
+my $xmllint = &GnumericTest::find_program ("xmllint");
+my $unzip = &GnumericTest::find_program ("unzip");
+
+my @sources =
+ ("$samples/excel/address.xls",
+ "$samples/excel/bitwise.xls",
+ "$samples/excel/chart-tests-excel.xls",
+ "$samples/excel/datefuns.xls",
+ "$samples/excel/dbfuns.xls",
+ "$samples/excel/engfuns.xls",
+ "$samples/excel/finfuns.xls",
+ "$samples/excel/functions.xls",
+ "$samples/excel/infofuns.xls",
+ "$samples/excel/logfuns.xls",
+ "$samples/excel/lookfuns2.xls",
+ "$samples/excel/lookfuns.xls",
+ "$samples/excel/mathfuns.xls",
+ "$samples/excel/objs.xls",
+ "$samples/excel/operator.xls",
+ "$samples/excel/sort.xls",
+ "$samples/excel/statfuns.xls",
+ "$samples/excel/textfuns.xls",
+ "$samples/excel/yalta2008.xls",
+ "$samples/excel12/cellstyle.xlsx",
+ # xmllint hangs on these files. (Well, amath finishes but takes too
+ # long.)
+ # "$samples/crlibm.gnumeric",
+ # "$samples/amath.gnumeric",
+ # "$samples/gamma.gnumeric",
+ "$samples/linest.xls",
+ "$samples/vba-725220.xls",
+ "$samples/sumif.xls",
+ "$samples/array-intersection.xls",
+ "$samples/arrays.xls",
+ "$samples/ftest.xls",
+ "$samples/ttest.xls",
+ "$samples/chitest.xls",
+ "$samples/numbermatch.gnumeric",
+ "$samples/solver/afiro.mps",
+ "$samples/solver/blend.mps",
+ "$samples/auto-filter-tests.gnumeric",
+ "$samples/cell-comment-tests.gnumeric",
+ "$samples/colrow-tests.gnumeric",
+ "$samples/formula-tests.gnumeric",
+ "$samples/merge-tests.gnumeric",
+ "$samples/number-tests.gnumeric",
+ "$samples/page-setup-tests.gnumeric",
+ "$samples/rich-text-tests.gnumeric",
+ "$samples/sheet-formatting-tests.gnumeric",
+ "$samples/solver-tests.gnumeric",
+ "$samples/split-panes-tests.gnumeric",
+ "$samples/string-tests.gnumeric",
+ "$samples/merge-tests.gnumeric",
+ "$samples/style-tests.gnumeric",
+ "$samples/validation-tests.gnumeric",
+ );
+my $nskipped = 0;
+my $ngood = 0;
+my $nbad = 0;
+
+foreach my $src (@sources) {
+ if (!-r $src) {
+ $nskipped++;
+ next;
+ }
+
+ print STDERR "Checking $src\n";
+
+ my $tmp = $src;
+ $tmp =~ s|^.*/||;
+ $tmp =~ s|\..*|.xlsx|;
+ &GnumericTest::junkfile ($tmp);
+ system ("$ssconvert -T $format $src $tmp");
+ if (!-r $tmp) {
+ print STDERR "ssconvert failed to produce $tmp\n";
+ die "Fail\n";
+ }
+
+ my %members;
+ foreach (`$unzip -v $tmp`) {
+ next unless /^----/ ... /^----/;
+ next unless m{\s(\S+)$};
+ my $member = $1;
+ if (exists $members{$member}) {
+ print STDERR "Duplicate member $member\n";
+ die "Fail\n";
+ }
+ $members{$member} = 1;
+ }
+
+ my @check_members = ('xl/workbook.xml', 'xl/styles.xml');
+ push @check_members, 'xl/sharedStrings.xml' if $members{'xl/sharedStrings.xml'};
+ foreach my $member (sort keys %members) {
+ push @check_members, $member if $member =~ m{^xl/worksheets/sheet\d+\.xml$};
+ }
+
+ for my $member (@check_members) {
+ my $out = `$unzip -p $tmp $member | $xmllint --noout - 2>&1`;
+ if ($out ne '') {
+ print STDERR "While checking $member from $tmp:\n";
+ &GnumericTest::dump_indented ($out);
+ $nbad++;
+ } else {
+ $ngood++;
+ }
+ }
+
+ &GnumericTest::removejunk ($tmp);
+}
+
+&GnumericTest::report_skip ("No source files present") if $nbad + $ngood == 0;
+
+if ($nskipped > 0) {
+ print STDERR "$nskipped files skipped.\n";
+}
+
+if ($nbad > 0) {
+ die "Fail\n";
+} else {
+ print STDERR "Pass\n";
+}
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]