git.test.ts 3.4 KB
Newer Older
J
Joao 已提交
1 2 3 4 5 6
/*---------------------------------------------------------------------------------------------
 *  Copyright (c) Microsoft Corporation. All rights reserved.
 *  Licensed under the MIT License. See License.txt in the project root for license information.
 *--------------------------------------------------------------------------------------------*/

import * as assert from 'assert';
J
Joao 已提交
7
import * as cp from 'child_process';
8
import { SpectronApplication } from '../../spectron/application';
J
Joao 已提交
9

J
Joao 已提交
10 11 12
const DIFF_EDITOR_LINE_INSERT = '.monaco-diff-editor .editor.modified .line-insert';
const SYNC_STATUSBAR = 'div[id="workbench.parts.statusbar"] .statusbar-entry a[title$="Synchronize Changes"]';

J
Joao 已提交
13
describe('Git', () => {
J
Joao Moreno 已提交
14 15 16 17
	before(function () {
		this.app.suiteName = 'Git';
	});

J
Joao 已提交
18
	it('reflects working tree changes', async function () {
J
Joao Moreno 已提交
19 20
		const app = this.app as SpectronApplication;

J
Joao 已提交
21 22
		await app.workbench.scm.openSCMViewlet();

23
		await app.workbench.quickopen.openFile('app.js');
24
		await app.workbench.editor.waitForTypeInEditor('app.js', '.foo{}');
J
Joao 已提交
25 26
		await app.workbench.saveOpenedFile();

27
		await app.workbench.quickopen.openFile('index.jade');
28
		await app.workbench.editor.waitForTypeInEditor('index.jade', 'hello world');
J
Joao 已提交
29 30
		await app.workbench.saveOpenedFile();

J
smoke  
Joao 已提交
31
		await app.workbench.scm.refreshSCMViewlet();
J
Joao 已提交
32 33
		const appJs = await app.workbench.scm.waitForChange(c => c.name === 'app.js');
		const indexJade = await app.workbench.scm.waitForChange(c => c.name === 'index.jade');
J
Joao 已提交
34
		await app.screenCapturer.capture('changes');
J
Joao 已提交
35

J
Joao 已提交
36 37 38 39 40 41
		assert.equal(appJs.name, 'app.js');
		assert.equal(appJs.type, 'Modified');

		assert.equal(indexJade.name, 'index.jade');
		assert.equal(indexJade.type, 'Modified');
	});
J
Joao 已提交
42

J
Joao 已提交
43
	it('opens diff editor', async function () {
J
Joao Moreno 已提交
44 45
		const app = this.app as SpectronApplication;

J
Joao 已提交
46 47 48 49
		await app.workbench.scm.openSCMViewlet();
		const appJs = await app.workbench.scm.waitForChange(c => c.name === 'app.js');
		await app.workbench.scm.openChange(appJs);
		await app.client.waitForElement(DIFF_EDITOR_LINE_INSERT);
J
Joao 已提交
50 51
	});

J
Joao 已提交
52
	it('stages correctly', async function () {
J
Joao Moreno 已提交
53 54
		const app = this.app as SpectronApplication;

J
Joao 已提交
55 56 57 58 59 60 61 62 63 64 65
		await app.workbench.scm.openSCMViewlet();

		const appJs = await app.workbench.scm.waitForChange(c => c.name === 'app.js' && c.type === 'Modified');
		await app.workbench.scm.stage(appJs);

		const indexAppJs = await app.workbench.scm.waitForChange(c => c.name === 'app.js' && c.type === 'Index Modified');
		await app.workbench.scm.unstage(indexAppJs);

		await app.workbench.scm.waitForChange(c => c.name === 'app.js' && c.type === 'Modified');
	});

J
Joao 已提交
66
	it(`stages, commits changes and verifies outgoing change`, async function () {
J
Joao Moreno 已提交
67 68
		const app = this.app as SpectronApplication;

J
Joao 已提交
69 70 71 72 73 74
		await app.workbench.scm.openSCMViewlet();

		const appJs = await app.workbench.scm.waitForChange(c => c.name === 'app.js' && c.type === 'Modified');
		await app.workbench.scm.stage(appJs);
		await app.workbench.scm.waitForChange(c => c.name === 'app.js' && c.type === 'Index Modified');

J
Joao 已提交
75
		await app.workbench.scm.commit('first commit');
J
Joao 已提交
76
		await app.client.waitForText(SYNC_STATUSBAR, ' 0↓ 1↑');
J
Joao 已提交
77

78
		await app.workbench.quickopen.runCommand('Git: Stage All Changes');
J
Joao 已提交
79 80 81 82 83
		await app.workbench.scm.waitForChange(c => c.name === 'index.jade' && c.type === 'Index Modified');

		await app.workbench.scm.commit('second commit');
		await app.client.waitForText(SYNC_STATUSBAR, ' 0↓ 2↑');

84
		cp.execSync('git reset --hard origin/master', { cwd: app.workspacePath });
J
Joao 已提交
85
	});
J
Joao 已提交
86
});