Skip to content

Commit

Permalink
add markdown export and more tests
Browse files Browse the repository at this point in the history
  • Loading branch information
Chris Bilson committed Oct 20, 2023
1 parent eb4be52 commit 383f0d6
Show file tree
Hide file tree
Showing 3 changed files with 123 additions and 0 deletions.
2 changes: 2 additions & 0 deletions org-azuredevops.el
Original file line number Diff line number Diff line change
Expand Up @@ -41,6 +41,7 @@ with DESCRIPTION from an Org file for FORMAT."
(`latex (format "\\href{%s}{%s}" href description))
(`texinfo (format "@uref{%s,%s}" href description))
(`ascii (format "%s (%s)" description href))
(`md (format "[%s](%s)" description href))
(_ href))))

;; -----------------------------------------------------------------------------
Expand Down Expand Up @@ -122,6 +123,7 @@ which links to a file in repository <repo>."
(`latex (format "\\href{%s}{%s}" href description))
(`texinfo (format "@uref{%s,%s}" href description))
(`ascii (format "%s (%s)" description href))
(`md (format "[%s](%s)" description href))
(_ href)))))

(defun ado-src-command (path)
Expand Down
26 changes: 26 additions & 0 deletions tests/pr-link-tests.el
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,32 @@
(require 'buttercup)
(require 'org-azuredevops)

(defun fake-link-function (id)
(format "https://some-link-to/some-id/%s" id))

(describe
"exporting ADO links"
(it "converts work item links to HTML"
(expect (ado-export "SomeWorkItemType" "SomeID" 'fake-link-function "some description" 'html)
:to-equal
"<a target=\"_blank\" href=\"https://some-link-to/some-id/SomeID\">some description</a>"))
(it "converts work item links to LaTeX"
(expect (ado-export "SomeWorkItemType" "SomeID" 'fake-link-function "some description" 'latex)
:to-equal
"\\href{https://some-link-to/some-id/SomeID}{some description}"))
(it "converts work item links to Texinfo"
(expect (ado-export "SomeWorkItemType" "SomeID" 'fake-link-function "some description" 'texinfo)
:to-equal
"@uref{https://some-link-to/some-id/SomeID,some description}"))
(it "converts work item links to ASCII"
(expect (ado-export "SomeWorkItemType" "SomeID" 'fake-link-function "some description" 'ascii)
:to-equal
"some description (https://some-link-to/some-id/SomeID)"))
(it "converts work item links to Markdown"
(expect (ado-export "SomeWorkItemType" "SomeID" 'fake-link-function "some description" 'md)
:to-equal
"[some description](https://some-link-to/some-id/SomeID)")))

(describe
"Converting Azure DevOps PR titles to links"
(it "converts a good title to a link"
Expand Down
95 changes: 95 additions & 0 deletions tests/src-link-tests.el
Original file line number Diff line number Diff line change
Expand Up @@ -189,6 +189,101 @@
"&line=42&lineEnd=53&lineStartColumn=0&lineEndColumn=1000\">"
"Some-Repo:/some/path/foo.cs</a>"))))

(describe
"exporting latex src links"
(it "for path only links"
(expect (ado-src-export "some/path/foo.cs" nil 'latex)
:to-equal
"\\href{https://dev.azure.com/msazure/One/_git/Azure-Compute?path=/some/path/foo.cs}{Azure-Compute:/some/path/foo.cs}"))
(it "for repo:path links"
(expect (ado-src-export "Some-Repo:some/path/foo.cs" nil 'latex)
:to-equal
"\\href{https://dev.azure.com/msazure/One/_git/Some-Repo?path=/some/path/foo.cs}{Some-Repo:/some/path/foo.cs}"))
(it "for repo:path:Ln links"
(expect (ado-src-export "Some-Repo:some/path/foo.cs:L42" nil 'latex)
:to-equal
"\\href{https://dev.azure.com/msazure/One/_git/Some-Repo?path=/some/path/foo.cs&line=42&lineEnd=42&lineStartColumn=0&lineEndColumn=1000}{Some-Repo:/some/path/foo.cs}"))
(it "for repo:path:Ln-m links"
(expect (ado-src-export "Some-Repo:some/path/foo.cs:L42-53" nil 'latex)
:to-equal
"\\href{https://dev.azure.com/msazure/One/_git/Some-Repo?path=/some/path/foo.cs&line=42&lineEnd=53&lineStartColumn=0&lineEndColumn=1000}{Some-Repo:/some/path/foo.cs}")))

(describe
"exporting texinfo src links"
(it "for path only links"
(expect (ado-src-export "some/path/foo.cs" nil 'texinfo)
:to-equal
"@uref{https://dev.azure.com/msazure/One/_git/Azure-Compute?path=/some/path/foo.cs,Azure-Compute:/some/path/foo.cs}"))
(it "for repo:path links"
(expect (ado-src-export "Some-Repo:some/path/foo.cs" nil 'texinfo)
:to-equal
"@uref{https://dev.azure.com/msazure/One/_git/Some-Repo?path=/some/path/foo.cs,Some-Repo:/some/path/foo.cs}"))
(it "for repo:path:Ln links"
(expect (ado-src-export "Some-Repo:some/path/foo.cs:L42" nil 'texinfo)
:to-equal
"@uref{https://dev.azure.com/msazure/One/_git/Some-Repo?path=/some/path/foo.cs&line=42&lineEnd=42&lineStartColumn=0&lineEndColumn=1000,Some-Repo:/some/path/foo.cs}"))
(it "for repo:path:Ln-m links"
(expect (ado-src-export "Some-Repo:some/path/foo.cs:L42-53" nil 'texinfo)
:to-equal
"@uref{https://dev.azure.com/msazure/One/_git/Some-Repo?path=/some/path/foo.cs&line=42&lineEnd=53&lineStartColumn=0&lineEndColumn=1000,Some-Repo:/some/path/foo.cs}")))

(describe
"exporting texinfo src links"
(it "for path only links"
(expect (ado-src-export "some/path/foo.cs" nil 'texinfo)
:to-equal
"@uref{https://dev.azure.com/msazure/One/_git/Azure-Compute?path=/some/path/foo.cs,Azure-Compute:/some/path/foo.cs}"))
(it "for repo:path links"
(expect (ado-src-export "Some-Repo:some/path/foo.cs" nil 'texinfo)
:to-equal
"@uref{https://dev.azure.com/msazure/One/_git/Some-Repo?path=/some/path/foo.cs,Some-Repo:/some/path/foo.cs}"))
(it "for repo:path:Ln links"
(expect (ado-src-export "Some-Repo:some/path/foo.cs:L42" nil 'texinfo)
:to-equal
"@uref{https://dev.azure.com/msazure/One/_git/Some-Repo?path=/some/path/foo.cs&line=42&lineEnd=42&lineStartColumn=0&lineEndColumn=1000,Some-Repo:/some/path/foo.cs}"))
(it "for repo:path:Ln-m links"
(expect (ado-src-export "Some-Repo:some/path/foo.cs:L42-53" nil 'texinfo)
:to-equal
"@uref{https://dev.azure.com/msazure/One/_git/Some-Repo?path=/some/path/foo.cs&line=42&lineEnd=53&lineStartColumn=0&lineEndColumn=1000,Some-Repo:/some/path/foo.cs}")))

(describe
"exporting ascii src links"
(it "for path only links"
(expect (ado-src-export "some/path/foo.cs" nil 'ascii)
:to-equal
"Azure-Compute:/some/path/foo.cs (https://dev.azure.com/msazure/One/_git/Azure-Compute?path=/some/path/foo.cs)"))
(it "for repo:path links"
(expect (ado-src-export "Some-Repo:some/path/foo.cs" nil 'ascii)
:to-equal
"Some-Repo:/some/path/foo.cs (https://dev.azure.com/msazure/One/_git/Some-Repo?path=/some/path/foo.cs)"))
(it "for repo:path:Ln links"
(expect (ado-src-export "Some-Repo:some/path/foo.cs:L42" nil 'ascii)
:to-equal
"Some-Repo:/some/path/foo.cs (https://dev.azure.com/msazure/One/_git/Some-Repo?path=/some/path/foo.cs&line=42&lineEnd=42&lineStartColumn=0&lineEndColumn=1000)"))
(it "for repo:path:Ln-m links"
(expect (ado-src-export "Some-Repo:some/path/foo.cs:L42-53" nil 'ascii)
:to-equal
"Some-Repo:/some/path/foo.cs (https://dev.azure.com/msazure/One/_git/Some-Repo?path=/some/path/foo.cs&line=42&lineEnd=53&lineStartColumn=0&lineEndColumn=1000)")))

(describe
"exporting Markdown src links"
(it "for path only links"
(expect (ado-src-export "some/path/foo.cs" nil 'md)
:to-equal
"[Azure-Compute:/some/path/foo.cs](https://dev.azure.com/msazure/One/_git/Azure-Compute?path=/some/path/foo.cs)"))
(it "for repo:path links"
(expect (ado-src-export "Some-Repo:some/path/foo.cs" nil 'md)
:to-equal
"[Some-Repo:/some/path/foo.cs](https://dev.azure.com/msazure/One/_git/Some-Repo?path=/some/path/foo.cs)"))
(it "for repo:path:Ln links"
(expect (ado-src-export "Some-Repo:some/path/foo.cs:L42" nil 'md)
:to-equal
"[Some-Repo:/some/path/foo.cs](https://dev.azure.com/msazure/One/_git/Some-Repo?path=/some/path/foo.cs&line=42&lineEnd=42&lineStartColumn=0&lineEndColumn=1000)"))
(it "for repo:path:Ln-m links"
(expect (ado-src-export "Some-Repo:some/path/foo.cs:L42-53" nil 'md)
:to-equal
"[Some-Repo:/some/path/foo.cs](https://dev.azure.com/msazure/One/_git/Some-Repo?path=/some/path/foo.cs&line=42&lineEnd=53&lineStartColumn=0&lineEndColumn=1000)")))

(describe
"opening links in a browser"
(before-each (spy-on 'browse-url))
Expand Down

0 comments on commit 383f0d6

Please sign in to comment.