Update
This commit is contained in:
@@ -0,0 +1,34 @@
|
||||
import test from 'node:test';
|
||||
import assert from 'node:assert/strict';
|
||||
import gitStatus from '../src/shared/git-status.cjs';
|
||||
|
||||
const { parsePorcelainV2 } = gitStatus;
|
||||
|
||||
test('parses branch metadata and ordinary changes', () => {
|
||||
const output = [
|
||||
'# branch.oid 0123456789abcdef',
|
||||
'# branch.head main',
|
||||
'# branch.upstream origin/main',
|
||||
'# branch.ab +2 -1',
|
||||
'1 .M N... 100644 100644 100644 abc def src/main.js',
|
||||
'1 M. N... 100644 100644 100644 abc def README.md',
|
||||
'? new file.txt',
|
||||
''
|
||||
].join('\0');
|
||||
const parsed = parsePorcelainV2(output);
|
||||
assert.equal(parsed.branch.head, 'main');
|
||||
assert.equal(parsed.branch.ahead, 2);
|
||||
assert.equal(parsed.branch.behind, 1);
|
||||
assert.equal(parsed.counts.changed, 3);
|
||||
assert.equal(parsed.counts.staged, 1);
|
||||
assert.equal(parsed.counts.untracked, 1);
|
||||
assert.equal(parsed.files[0].path, 'src/main.js');
|
||||
});
|
||||
|
||||
test('parses rename records with original path', () => {
|
||||
const output = '2 R. N... 100644 100644 100644 abc def R100 src/new.js\0src/old.js\0';
|
||||
const parsed = parsePorcelainV2(output);
|
||||
assert.equal(parsed.files[0].path, 'src/new.js');
|
||||
assert.equal(parsed.files[0].originalPath, 'src/old.js');
|
||||
assert.equal(parsed.files[0].status, 'renamed');
|
||||
});
|
||||
Reference in New Issue
Block a user