@theia/scm 1.73.0-next.7 → 1.73.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/lib/browser/merge-editor/view/merge-editor-panes/merge-editor-result-pane.d.ts +2 -0
- package/lib/browser/merge-editor/view/merge-editor-panes/merge-editor-result-pane.d.ts.map +1 -1
- package/lib/browser/merge-editor/view/merge-editor-panes/merge-editor-result-pane.js +6 -1
- package/lib/browser/merge-editor/view/merge-editor-panes/merge-editor-result-pane.js.map +1 -1
- package/lib/browser/merge-editor/view/merge-editor-panes/merge-editor-side-pane.d.ts +2 -0
- package/lib/browser/merge-editor/view/merge-editor-panes/merge-editor-side-pane.d.ts.map +1 -1
- package/lib/browser/merge-editor/view/merge-editor-panes/merge-editor-side-pane.js +6 -1
- package/lib/browser/merge-editor/view/merge-editor-panes/merge-editor-side-pane.js.map +1 -1
- package/lib/browser/scm-amend-component.d.ts +2 -2
- package/lib/browser/scm-amend-component.d.ts.map +1 -1
- package/lib/browser/scm-repositories-widget.spec.js +83 -68
- package/lib/browser/scm-repositories-widget.spec.js.map +1 -1
- package/lib/browser/scm-tree-widget.d.ts +5 -3
- package/lib/browser/scm-tree-widget.d.ts.map +1 -1
- package/lib/browser/scm-tree-widget.js +7 -1
- package/lib/browser/scm-tree-widget.js.map +1 -1
- package/package.json +7 -7
- package/src/browser/merge-editor/view/merge-editor-panes/merge-editor-result-pane.ts +6 -3
- package/src/browser/merge-editor/view/merge-editor-panes/merge-editor-side-pane.ts +6 -3
- package/src/browser/scm-amend-component.tsx +2 -2
- package/src/browser/scm-repositories-widget.spec.ts +86 -84
- package/src/browser/scm-tree-widget.tsx +8 -5
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
import { ILogger } from '@theia/core';
|
|
1
2
|
import { EditorDecoration, Range } from '@theia/editor/lib/browser';
|
|
2
3
|
import { NavigationLocationService } from '@theia/editor/lib/browser/navigation/navigation-location-service';
|
|
3
4
|
import { MergeEditorPane } from './merge-editor-pane';
|
|
@@ -5,6 +6,7 @@ import { MergeEditorPaneToolbarItem } from './merge-editor-pane-header';
|
|
|
5
6
|
import { LineRange } from '../../model/line-range';
|
|
6
7
|
import { MergeRange } from '../../model/merge-range';
|
|
7
8
|
export declare class MergeEditorResultPane extends MergeEditorPane {
|
|
9
|
+
protected readonly logger: ILogger;
|
|
8
10
|
protected readonly navigationLocationService: NavigationLocationService;
|
|
9
11
|
constructor();
|
|
10
12
|
protected initContextKeys(): void;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"merge-editor-result-pane.d.ts","sourceRoot":"","sources":["../../../../../src/browser/merge-editor/view/merge-editor-panes/merge-editor-result-pane.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"merge-editor-result-pane.d.ts","sourceRoot":"","sources":["../../../../../src/browser/merge-editor/view/merge-editor-panes/merge-editor-result-pane.ts"],"names":[],"mappings":"AAiBA,OAAO,EAAO,OAAO,EAAE,MAAM,aAAa,CAAC;AAG3C,OAAO,EAAE,gBAAgB,EAAE,KAAK,EAAE,MAAM,2BAA2B,CAAC;AAEpE,OAAO,EAAE,yBAAyB,EAAE,MAAM,kEAAkE,CAAC;AAC7G,OAAO,EAAE,eAAe,EAAE,MAAM,qBAAqB,CAAC;AACtD,OAAO,EAAE,0BAA0B,EAAE,MAAM,4BAA4B,CAAC;AACxE,OAAO,EAAE,SAAS,EAAE,MAAM,wBAAwB,CAAC;AACnD,OAAO,EAAE,UAAU,EAAE,MAAM,yBAAyB,CAAC;AAErD,qBACa,qBAAsB,SAAQ,eAAe;IAGtD,SAAS,CAAC,QAAQ,CAAC,MAAM,EAAE,OAAO,CAAC;IAGnC,SAAS,CAAC,QAAQ,CAAC,yBAAyB,EAAE,yBAAyB,CAAC;;cAOrD,eAAe,IAAI,IAAI;cAKvB,yBAAyB,IAAI,IAAI;IAU3C,yBAAyB,CAAC,UAAU,EAAE,UAAU,GAAG,SAAS;cAIlD,kBAAkB,CAAC,KAAK,EAAE,KAAK,GAAG,KAAK;IAI1D,SAAS,CAAC,2BAA2B,IAAI,IAAI;IAK7C,KAAK,IAAI,IAAI;cAiBM,eAAe,IAAI,0BAA0B,EAAE;cA0B/C,wBAAwB,IAAI,gBAAgB,EAAE;CAmBpE"}
|
|
@@ -66,7 +66,7 @@ let MergeEditorResultPane = class MergeEditorResultPane extends merge_editor_pan
|
|
|
66
66
|
await observable_1.ObservableUtils.waitForState(model.isUpToDateObservable);
|
|
67
67
|
this.mergeEditor.goToFirstMergeRange(mergeRange => !model.isMergeRangeHandled(mergeRange));
|
|
68
68
|
}
|
|
69
|
-
}).catch(e =>
|
|
69
|
+
}).catch(e => this.logger.error(e));
|
|
70
70
|
}
|
|
71
71
|
getToolbarItems() {
|
|
72
72
|
const { model } = this.mergeEditor;
|
|
@@ -111,6 +111,11 @@ let MergeEditorResultPane = class MergeEditorResultPane extends merge_editor_pan
|
|
|
111
111
|
}
|
|
112
112
|
};
|
|
113
113
|
exports.MergeEditorResultPane = MergeEditorResultPane;
|
|
114
|
+
tslib_1.__decorate([
|
|
115
|
+
(0, inversify_1.inject)(core_1.ILogger),
|
|
116
|
+
(0, inversify_1.named)('scm:MergeEditorResultPane'),
|
|
117
|
+
tslib_1.__metadata("design:type", Object)
|
|
118
|
+
], MergeEditorResultPane.prototype, "logger", void 0);
|
|
114
119
|
tslib_1.__decorate([
|
|
115
120
|
(0, inversify_1.inject)(navigation_location_service_1.NavigationLocationService),
|
|
116
121
|
tslib_1.__metadata("design:type", navigation_location_service_1.NavigationLocationService)
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"merge-editor-result-pane.js","sourceRoot":"","sources":["../../../../../src/browser/merge-editor/view/merge-editor-panes/merge-editor-result-pane.ts"],"names":[],"mappings":";AAAA,gFAAgF;AAChF,6CAA6C;AAC7C,EAAE;AACF,2EAA2E;AAC3E,mEAAmE;AACnE,wCAAwC;AACxC,EAAE;AACF,4EAA4E;AAC5E,8EAA8E;AAC9E,6EAA6E;AAC7E,yDAAyD;AACzD,uDAAuD;AACvD,EAAE;AACF,gFAAgF;AAChF,gFAAgF;;;;AAEhF,
|
|
1
|
+
{"version":3,"file":"merge-editor-result-pane.js","sourceRoot":"","sources":["../../../../../src/browser/merge-editor/view/merge-editor-panes/merge-editor-result-pane.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
import { ILogger } from '@theia/core';
|
|
1
2
|
import { LabelProvider, OpenerService } from '@theia/core/lib/browser';
|
|
2
3
|
import { EditorDecoration, Range } from '@theia/editor/lib/browser';
|
|
3
4
|
import { MergeRange, MergeSide } from '../../model/merge-range';
|
|
@@ -7,6 +8,7 @@ import { LineRange } from '../../model/line-range';
|
|
|
7
8
|
export declare abstract class MergeEditorSidePane extends MergeEditorPane {
|
|
8
9
|
protected readonly labelProvider: LabelProvider;
|
|
9
10
|
protected readonly openerService: OpenerService;
|
|
11
|
+
protected readonly logger: ILogger;
|
|
10
12
|
abstract get mergeSide(): MergeSide;
|
|
11
13
|
constructor();
|
|
12
14
|
getLineRangeForMergeRange(mergeRange: MergeRange): LineRange;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"merge-editor-side-pane.d.ts","sourceRoot":"","sources":["../../../../../src/browser/merge-editor/view/merge-editor-panes/merge-editor-side-pane.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"merge-editor-side-pane.d.ts","sourceRoot":"","sources":["../../../../../src/browser/merge-editor/view/merge-editor-panes/merge-editor-side-pane.ts"],"names":[],"mappings":"AAiBA,OAAO,EAAO,OAAO,EAAE,MAAM,aAAa,CAAC;AAE3C,OAAO,EAAqB,aAAa,EAAQ,aAAa,EAAE,MAAM,yBAAyB,CAAC;AAChG,OAAO,EAAE,gBAAgB,EAAuB,KAAK,EAAE,MAAM,2BAA2B,CAAC;AACzF,OAAO,EAAE,UAAU,EAA2B,SAAS,EAAE,MAAM,yBAAyB,CAAC;AACzF,OAAO,EAAE,eAAe,EAAE,MAAM,qBAAqB,CAAC;AACtD,OAAO,EAAE,0BAA0B,EAAE,MAAM,4BAA4B,CAAC;AACxE,OAAO,EAAE,SAAS,EAAE,MAAM,wBAAwB,CAAC;AAEnD,8BACsB,mBAAoB,SAAQ,eAAe;IAG7D,SAAS,CAAC,QAAQ,CAAC,aAAa,EAAE,aAAa,CAAC;IAGhD,SAAS,CAAC,QAAQ,CAAC,aAAa,EAAE,aAAa,CAAC;IAGhD,SAAS,CAAC,QAAQ,CAAC,MAAM,EAAE,OAAO,CAAC;IAEnC,QAAQ,KAAK,SAAS,IAAI,SAAS,CAAC;;IAO3B,yBAAyB,CAAC,UAAU,EAAE,UAAU,GAAG,SAAS;cAIlD,kBAAkB,CAAC,KAAK,EAAE,KAAK,GAAG,KAAK;IAIpD,gBAAgB,IAAI,OAAO,CAAC,IAAI,CAAC;IAkBvC,eAAe,IAAI,IAAI;cAYJ,eAAe,IAAI,0BAA0B,EAAE;cAiB/C,wBAAwB,IAAI,gBAAgB,EAAE;CAmBpE;AAED,qBACa,oBAAqB,SAAQ,mBAAmB;IAEzD,QAAQ,CAAC,SAAS,KAAK;;CAM1B;AAED,qBACa,oBAAqB,SAAQ,mBAAmB;IAEzD,QAAQ,CAAC,SAAS,KAAK;;CAM1B"}
|
|
@@ -59,7 +59,7 @@ let MergeEditorSidePane = class MergeEditorSidePane extends merge_editor_pane_1.
|
|
|
59
59
|
label += `${core_1.nls.localizeByDefault('Base')} ⟷ ${this.header.title.label}`;
|
|
60
60
|
const options = { selection: { start: this.editor.cursor } };
|
|
61
61
|
(0, browser_1.open)(this.openerService, browser_1.DiffUris.encode(this.mergeEditor.baseUri, this.editor.uri, label), options).catch(e => {
|
|
62
|
-
|
|
62
|
+
this.logger.error(e);
|
|
63
63
|
});
|
|
64
64
|
}
|
|
65
65
|
getToolbarItems() {
|
|
@@ -104,6 +104,11 @@ tslib_1.__decorate([
|
|
|
104
104
|
(0, inversify_1.inject)(browser_1.OpenerService),
|
|
105
105
|
tslib_1.__metadata("design:type", Object)
|
|
106
106
|
], MergeEditorSidePane.prototype, "openerService", void 0);
|
|
107
|
+
tslib_1.__decorate([
|
|
108
|
+
(0, inversify_1.inject)(core_1.ILogger),
|
|
109
|
+
(0, inversify_1.named)('scm:MergeEditorSidePane'),
|
|
110
|
+
tslib_1.__metadata("design:type", Object)
|
|
111
|
+
], MergeEditorSidePane.prototype, "logger", void 0);
|
|
107
112
|
exports.MergeEditorSidePane = MergeEditorSidePane = tslib_1.__decorate([
|
|
108
113
|
(0, inversify_1.injectable)(),
|
|
109
114
|
tslib_1.__metadata("design:paramtypes", [])
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"merge-editor-side-pane.js","sourceRoot":"","sources":["../../../../../src/browser/merge-editor/view/merge-editor-panes/merge-editor-side-pane.ts"],"names":[],"mappings":";AAAA,gFAAgF;AAChF,6CAA6C;AAC7C,EAAE;AACF,2EAA2E;AAC3E,mEAAmE;AACnE,wCAAwC;AACxC,EAAE;AACF,4EAA4E;AAC5E,8EAA8E;AAC9E,6EAA6E;AAC7E,yDAAyD;AACzD,uDAAuD;AACvD,EAAE;AACF,gFAAgF;AAChF,gFAAgF;;;;AAEhF,
|
|
1
|
+
{"version":3,"file":"merge-editor-side-pane.js","sourceRoot":"","sources":["../../../../../src/browser/merge-editor/view/merge-editor-panes/merge-editor-side-pane.ts"],"names":[],"mappings":"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"}
|
|
@@ -71,7 +71,7 @@ export declare class ScmAmendComponent extends React.Component<ScmAmendComponent
|
|
|
71
71
|
protected amend: () => Promise<void>;
|
|
72
72
|
protected unamend: () => Promise<void>;
|
|
73
73
|
private resetAndSetMessage;
|
|
74
|
-
render(): JSX.Element;
|
|
74
|
+
render(): React.JSX.Element;
|
|
75
75
|
protected getLastCommit(): Promise<{
|
|
76
76
|
commit: ScmCommit;
|
|
77
77
|
avatar: string;
|
|
@@ -97,7 +97,7 @@ export declare class ScmAmendComponent extends React.Component<ScmAmendComponent
|
|
|
97
97
|
protected renderCommitBeingAmended(commitData: {
|
|
98
98
|
commit: ScmCommit;
|
|
99
99
|
avatar: string;
|
|
100
|
-
}, isOldestAmendCommit: boolean): JSX.Element;
|
|
100
|
+
}, isOldestAmendCommit: boolean): React.JSX.Element;
|
|
101
101
|
protected styleAmendedCommits(): React.CSSProperties;
|
|
102
102
|
protected styleLastCommitMovingUp(transitionState: 'start' | 'transitioning'): React.CSSProperties;
|
|
103
103
|
protected styleLastCommitMovingDown(transitionState: 'start' | 'transitioning'): React.CSSProperties;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"scm-amend-component.d.ts","sourceRoot":"","sources":["../../src/browser/scm-amend-component.tsx"],"names":[],"mappings":"AAgBA,OAAO,iDAAiD,CAAC;AAEzD,OAAO,KAAK,KAAK,MAAM,0BAA0B,CAAC;AAClD,OAAO,EAAE,gBAAgB,EAAE,MAAM,sBAAsB,CAAC;AACxD,OAAO,EAAW,cAAc,EAAE,MAAM,yBAAyB,CAAC;AAClE,OAAO,EAAc,oBAAoB,EAAE,MAAM,aAAa,CAAC;AAE/D,OAAO,EAAE,aAAa,EAAE,MAAM,kBAAkB,CAAC;AACjD,OAAO,EAAE,eAAe,EAAE,SAAS,EAAE,MAAM,gBAAgB,CAAC;AAG5D,MAAM,WAAW,sBAAsB;IACnC,KAAK,EAAE,KAAK,CAAC,aAAa,GAAG,SAAS,CAAC;IACvC,UAAU,EAAE,aAAa,CAAC;IAC1B,eAAe,EAAE,eAAe,CAAC;IACjC,gBAAgB,EAAE,CAAC,OAAO,EAAE,MAAM,KAAK,IAAI,CAAC;IAC5C,aAAa,EAAE,gBAAgB,CAAC;IAChC,cAAc,EAAE,cAAc,CAAC;CAClC;AAED,UAAU,sBAAsB;IAC5B;;;;;;OAMG;IACH,UAAU,EAAE;QACR,KAAK,EAAE,MAAM,CAAA;KAChB,GAAG;QACA,KAAK,EAAE,OAAO,GAAG,eAAe,CAAC;QACjC,SAAS,EAAE,IAAI,GAAG,MAAM,CAAC;QACzB,kBAAkB,EAAE;YAAE,MAAM,EAAE,SAAS,CAAC;YAAC,MAAM,EAAE,MAAM,CAAA;SAAE,CAAA;KAC5D,CAAC;IAEF,eAAe,EAAE;QAAE,MAAM,EAAE,SAAS,CAAC;QAAC,MAAM,EAAE,MAAM,CAAA;KAAE,EAAE,CAAC;IACzD,UAAU,EAAE;QAAE,MAAM,EAAE,SAAS,CAAC;QAAC,MAAM,EAAE,MAAM,CAAA;KAAE,GAAG,SAAS,CAAC;CACjE;AAKD,qBAAa,iBAAkB,SAAQ,KAAK,CAAC,SAAS,CAAC,sBAAsB,EAAE,sBAAsB,CAAC;IAElG;;;OAGG;IACH,SAAS,CAAC,cAAc,EAAE,MAAM,GAAG,OAAO,GAAG,SAAS,CAAU;IAEhE,SAAS,CAAC,gBAAgB,EAAE,MAAM,CAAK;IACvC,mBAAmB,GAAI,UAAU,cAAc,UAI7C;gBAEU,KAAK,EAAE,sBAAsB;IAiBzC,SAAS,CAAC,QAAQ,CAAC,kBAAkB,uBAA8B;IAEpD,iBAAiB,IAAI,OAAO,CAAC,IAAI,CAAC;IAcxC,oBAAoB,IAAI,IAAI;IAI/B,sBAAsB,IAAI,OAAO,CAAC,IAAI,CAAC;YA0E/B,oBAAoB;YAKpB,iBAAiB;IA0B/B,OAAO,CAAC,aAAa;IAIrB;;;;OAIG;IACH,OAAO,CAAC,eAAe;IAMvB;;;;;OAKG;IACH,SAAS,CAAC,KAAK,QAAa,OAAO,CAAC,IAAI,CAAC,CAOvC;IAEF,SAAS,CAAC,OAAO,QAAa,OAAO,CAAC,IAAI,CAAC,CAmBzC;YAEY,kBAAkB;IAQvB,MAAM,IAAI,GAAG,CAAC,OAAO;
|
|
1
|
+
{"version":3,"file":"scm-amend-component.d.ts","sourceRoot":"","sources":["../../src/browser/scm-amend-component.tsx"],"names":[],"mappings":"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"}
|
|
@@ -17,11 +17,15 @@
|
|
|
17
17
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
18
18
|
const jsdom_1 = require("@theia/core/lib/browser/test/jsdom");
|
|
19
19
|
let disableJSDOM = (0, jsdom_1.enableJSDOM)();
|
|
20
|
+
let disableReactActEnvironment = (0, jsdom_1.enableReactActEnvironment)();
|
|
20
21
|
const chai_1 = require("chai");
|
|
21
|
-
const
|
|
22
|
+
const React = require("@theia/core/shared/react");
|
|
23
|
+
const client_1 = require("@theia/core/shared/react-dom/client");
|
|
24
|
+
const messaging_1 = require("@theia/core/shared/@lumino/messaging");
|
|
22
25
|
const event_1 = require("@theia/core/lib/common/event");
|
|
23
26
|
const label_parser_1 = require("@theia/core/lib/browser/label-parser");
|
|
24
27
|
const scm_repositories_widget_1 = require("./scm-repositories-widget");
|
|
28
|
+
disableReactActEnvironment();
|
|
25
29
|
disableJSDOM();
|
|
26
30
|
function makeRepo(opts) {
|
|
27
31
|
return {
|
|
@@ -68,7 +72,10 @@ function createWidget(opts) {
|
|
|
68
72
|
widget.commandService = mockCommandService;
|
|
69
73
|
widget.contextMenuRenderer = mockContextMenuRenderer;
|
|
70
74
|
widget.scmContextKeys = mockScmContextKeys;
|
|
71
|
-
|
|
75
|
+
React.act(() => {
|
|
76
|
+
widget.init();
|
|
77
|
+
messaging_1.MessageLoop.flush();
|
|
78
|
+
});
|
|
72
79
|
return widget;
|
|
73
80
|
}
|
|
74
81
|
describe('ScmRepositoriesWidget', () => {
|
|
@@ -79,13 +86,17 @@ describe('ScmRepositoriesWidget', () => {
|
|
|
79
86
|
let onChangedSelectedEmitter;
|
|
80
87
|
let executedCommands;
|
|
81
88
|
let widget;
|
|
89
|
+
let renderedRoots;
|
|
82
90
|
before(() => {
|
|
83
91
|
disableJSDOM = (0, jsdom_1.enableJSDOM)();
|
|
92
|
+
disableReactActEnvironment = (0, jsdom_1.enableReactActEnvironment)();
|
|
84
93
|
});
|
|
85
94
|
after(() => {
|
|
95
|
+
disableReactActEnvironment();
|
|
86
96
|
disableJSDOM();
|
|
87
97
|
});
|
|
88
98
|
beforeEach(() => {
|
|
99
|
+
renderedRoots = [];
|
|
89
100
|
repositories = [];
|
|
90
101
|
selectedRepositoryRef = { value: undefined };
|
|
91
102
|
onAddEmitter = new event_1.Emitter();
|
|
@@ -102,10 +113,37 @@ describe('ScmRepositoriesWidget', () => {
|
|
|
102
113
|
});
|
|
103
114
|
});
|
|
104
115
|
afterEach(() => {
|
|
105
|
-
|
|
106
|
-
|
|
107
|
-
|
|
116
|
+
try {
|
|
117
|
+
React.act(() => {
|
|
118
|
+
for (const { root } of renderedRoots) {
|
|
119
|
+
root.unmount();
|
|
120
|
+
}
|
|
121
|
+
widget.dispose();
|
|
122
|
+
messaging_1.MessageLoop.flush();
|
|
123
|
+
});
|
|
124
|
+
}
|
|
125
|
+
finally {
|
|
126
|
+
for (const { container } of renderedRoots) {
|
|
127
|
+
container.remove();
|
|
128
|
+
}
|
|
129
|
+
renderedRoots = [];
|
|
130
|
+
onAddEmitter.dispose();
|
|
131
|
+
onRemoveEmitter.dispose();
|
|
132
|
+
onChangedSelectedEmitter.dispose();
|
|
133
|
+
}
|
|
108
134
|
});
|
|
135
|
+
function actAndFlush(fn) {
|
|
136
|
+
React.act(() => {
|
|
137
|
+
fn();
|
|
138
|
+
messaging_1.MessageLoop.flush();
|
|
139
|
+
});
|
|
140
|
+
}
|
|
141
|
+
function fireRepositoryAdded(repository) {
|
|
142
|
+
actAndFlush(() => onAddEmitter.fire(repository));
|
|
143
|
+
}
|
|
144
|
+
function fireRepositoryRemoved(repository) {
|
|
145
|
+
actAndFlush(() => onRemoveEmitter.fire(repository));
|
|
146
|
+
}
|
|
109
147
|
// --- Visibility ---
|
|
110
148
|
it('should not programmatically show when there are no repositories', () => {
|
|
111
149
|
// The widget does not call setHidden(false) with < 2 repos.
|
|
@@ -116,7 +154,7 @@ describe('ScmRepositoriesWidget', () => {
|
|
|
116
154
|
it('should not programmatically show when there is exactly one repository', () => {
|
|
117
155
|
const repo = makeRepo({ id: 'git', label: 'Git', rootUri: '/workspace/repo1' });
|
|
118
156
|
repositories.push(repo);
|
|
119
|
-
|
|
157
|
+
fireRepositoryAdded(repo);
|
|
120
158
|
// With < 2 repos the widget does NOT call setHidden(false).
|
|
121
159
|
// It remains in its initial state (visible in standalone test, hidden in real ViewContainer).
|
|
122
160
|
(0, chai_1.expect)(widget.isHidden).to.be.false;
|
|
@@ -125,17 +163,17 @@ describe('ScmRepositoriesWidget', () => {
|
|
|
125
163
|
const repo1 = makeRepo({ id: 'git', label: 'Git', rootUri: '/workspace/repo1' });
|
|
126
164
|
const repo2 = makeRepo({ id: 'git', label: 'Git', rootUri: '/workspace/repo2' });
|
|
127
165
|
repositories.push(repo1, repo2);
|
|
128
|
-
|
|
166
|
+
fireRepositoryAdded(repo2);
|
|
129
167
|
(0, chai_1.expect)(widget.isHidden).to.be.false;
|
|
130
168
|
});
|
|
131
169
|
it('should not programmatically hide when repositories drop below 2', () => {
|
|
132
170
|
const repo1 = makeRepo({ id: 'git', label: 'Git', rootUri: '/workspace/repo1' });
|
|
133
171
|
const repo2 = makeRepo({ id: 'git', label: 'Git', rootUri: '/workspace/repo2' });
|
|
134
172
|
repositories.push(repo1, repo2);
|
|
135
|
-
|
|
173
|
+
fireRepositoryAdded(repo2);
|
|
136
174
|
(0, chai_1.expect)(widget.isHidden).to.be.false;
|
|
137
175
|
repositories.splice(1, 1);
|
|
138
|
-
|
|
176
|
+
fireRepositoryRemoved(repo2);
|
|
139
177
|
// Widget stays visible — we never programmatically hide
|
|
140
178
|
(0, chai_1.expect)(widget.isHidden).to.be.false;
|
|
141
179
|
});
|
|
@@ -146,8 +184,13 @@ describe('ScmRepositoriesWidget', () => {
|
|
|
146
184
|
function renderIntoContainer(node) {
|
|
147
185
|
const container = document.createElement('div');
|
|
148
186
|
document.body.appendChild(container);
|
|
149
|
-
|
|
150
|
-
|
|
187
|
+
const root = (0, client_1.createRoot)(container);
|
|
188
|
+
const renderedRoot = { container, root };
|
|
189
|
+
renderedRoots.push(renderedRoot);
|
|
190
|
+
React.act(() => {
|
|
191
|
+
root.render(node);
|
|
192
|
+
});
|
|
193
|
+
return renderedRoot;
|
|
151
194
|
}
|
|
152
195
|
it('should render a repo icon, folder name, and status commands for each repository', () => {
|
|
153
196
|
const repo1 = makeRepo({
|
|
@@ -156,9 +199,9 @@ describe('ScmRepositoriesWidget', () => {
|
|
|
156
199
|
});
|
|
157
200
|
const repo2 = makeRepo({ id: 'git', label: 'Git', rootUri: '/workspace/repo2' });
|
|
158
201
|
repositories.push(repo1, repo2);
|
|
159
|
-
|
|
202
|
+
fireRepositoryAdded(repo2);
|
|
160
203
|
const rendered = widget.render();
|
|
161
|
-
const container = renderIntoContainer(rendered);
|
|
204
|
+
const { container } = renderIntoContainer(rendered);
|
|
162
205
|
const rows = container.querySelectorAll('.theia-scm-repository-item');
|
|
163
206
|
(0, chai_1.expect)(rows.length).to.equal(2);
|
|
164
207
|
const myrepoRow = Array.from(rows).find(r => r.querySelector('.theia-scm-repository-name')?.textContent === 'myrepo');
|
|
@@ -167,22 +210,18 @@ describe('ScmRepositoriesWidget', () => {
|
|
|
167
210
|
(0, chai_1.expect)(iconEl).to.exist;
|
|
168
211
|
const statusCmd = myrepoRow.querySelector('.theia-scm-repository-status-command');
|
|
169
212
|
(0, chai_1.expect)(statusCmd).to.exist;
|
|
170
|
-
ReactDOM.unmountComponentAtNode(container);
|
|
171
|
-
container.remove();
|
|
172
213
|
});
|
|
173
214
|
it('should apply "selected" class only to the selected repository row', () => {
|
|
174
215
|
const repo1 = makeRepo({ id: 'git', label: 'Git', rootUri: '/workspace/repo1' });
|
|
175
216
|
const repo2 = makeRepo({ id: 'git', label: 'Git', rootUri: '/workspace/repo2' });
|
|
176
217
|
repositories.push(repo1, repo2);
|
|
177
218
|
selectedRepositoryRef.value = repo1;
|
|
178
|
-
|
|
219
|
+
fireRepositoryAdded(repo2);
|
|
179
220
|
const rendered = widget.render();
|
|
180
|
-
const container = renderIntoContainer(rendered);
|
|
221
|
+
const { container } = renderIntoContainer(rendered);
|
|
181
222
|
const rows = container.querySelectorAll('.theia-scm-repository-item');
|
|
182
223
|
(0, chai_1.expect)(rows[0].classList.contains('selected')).to.be.true;
|
|
183
224
|
(0, chai_1.expect)(rows[1].classList.contains('selected')).to.be.false;
|
|
184
|
-
ReactDOM.unmountComponentAtNode(container);
|
|
185
|
-
container.remove();
|
|
186
225
|
});
|
|
187
226
|
it('should execute the status command when clicked and stop propagation', async () => {
|
|
188
227
|
const repo1 = makeRepo({
|
|
@@ -191,9 +230,9 @@ describe('ScmRepositoriesWidget', () => {
|
|
|
191
230
|
});
|
|
192
231
|
const repo2 = makeRepo({ id: 'git', label: 'Git', rootUri: '/workspace/repo2' });
|
|
193
232
|
repositories.push(repo1, repo2);
|
|
194
|
-
|
|
233
|
+
fireRepositoryAdded(repo2);
|
|
195
234
|
const rendered = widget.render();
|
|
196
|
-
const container = renderIntoContainer(rendered);
|
|
235
|
+
const { container } = renderIntoContainer(rendered);
|
|
197
236
|
const statusCmd = container.querySelector('.theia-scm-repository-status-command');
|
|
198
237
|
(0, chai_1.expect)(statusCmd).to.exist;
|
|
199
238
|
statusCmd.click();
|
|
@@ -201,8 +240,6 @@ describe('ScmRepositoriesWidget', () => {
|
|
|
201
240
|
(0, chai_1.expect)(executedCommands).to.have.length(1);
|
|
202
241
|
(0, chai_1.expect)(executedCommands[0].id).to.equal('git.sync');
|
|
203
242
|
(0, chai_1.expect)(executedCommands[0].args).to.deep.equal(['arg1']);
|
|
204
|
-
ReactDOM.unmountComponentAtNode(container);
|
|
205
|
-
container.remove();
|
|
206
243
|
});
|
|
207
244
|
// --- Grouping: parent-based nesting ---
|
|
208
245
|
it('should show worktrees nested under their parent repo with collapse toggle', () => {
|
|
@@ -221,9 +258,9 @@ describe('ScmRepositoriesWidget', () => {
|
|
|
221
258
|
parentRootUri: '/projects/myrepo'
|
|
222
259
|
});
|
|
223
260
|
repositories.push(parent, wt1, wt2);
|
|
224
|
-
|
|
261
|
+
fireRepositoryAdded(wt1);
|
|
225
262
|
const rendered = widget.render();
|
|
226
|
-
const container = renderIntoContainer(rendered);
|
|
263
|
+
const { container } = renderIntoContainer(rendered);
|
|
227
264
|
const rows = container.querySelectorAll('.theia-scm-repository-item');
|
|
228
265
|
(0, chai_1.expect)(rows.length).to.equal(3);
|
|
229
266
|
// Parent has collapse toggle
|
|
@@ -233,8 +270,6 @@ describe('ScmRepositoriesWidget', () => {
|
|
|
233
270
|
(0, chai_1.expect)(rows[2].classList.contains('child')).to.be.true;
|
|
234
271
|
// Parent does not have .child class
|
|
235
272
|
(0, chai_1.expect)(rows[0].classList.contains('child')).to.be.false;
|
|
236
|
-
ReactDOM.unmountComponentAtNode(container);
|
|
237
|
-
container.remove();
|
|
238
273
|
});
|
|
239
274
|
it('should show submodules nested under their parent repo', () => {
|
|
240
275
|
const parent = makeRepo({
|
|
@@ -247,9 +282,9 @@ describe('ScmRepositoriesWidget', () => {
|
|
|
247
282
|
parentRootUri: '/projects/myrepo'
|
|
248
283
|
});
|
|
249
284
|
repositories.push(parent, sub);
|
|
250
|
-
|
|
285
|
+
fireRepositoryAdded(sub);
|
|
251
286
|
const rendered = widget.render();
|
|
252
|
-
const container = renderIntoContainer(rendered);
|
|
287
|
+
const { container } = renderIntoContainer(rendered);
|
|
253
288
|
const rows = container.querySelectorAll('.theia-scm-repository-item');
|
|
254
289
|
(0, chai_1.expect)(rows.length).to.equal(2);
|
|
255
290
|
(0, chai_1.expect)(rows[0].querySelector('.theia-scm-repository-collapse-toggle')).to.exist;
|
|
@@ -258,8 +293,6 @@ describe('ScmRepositoriesWidget', () => {
|
|
|
258
293
|
const subIcon = rows[1].querySelector('.theia-scm-repository-icon');
|
|
259
294
|
(0, chai_1.expect)(subIcon).to.exist;
|
|
260
295
|
(0, chai_1.expect)(subIcon.className).to.include('codicon-file-submodule');
|
|
261
|
-
ReactDOM.unmountComponentAtNode(container);
|
|
262
|
-
container.remove();
|
|
263
296
|
});
|
|
264
297
|
it('should show independent nested repos flat without grouping', () => {
|
|
265
298
|
const gitRepo = makeRepo({
|
|
@@ -271,9 +304,9 @@ describe('ScmRepositoriesWidget', () => {
|
|
|
271
304
|
providerContextValue: 'repository'
|
|
272
305
|
});
|
|
273
306
|
repositories.push(gitRepo, nestedRepo);
|
|
274
|
-
|
|
307
|
+
fireRepositoryAdded(nestedRepo);
|
|
275
308
|
const rendered = widget.render();
|
|
276
|
-
const container = renderIntoContainer(rendered);
|
|
309
|
+
const { container } = renderIntoContainer(rendered);
|
|
277
310
|
const rows = container.querySelectorAll('.theia-scm-repository-item');
|
|
278
311
|
// Both repos are flat (no parent relationship set)
|
|
279
312
|
(0, chai_1.expect)(rows.length).to.equal(2);
|
|
@@ -287,8 +320,6 @@ describe('ScmRepositoriesWidget', () => {
|
|
|
287
320
|
const icon1 = rows[1].querySelector('.theia-scm-repository-icon');
|
|
288
321
|
(0, chai_1.expect)(icon0.className).to.include('codicon-repo');
|
|
289
322
|
(0, chai_1.expect)(icon1.className).to.include('codicon-repo');
|
|
290
|
-
ReactDOM.unmountComponentAtNode(container);
|
|
291
|
-
container.remove();
|
|
292
323
|
});
|
|
293
324
|
it('should use codicon-worktree for worktrees', () => {
|
|
294
325
|
const parent = makeRepo({
|
|
@@ -300,14 +331,12 @@ describe('ScmRepositoriesWidget', () => {
|
|
|
300
331
|
parentRootUri: '/projects/myrepo'
|
|
301
332
|
});
|
|
302
333
|
repositories.push(parent, wt);
|
|
303
|
-
|
|
334
|
+
fireRepositoryAdded(wt);
|
|
304
335
|
const rendered = widget.render();
|
|
305
|
-
const container = renderIntoContainer(rendered);
|
|
336
|
+
const { container } = renderIntoContainer(rendered);
|
|
306
337
|
const rows = container.querySelectorAll('.theia-scm-repository-item');
|
|
307
338
|
const wtIcon = rows[1].querySelector('.theia-scm-repository-icon');
|
|
308
339
|
(0, chai_1.expect)(wtIcon.className).to.include('codicon-worktree');
|
|
309
|
-
ReactDOM.unmountComponentAtNode(container);
|
|
310
|
-
container.remove();
|
|
311
340
|
});
|
|
312
341
|
it('should handle mixed scenario: parent + worktree + submodule + independent repo', () => {
|
|
313
342
|
const parent = makeRepo({
|
|
@@ -329,9 +358,9 @@ describe('ScmRepositoriesWidget', () => {
|
|
|
329
358
|
providerContextValue: 'repository'
|
|
330
359
|
});
|
|
331
360
|
repositories.push(parent, wt, sub, independent);
|
|
332
|
-
|
|
361
|
+
fireRepositoryAdded(independent);
|
|
333
362
|
const rendered = widget.render();
|
|
334
|
-
const container = renderIntoContainer(rendered);
|
|
363
|
+
const { container } = renderIntoContainer(rendered);
|
|
335
364
|
const rows = container.querySelectorAll('.theia-scm-repository-item');
|
|
336
365
|
// parent (root with toggle) + wt (child) + sub (child) + independent (root, no toggle)
|
|
337
366
|
(0, chai_1.expect)(rows.length).to.equal(4);
|
|
@@ -344,8 +373,6 @@ describe('ScmRepositoriesWidget', () => {
|
|
|
344
373
|
// Fourth: independent, flat, no collapse toggle
|
|
345
374
|
(0, chai_1.expect)(rows[3].classList.contains('child')).to.be.false;
|
|
346
375
|
(0, chai_1.expect)(rows[3].querySelector('.theia-scm-repository-collapse-toggle')).to.not.exist;
|
|
347
|
-
ReactDOM.unmountComponentAtNode(container);
|
|
348
|
-
container.remove();
|
|
349
376
|
});
|
|
350
377
|
it('should hide children when parent is collapsed', () => {
|
|
351
378
|
const parent = makeRepo({
|
|
@@ -357,46 +384,40 @@ describe('ScmRepositoriesWidget', () => {
|
|
|
357
384
|
parentRootUri: '/projects/myrepo'
|
|
358
385
|
});
|
|
359
386
|
repositories.push(parent, child);
|
|
360
|
-
|
|
387
|
+
fireRepositoryAdded(child);
|
|
361
388
|
// Collapse the parent
|
|
362
|
-
widget.toggleCollapse(parent.provider.rootUri);
|
|
389
|
+
actAndFlush(() => widget.toggleCollapse(parent.provider.rootUri));
|
|
363
390
|
const rendered = widget.render();
|
|
364
|
-
const container = renderIntoContainer(rendered);
|
|
391
|
+
const { container } = renderIntoContainer(rendered);
|
|
365
392
|
const rows = container.querySelectorAll('.theia-scm-repository-item');
|
|
366
393
|
(0, chai_1.expect)(rows.length).to.equal(1);
|
|
367
394
|
const toggle = rows[0].querySelector('.theia-scm-repository-collapse-toggle');
|
|
368
395
|
(0, chai_1.expect)(toggle).to.exist;
|
|
369
396
|
(0, chai_1.expect)(toggle.className).to.include('codicon-chevron-right');
|
|
370
|
-
ReactDOM.unmountComponentAtNode(container);
|
|
371
|
-
container.remove();
|
|
372
397
|
});
|
|
373
398
|
it('should render a ... more-button on each repository row', () => {
|
|
374
399
|
const repo1 = makeRepo({ id: 'git', label: 'Git', rootUri: '/workspace/repo1' });
|
|
375
400
|
const repo2 = makeRepo({ id: 'git', label: 'Git', rootUri: '/workspace/repo2' });
|
|
376
401
|
repositories.push(repo1, repo2);
|
|
377
|
-
|
|
402
|
+
fireRepositoryAdded(repo2);
|
|
378
403
|
const rendered = widget.render();
|
|
379
|
-
const container = renderIntoContainer(rendered);
|
|
404
|
+
const { container } = renderIntoContainer(rendered);
|
|
380
405
|
const moreButtons = container.querySelectorAll('.theia-scm-repository-more-button');
|
|
381
406
|
(0, chai_1.expect)(moreButtons.length).to.equal(2);
|
|
382
|
-
ReactDOM.unmountComponentAtNode(container);
|
|
383
|
-
container.remove();
|
|
384
407
|
});
|
|
385
408
|
it('should create separate flat entries for repos with different provider ids and no parent', () => {
|
|
386
409
|
const gitRepo = makeRepo({ id: 'git', label: 'Git', rootUri: '/workspace/myrepo' });
|
|
387
410
|
const svnRepo = makeRepo({ id: 'svn', label: 'SVN', rootUri: '/workspace/other' });
|
|
388
411
|
repositories.push(gitRepo, svnRepo);
|
|
389
|
-
|
|
412
|
+
fireRepositoryAdded(svnRepo);
|
|
390
413
|
const rendered = widget.render();
|
|
391
|
-
const container = renderIntoContainer(rendered);
|
|
414
|
+
const { container } = renderIntoContainer(rendered);
|
|
392
415
|
const rows = container.querySelectorAll('.theia-scm-repository-item');
|
|
393
416
|
(0, chai_1.expect)(rows.length).to.equal(2);
|
|
394
417
|
(0, chai_1.expect)(rows[0].classList.contains('child')).to.be.false;
|
|
395
418
|
(0, chai_1.expect)(rows[1].classList.contains('child')).to.be.false;
|
|
396
419
|
(0, chai_1.expect)(rows[0].querySelector('.theia-scm-repository-collapse-toggle')).to.not.exist;
|
|
397
420
|
(0, chai_1.expect)(rows[1].querySelector('.theia-scm-repository-collapse-toggle')).to.not.exist;
|
|
398
|
-
ReactDOM.unmountComponentAtNode(container);
|
|
399
|
-
container.remove();
|
|
400
421
|
});
|
|
401
422
|
// --- Duplicate name disambiguation ---
|
|
402
423
|
it('should show relative path descriptions when two repos share the same folder name', () => {
|
|
@@ -404,9 +425,9 @@ describe('ScmRepositoriesWidget', () => {
|
|
|
404
425
|
const repo1 = makeRepo({ id: 'git', label: 'Git', rootUri: '/workspace/foo' });
|
|
405
426
|
const repo2 = makeRepo({ id: 'git', label: 'Git', rootUri: '/workspace/bar/foo' });
|
|
406
427
|
repositories.push(repo1, repo2);
|
|
407
|
-
|
|
428
|
+
fireRepositoryAdded(repo2);
|
|
408
429
|
const rendered = widget.render();
|
|
409
|
-
const container = renderIntoContainer(rendered);
|
|
430
|
+
const { container } = renderIntoContainer(rendered);
|
|
410
431
|
const rows = container.querySelectorAll('.theia-scm-repository-item');
|
|
411
432
|
(0, chai_1.expect)(rows.length).to.equal(2);
|
|
412
433
|
const desc0 = rows[0].querySelector('.theia-scm-repository-description');
|
|
@@ -416,16 +437,14 @@ describe('ScmRepositoriesWidget', () => {
|
|
|
416
437
|
// Repo at workspace root shows "/", nested repo shows relative path
|
|
417
438
|
(0, chai_1.expect)(desc0.textContent).to.equal('/');
|
|
418
439
|
(0, chai_1.expect)(desc1.textContent).to.equal('bar');
|
|
419
|
-
ReactDOM.unmountComponentAtNode(container);
|
|
420
|
-
container.remove();
|
|
421
440
|
});
|
|
422
441
|
it('should show relative descriptions when duplicate names are in sibling directories', () => {
|
|
423
442
|
const repo1 = makeRepo({ id: 'git', label: 'Git', rootUri: '/workspace/projects/lib' });
|
|
424
443
|
const repo2 = makeRepo({ id: 'git', label: 'Git', rootUri: '/workspace/vendor/lib' });
|
|
425
444
|
repositories.push(repo1, repo2);
|
|
426
|
-
|
|
445
|
+
fireRepositoryAdded(repo2);
|
|
427
446
|
const rendered = widget.render();
|
|
428
|
-
const container = renderIntoContainer(rendered);
|
|
447
|
+
const { container } = renderIntoContainer(rendered);
|
|
429
448
|
const rows = container.querySelectorAll('.theia-scm-repository-item');
|
|
430
449
|
(0, chai_1.expect)(rows.length).to.equal(2);
|
|
431
450
|
const desc0 = rows[0].querySelector('.theia-scm-repository-description');
|
|
@@ -434,23 +453,19 @@ describe('ScmRepositoriesWidget', () => {
|
|
|
434
453
|
(0, chai_1.expect)(desc1).to.exist;
|
|
435
454
|
(0, chai_1.expect)(desc0.textContent).to.equal('projects');
|
|
436
455
|
(0, chai_1.expect)(desc1.textContent).to.equal('vendor');
|
|
437
|
-
ReactDOM.unmountComponentAtNode(container);
|
|
438
|
-
container.remove();
|
|
439
456
|
});
|
|
440
457
|
it('should not show a description path when all repos have unique folder names', () => {
|
|
441
458
|
const repo1 = makeRepo({ id: 'git', label: 'Git', rootUri: '/workspace/alpha' });
|
|
442
459
|
const repo2 = makeRepo({ id: 'git', label: 'Git', rootUri: '/workspace/beta' });
|
|
443
460
|
repositories.push(repo1, repo2);
|
|
444
|
-
|
|
461
|
+
fireRepositoryAdded(repo2);
|
|
445
462
|
const rendered = widget.render();
|
|
446
|
-
const container = renderIntoContainer(rendered);
|
|
463
|
+
const { container } = renderIntoContainer(rendered);
|
|
447
464
|
const rows = container.querySelectorAll('.theia-scm-repository-item');
|
|
448
465
|
(0, chai_1.expect)(rows.length).to.equal(2);
|
|
449
466
|
// No description elements since names are unique
|
|
450
467
|
(0, chai_1.expect)(rows[0].querySelector('.theia-scm-repository-description')).to.not.exist;
|
|
451
468
|
(0, chai_1.expect)(rows[1].querySelector('.theia-scm-repository-description')).to.not.exist;
|
|
452
|
-
ReactDOM.unmountComponentAtNode(container);
|
|
453
|
-
container.remove();
|
|
454
469
|
});
|
|
455
470
|
});
|
|
456
471
|
//# sourceMappingURL=scm-repositories-widget.spec.js.map
|