diff options
author | Mateusz Kowalczyk <fuuzetsu@fuuzetsu.co.uk> | 2015-03-26 19:29:25 +0000 |
---|---|---|
committer | Mateusz Kowalczyk <fuuzetsu@fuuzetsu.co.uk> | 2015-03-27 00:20:09 +0000 |
commit | 7d8ece225e5387d0d08a675bda82bd2a1af5a173 (patch) | |
tree | 046c1d8871429c8ef3df21059e792066feb41633 | |
parent | f42970cc6d62a63529874bf7dfe0f6e3c010dd13 (diff) |
Test for anchor defaulting
I delete the old tests because it turns out that:
* test runner would never put them in scope of each other even with
imports so just one would suffice
* test runner actually needed some hacking to keep links so in the end
we would end up with no anchors making them useless
-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.html | 111 | ||||
-rwxr-xr-x | html-test/run.lhs | 24 | ||||
-rw-r--r-- | html-test/src/Bug253.hs | 10 | ||||
-rw-r--r-- | html-test/src/Ticket253_1.hs | 6 | ||||
-rw-r--r-- | html-test/src/Ticket253_2.hs | 6 |
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" - > </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" - > </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 |