aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--html-test/ref/Bug253.html (renamed from html-test/ref/Ticket253_1.html)54
-rw-r--r--html-test/ref/Ticket253_2.html111
-rwxr-xr-xhtml-test/run.lhs24
-rw-r--r--html-test/src/Bug253.hs10
-rw-r--r--html-test/src/Ticket253_1.hs6
-rw-r--r--html-test/src/Ticket253_2.hs6
6 files changed, 58 insertions, 153 deletions
diff --git a/html-test/ref/Ticket253_1.html b/html-test/ref/Bug253.html
index ade128e9..0802d91e 100644
--- a/html-test/ref/Ticket253_1.html
+++ b/html-test/ref/Bug253.html
@@ -3,13 +3,13 @@
><head
><meta http-equiv="Content-Type" content="text/html; charset=UTF-8"
/><title
- >Ticket253_1</title
+ >Bug253</title
><link href="ocean.css" rel="stylesheet" type="text/css" title="Ocean"
/><script src="haddock-util.js" type="text/javascript"
></script
><script type="text/javascript"
>//<![CDATA[
-window.onload = function () {pageLoad();setSynopsis("mini_Ticket253_1.html");};
+window.onload = function () {pageLoad();setSynopsis("mini_Bug253.html");};
//]]>
</script
></head
@@ -17,11 +17,11 @@ window.onload = function () {pageLoad();setSynopsis("mini_Ticket253_1.html");};
><div id="package-header"
><ul class="links" id="page-menu"
><li
- ><a href=""
+ ><a href="index.html"
>Contents</a
></li
><li
- ><a href=""
+ ><a href="doc-index.html"
>Index</a
></li
></ul
@@ -39,18 +39,32 @@ window.onload = function () {pageLoad();setSynopsis("mini_Ticket253_1.html");};
></tr
></table
><p class="caption"
- >Ticket253_1</p
+ >Bug253</p
+ ></div
+ ><div id="description"
+ ><p class="caption"
+ >Description</p
+ ><div class="doc"
+ ><p
+ >This module tests that if we're trying to link to a <em
+ >qualified</em
+ >
+ identifier that's not in scope, we get an anchor as if it was a
+ variable. Previous behaviour was to treat it as a type constructor
+ so issue like #253 arose. Also see <code
+ >rename</code
+ > function comments in
+ source.</p
+ ></div
></div
><div id="synopsis"
><p id="control.syn" class="caption expander" onclick="toggleSection('syn')"
>Synopsis</p
><ul id="section.syn" class="hide" onclick="toggleSection('syn')"
><li class="src short"
- ><a href=""
+ ><a href="#v:foo"
>foo</a
- > :: <a href=""
- >Int</a
- ></li
+ > :: ()</li
></ul
></div
><div id="interface"
@@ -60,20 +74,14 @@ window.onload = function () {pageLoad();setSynopsis("mini_Ticket253_1.html");};
><p class="src"
><a name="v:foo" class="def"
>foo</a
- > :: <a href=""
- >Int</a
- ></p
+ > :: ()</p
><div class="doc"
><p
- >See <code
- ><a href=""
- >bar</a
- ></code
- >.</p
- ><p
- >Also see <code
- ><a href=""
- >Baz</a
+ >This link should generate <code
+ >#v</code
+ > anchor: <code
+ ><a href="DoesNotExist.html#v:fakeFakeFake"
+ >fakeFakeFake</a
></code
></p
></div
@@ -82,9 +90,9 @@ window.onload = function () {pageLoad();setSynopsis("mini_Ticket253_1.html");};
></div
><div id="footer"
><p
- >Produced by <a href=""
+ >Produced by <a href="http://www.haskell.org/haddock/"
>Haddock</a
- > version 2.15.0</p
+ > version 2.16.0</p
></div
></body
></html
diff --git a/html-test/ref/Ticket253_2.html b/html-test/ref/Ticket253_2.html
deleted file mode 100644
index 0b03a874..00000000
--- a/html-test/ref/Ticket253_2.html
+++ /dev/null
@@ -1,111 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml"
-><head
- ><meta http-equiv="Content-Type" content="text/html; charset=UTF-8"
- /><title
- >Ticket253_2</title
- ><link href="ocean.css" rel="stylesheet" type="text/css" title="Ocean"
- /><script src="haddock-util.js" type="text/javascript"
- ></script
- ><script type="text/javascript"
- >//<![CDATA[
-window.onload = function () {pageLoad();setSynopsis("mini_Ticket253_2.html");};
-//]]>
-</script
- ></head
- ><body
- ><div id="package-header"
- ><ul class="links" id="page-menu"
- ><li
- ><a href=""
- >Contents</a
- ></li
- ><li
- ><a href=""
- >Index</a
- ></li
- ></ul
- ><p class="caption empty"
- >&nbsp;</p
- ></div
- ><div id="content"
- ><div id="module-header"
- ><table class="info"
- ><tr
- ><th
- >Safe Haskell</th
- ><td
- >Safe</td
- ></tr
- ></table
- ><p class="caption"
- >Ticket253_2</p
- ></div
- ><div id="synopsis"
- ><p id="control.syn" class="caption expander" onclick="toggleSection('syn')"
- >Synopsis</p
- ><ul id="section.syn" class="hide" onclick="toggleSection('syn')"
- ><li class="src short"
- ><a href=""
- >bar</a
- > :: <a href=""
- >Int</a
- ></li
- ><li class="src short"
- ><span class="keyword"
- >data</span
- > <a href=""
- >Baz</a
- > = <a href=""
- >Baz</a
- ></li
- ></ul
- ></div
- ><div id="interface"
- ><h1
- >Documentation</h1
- ><div class="top"
- ><p class="src"
- ><a name="v:bar" class="def"
- >bar</a
- > :: <a href=""
- >Int</a
- ></p
- ><div class="doc"
- ><p
- >Comment</p
- ></div
- ></div
- ><div class="top"
- ><p class="src"
- ><span class="keyword"
- >data</span
- > <a name="t:Baz" class="def"
- >Baz</a
- ></p
- ><div class="subs constructors"
- ><p class="caption"
- >Constructors</p
- ><table
- ><tr
- ><td class="src"
- ><a name="v:Baz" class="def"
- >Baz</a
- ></td
- ><td class="doc empty"
- >&nbsp;</td
- ></tr
- ></table
- ></div
- ></div
- ></div
- ></div
- ><div id="footer"
- ><p
- >Produced by <a href=""
- >Haddock</a
- > version 2.15.0</p
- ></div
- ></body
- ></html
->
diff --git a/html-test/run.lhs b/html-test/run.lhs
index a80b265e..1f19b723 100755
--- a/html-test/run.lhs
+++ b/html-test/run.lhs
@@ -21,7 +21,6 @@ import System.Exit
import System.FilePath
import System.Process (ProcessHandle, runProcess, waitForProcess, system)
-
packageRoot, dataDir, haddockPath, baseDir, testDir, outDir :: FilePath
baseDir = takeDirectory __FILE__
testDir = baseDir </> "src"
@@ -112,11 +111,11 @@ check modules strict = do
then do
out <- readFile outfile
ref <- readFile reffile
- if not $ haddockEq out ref
+ if not $ haddockEq (outfile, out) (reffile, ref)
then do
putStrLn $ "Output for " ++ mod ++ " has changed! Exiting with diff:"
- let ref' = stripLinks ref
- out' = stripLinks out
+ let ref' = maybeStripLinks outfile ref
+ out' = maybeStripLinks reffile out
let reffile' = outDir </> takeFileName reffile ++ ".nolinks"
outfile' = outDir </> takeFileName outfile ++ ".ref.nolinks"
writeFile reffile' ref'
@@ -134,6 +133,10 @@ check modules strict = do
else do
putStrLn $ "Pass: " ++ mod ++ " (no .ref file)"
+-- | List of modules in which we don't 'stripLinks'
+preserveLinksModules :: [String]
+preserveLinksModules = map (++ ".html") ["Bug253"]
+
-- | A rather nasty way to drop the Haddock version string from the
-- end of the generated HTML files so that we don't have to change
-- every single test every time we change versions. We rely on the the
@@ -146,9 +149,16 @@ dropVersion = reverse . dropTillP . reverse
dropTillP ('p':'<':xs) = xs
dropTillP (_:xs) = dropTillP xs
-haddockEq :: String -> String -> Bool
-haddockEq file1 file2 =
- stripLinks (dropVersion file1) == stripLinks (dropVersion file2)
+haddockEq :: (FilePath, String) -> (FilePath, String) -> Bool
+haddockEq (fn1, file1) (fn2, file2) =
+ maybeStripLinks fn1 (dropVersion file1)
+ == maybeStripLinks fn2 (dropVersion file2)
+
+maybeStripLinks :: String -- ^ Module we're considering for stripping
+ -> String -> String
+maybeStripLinks m = if any (`isSuffixOf` m) preserveLinksModules
+ then id
+ else stripLinks
stripLinks :: String -> String
stripLinks str =
diff --git a/html-test/src/Bug253.hs b/html-test/src/Bug253.hs
new file mode 100644
index 00000000..499f6cd4
--- /dev/null
+++ b/html-test/src/Bug253.hs
@@ -0,0 +1,10 @@
+-- | This module tests that if we're trying to link to a /qualified/
+-- identifier that's not in scope, we get an anchor as if it was a
+-- variable. Previous behaviour was to treat it as a type constructor
+-- so issue like #253 arose. Also see @rename@ function comments in
+-- source.
+module Bug253 where
+
+-- | This link should generate @#v@ anchor: 'DoesNotExist.fakeFakeFake'
+foo :: ()
+foo = ()
diff --git a/html-test/src/Ticket253_1.hs b/html-test/src/Ticket253_1.hs
deleted file mode 100644
index 62ab4b17..00000000
--- a/html-test/src/Ticket253_1.hs
+++ /dev/null
@@ -1,6 +0,0 @@
-module Ticket253_1 where
--- | See 'Ticket253_2.bar'.
---
--- Also see 'Ticket253_2.Baz'
-foo :: Int
-foo = 0
diff --git a/html-test/src/Ticket253_2.hs b/html-test/src/Ticket253_2.hs
deleted file mode 100644
index a19d4cee..00000000
--- a/html-test/src/Ticket253_2.hs
+++ /dev/null
@@ -1,6 +0,0 @@
-module Ticket253_2 where
--- | Comment
-bar :: Int
-bar = 0
-
-data Baz = Baz