Add Rst shortcode test

Fixes #2253
This commit is contained in:
Bjørn Erik Pedersen 2016-07-04 10:49:20 +02:00
parent 5388211c11
commit e6d97c4fca
2 changed files with 31 additions and 8 deletions

View file

@ -469,6 +469,7 @@ func getAsciidocExecPath() string {
return path return path
} }
// HasAsciidoc returns whether Asciidoctor or Asciidoc is installed on this computer.
func HasAsciidoc() bool { func HasAsciidoc() bool {
return getAsciidocExecPath() != "" return getAsciidocExecPath() != ""
} }
@ -497,19 +498,34 @@ func getAsciidocContent(content []byte) string {
return out.String() return out.String()
} }
// HasRst returns whether rst2html is installed on this computer.
func HasRst() bool {
return getRstExecPath() != ""
}
func getRstExecPath() string {
path, err := exec.LookPath("rst2html")
if err != nil {
path, err = exec.LookPath("rst2html.py")
if err != nil {
return ""
}
}
return path
}
// getRstContent calls the Python script rst2html as an external helper // getRstContent calls the Python script rst2html as an external helper
// to convert reStructuredText content to HTML. // to convert reStructuredText content to HTML.
func getRstContent(content []byte) string { func getRstContent(content []byte) string {
cleanContent := bytes.Replace(content, SummaryDivider, []byte(""), 1) cleanContent := bytes.Replace(content, SummaryDivider, []byte(""), 1)
path, err := exec.LookPath("rst2html") path := getRstExecPath()
if err != nil {
path, err = exec.LookPath("rst2html.py") if path == "" {
if err != nil { jww.ERROR.Println("rst2html / rst2html.py not found in $PATH: Please install.\n",
jww.ERROR.Println("rst2html / rst2html.py not found in $PATH: Please install.\n", " Leaving reStructuredText content unrendered.")
" Leaving reStructuredText content unrendered.") return (string(content))
return (string(content))
}
} }
cmd := exec.Command(path, "--leave-comments") cmd := exec.Command(path, "--leave-comments")

View file

@ -470,6 +470,9 @@ e`,
{"sect/doc7.ad", `_Shortcodes:_ *b: {{< b >}} c: {{% c %}}*`, {"sect/doc7.ad", `_Shortcodes:_ *b: {{< b >}} c: {{% c %}}*`,
filepath.FromSlash("sect/doc7/index.html"), filepath.FromSlash("sect/doc7/index.html"),
"<div class=\"paragraph\">\n<p><em>Shortcodes:</em> <strong>b: b c: c</strong></p>\n</div>\n"}, "<div class=\"paragraph\">\n<p><em>Shortcodes:</em> <strong>b: b c: c</strong></p>\n</div>\n"},
{"sect/doc8.rst", `**Shortcodes:** *b: {{< b >}} c: {{% c %}}*`,
filepath.FromSlash("sect/doc8/index.html"),
"<div class=\"document\">\n\n\n<p><strong>Shortcodes:</strong> <em>b: b c: c</em></p>\n</div>"},
} }
sources := make([]source.ByteSource, len(tests)) sources := make([]source.ByteSource, len(tests))
@ -501,7 +504,11 @@ e`,
if strings.HasSuffix(test.contentPath, ".ad") && !helpers.HasAsciidoc() { if strings.HasSuffix(test.contentPath, ".ad") && !helpers.HasAsciidoc() {
fmt.Println("Skip Asciidoc test case as no Asciidoc present.") fmt.Println("Skip Asciidoc test case as no Asciidoc present.")
continue continue
} else if strings.HasSuffix(test.contentPath, ".rst") && !helpers.HasRst() {
fmt.Println("Skip Rst test case as no rst2html present.")
continue
} }
file, err := hugofs.Destination().Open(test.outFile) file, err := hugofs.Destination().Open(test.outFile)
if err != nil { if err != nil {