123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499 |
- (require 'org-html)
- (defconst org-id:thd:usual-id-locations
- (org-id-alist-to-hash
- '(
- ("file1" "id-1-in-file1")
- ("file1" "id-2-in-file1")
- ("file2" "id-1-in-file2")))
-
- "A stable id-locations table for testing purposes" )
- (emt:deftest-3 org-id:thd:usual-id-locations
- (nil
- (progn
- (emt:doc "Operation: Look up one of the keys we inserted.")
- (emt:doc "Response: It has the value we gave it.")
- (assert
- (equal
- (gethash "id-1-in-file1" org-id:thd:usual-id-locations)
- "file1")))))
- (defconst org-html:thd:isolation
-
-
-
-
-
- '(let
- (
- (org-export-html-inline-image-extensions
- '("png" "jpeg" "jpg" "gif"))
- (org-html-cvt-link-fn nil)
- (org-export-first-hook nil)
- (org-par-open t)
- (org-url-encoding-use-url-hexify nil)
-
- (org-id-locations
- org-id:thd:usual-id-locations)
-
- (org-export-inbuffer-options-extra nil)
-
-
-
-
-
- (org-export-html-link-up "")
- (org-export-html-link-home "")
- (org-export-default-language "en")
- (org-export-page-keywords "")
- (org-export-page-description "")
- (org-display-custom-times nil)
- (org-export-headline-levels 100)
- (org-export-with-section-numbers nil)
- (org-export-section-number-format '((("1" ".")) . ""))
- (org-export-with-toc nil)
- (org-export-preserve-breaks nil)
- (org-export-with-archived-trees nil)
- (org-export-with-emphasize nil)
- (org-export-with-sub-superscripts nil)
- (org-export-with-special-strings nil)
- (org-export-with-footnotes nil)
- (org-export-with-drawers nil)
- (org-export-with-tags nil)
- (org-export-with-todo-keywords nil)
- (org-export-with-priority nil)
- (org-export-with-TeX-macros nil)
- (org-export-with-LaTeX-fragments nil)
- (org-export-latex-listings nil)
- (org-export-skip-text-before-1st-heading nil)
- (org-export-with-fixed-width nil)
- (org-export-with-timestamps nil)
- (org-export-author-info nil)
- (org-export-email-info nil)
- (org-export-creator-info nil)
- (org-export-time-stamp-file nil)
- (org-export-with-tables nil)
- (org-export-highlight-first-table-line nil)
- (org-export-html-style-include-default nil)
- (org-export-html-style-include-scripts nil)
- (org-export-html-style "")
- (org-export-html-style-extra "")
- (org-agenda-export-html-style "")
- (org-export-html-link-org-files-as-html nil)
- (org-export-html-inline-images nil)
- (org-export-html-extension "html")
- (org-export-html-xml-declaration
- '(("html" . "<?xml version=\"1.0\" encoding=\"%s\"?>")
- ("php" . "<?php echo \"<?xml version=\\\"1.0\\\" encoding=\\\"%s\\\" ?>\"; ?>")))
- (org-export-html-table-tag
- "<table border=\"2\" cellspacing=\"0\" cellpadding=\"6\" rules=\"groups\" frame=\"hsides\">")
- (org-export-html-expand nil)
- (org-export-html-with-timestamp nil)
- (org-export-publishing-directory nil)
- (org-export-html-preamble nil)
- (org-export-html-postamble nil)
- (org-export-html-auto-preamble nil)
- (org-export-html-auto-postamble nil)
- (user-full-name "Emtest user")
- (user-mail-address "emtest-user@localhost.localdomain")
- (org-export-select-tags '("export"))
- (org-export-exclude-tags '("noexport"))
- (org-export-latex-image-default-option nil)
- (org-export-plist-vars
- '(
- (:link-up nil org-export-html-link-up)
- (:link-home nil org-export-html-link-home)
- (:language nil org-export-default-language)
- (:keywords nil org-export-page-keywords)
- (:description nil org-export-page-description)
- (:customtime nil org-display-custom-times)
- (:headline-levels "H" org-export-headline-levels)
- (:section-numbers "num" org-export-with-section-numbers)
- (:section-number-format nil org-export-section-number-format)
- (:table-of-contents "toc" org-export-with-toc)
- (:preserve-breaks "\\n" org-export-preserve-breaks)
- (:archived-trees nil org-export-with-archived-trees)
- (:emphasize "*" org-export-with-emphasize)
- (:sub-superscript "^" org-export-with-sub-superscripts)
- (:special-strings "-" org-export-with-special-strings)
- (:footnotes "f" org-export-with-footnotes)
- (:drawers "d" org-export-with-drawers)
- (:tags "tags" org-export-with-tags)
- (:todo-keywords "todo" org-export-with-todo-keywords)
- (:priority "pri" org-export-with-priority)
- (:TeX-macros "TeX" org-export-with-TeX-macros)
- (:LaTeX-fragments "LaTeX" org-export-with-LaTeX-fragments)
- (:latex-listings nil org-export-latex-listings)
- (:skip-before-1st-heading "skip" org-export-skip-text-before-1st-heading)
- (:fixed-width ":" org-export-with-fixed-width)
- (:timestamps "<" org-export-with-timestamps)
- (:author-info "author" org-export-author-info)
- (:email-info "email" org-export-email-info)
- (:creator-info "creator" org-export-creator-info)
- (:time-stamp-file "timestamp" org-export-time-stamp-file)
- (:tables "|" org-export-with-tables)
- (:table-auto-headline nil org-export-highlight-first-table-line)
- (:style-include-default nil org-export-html-style-include-default)
- (:style-include-scripts nil org-export-html-style-include-scripts)
- (:style nil org-export-html-style)
- (:style-extra nil org-export-html-style-extra)
- (:agenda-style nil org-agenda-export-html-style)
- (:convert-org-links nil org-export-html-link-org-files-as-html)
- (:inline-images nil org-export-html-inline-images)
- (:html-extension nil org-export-html-extension)
- (:xml-declaration nil org-export-html-xml-declaration)
- (:html-table-tag nil org-export-html-table-tag)
- (:expand-quoted-html "@" org-export-html-expand)
- (:timestamp nil org-export-html-with-timestamp)
- (:publishing-directory nil org-export-publishing-directory)
- (:preamble nil org-export-html-preamble)
- (:postamble nil org-export-html-postamble)
- (:auto-preamble nil org-export-html-auto-preamble)
- (:auto-postamble nil org-export-html-auto-postamble)
- (:author nil user-full-name)
- (:email nil user-mail-address)
- (:select-tags nil org-export-select-tags)
- (:exclude-tags nil org-export-exclude-tags)
- (:latex-image-options nil org-export-latex-image-default-option)))
- ))
- "Isolation let-form for org-html tests.
- Isolation let-forms are intended to be included by
- `:surrounders'. They provide a known configuration and keep
- tests from altering the outside state." )
- (defconst org-html:thd:examples
- (emt:eg:define+
- ((project org)
- (library html)
- (subsection link-examples))
- (group
- ((name only-path))
-
-
-
- (item ((type arglist))
- '("" "foo" nil "desc" nil nil))
- (item ((type link-text))
- "<a href=\"foo\">desc</a>"))
- (group
- ((name only-fragment))
-
- (item ((type arglist))
- '("" "" "bar" "desc" nil nil))
- (item ((type link-text))
- "<a href=\"#bar\">desc</a>"))
- (group
- ((name all-3-parts))
- (item ((type src-text))
- "[[http:foo#bar][desc]]")
- (item ((type arglist))
- '("http" "foo" "bar" "desc" nil nil))
- (item ((type link-text))
- "<a href=\"http:foo#bar\">desc</a>"))
-
- (group
- ((name subst-in-filename))
- (item ((type src-text))
- "[[file:/foo/unfoo/.././baz][desc]]")
- (item ((type arglist))
- '("file" "/foo/unfoo/.././baz" "" "desc" nil nil))
- (item ((type link-text))
- "<a href=\"file:/foo/baz\">desc</a>"))
- (group
- ((name type=file))
- (item ((type src-text))
- "[[file:foo.txt][desc]]")
- (item ((type arglist))
- '("file" "foo.txt" "" "desc" nil nil))
- (item ((type link-text))
- "<a href=\"file:foo.txt\">desc</a>"))
-
-
- (group
- ((name type=id))
- (item ((type src-text))
- "[[id:id-1-in-file1][desc]]")
- (item ((type arglist))
- '("" "file1" "id-1-in-file1" "desc" nil nil))
- (item ((type link-text))
- "<a href=\"file1#id-1-in-file1\">desc</a>"))
- (group
- ((name type=ftp))
- (item ((type src-text))
- "[[ftp:foo.com][desc]]")
- (item ((type arglist))
- '("ftp" "foo.com" "" "desc" nil nil))
- (item ((type link-text))
- "<a href=\"ftp:foo.com\">desc</a>"))
-
-
-
-
-
-
-
- (group
- ((name convertable))
- (item ((type src-text))
- "[[file:foo.org][desc]]")
- (item ((type arglist))
- '("file" "foo.org" nil "desc" nil nil))
- (group
- ((type link-text))
- (item ((subname old-conversion))
- "<a href=\"http:foo.html\">desc</a>")
- (item ((subname new-conversion))
- "<a href=\"xform:transformed-foo.org\">desc</a>")
- (item ((subname no-conversion))
- "<a href=\"file:foo.org\">desc</a>")))
- ))
- (defun org-html:th:cvt-fn (opt-plist type path)
- "Trivial URL transformer"
- (declare (ignored opt-plist))
- (list
- "xform"
- (concat "transformed-" path)))
- (defun org-html:th:check-link-matches (expected)
- "Build a link text and check it against expected text.
- Sensitive to emt:eg narrowing."
-
- (assert
- (equal
- (apply #'org-html-make-link
- '(:html-extension "html")
- (emt:eg (type arglist)))
- expected)
- t))
- (emt:deftest-3
- ((of 'org-html-make-link)
- (:surrounders
- (list
- org-html:thd:isolation
- '(emt:eg:with org-html:thd:examples
- ((project org)
- (library html)
- (subsection link-examples))))))
-
- (nil
- (emt:eg:map name name
- (unless
- (eq name 'convertable)
- (emt:doc "Proves: Example arglist gives the expected result.")
- (org-html:th:check-link-matches
- (emt:eg (type link-text))))))
-
- (nil
- (emt:eg:narrow ((name convertable))
- (let
- (
- (org-export-html-link-org-files-as-html t)
- (org-html-cvt-link-fn nil))
- (emt:doc "Proves: Old org->html conversion works.")
- (org-html:th:check-link-matches
- (emt:eg (type link-text) (subname old-conversion))))))
-
- (nil
- (emt:eg:narrow ((name convertable))
- (let
- (
- (org-export-html-link-org-files-as-html nil)
- (org-html-cvt-link-fn #'org-html:th:cvt-fn))
- (emt:doc "Proves: New file->url conversion works.")
- (org-html:th:check-link-matches
- (emt:eg (type link-text) (subname new-conversion))))))
-
- (nil
- (emt:eg:narrow ((name convertable))
- (let
- (
- (org-export-html-link-org-files-as-html t)
- (org-html-cvt-link-fn #'org-html:th:cvt-fn))
- (emt:doc "Proves: New conversion has precedence over old.")
- (org-html:th:check-link-matches
- (emt:eg (type link-text) (subname new-conversion))))))
-
-
- )
- (defun org-html:th:build-source (type path fragment &optional desc
- descp attr may-inline-p)
- ""
- (declare (ignored descp attr may-inline-p))
- (concat
- "[["type":"
- (org-link-escape path)
- (if fragment
- (cond
- ((string= type "file")(concat "::" fragment))
- ((string= type "http")(concat "#" fragment))))
- "]["desc"]]"))
- (defun org-html:th:strip-whitepadding (str)
- ""
-
- (with-temp-buffer
- (insert str)
- (goto-char (point-min))
- (while (search-forward "\n" nil t)
- (replace-match ""))
- (goto-char (point-min))
- (while (search-forward "<p>" nil t)
- (replace-match ""))
- (goto-char (point-min))
- (while (search-forward "</p>" nil t)
- (replace-match ""))
- (buffer-string)))
- (defconst org-html:stripwhite:thd:examples
- (emt:eg:define+
- ((project org)(library html)
- (subsection org-html:th:strip-whitepadding)
- (type string)
- (role before))
- (item ((name 0))
- "\na\nb")
- (item ((name 1))
- "\n<p>ab")
- (item ((name 2))
- "\n</p>a\nb")))
- (emt:deftest-3 org-html:th:strip-whitepadding
- (nil
- (emt:eg:with org-html:stripwhite:thd:examples
- ((project org)(library html)
- (subsection org-html:th:strip-whitepadding))
- (emt:eg:map name name
- (emt:doc
- "Check: The stripped string matches what's expected.")
- (assert
- (string=
- (org-html:th:strip-whitepadding (emt:eg))
- "ab"))))))
- (emt:deftest-3
- ((of 'org-export-as-html)
- (:surrounders
- (list
- org-html:thd:isolation
-
- '(emt:eg:with org-html:thd:examples
- ((project org)(library html))))))
- (nil
- (emt:eg:narrow ((subsection link-examples))
- (emt:eg:map name name
- (when
- (and
- (not (eq name 'convertable))
-
-
-
- (not (eq name 'type=id))
- (emt:eg:boundp '(type src-text)))
- (emt:doc
- "Situation: the only thing in the buffer is that link")
- (with-buffer-containing-object
- (:string
- (emt:eg (type src-text)))
- (org-mode)
-
-
- (emt:doc "Operation: export the buffer as HTML.")
- (let
- ((result
- (org-html:th:strip-whitepadding
- (org-export-region-as-html
- (point-min)
- (point-max)
- t
- 'string))))
- (emt:doc
- "Proves: Example arglist gives the expected result.")
- (assert
- (string=
- result
- (emt:eg (type link-text)))
- t)))))))
-
-
-
- )
- (provide 'org-html/tests)
|