diff --git a/test/rules/ordered-imports/groups-complex/test.ts.fix b/test/rules/ordered-imports/groups-complex/test.ts.fix new file mode 100644 index 00000000000..5958b656be8 --- /dev/null +++ b/test/rules/ordered-imports/groups-complex/test.ts.fix @@ -0,0 +1,21 @@ +#!/usr/bin/env node + +// comment outside of imports +import {afoo, foo} from 'foo'; +import x = require('y'); + +import {app_b} from 'app/bar'; +import {app_f} from 'app/foo'; + +// comment pkg/bar +import {a} from '@pkg/bar'; +import {x} from '@pkg/foo'; + +import './baa'; +import './baz'; // required + +import {bar} from '../bar'; +import {xbar} from '../xbar'; + + +export class Test {} diff --git a/test/rules/ordered-imports/groups-complex/test.ts.lint b/test/rules/ordered-imports/groups-complex/test.ts.lint new file mode 100644 index 00000000000..51259940eed --- /dev/null +++ b/test/rules/ordered-imports/groups-complex/test.ts.lint @@ -0,0 +1,28 @@ +#!/usr/bin/env node + +// comment outside of imports +import {app_f} from 'app/foo'; +import {x} from '@pkg/foo'; +~~~~~~~~~~~~~~~~~~~~~~~~~~~ [Import sources of different groups must be sorted by: default, ^app, ^@pkg, current dir, parent_dir.] +~~~~~~~~~~~~~~~~~~~~~~~~~~~ [Import sources within a group must be alphabetized.] + +import {app_b} from 'app/bar'; +// comment pkg/bar +import {a} from '@pkg/bar'; +~~~~~~~~~~~~~~~~~~~~~~~~~~~ [Import sources within a group must be alphabetized.] + +import {xbar} from '../xbar'; + +import {bar} from '../bar'; + +import {foo, afoo} from 'foo'; + ~~~~~~~~~ [Named imports must be alphabetized.] + +import x = require('y'); + +import './baz'; // required +import './baa'; +~~~~~~~~~~~~~~~ [Import sources within a group must be alphabetized.] + + +export class Test {} diff --git a/test/rules/ordered-imports/groups-complex/tslint.json b/test/rules/ordered-imports/groups-complex/tslint.json new file mode 100644 index 00000000000..628a4783cbb --- /dev/null +++ b/test/rules/ordered-imports/groups-complex/tslint.json @@ -0,0 +1,19 @@ +{ + "rules": { + "ordered-imports": [ + true, + { + "import-sources-order": "case-insensitive", + "named-imports-order": "case-insensitive", + "grouped-imports": true, + "groups": [ + { "match": "^app", "order": 20 }, + { "match": "^@pkg", "order": 30 }, + { "name": "parent_dir", "match": "^[.][.]", "order": 50 }, + { "name": "current dir", "match": "^[.]", "order": 40 }, + { "match": null, "order": 5 } + ] + } + ] + } +} diff --git a/test/rules/ordered-imports/groups-shared-order/test.ts.fix b/test/rules/ordered-imports/groups-shared-order/test.ts.fix new file mode 100644 index 00000000000..2ef75e4044f --- /dev/null +++ b/test/rules/ordered-imports/groups-shared-order/test.ts.fix @@ -0,0 +1,12 @@ +#!/usr/bin/env node + +import {y} from 'app_a/bar'; +import {x} from 'app_a/foo'; +import {f} from 'app_b/foo'; + +import {b} from '@pkg/bar'; +import {a} from '@pkg/foo'; + +import {o} from 'other/bar'; + +export class Test {} diff --git a/test/rules/ordered-imports/groups-shared-order/test.ts.lint b/test/rules/ordered-imports/groups-shared-order/test.ts.lint new file mode 100644 index 00000000000..c5b335e723a --- /dev/null +++ b/test/rules/ordered-imports/groups-shared-order/test.ts.lint @@ -0,0 +1,17 @@ +#!/usr/bin/env node + +import {f} from 'app_b/foo'; +import {x} from 'app_a/foo'; +~~~~~~~~~~~~~~~~~~~~~~~~~~~~ [Import sources within a group must be alphabetized.] +import {y} from 'app_a/bar'; +~~~~~~~~~~~~~~~~~~~~~~~~~~~~ [Import sources within a group must be alphabetized.] + + +import {a} from '@pkg/foo'; + +import {b} from '@pkg/bar'; +~~~~~~~~~~~~~~~~~~~~~~~~~~~ [Import sources of different groups must be sorted by: ^app_b, ^app_a, ^@pkg.] + +import {o} from 'other/bar'; + +export class Test {} diff --git a/test/rules/ordered-imports/groups-shared-order/tslint.json b/test/rules/ordered-imports/groups-shared-order/tslint.json new file mode 100644 index 00000000000..f74cab4f9ca --- /dev/null +++ b/test/rules/ordered-imports/groups-shared-order/tslint.json @@ -0,0 +1,17 @@ +{ + "rules": { + "ordered-imports": [ + true, + { + "import-sources-order": "case-insensitive", + "named-imports-order": "case-insensitive", + "grouped-imports": true, + "groups": [ + { "match": "^app_b", "order": 10 }, + { "match": "^app_a", "order": 10 }, + { "match": "^@pkg", "order": 20 } + ] + } + ] + } +} diff --git a/test/rules/ordered-imports/groups-unmatched/test.ts.fix b/test/rules/ordered-imports/groups-unmatched/test.ts.fix new file mode 100644 index 00000000000..9b060a89a88 --- /dev/null +++ b/test/rules/ordered-imports/groups-unmatched/test.ts.fix @@ -0,0 +1,13 @@ +#!/usr/bin/env node + +import {app_b} from 'app/bar'; +import {app_f} from 'app/foo'; + +import {a} from '@pkg/bar'; +import {x} from '@pkg/foo'; + +import {foo} from 'foo'; +import {xbar} from '../xbar'; +import {b} from './ybar'; + +export class Test {} diff --git a/test/rules/ordered-imports/groups-unmatched/test.ts.lint b/test/rules/ordered-imports/groups-unmatched/test.ts.lint new file mode 100644 index 00000000000..7b2913b15d0 --- /dev/null +++ b/test/rules/ordered-imports/groups-unmatched/test.ts.lint @@ -0,0 +1,17 @@ +#!/usr/bin/env node + +import {app_f} from 'app/foo'; + +import {x} from '@pkg/foo'; + +import {app_b} from 'app/bar'; +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ [Import sources of different groups must be sorted by: ^app, ^@pkg.] + +import {a} from '@pkg/bar'; + +import {xbar} from '../xbar'; + +import {foo} from 'foo'; +import {b} from './ybar'; + +export class Test {} diff --git a/test/rules/ordered-imports/groups-unmatched/tslint.json b/test/rules/ordered-imports/groups-unmatched/tslint.json new file mode 100644 index 00000000000..7b810a8f933 --- /dev/null +++ b/test/rules/ordered-imports/groups-unmatched/tslint.json @@ -0,0 +1,13 @@ +{ + "rules": { + "ordered-imports": [ + true, + { + "import-sources-order": "case-insensitive", + "named-imports-order": "case-insensitive", + "grouped-imports": true, + "groups": [{ "match": "^app", "order": 20 }, { "match": "^@pkg", "order": 30 }] + } + ] + } +}