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