diff options
| author | Kevin J Hoerr <kjhoerr@protonmail.com> | 2019-11-29 18:28:54 -0500 |
|---|---|---|
| committer | Kevin J Hoerr <kjhoerr@protonmail.com> | 2019-11-29 18:28:54 -0500 |
| commit | 1158e558606034b681f4663d62677e798cf5ec23 (patch) | |
| tree | 35e9ead895b0b0d2008d4c622f5d010a4098fc7c /src/index.ts | |
| parent | 5964ec16673bd1474d32ffe87a2009b823c36f12 (diff) | |
| download | ao-coverage-1158e558606034b681f4663d62677e798cf5ec23.tar.gz ao-coverage-1158e558606034b681f4663d62677e798cf5ec23.tar.bz2 ao-coverage-1158e558606034b681f4663d62677e798cf5ec23.zip | |
Implement report parsing for Tarpaulin
The generated Tarpaulin HTML report does not have stats to parse via the
DOM - the data is injected via a script tag, which only has line-by-line
coverage, though it includes statistics for each file. The total coverage is
counted by summing the covered/coverable stats reported for each file.
Also, the bad version for express is fixed, and messages are
included for errors that occur for the POST endpoint.
Diffstat (limited to 'src/index.ts')
| -rw-r--r-- | src/index.ts | 11 |
1 files changed, 8 insertions, 3 deletions
diff --git a/src/index.ts b/src/index.ts index 4fe80a9..d592405 100644 --- a/src/index.ts +++ b/src/index.ts @@ -36,12 +36,12 @@ app.post("/v1/:org/:repo/:branch/:commit.html", (req, res) => { const { token, format } = req.query; //TODO @Metadata token should come from metadata if (token != TOKEN) { - return res.status(401).send(); + return res.status(401).send("Invalid token"); } const reporter = format || "tarpaulin"; if (!formats.list_formats().includes(reporter)) { - return res.status(406).send(); + return res.status(406).send("Report format unknown"); } //TODO acquire file, verify file size/content type (HTML) @@ -51,7 +51,12 @@ app.post("/v1/:org/:repo/:branch/:commit.html", (req, res) => { const doc = new DOMParser().parseFromString(contents, "text/html"); const formatter = formats.get_format(reporter); - const coverage = formatter.parse_coverage(doc); + let coverage: number; + try { + coverage = formatter.parse_coverage(doc); + } catch { + return res.status(400).send("Invalid report document"); + } const badge = badgen({ label: "coverage", |
