wjdp / htmltest

:white_check_mark: Test generated HTML for problems
MIT License
323 stars 54 forks source link

Panic when checking links #209

Open deining opened 1 year ago

deining commented 1 year ago

How to repoduce

Create index.html with this content in an empty directory of your choice:

Please note the <a> element at line 6 with the link target {{< relref "/docs" >}}. The latter is a built in hugo shortcode.

<!DOCTYPE html>
<html>
<head>
</head>
<body>
<a href="{{< relref "/docs" >}}">My link</a>
</body>
</html>

Run htmltest inside this directory:

$ htmltest .
htmltest started at 08:44:28 on .
========================================================================
panic: CreateFile {{< relref: Die Syntax für den Dateinamen, Verzeichnisnamen oder die Datenträgerbezeichnung ist falsch.

goroutine 1 [running]:
github.com/wjdp/htmltest/output.CheckErrorPanic(...)
        /home/runner/work/htmltest/htmltest/output/error.go:22
github.com/wjdp/htmltest/htmltest.(*HTMLTest).checkFile(0xc0000aa000, 0xc0000ae2d0, {0xc0000871b0, 0xa})
        /home/runner/work/htmltest/htmltest/htmltest/check-link.go:366 +0x298
github.com/wjdp/htmltest/htmltest.(*HTMLTest).checkInternal(0xc0000aa000, 0xc0000ae2d0)
        /home/runner/work/htmltest/htmltest/htmltest/check-link.go:306 +0x159
github.com/wjdp/htmltest/htmltest.(*HTMLTest).checkLink(0xc0000aa000, 0xc0000be090, 0xc0000ca7e0)
        /home/runner/work/htmltest/htmltest/htmltest/check-link.go:99 +0x1028
github.com/wjdp/htmltest/htmltest.(*HTMLTest).testDocument(0xc0000aa000, 0xc0000be090)
        /home/runner/work/htmltest/htmltest/htmltest/htmltest.go:213 +0x205
github.com/wjdp/htmltest/htmltest.(*HTMLTest).testDocuments(0xc0000aa000)
        /home/runner/work/htmltest/htmltest/htmltest/htmltest.go:184 +0x22f
github.com/wjdp/htmltest/htmltest.Test(0x1132680)
        /home/runner/work/htmltest/htmltest/htmltest/htmltest.go:144 +0x911
main.run(0x1080fa0)
        /home/runner/work/htmltest/htmltest/main.go:163 +0x195
main.main()
        /home/runner/work/htmltest/htmltest/main.go:71 +0x1e5

However, exiting with a panic is never a good thing. htmltest could/should handle this issue more gracefully and continue with link checking IMHO.

Note: Of course I am aware of the fact that the file does not held valid html, so I consider this is a minor issue.

honzik20 commented 1 year ago

I have similar, tho in my case I cannot decode where the problem is:. <a href=: doesn't appear in my output.

panic: CreateFile public/apps/<a href=: The filename, directory name, or volume label syntax is incorrect.

goroutine 1 [running]:
github.com/wjdp/htmltest/output.CheckErrorPanic(...)
        /home/runner/work/htmltest/htmltest/output/error.go:22
github.com/wjdp/htmltest/htmltest.(*HTMLTest).checkFile(0xc00022ec80, 0xc000a536e0, {0xc0002c9518, 0x14})
        /home/runner/work/htmltest/htmltest/htmltest/check-link.go:366 +0x298
github.com/wjdp/htmltest/htmltest.(*HTMLTest).checkInternal(0xc00022ec80, 0xc000a536e0)
        /home/runner/work/htmltest/htmltest/htmltest/check-link.go:306 +0x159
github.com/wjdp/htmltest/htmltest.(*HTMLTest).checkLink(0xc00022ec80, 0xc0002227e0, 0xc0010d9f80)
        /home/runner/work/htmltest/htmltest/htmltest/check-link.go:99 +0x1028
github.com/wjdp/htmltest/htmltest.(*HTMLTest).testDocument(0xc00022ec80, 0xc0002227e0)
        /home/runner/work/htmltest/htmltest/htmltest/htmltest.go:213 +0x205
github.com/wjdp/htmltest/htmltest.(*HTMLTest).testDocuments(0xc00022ec80)
        /home/runner/work/htmltest/htmltest/htmltest/htmltest.go:184 +0x22f
github.com/wjdp/htmltest/htmltest.Test(0xce2680)
        /home/runner/work/htmltest/htmltest/htmltest/htmltest.go:144 +0x911
main.run(0xc30fa0)
        /home/runner/work/htmltest/htmltest/main.go:163 +0x195
main.main()
        /home/runner/work/htmltest/htmltest/main.go:71 +0x1e5