mirror of
https://github.com/DietrichGebert/ponytail.git
synced 2026-09-14 18:11:01 +08:00
146904825d
loc.js regex was missing \r? before \n, so CRLF code fences were never matched and the metric fell back to counting the whole response. Also removed dead codeOf() from behavior.js (defined but never called). Fixes #339
24 lines
1.2 KiB
JavaScript
24 lines
1.2 KiB
JavaScript
// Regression guard for loc.js comment handling. Run: node loc.test.js
|
|
const assert = require('assert');
|
|
const loc = require('./loc.js');
|
|
|
|
const score = (src) => loc(src).score;
|
|
|
|
let pass = 0;
|
|
const cases = [
|
|
// /* ... */ block comments must not count as code, whether or not the
|
|
// continuation lines are *-aligned (the old filter only caught JSDoc style).
|
|
['plain block comment not counted', score('```js\nfunction f() {\n /* explain\n the rest */\n return 1;\n}\n```'), 3],
|
|
['jsdoc block comment not counted', score('```js\nfunction g() {\n /*\n * explain\n */\n return 2;\n}\n```'), 3],
|
|
['inline block comment keeps its code line', score('```js\nconst x = 1; /* note */\nconst y = 2;\n```'), 2],
|
|
['line comments still stripped', score('```js\n// header\nconst x = 1;\n```'), 1],
|
|
['plain code unchanged', score('```js\nconst a = 1;\nconst b = 2;\n```'), 2],
|
|
['CRLF fences parsed correctly (#339)', score('```js\r\nconst a = 1;\r\nconst b = 2;\r\n```'), 2],
|
|
];
|
|
for (const [name, got, want] of cases) {
|
|
assert.strictEqual(got, want, `FAILED: ${name} (got ${got}, want ${want})`);
|
|
console.log(`ok - ${name}`);
|
|
pass++;
|
|
}
|
|
console.log(`\n${pass}/${cases.length} passed`);
|