From ca26c648c2a62bccefa0daba462b3c7780da75fe Mon Sep 17 00:00:00 2001
From: toasted-nutbread <toasted-nutbread@users.noreply.github.com>
Date: Sat, 7 Nov 2020 11:30:21 -0500
Subject: Test link hrefs (#999)

* Add validatePath function

* Validate <link>s
---
 dev/lint/html-scripts.js | 27 ++++++++++++++++-----------
 1 file changed, 16 insertions(+), 11 deletions(-)

(limited to 'dev/lint')

diff --git a/dev/lint/html-scripts.js b/dev/lint/html-scripts.js
index 5aef7599..ae518252 100644
--- a/dev/lint/html-scripts.js
+++ b/dev/lint/html-scripts.js
@@ -31,23 +31,28 @@ function lstatSyncSafe(fileName) {
     }
 }
 
+function validatePath(src, fileName, extDir) {
+    assert.ok(typeof src === 'string', `<script> missing src attribute in ${fileName}`);
+    assert.ok(src.startsWith('/'), `<script> src attribute is not absolute in ${fileName} (src=${JSON.stringify(src)})`);
+    const relativeSrc = src.substring(1);
+    assert.ok(!path.isAbsolute(relativeSrc), `<script> src attribute is invalid in ${fileName} (src=${JSON.stringify(src)})`);
+    const fullSrc = path.join(extDir, relativeSrc);
+    const stats = lstatSyncSafe(fullSrc);
+    assert.ok(stats !== null, `<script> src file not found in ${fileName} (src=${JSON.stringify(src)})`);
+    assert.ok(stats.isFile(), `<script> src file invalid in ${fileName} (src=${JSON.stringify(src)})`);
+}
+
 function validateHtmlScripts(fileName, extDir) {
     const domSource = fs.readFileSync(fileName, {encoding: 'utf8'});
     const dom = new JSDOM(domSource);
     const {window} = dom;
     const {document} = window;
     try {
-        const scripts = document.querySelectorAll('script');
-        for (const script of scripts) {
-            const {src} = script;
-            assert.ok(typeof src === 'string', `<script> missing src attribute in ${fileName}`);
-            assert.ok(src.startsWith('/'), `<script> src attribute is not absolute in ${fileName} (src=${JSON.stringify(src)})`);
-            const relativeSrc = src.substring(1);
-            assert.ok(!path.isAbsolute(relativeSrc), `<script> src attribute is invalid in ${fileName} (src=${JSON.stringify(src)})`);
-            const fullSrc = path.join(extDir, relativeSrc);
-            const stats = lstatSyncSafe(fullSrc);
-            assert.ok(stats !== null, `<script> src file not found in ${fileName} (src=${JSON.stringify(src)})`);
-            assert.ok(stats.isFile(), `<script> src file invalid in ${fileName} (src=${JSON.stringify(src)})`);
+        for (const {src} of document.querySelectorAll('script')) {
+            validatePath(src, fileName, extDir);
+        }
+        for (const {href} of document.querySelectorAll('link')) {
+            validatePath(href, fileName, extDir);
         }
     } finally {
         window.close();
-- 
cgit v1.2.3