Book a Demo!
CoCalc Logo Icon
StoreFeaturesDocsShareSupportNewsAboutPoliciesSign UpSign In
microsoft
GitHub Repository: microsoft/vscode
Path: blob/main/extensions/copilot/src/extension/test/common/importRewriting.spec.ts
13509 views
1
/*---------------------------------------------------------------------------------------------
2
* Copyright (c) Microsoft Corporation. All rights reserved.
3
* Licensed under the MIT License. See License.txt in the project root for license information.
4
*--------------------------------------------------------------------------------------------*/
5
6
import { assert, suite, test } from 'vitest';
7
import { isImportStatement } from '../../prompt/common/importStatement';
8
9
suite('isImportStatement', () => {
10
test('typescript', () => {
11
assert.strictEqual(isImportStatement('import foo from "bar";', 'typescript'), true);
12
assert.strictEqual(isImportStatement(' \timport foo from "bar";', 'typescript'), true);
13
assert.strictEqual(isImportStatement('import * as foo from "bar";', 'typescript'), true);
14
assert.strictEqual(isImportStatement('import { foo } from "bar";', 'typescript'), true);
15
assert.strictEqual(isImportStatement('import { foo as bar } from "bar";', 'typescript'), true);
16
assert.strictEqual(isImportStatement('import "bar";', 'typescript'), true);
17
assert.strictEqual(isImportStatement(`const fs = require('fs');`, 'typescript'), true);
18
assert.strictEqual(isImportStatement(`var fs = require("fs");`, 'typescript'), true);
19
assert.strictEqual(isImportStatement(`import assert = require('assert');`, 'typescript'), true);
20
assert.strictEqual(isImportStatement(`import*as fs from 'fs'`, 'typescript'), true);
21
assert.strictEqual(isImportStatement(`import{arch} from 'os'`, 'typescript'), true);
22
assert.strictEqual(isImportStatement('export { foo } from "bar";', 'typescript'), false);
23
assert.strictEqual(isImportStatement(`const location = require.resolve('assert');`, 'typescript'), false);
24
});
25
26
test('javascript', () => {
27
assert.strictEqual(isImportStatement('import foo from "bar";', 'javascript'), true);
28
assert.strictEqual(isImportStatement('\t\t\timport foo from "bar";', 'javascript'), true);
29
assert.strictEqual(isImportStatement('import * as foo from "bar";', 'javascript'), true);
30
assert.strictEqual(isImportStatement('import { foo } from "bar";', 'javascript'), true);
31
assert.strictEqual(isImportStatement('import { foo as bar } from "bar";', 'javascript'), true);
32
assert.strictEqual(isImportStatement('import "bar";', 'javascript'), true);
33
assert.strictEqual(isImportStatement(`const fs = require('fs');`, 'javascript'), true);
34
assert.strictEqual(isImportStatement(`let fs = require("fs");`, 'javascript'), true);
35
assert.strictEqual(isImportStatement(`var fs=require("fs");`, 'javascript'), true);
36
assert.strictEqual(isImportStatement('export { foo } from "bar";', 'javascript'), false);
37
});
38
39
test('java', () => {
40
assert.strictEqual(isImportStatement('import java.util.ArrayList;', 'java'), true);
41
assert.strictEqual(isImportStatement(' import java.util.ArrayList;', 'java'), true);
42
assert.strictEqual(isImportStatement('import static java.lang.Math.*;', 'java'), true);
43
assert.strictEqual(isImportStatement('import java.util.*;', 'java'), true);
44
});
45
46
test('php', () => {
47
assert.strictEqual(isImportStatement('use foo\\bar;', 'php'), true);
48
assert.strictEqual(isImportStatement(' use foo\\bar;', 'php'), true);
49
assert.strictEqual(isImportStatement('use foo\\bar as baz;', 'php'), true);
50
assert.strictEqual(isImportStatement('use function foo\\bar;', 'php'), true);
51
assert.strictEqual(isImportStatement('use const foo\\bar;', 'php'), true);
52
assert.strictEqual(isImportStatement('use foo\\bar { baz };', 'php'), true);
53
assert.strictEqual(isImportStatement('require_once "bar.php";', 'php'), false);
54
});
55
56
test('rust', () => {
57
assert.strictEqual(isImportStatement('use foo;', 'rust'), true);
58
assert.strictEqual(isImportStatement('\t\tuse foo;', 'rust'), true);
59
assert.strictEqual(isImportStatement('use foo::bar;', 'rust'), true);
60
assert.strictEqual(isImportStatement('use foo::{bar, baz};', 'rust'), true);
61
assert.strictEqual(isImportStatement('use foo as bar;', 'rust'), true);
62
assert.strictEqual(isImportStatement('extern crate foo;', 'rust'), false);
63
});
64
65
test('python', () => {
66
assert.strictEqual(isImportStatement(' import foo', 'python'), true);
67
assert.strictEqual(isImportStatement('import foo as bar', 'python'), true);
68
assert.strictEqual(isImportStatement('from foo import bar', 'python'), true);
69
assert.strictEqual(isImportStatement('from foo import bar, baz', 'python'), true);
70
assert.strictEqual(isImportStatement('from foo import *', 'python'), true);
71
assert.strictEqual(isImportStatement('import "bar"', 'python'), false);
72
assert.strictEqual(isImportStatement('export { foo } from "bar";', 'python'), false);
73
assert.strictEqual(isImportStatement('const foo = require("bar");', 'python'), false);
74
});
75
});
76
77