go-org-orgwiki/org/org_test.go
Niklas Fasching 2947d7632d Support basic #+INCLUDE (src/example/export block only)
including org files is more complex - e.g. footnotes need to be namespaced to
their source file. org does this by prefixing each included files footnotes
with a number - but even that is not enough as it doesn't guarantee
uniqueness.

As I don't have a usecase for it, I'll avoid the additional complexity for
now.
2018-12-14 17:09:00 +01:00

65 lines
1.4 KiB
Go

package org
import (
"fmt"
"io/ioutil"
"path/filepath"
"strings"
"testing"
"github.com/pmezard/go-difflib/difflib"
)
func TestOrgWriter(t *testing.T) {
for _, path := range orgTestFiles() {
expected := fileString(path)
reader, writer := strings.NewReader(expected), NewOrgWriter()
actual, err := NewDocument().SetPath(path).Parse(reader).Write(writer)
if err != nil {
t.Errorf("%s\n got error: %s", path, err)
continue
}
if actual != expected {
t.Errorf("%s:\n%s'", path, diff(actual, expected))
} else {
t.Logf("%s: passed!", path)
}
}
}
func orgTestFiles() []string {
dir := "./testdata"
files, err := ioutil.ReadDir(dir)
if err != nil {
panic(fmt.Sprintf("Could not read directory: %s", err))
}
orgFiles := []string{}
for _, f := range files {
name := f.Name()
if filepath.Ext(name) != ".org" {
continue
}
orgFiles = append(orgFiles, filepath.Join(dir, name))
}
return orgFiles
}
func fileString(path string) string {
bs, err := ioutil.ReadFile(path)
if err != nil {
panic(fmt.Sprintf("Could not read file %s: %s", path, err))
}
return string(bs)
}
func diff(actual, expected string) string {
diff := difflib.UnifiedDiff{
A: difflib.SplitLines(actual),
B: difflib.SplitLines(expected),
FromFile: "Actual",
ToFile: "Expected",
Context: 3,
}
text, _ := difflib.GetUnifiedDiffString(diff)
return text
}