Skip to content

Commit 426f2ab

Browse files
committed
build: add more linting around async/await
Given that we'll be using async/await a lot more because of the test harnesses, these changes enable two more lint rules: * `await-promise` - ensures that the value that is being `await`-ed is a promise. * `no-async-without-await` - ensures that functions marked as `async` are using `await`.
1 parent 1c74518 commit 426f2ab

File tree

11 files changed

+37
-33
lines changed

11 files changed

+37
-33
lines changed

package.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -151,7 +151,7 @@
151151
"ts-api-guardian": "^0.4.6",
152152
"ts-node": "^3.0.4",
153153
"tsconfig-paths": "^2.3.0",
154-
"tslint": "^5.18.0",
154+
"tslint": "^5.19.0",
155155
"tsutils": "^3.0.0",
156156
"typescript": "3.5.3",
157157
"uglify-js": "^2.8.14"

src/cdk-experimental/testing/protractor/protractor-element.ts

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -149,5 +149,7 @@ export class ProtractorElement implements TestElement {
149149
`, this.element, selector);
150150
}
151151

152-
async forceStabilize(): Promise<void> {}
152+
async forceStabilize(): Promise<void> {
153+
return;
154+
}
153155
}

src/cdk-experimental/testing/tests/protractor.e2e.spec.ts

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -12,11 +12,11 @@ describe('ProtractorHarnessEnvironment', () => {
1212
describe('HarnessLoader', () => {
1313
let loader: HarnessLoader;
1414

15-
beforeEach(async () => {
15+
beforeEach(() => {
1616
loader = ProtractorHarnessEnvironment.loader();
1717
});
1818

19-
it('should create HarnessLoader', async () => {
19+
it('should create HarnessLoader', () => {
2020
expect(loader).not.toBeNull();
2121
});
2222

src/cdk-experimental/testing/tests/testbed.spec.ts

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -21,11 +21,11 @@ describe('TestbedHarnessEnvironment', () => {
2121
describe('HarnessLoader', () => {
2222
let loader: HarnessLoader;
2323

24-
beforeEach(async () => {
24+
beforeEach(() => {
2525
loader = TestbedHarnessEnvironment.loader(fixture);
2626
});
2727

28-
it('should create HarnessLoader from fixture', async () => {
28+
it('should create HarnessLoader from fixture', () => {
2929
expect(loader).not.toBeNull();
3030
});
3131

src/material-experimental/mdc-chips/harness/chip-grid-harness.spec.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -34,7 +34,7 @@ describe('MatChipGridHarness', () => {
3434
it('should get the chip input harness', async () => {
3535
const harnesses = await loader.getAllHarnesses(MatChipGridHarness);
3636
const input = await harnesses[0].getTextInput();
37-
expect(await input).not.toBe(null);
37+
expect(input).not.toBe(null);
3838
});
3939
});
4040

src/material-experimental/mdc-chips/harness/chip-listbox-harness.spec.ts

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -30,11 +30,11 @@ describe('MatChipListboxHarness', () => {
3030
expect ((await harnesses[0].getOptions()).length).toBe(4);
3131
});
3232

33-
describe('should get selection', async () => {
33+
describe('should get selection', () => {
3434
it('with no selected options', async () => {
3535
const harnesses = await loader.getAllHarnesses(MatChipListboxHarness);
3636
const selectedOption = await harnesses[0].getSelected();
37-
expect(await selectedOption.length).toBe(0);
37+
expect(selectedOption.length).toBe(0);
3838
});
3939

4040
it('with a single selected option', async () => {
@@ -43,7 +43,7 @@ describe('MatChipListboxHarness', () => {
4343

4444
const harnesses = await loader.getAllHarnesses(MatChipListboxHarness);
4545
const selectedOption = await harnesses[0].getSelected();
46-
expect(await selectedOption.length).toBe(1);
46+
expect(selectedOption.length).toBe(1);
4747
expect(await selectedOption[0].getText()).toContain('Blue');
4848
});
4949

@@ -55,7 +55,7 @@ describe('MatChipListboxHarness', () => {
5555

5656
const harnesses = (await loader.getAllHarnesses(MatChipListboxHarness));
5757
const selectedOption = await harnesses[0].getSelected();
58-
expect(await selectedOption.length).toBe(2);
58+
expect(selectedOption.length).toBe(2);
5959
expect(await selectedOption[0].getText()).toContain('Blue');
6060
expect(await selectedOption[1].getText()).toContain('Green');
6161
});

src/material-experimental/mdc-menu/harness/mdc-menu-harness.ts

Lines changed: 8 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -40,7 +40,7 @@ export class MatMenuHarness extends ComponentHarness {
4040
}
4141

4242
async isOpen(): Promise<boolean> {
43-
throw Error('not implemented');
43+
return Promise.reject(Error('not implemented'));
4444
}
4545

4646
async getTriggerText(): Promise<string> {
@@ -58,30 +58,30 @@ export class MatMenuHarness extends ComponentHarness {
5858
}
5959

6060
async open(): Promise<void> {
61-
throw Error('not implemented');
61+
return Promise.reject(Error('not implemented'));
6262
}
6363

6464
async close(): Promise<void> {
65-
throw Error('not implemented');
65+
return Promise.reject(Error('not implemented'));
6666
}
6767

6868
async getItems(): Promise<MatMenuItemHarness[]> {
69-
throw Error('not implemented');
69+
return Promise.reject(Error('not implemented'));
7070
}
7171

7272
async getItemLabels(): Promise<string[]> {
73-
throw Error('not implemented');
73+
return Promise.reject(Error('not implemented'));
7474
}
7575

7676
async getItemByLabel(): Promise<MatMenuItemHarness> {
77-
throw Error('not implemented');
77+
return Promise.reject(Error('not implemented'));
7878
}
7979

8080
async getItemByIndex(): Promise<MatMenuItemHarness> {
81-
throw Error('not implemented');
81+
return Promise.reject(Error('not implemented'));
8282
}
8383

8484
async getFocusedItem(): Promise<MatMenuItemHarness> {
85-
throw Error('not implemented');
85+
return Promise.reject(Error('not implemented'));
8686
}
8787
}

src/material-experimental/mdc-menu/harness/menu-harness.ts

Lines changed: 8 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -40,7 +40,7 @@ export class MatMenuHarness extends ComponentHarness {
4040
}
4141

4242
async isOpen(): Promise<boolean> {
43-
throw Error('not implemented');
43+
return Promise.reject(Error('not implemented'));
4444
}
4545

4646
async getTriggerText(): Promise<string> {
@@ -58,30 +58,30 @@ export class MatMenuHarness extends ComponentHarness {
5858
}
5959

6060
async open(): Promise<void> {
61-
throw Error('not implemented');
61+
return Promise.reject(Error('not implemented'));
6262
}
6363

6464
async close(): Promise<void> {
65-
throw Error('not implemented');
65+
return Promise.reject(Error('not implemented'));
6666
}
6767

6868
async getItems(): Promise<MatMenuItemHarness[]> {
69-
throw Error('not implemented');
69+
return Promise.reject(Error('not implemented'));
7070
}
7171

7272
async getItemLabels(): Promise<string[]> {
73-
throw Error('not implemented');
73+
return Promise.reject(Error('not implemented'));
7474
}
7575

7676
async getItemByLabel(): Promise<MatMenuItemHarness> {
77-
throw Error('not implemented');
77+
return Promise.reject(Error('not implemented'));
7878
}
7979

8080
async getItemByIndex(): Promise<MatMenuItemHarness> {
81-
throw Error('not implemented');
81+
return Promise.reject(Error('not implemented'));
8282
}
8383

8484
async getFocusedItem(): Promise<MatMenuItemHarness> {
85-
throw Error('not implemented');
85+
return Promise.reject(Error('not implemented'));
8686
}
8787
}

src/material/icon/icon.spec.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -936,7 +936,7 @@ describe('MatIcon without HttpClientModule', () => {
936936
sanitizer = ds;
937937
}));
938938

939-
it('should throw an error when trying to load a remote icon', async() => {
939+
it('should throw an error when trying to load a remote icon', () => {
940940
const expectedError = wrappedErrorMessage(getMatIconNoHttpProviderError());
941941

942942
expect(() => {

tslint.json

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -81,10 +81,12 @@
8181
],
8282
// Avoids inconsistent linebreak styles in source files. Forces developers to use LF linebreaks.
8383
"linebreak-style": [true, "LF"],
84-
// Namespaces are no allowed, because of Closure compiler.
84+
// Namespaces are not allowed, because of Closure compiler.
8585
"no-namespace": true,
8686
"jsdoc-format": [true, "check-multiline-start"],
8787
"no-duplicate-imports": true,
88+
"await-promise": true,
89+
"no-async-without-await": true,
8890

8991
// Codelyzer
9092
"template-banana-in-box": true,

yarn.lock

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -11847,10 +11847,10 @@ tslib@^1.8.0, tslib@^1.8.1, tslib@^1.9.0, tslib@^1.9.3:
1184711847
resolved "https://registry.yarnpkg.com/tslib/-/tslib-1.9.3.tgz#d7e4dd79245d85428c4d7e4822a79917954ca286"
1184811848
integrity sha512-4krF8scpejhaOgqzBEcGM7yDIEfi0/8+8zDRZhNZZ2kjmHJ4hv3zCbQWxoJGz1iw5U0Jl0nma13xzHXcncMavQ==
1184911849

11850-
tslint@^5.18.0:
11851-
version "5.18.0"
11852-
resolved "https://registry.yarnpkg.com/tslint/-/tslint-5.18.0.tgz#f61a6ddcf372344ac5e41708095bbf043a147ac6"
11853-
integrity sha512-Q3kXkuDEijQ37nXZZLKErssQVnwCV/+23gFEMROi8IlbaBG6tXqLPQJ5Wjcyt/yHPKBC+hD5SzuGaMora+ZS6w==
11850+
tslint@^5.19.0:
11851+
version "5.19.0"
11852+
resolved "https://registry.yarnpkg.com/tslint/-/tslint-5.19.0.tgz#a2cbd4a7699386da823f6b499b8394d6c47bb968"
11853+
integrity sha512-1LwwtBxfRJZnUvoS9c0uj8XQtAnyhWr9KlNvDIdB+oXyT+VpsOAaEhEgKi1HrZ8rq0ki/AAnbGSv4KM6/AfVZw==
1185411854
dependencies:
1185511855
"@babel/code-frame" "^7.0.0"
1185611856
builtin-modules "^1.1.1"

0 commit comments

Comments
 (0)