1+
2+ // Note: This example test is leveraging the Mocha test framework.
3+ // Please refer to their documentation on https://mochajs.org/ for help.
4+
5+
6+ // Place this right on top
7+ import { initialize , closeActiveWindows , setPythonExecutable } from '../initialize' ;
8+ // The module 'assert' provides assertion methods from node
9+ import * as assert from 'assert' ;
10+ // You can import and use all API from the 'vscode' module
11+ // as well as import your extension to test it
12+ import * as vscode from 'vscode' ;
13+ import * as path from 'path' ;
14+ import * as settings from '../../client/common/configSettings' ;
15+ import { execPythonFile } from '../../client/common/utils' ;
16+ import { createDeferred } from '../../client/common/helpers' ;
17+
18+ let pythonSettings = settings . PythonSettings . getInstance ( ) ;
19+ let disposable : vscode . Disposable ;
20+
21+ let autoCompPath = path . join ( __dirname , '..' , '..' , '..' , 'src' , 'test' , 'pythonFiles' , 'autocomp' ) ;
22+ const filePep484 = path . join ( autoCompPath , 'pep484.py' ) ;
23+
24+ suite ( 'Autocomplete PEP 484' , ( ) => {
25+ const isPython3Deferred = createDeferred < boolean > ( ) ;
26+ const isPython3 = isPython3Deferred . promise ;
27+ suiteSetup ( async ( ) => {
28+ disposable = setPythonExecutable ( pythonSettings ) ;
29+ await initialize ( ) ;
30+ let version = await execPythonFile ( pythonSettings . pythonPath , [ '--version' ] , __dirname , true ) ;
31+ isPython3Deferred . resolve ( version . indexOf ( '3.' ) >= 0 ) ;
32+ } ) ;
33+ suiteTeardown ( done => {
34+ disposable . dispose ( ) ;
35+ closeActiveWindows ( ) . then ( ( ) => done ( ) , ( ) => done ( ) ) ;
36+ } ) ;
37+ teardown ( done => {
38+ closeActiveWindows ( ) . then ( ( ) => done ( ) , ( ) => done ( ) ) ;
39+ } ) ;
40+
41+ test ( 'argument' , async ( ) => {
42+ if ( ! await isPython3 ) {
43+ return ;
44+ }
45+ let textDocument = await vscode . workspace . openTextDocument ( filePep484 ) ;
46+ await vscode . window . showTextDocument ( textDocument ) ;
47+ assert ( vscode . window . activeTextEditor , 'No active editor' ) ;
48+ const position = new vscode . Position ( 2 , 27 ) ;
49+ let list = await vscode . commands . executeCommand < vscode . CompletionList > ( 'vscode.executeCompletionItemProvider' , textDocument . uri , position ) ;
50+ assert . notEqual ( list . items . filter ( item => item . label === 'capitalize' ) . length , 0 , 'capitalize not found' ) ;
51+ assert . notEqual ( list . items . filter ( item => item . label === 'upper' ) . length , 0 , 'upper not found' ) ;
52+ assert . notEqual ( list . items . filter ( item => item . label === 'lower' ) . length , 0 , 'lower not found' ) ;
53+ } ) ;
54+
55+ test ( 'return value' , async ( ) => {
56+ if ( ! await isPython3 ) {
57+ return ;
58+ }
59+ let textDocument = await vscode . workspace . openTextDocument ( filePep484 ) ;
60+ await vscode . window . showTextDocument ( textDocument ) ;
61+ assert ( vscode . window . activeTextEditor , 'No active editor' ) ;
62+ const position = new vscode . Position ( 8 , 6 ) ;
63+ let list = await vscode . commands . executeCommand < vscode . CompletionList > ( 'vscode.executeCompletionItemProvider' , textDocument . uri , position ) ;
64+ assert . notEqual ( list . items . filter ( item => item . label === 'bit_length' ) . length , 0 , 'bit_length not found' ) ;
65+ assert . notEqual ( list . items . filter ( item => item . label === 'from_bytes' ) . length , 0 , 'from_bytes not found' ) ;
66+ } ) ;
67+ } ) ;
0 commit comments