Skip to content

Commit 2f55cac

Browse files
committed
fix: fixed lint errors
1 parent a83aa31 commit 2f55cac

File tree

15 files changed

+291
-224
lines changed

15 files changed

+291
-224
lines changed

.github/workflows/release.yml

Lines changed: 26 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -12,6 +12,32 @@ on:
1212
workflow_dispatch:
1313

1414
jobs:
15+
test:
16+
strategy:
17+
matrix:
18+
os: [macos-latest, ubuntu-latest, windows-latest]
19+
runs-on: ${{ matrix.os }}
20+
steps:
21+
- name: Checkout
22+
uses: actions/checkout@v4
23+
24+
- name: Install Node.js
25+
uses: actions/setup-node@v4
26+
with:
27+
node-version: 20.x
28+
cache: 'npm'
29+
30+
- name: Install dependencies
31+
run: npm install
32+
33+
- name: Run tests on Linux (with xvfb)
34+
run: xvfb-run -a npm test
35+
if: runner.os == 'Linux'
36+
37+
- name: Run tests on macOS/Windows
38+
run: npm test
39+
if: runner.os != 'Linux'
40+
1541
build-and-release:
1642
# 태그가 푸시된 경우에만 릴리스 실행
1743
if: startsWith(github.ref, 'refs/tags/v')

