mirror of
https://github.com/go-gitea/gitea.git
synced 2026-08-24 20:44:45 +00:00
61be9fcdfa
- update the vendored `modern-normalize` to v3.0.1 - require descriptions for lint disables in TS and CSS, same as we already have in Go. - disable core rules covered by `regexp/*` and `unicorn/*`, and ones that cannot fire - stop applying vitest rules to the playwright files in `tests/e2e` - enable 7 stylelint rules, mostly `no-unknown` and `no-invalid` checks - drop 2 unnecessary vendor prefixes (safari v17+, chrome v120+) - look up ids via `querySelector` with `CSS.escape` instead of `getElementById` - remove stale doc about `@ts-expect-error`, it's forbidden - misc dev doc fixes Every declaration that `modern-normalize` v3 removes was checked against chromium, webkit and firefox defaults first. The `hr` color and the `:-moz-focusring` outline are kept as documented deviations, dropping those does change rendering. --------- Signed-off-by: silverwind <me@silverwind.io> Co-authored-by: wxiaoguang <wxiaoguang@gmail.com>
86 lines
2.4 KiB
TypeScript
86 lines
2.4 KiB
TypeScript
// MIT license, Copyright (c) GitHub, Inc.
|
|
// https://github.com/github/eslint-plugin-github/blob/main/lib/rules/unescaped-html-literal.js
|
|
/* eslint-disable no-template-curly-in-string -- the fixtures are template literal sources inside plain strings */
|
|
import rule from './unescaped-html-literal.ts';
|
|
import {RuleTester} from 'eslint';
|
|
|
|
class VitestRuleTester extends RuleTester {
|
|
static describe = describe;
|
|
static it = it;
|
|
static itOnly = it.only;
|
|
}
|
|
|
|
const ruleTester = new VitestRuleTester();
|
|
|
|
ruleTester.run('unescaped-html-literal', rule, {
|
|
valid: [
|
|
{
|
|
code: '`Hello World!`;',
|
|
languageOptions: {ecmaVersion: 2017},
|
|
},
|
|
{
|
|
code: "'Hello World!'",
|
|
languageOptions: {ecmaVersion: 2017},
|
|
},
|
|
{
|
|
code: '"Hello World!"',
|
|
languageOptions: {ecmaVersion: 2017},
|
|
},
|
|
{
|
|
code: 'const helloTemplate = () => html`<div>Hello World!</div>`;',
|
|
languageOptions: {ecmaVersion: 2017},
|
|
},
|
|
{
|
|
code: 'const helloTemplate = (name) => html`<div>Hello ${name}!</div>`;',
|
|
languageOptions: {ecmaVersion: 2017},
|
|
},
|
|
],
|
|
invalid: [
|
|
{
|
|
code: "const helloHTML = '<div>Hello, World!</div>'",
|
|
languageOptions: {ecmaVersion: 2017},
|
|
errors: [
|
|
{
|
|
message: 'Unescaped HTML literal. Use html`` tag template literal for secure escaping.',
|
|
},
|
|
],
|
|
},
|
|
{
|
|
code: 'const helloHTML = "<h1>Hello, World!</h1>"',
|
|
languageOptions: {ecmaVersion: 2017},
|
|
errors: [
|
|
{
|
|
message: 'Unescaped HTML literal. Use html`` tag template literal for secure escaping.',
|
|
},
|
|
],
|
|
},
|
|
{
|
|
code: 'const helloHTML = `<div>Hello ${name}!</div>`',
|
|
languageOptions: {ecmaVersion: 2017},
|
|
errors: [
|
|
{
|
|
message: 'Unescaped HTML literal. Use html`` tag template literal for secure escaping.',
|
|
},
|
|
],
|
|
},
|
|
{
|
|
code: 'const helloHTML = ` \n\t<div>Hello ${name}!</div>`',
|
|
languageOptions: {ecmaVersion: 2017},
|
|
errors: [
|
|
{
|
|
message: 'Unescaped HTML literal. Use html`` tag template literal for secure escaping.',
|
|
},
|
|
],
|
|
},
|
|
{
|
|
code: 'const helloHTML = foo`<div>Hello ${name}!</div>`',
|
|
languageOptions: {ecmaVersion: 2017},
|
|
errors: [
|
|
{
|
|
message: 'Unescaped HTML literal. Use html`` tag template literal for secure escaping.',
|
|
},
|
|
],
|
|
},
|
|
],
|
|
});
|