diff options
| author | Lukasz Kasprzak <lukas@labunix.xyz> | 2026-09-15 00:02:37 +0200 |
|---|---|---|
| committer | Lukasz Kasprzak <lukas@labunix.xyz> | 2026-09-15 00:02:37 +0200 |
| commit | 8a046c897e42e9459aa99377589c80c773601efc (patch) | |
| tree | 94d959aa7b0d456402363d57d6c97f64ff9eea22 /internal/extract | |
| parent | 5310c857d7531986c806404103f118b3c5e364f3 (diff) | |
| download | krino-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.go | 57 | ||||
| -rw-r--r-- | internal/extract/testdata/real/book.epub | bin | 0 -> 4886 bytes | |||
| -rw-r--r-- | internal/extract/testdata/real/doc.doc | bin | 0 -> 22528 bytes | |||
| -rw-r--r-- | internal/extract/testdata/real/doc.docx | bin | 0 -> 6041 bytes | |||
| -rw-r--r-- | internal/extract/testdata/real/doc.odt | bin | 0 -> 8506 bytes | |||
| -rw-r--r-- | internal/extract/testdata/real/doc.pdf | bin | 0 -> 37442 bytes | |||
| -rw-r--r-- | internal/extract/testdata/real/sheet.ods | bin | 0 -> 8686 bytes | |||
| -rw-r--r-- | internal/extract/testdata/real/sheet.xls | bin | 0 -> 5632 bytes | |||
| -rw-r--r-- | internal/extract/testdata/real/sheet.xlsx | bin | 0 -> 5538 bytes | |||
| -rw-r--r-- | internal/extract/testdata/real/slides.pptx | bin | 0 -> 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 Binary files differnew file mode 100644 index 0000000..741b3a7 --- /dev/null +++ b/internal/extract/testdata/real/book.epub diff --git a/internal/extract/testdata/real/doc.doc b/internal/extract/testdata/real/doc.doc Binary files differnew file mode 100644 index 0000000..8520659 --- /dev/null +++ b/internal/extract/testdata/real/doc.doc diff --git a/internal/extract/testdata/real/doc.docx b/internal/extract/testdata/real/doc.docx Binary files differnew file mode 100644 index 0000000..7bc9d04 --- /dev/null +++ b/internal/extract/testdata/real/doc.docx diff --git a/internal/extract/testdata/real/doc.odt b/internal/extract/testdata/real/doc.odt Binary files differnew file mode 100644 index 0000000..d3d287e --- /dev/null +++ b/internal/extract/testdata/real/doc.odt diff --git a/internal/extract/testdata/real/doc.pdf b/internal/extract/testdata/real/doc.pdf Binary files differnew file mode 100644 index 0000000..b46e40e --- /dev/null +++ b/internal/extract/testdata/real/doc.pdf diff --git a/internal/extract/testdata/real/sheet.ods b/internal/extract/testdata/real/sheet.ods Binary files differnew file mode 100644 index 0000000..0bb783a --- /dev/null +++ b/internal/extract/testdata/real/sheet.ods diff --git a/internal/extract/testdata/real/sheet.xls b/internal/extract/testdata/real/sheet.xls Binary files differnew file mode 100644 index 0000000..ee64a9d --- /dev/null +++ b/internal/extract/testdata/real/sheet.xls diff --git a/internal/extract/testdata/real/sheet.xlsx b/internal/extract/testdata/real/sheet.xlsx Binary files differnew file mode 100644 index 0000000..9788970 --- /dev/null +++ b/internal/extract/testdata/real/sheet.xlsx diff --git a/internal/extract/testdata/real/slides.pptx b/internal/extract/testdata/real/slides.pptx Binary files differnew file mode 100644 index 0000000..5ee037c --- /dev/null +++ b/internal/extract/testdata/real/slides.pptx |