package.json

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -210,9 +210,9 @@
210210
"compile": "tsc -p ./ && webpack --mode production --devtool hidden-source-map",
211211
"watch": "tsc -watch -p ./",
212212
"watch:webpack": "webpack --watch --mode development",
213-
"pretest": "npm run compile && npm run lint",
213+
"pretest": "npm run lint",
214214
"lint": "eslint src --ext ts",
215-
"test": "vscode-test",
215+
"test": "npm run compile && vscode-test",
216216
"dev": "webpack --mode development"
217217
},
218218
"devDependencies": {

src/backtestSettingView.ts

Lines changed: 7 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -52,7 +52,7 @@ export class BacktestSettingView {
5252
const entryFilePath = vscode.Uri.joinPath(vscode.Uri.file(project.path), project.entryFile);
5353
try {
5454
await vscode.workspace.fs.stat(entryFilePath);
55-
} catch (error) {
55+
} catch {
5656
vscode.window.showErrorMessage(`Project entry file "${project.entryFile}" not found at ${project.path}.`);
5757
return;
5858
}
@@ -102,7 +102,7 @@ export class BacktestSettingView {
102102
this._panel.webview.onDidReceiveMessage(async data => {
103103
try {
104104
switch (data.type) {
105-
case 'runBacktest':
105+
case 'runBacktest':{
106106
if (!this._currentProject || !this._currentProject._id) {
107107
vscode.window.showErrorMessage('Please select a project.');
108108
return;
@@ -127,8 +127,9 @@ export class BacktestSettingView {
127127
} catch (error: any) {
128128
vscode.window.showErrorMessage(`Error occurred during backtest execution: ${error.message || error}`);
129129
}
130-
break;
131-
case 'refresh':
130+
break;
131+
}
132+
case 'refresh': {
132133
const datasetRootPathRefresh = path.join(this._workspacePath, 'dataset');
133134
this._datasets = await this.datasetService.loadDatasetsInWorkspace(datasetRootPathRefresh);
134135

@@ -138,7 +139,8 @@ export class BacktestSettingView {
138139
lastConfigRefresh = projectDetails?.lastConfig;
139140
}
140141
this._updateWebview(lastConfigRefresh); // Call _updateWebview with the potentially updated lastConfig
141-
break;
142+
break;
143+
}
142144
default:
143145
console.warn(`Unknown message type: ${data.type}`);
144146
}

src/database.ts

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,17 +1,17 @@
11
import * as path from 'path';
2-
import * as vscode from 'vscode';
32
import * as zlib from 'zlib';
43
import { promisify } from 'util';
54
import { Backtest } from './types';
65
import { ProjectInfo } from './types';
76

87
export class Database {
98
private static instance: Database;
9+
// eslint-disable-next-line @typescript-eslint/no-require-imports
1010
private Datastore = require('@seald-io/nedb');
1111
private readonly CONFIG_FILE_NAME: string = '.backtest-man';
1212
private db: any;
13-
private initialized: boolean = false;
14-
private dbPath: string = '';
13+
private initialized = false;
14+
private dbPath = '';
1515
private readonly gzip = promisify(zlib.gzip);
1616
private readonly gunzip = promisify(zlib.gunzip);
1717

src/datasetDownloaderView.ts

Lines changed: 5 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -47,20 +47,22 @@ export class DatasetDownloaderView {
4747
case 'refresh':
4848
vscode.commands.executeCommand('backtestManager.refreshDatasetView');
4949
break;
50-
case 'getExchangeInfo':
50+
case 'getExchangeInfo': {
5151
const exchangeInfo = await this.datasetService.getExchangeInfo(data.exchange, this.assetType); // New
5252
this.panel?.webview.postMessage({
5353
type: 'exchangeInfo',
5454
data: exchangeInfo
5555
});
56-
break;
57-
case 'getAvailableExchanges':
56+
break;
57+
}
58+
case 'getAvailableExchanges': {
5859
const exchanges = await this.datasetService.getAvailableExchanges(this.assetType); // New
5960
this.panel?.webview.postMessage({
6061
type: 'availableExchanges',
6162
data: exchanges
6263
});
6364
break;
65+
}
6466
}
6567
} catch (error: any) {
6668
vscode.window.showErrorMessage(`Error processing message: ${error.message}`);

src/datasetTreeProvider.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -15,7 +15,7 @@ export class DatasetTreeItem {
1515
constructor(
1616
id: string,
1717
label: string,
18-
isFolder: boolean = false,
18+
isFolder = false,
1919
children?: DatasetTreeItem[],
2020
contextValue?: string,
2121
datasetInfo?: DatasetInfo,

src/engines/backtrader/backtraderRunner.ts

Lines changed: 34 additions & 37 deletions
Original file line numberDiff line numberDiff line change
@@ -42,44 +42,41 @@ export class BacktraderRunner extends BaseRunner<BacktraderConfig> {
4242
}
4343

4444
public async runBacktest(pythonCode: string): Promise<Backtest> {
45-
try {
46-
// Show output channel
47-
this.logger.revealPanel();
48-
49-
// Create new backtest result object
50-
this.currentBacktest = {
51-
id: generateShortHash(Date.now().toString()),
52-
date: new Date().toISOString(),
53-
strategy: this.config.strategy,
54-
performance: {
55-
totalReturn: 0,
56-
annualizedReturn: 0,
57-
sharpeRatio: 0,
58-
sortinoRatio: 0,
59-
maxDrawdown: 0,
60-
winRate: 0,
61-
profitFactor: 0,
62-
trades: 0,
63-
calmarRatio: 0,
64-
avgWinLossRatio: 0,
65-
skewness: 0,
66-
kurtosis: 0
67-
},
68-
equity: [],
69-
trades: {}
70-
};
45+
// Show output channel
46+
this.logger.revealPanel();
47+
48+
// Create new backtest result object
49+
this.currentBacktest = {
50+
id: generateShortHash(Date.now().toString()),
51+
date: new Date().toISOString(),
52+
strategy: this.config.strategy,
53+
performance: {
54+
totalReturn: 0,
55+
annualizedReturn: 0,
56+
sharpeRatio: 0,
57+
sortinoRatio: 0,
58+
maxDrawdown: 0,
59+
winRate: 0,
60+
profitFactor: 0,
61+
trades: 0,
62+
calmarRatio: 0,
63+
avgWinLossRatio: 0,
64+
skewness: 0,
65+
kurtosis: 0
66+
},
67+
equity: [],
68+
trades: {}
69+
};
7170

72-
// Output backtest start message
73-
this.logger.log('========================================');
74-
this.logger.log('[+] Starting backtest...');
75-
this.logger.log(`[+] Strategy: ${this.config.strategy}`);
76-
this.logger.log(`[+] Project path: ${this.currentProject?.path}`);
77-
this.logger.log(`[+] Backtest engine: ${this.currentProject?.engine}`);
78-
this.logger.log('========================================');
71+
// Output backtest start message
72+
this.logger.log('========================================');
73+
this.logger.log('[+] Starting backtest...');
74+
this.logger.log(`[+] Strategy: ${this.config.strategy}`);
75+
this.logger.log(`[+] Project path: ${this.currentProject?.path}`);
76+
this.logger.log(`[+] Backtest engine: ${this.currentProject?.engine}`);
77+
this.logger.log('========================================');
7978

80-
return await this.run(pythonCode);
81-
} catch (error) {
82-
throw error;
83-
}
79+
return await this.run(pythonCode);
80+
8481
}
8582
}

0 commit comments

Comments
 (0)