Skip to content

Commit

Permalink
Add vnu-jar testing from Bootstrap, adapted for this repo. (#2469)
Browse files Browse the repository at this point in the history
If Java isn't present, the test will be skipped. On CI Java is available, though.
  • Loading branch information
XhmikosR authored and Trott committed Oct 2, 2019
1 parent 2a111ce commit db76a4f
Show file tree
Hide file tree
Showing 4 changed files with 67 additions and 2 deletions.
4 changes: 4 additions & 0 deletions .github/workflows/test.yml
Original file line number Diff line number Diff line change
Expand Up @@ -16,6 +16,7 @@ jobs:

- run: node --version
- run: npm --version
- run: java -version

- name: Install npm dependencies
run: npm ci
Expand All @@ -28,5 +29,8 @@ jobs:
- name: Run tests
run: npm test

- name: Run HTML validator
run: npm run test:html

- name: Run linkinator
run: npm run test:linkinator
7 changes: 6 additions & 1 deletion package-lock.json

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

4 changes: 3 additions & 1 deletion package.json
Original file line number Diff line number Diff line change
Expand Up @@ -21,6 +21,7 @@
"test:lint:md": "markdownlint \"**/*.md\" -i \"**/node_modules/**\"",
"test:lint:stylint": "stylint layouts/css",
"test:lint": "npm-run-all --parallel test:lint:*",
"test:html": "node scripts/vnu-jar.js",
"test:unit": "tape tests/**/*.test.js | faucet"
},
"repository": "nodejs/nodejs.org",
Expand Down Expand Up @@ -78,6 +79,7 @@
"st": "^1.2.2",
"standard": "^14.3.1",
"stylint": "^2.0.0",
"tape": "^4.11.0"
"tape": "^4.11.0",
"vnu-jar": "19.9.4"
}
}
54 changes: 54 additions & 0 deletions scripts/vnu-jar.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,54 @@
#!/usr/bin/env node

'use strict'

const childProcess = require('child_process')
const vnu = require('vnu-jar')

childProcess.exec('java -version', (error, stdout, stderr) => {
if (error) {
console.error('Skipping vnu-jar test; Java is missing.')
return
}

const is32bitJava = !stderr.match(/64-Bit/)

// vnu-jar accepts multiple ignores joined with a `|`.
// Also note that the ignores are regular expressions.
const ignores = [
// Low priority warnings
'Section lacks heading.*',
// This seems to happen due to some Unicode characters
'Text run is not in Unicode Normalization Form C.',
// These are real errors but hard to tackle.
// We should fix them eventually
'Table column.*',
// These happen due to the commented out English HTML code some translations have...
// They should be removed at some point
'The document is not mappable to XML 1.0 due to two consecutive hyphens in a comment.'
].join('|')

const args = [
'-jar',
vnu,
'--asciiquotes',
'--skip-non-html',
// Ignore the language code warnings
'--no-langdetect',
'--Werror',
'--errors-only',
`--filterpattern "${ignores}"`,
'build/'
]

// For the 32-bit Java we need to pass `-Xss512k`
if (is32bitJava) {
args.splice(0, 0, '-Xss512k')
}

return childProcess.spawn('java', args, {
shell: true,
stdio: 'inherit'
})
.on('exit', process.exit)
})

0 comments on commit db76a4f

Please sign in to comment.