Skip to content

Commit fdb5832

Browse files
committed
refactor: Enhance DeepnoteEnvironmentTreeDataProvider to include environment ID in info items
- Updated the creation of info items in DeepnoteEnvironmentTreeDataProvider to include the environment ID for better identification. - Modified the createInfoItem method in DeepnoteEnvironmentTreeItem to accept an environment ID, ensuring consistent ID formatting. - Adjusted unit tests to validate the changes in info item creation and ensure proper functionality. Signed-off-by: Tomas Kislan <[email protected]>
1 parent ed9262f commit fdb5832

File tree

3 files changed

+31
-9
lines changed

3 files changed

+31
-9
lines changed

src/kernels/deepnote/environments/deepnoteEnvironmentTreeDataProvider.node.ts

Lines changed: 20 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -86,49 +86,64 @@ export class DeepnoteEnvironmentTreeDataProvider implements TreeDataProvider<Dee
8686
items.push(
8787
DeepnoteEnvironmentTreeItem.createInfoItem(
8888
'ports',
89+
config.id,
8990
`Ports: jupyter=${config.serverInfo.jupyterPort}, lsp=${config.serverInfo.lspPort}`,
9091
'port'
9192
)
9293
);
93-
items.push(DeepnoteEnvironmentTreeItem.createInfoItem('url', `URL: ${config.serverInfo.url}`, 'globe'));
94+
items.push(
95+
DeepnoteEnvironmentTreeItem.createInfoItem('url', config.id, `URL: ${config.serverInfo.url}`, 'globe')
96+
);
9497
}
9598

9699
// Python interpreter
97100
items.push(
98101
DeepnoteEnvironmentTreeItem.createInfoItem(
99102
'python',
103+
config.id,
100104
`Python: ${config.pythonInterpreter.uri.fsPath}`,
101105
'symbol-namespace'
102106
)
103107
);
104108

105109
// Venv path
106-
items.push(DeepnoteEnvironmentTreeItem.createInfoItem('venv', `Venv: ${config.venvPath.fsPath}`, 'folder'));
110+
items.push(
111+
DeepnoteEnvironmentTreeItem.createInfoItem('venv', config.id, `Venv: ${config.venvPath.fsPath}`, 'folder')
112+
);
107113

108114
// Packages
109115
if (config.packages && config.packages.length > 0) {
110116
items.push(
111117
DeepnoteEnvironmentTreeItem.createInfoItem(
112118
'packages',
119+
config.id,
113120
`Packages: ${config.packages.join(', ')}`,
114121
'package'
115122
)
116123
);
117124
} else {
118-
items.push(DeepnoteEnvironmentTreeItem.createInfoItem('packages', 'Packages: (none)', 'package'));
125+
items.push(
126+
DeepnoteEnvironmentTreeItem.createInfoItem('packages', config.id, 'Packages: (none)', 'package')
127+
);
119128
}
120129

121130
// Toolkit version
122131
if (config.toolkitVersion) {
123132
items.push(
124-
DeepnoteEnvironmentTreeItem.createInfoItem('toolkit', `Toolkit: ${config.toolkitVersion}`, 'versions')
133+
DeepnoteEnvironmentTreeItem.createInfoItem(
134+
'toolkit',
135+
config.id,
136+
`Toolkit: ${config.toolkitVersion}`,
137+
'versions'
138+
)
125139
);
126140
}
127141

128142
// Timestamps
129143
items.push(
130144
DeepnoteEnvironmentTreeItem.createInfoItem(
131145
'created',
146+
config.id,
132147
`Created: ${config.createdAt.toLocaleString()}`,
133148
'history'
134149
)
@@ -137,6 +152,7 @@ export class DeepnoteEnvironmentTreeDataProvider implements TreeDataProvider<Dee
137152
items.push(
138153
DeepnoteEnvironmentTreeItem.createInfoItem(
139154
'lastUsed',
155+
config.id,
140156
`Last used: ${config.lastUsedAt.toLocaleString()}`,
141157
'clock'
142158
)

src/kernels/deepnote/environments/deepnoteEnvironmentTreeItem.node.ts

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -49,11 +49,12 @@ export class DeepnoteEnvironmentTreeItem extends TreeItem {
4949
*/
5050
public static createInfoItem(
5151
id: DeepnoteEnvironmentTreeInfoItemId,
52+
environmentId: string,
5253
label: string,
5354
icon?: string
5455
): DeepnoteEnvironmentTreeItem {
5556
const item = new DeepnoteEnvironmentTreeItem(EnvironmentTreeItemType.InfoItem, undefined, undefined, label);
56-
item.id = `info-${id}`;
57+
item.id = `info-${environmentId}-${id}`;
5758

5859
if (icon) {
5960
item.iconPath = new ThemeIcon(icon);

src/kernels/deepnote/environments/deepnoteEnvironmentTreeItem.unit.test.ts

Lines changed: 9 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -109,10 +109,10 @@ suite('DeepnoteEnvironmentTreeItem', () => {
109109
EnvironmentStatus.Running
110110
);
111111

112-
const tooltip = item.tooltip as string;
112+
const tooltip = `${item.tooltip}`;
113113
assert.include(tooltip, 'Test Environment');
114114
assert.include(tooltip, 'Running');
115-
assert.include(tooltip, testInterpreter.uri.fsPath);
115+
assert.include(tooltip, testInterpreter.uri.toString(true));
116116
});
117117

118118
test('should include packages in tooltip when present', () => {
@@ -149,15 +149,20 @@ suite('DeepnoteEnvironmentTreeItem', () => {
149149
});
150150

151151
test('should create info item with icon', () => {
152-
const item = DeepnoteEnvironmentTreeItem.createInfoItem('ports', 'Port: 8888', 'circle-filled');
152+
const item = DeepnoteEnvironmentTreeItem.createInfoItem(
153+
'ports',
154+
'test-config-id',
155+
'Port: 8888',
156+
'circle-filled'
157+
);
153158

154159
assert.strictEqual(item.label, 'Port: 8888');
155160
assert.instanceOf(item.iconPath, ThemeIcon);
156161
assert.strictEqual((item.iconPath as ThemeIcon).id, 'circle-filled');
157162
});
158163

159164
test('should create info item without icon', () => {
160-
const item = DeepnoteEnvironmentTreeItem.createInfoItem('ports', 'No icon');
165+
const item = DeepnoteEnvironmentTreeItem.createInfoItem('ports', 'test-config-id', 'No icon');
161166

162167
assert.strictEqual(item.label, 'No icon');
163168
assert.isUndefined(item.iconPath);

0 commit comments

Comments
 (0)