aboutsummaryrefslogtreecommitdiff
path: root/internal/extract
diff options
context:
space:
mode:
authorLukasz Kasprzak <lukas@labunix.xyz>2026-09-15 00:02:37 +0200
committerLukasz Kasprzak <lukas@labunix.xyz>2026-09-15 00:02:37 +0200
commit8a046c897e42e9459aa99377589c80c773601efc (patch)
tree94d959aa7b0d456402363d57d6c97f64ff9eea22 /internal/extract
parent5310c857d7531986c806404103f118b3c5e364f3 (diff)
downloadkrino-8a046c897e42e9459aa99377589c80c773601efc.tar.gz
krino-8a046c897e42e9459aa99377589c80c773601efc.zip
tests read real documents from LibreOffice and pandoc; antiword's short-document limit documented
Diffstat (limited to 'internal/extract')
-rw-r--r--internal/extract/real_test.go57
-rw-r--r--internal/extract/testdata/real/book.epubbin0 -> 4886 bytes
-rw-r--r--internal/extract/testdata/real/doc.docbin0 -> 22528 bytes
-rw-r--r--internal/extract/testdata/real/doc.docxbin0 -> 6041 bytes
-rw-r--r--internal/extract/testdata/real/doc.odtbin0 -> 8506 bytes
-rw-r--r--internal/extract/testdata/real/doc.pdfbin0 -> 37442 bytes
-rw-r--r--internal/extract/testdata/real/sheet.odsbin0 -> 8686 bytes
-rw-r--r--internal/extract/testdata/real/sheet.xlsbin0 -> 5632 bytes
-rw-r--r--internal/extract/testdata/real/sheet.xlsxbin0 -> 5538 bytes
-rw-r--r--internal/extract/testdata/real/slides.pptxbin0 -> 27659 bytes
10 files changed, 57 insertions, 0 deletions
diff --git a/internal/extract/real_test.go b/internal/extract/real_test.go
new file mode 100644
index 0000000..fd52f81
--- /dev/null
+++ b/internal/extract/real_test.go
@@ -0,0 +1,57 @@
+// SPDX-License-Identifier: GPL-3.0-or-later
+
+package extract
+
+import (
+ "os"
+ "path/filepath"
+ "strings"
+ "testing"
+)
+
+// TestRealDocuments reads documents made by the programs people use -
+// LibreOffice 25.2 (docx, odt, doc, pdf, ods, xlsx, xls) and pandoc (pptx,
+// epub) - from invented text, not ones built by hand in a test (triage
+// 34s). The zip formats always run; a format that needs an external tool
+// runs when that tool is installed and is skipped otherwise.
+func TestRealDocuments(t *testing.T) {
+ e := newWithPath(os.Getenv("PATH"))
+ found := map[string]bool{}
+ for _, tool := range e.Tools() {
+ found[tool.Name] = tool.Path != ""
+ }
+ for _, c := range []struct {
+ file string
+ tools []string // any one of them will do; none means Go reads it
+ want string
+ }{
+ {"doc.docx", nil, "acme ltd"},
+ {"doc.odt", nil, "acme ltd"},
+ {"sheet.ods", nil, "acme ltd"},
+ {"sheet.xlsx", nil, "acme ltd"},
+ {"slides.pptx", nil, "acme ltd"},
+ {"book.epub", nil, "acme ltd"},
+ {"doc.pdf", []string{"pdftotext"}, "acme ltd"},
+ {"doc.doc", []string{"antiword", "catdoc"}, "acme ltd"},
+ {"sheet.xls", []string{"xls2csv"}, "acme ltd"},
+ } {
+ t.Run(c.file, func(t *testing.T) {
+ if len(c.tools) > 0 {
+ ok := false
+ for _, tool := range c.tools {
+ ok = ok || found[tool]
+ }
+ if !ok {
+ t.Skipf("none of %v installed", c.tools)
+ }
+ }
+ got, err := text(t, e, filepath.Join("testdata", "real", c.file), 0)
+ if err != nil {
+ t.Fatal(err)
+ }
+ if !strings.Contains(got, c.want) {
+ t.Errorf("text of %s lacks %q:\n%q", c.file, c.want, got)
+ }
+ })
+ }
+}
diff --git a/internal/extract/testdata/real/book.epub b/internal/extract/testdata/real/book.epub
new file mode 100644
index 0000000..741b3a7
--- /dev/null
+++ b/internal/extract/testdata/real/book.epub
Binary files differ
diff --git a/internal/extract/testdata/real/doc.doc b/internal/extract/testdata/real/doc.doc
new file mode 100644
index 0000000..8520659
--- /dev/null
+++ b/internal/extract/testdata/real/doc.doc
Binary files differ
diff --git a/internal/extract/testdata/real/doc.docx b/internal/extract/testdata/real/doc.docx
new file mode 100644
index 0000000..7bc9d04
--- /dev/null
+++ b/internal/extract/testdata/real/doc.docx
Binary files differ
diff --git a/internal/extract/testdata/real/doc.odt b/internal/extract/testdata/real/doc.odt
new file mode 100644
index 0000000..d3d287e
--- /dev/null
+++ b/internal/extract/testdata/real/doc.odt
Binary files differ
diff --git a/internal/extract/testdata/real/doc.pdf b/internal/extract/testdata/real/doc.pdf
new file mode 100644
index 0000000..b46e40e
--- /dev/null
+++ b/internal/extract/testdata/real/doc.pdf
Binary files differ
diff --git a/internal/extract/testdata/real/sheet.ods b/internal/extract/testdata/real/sheet.ods
new file mode 100644
index 0000000..0bb783a
--- /dev/null
+++ b/internal/extract/testdata/real/sheet.ods
Binary files differ
diff --git a/internal/extract/testdata/real/sheet.xls b/internal/extract/testdata/real/sheet.xls
new file mode 100644
index 0000000..ee64a9d
--- /dev/null
+++ b/internal/extract/testdata/real/sheet.xls
Binary files differ
diff --git a/internal/extract/testdata/real/sheet.xlsx b/internal/extract/testdata/real/sheet.xlsx
new file mode 100644
index 0000000..9788970
--- /dev/null
+++ b/internal/extract/testdata/real/sheet.xlsx
Binary files differ
diff --git a/internal/extract/testdata/real/slides.pptx b/internal/extract/testdata/real/slides.pptx
new file mode 100644
index 0000000..5ee037c
--- /dev/null
+++ b/internal/extract/testdata/real/slides.pptx
Binary files differ