Files
NuklearRabbit f60b269686
ForgeFlow quality gate / quality (push) Successful in 4m12s
ForgeFlow quality gate / secret-scan (push) Successful in 7s
Publish curated ForgeFlow source from 2ed1787c0b52
2026-09-29 22:50:57 +02:00

35 lines
1.2 KiB
JavaScript

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');
});