Skip to content

Navigation Menu

Sign in
Appearance settings

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Sign up
Appearance settings

Commit 553abe6

Browse files
authored
test: check referenced imported type (#2936)
1 parent 9f9bd2a commit 553abe6

File tree

3 files changed

+85
-0
lines changed

3 files changed

+85
-0
lines changed

‎tests/fixtures/typescript/src/test01.ts‎

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -18,6 +18,13 @@ export type Props2 = {
1818
h?: string[]
1919
i?: readonly string[]
2020
}
21+
export type Props3 = {
22+
snake_case: string
23+
'kebab-case': number
24+
camelCase: boolean
25+
PascalCase?: string
26+
foo: number
27+
}
2128

2229
export type Slots1 = {
2330
default(props: { msg: string }): any

‎tests/lib/rules/no-dupe-keys.js‎

Lines changed: 41 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,9 @@
66

77
const rule = require('../../../lib/rules/no-dupe-keys')
88
const RuleTester = require('../../eslint-compat').RuleTester
9+
const {
10+
getTypeScriptFixtureTestOptions
11+
} = require('../../test-utils/typescript')
912

1013
const ruleTester = new RuleTester({
1114
languageOptions: {
@@ -511,6 +514,20 @@ ruleTester.run('no-dupe-keys', rule, {
511514
</script>
512515
`,
513516
languageOptions: { parser: require('vue-eslint-parser') }
517+
},
518+
{
519+
code: `
520+
<script setup lang="ts">
521+
import {Props2 as Props} from './test01'
522+
523+
defineProps<Props>()
524+
525+
const bar = computed(() => {
526+
return "hello";
527+
});
528+
</script>
529+
`,
530+
...getTypeScriptFixtureTestOptions()
514531
}
515532
],
516533

@@ -1245,6 +1262,30 @@ ruleTester.run('no-dupe-keys', rule, {
12451262
endColumn: 24
12461263
}
12471264
]
1265+
},
1266+
{
1267+
code: `
1268+
<script setup lang="ts">
1269+
import {Props1 as Props} from './test01'
1270+
1271+
defineProps<Props>()
1272+
1273+
const foo = computed(() => {
1274+
return "hello";
1275+
});
1276+
</script>
1277+
`,
1278+
errors: [
1279+
{
1280+
message:
1281+
"Duplicate key 'foo'. May cause name collision in script or template tag.",
1282+
line: 7,
1283+
column: 13,
1284+
endLine: 9,
1285+
endColumn: 9
1286+
}
1287+
],
1288+
...getTypeScriptFixtureTestOptions()
12481289
}
12491290
]
12501291
})

‎tests/lib/rules/prop-name-casing.js‎

Lines changed: 37 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,9 @@
77
const semver = require('semver')
88
const rule = require('../../../lib/rules/prop-name-casing')
99
const RuleTester = require('../../eslint-compat').RuleTester
10+
const {
11+
getTypeScriptFixtureTestOptions
12+
} = require('../../test-utils/typescript')
1013

1114
const languageOptions = {
1215
ecmaVersion: 2018,
@@ -376,6 +379,16 @@ ruleTester.run('prop-name-casing', rule, {
376379
{ ignoreProps: ['ignored_prop', '/^ignored-pattern-/'] }
377380
],
378381
languageOptions
382+
},
383+
{
384+
code: `
385+
<script setup lang="ts">
386+
import {Props2 as Props} from './test01'
387+
388+
defineProps<Props>()
389+
</script>
390+
`,
391+
...getTypeScriptFixtureTestOptions()
379392
}
380393
],
381394

@@ -751,6 +764,30 @@ ruleTester.run('prop-name-casing', rule, {
751764
line: 3
752765
}
753766
]
767+
},
768+
{
769+
code: `
770+
<script setup lang="ts">
771+
import {Props3 as Props} from './test01'
772+
773+
defineProps<Props>()
774+
</script>
775+
`,
776+
errors: [
777+
{
778+
message: 'Prop "snake_case" is not in camelCase.',
779+
line: 5
780+
},
781+
{
782+
message: 'Prop "kebab-case" is not in camelCase.',
783+
line: 5
784+
},
785+
{
786+
message: 'Prop "PascalCase" is not in camelCase.',
787+
line: 5
788+
}
789+
],
790+
...getTypeScriptFixtureTestOptions()
754791
}
755792
]
756793
})

0 commit comments

Comments
(0)

AltStyle によって変換されたページ (->オリジナル) /