filename.spec.ts 1.3 KB

12345678910111213141516171819202122232425262728293031
  1. import { describe, expect, it } from 'vitest'
  2. import { parseSessionFormatLogFilename, sessionFormatLogFilename } from '../src/index.ts'
  3. describe('canonical Session log filenames', () => {
  4. it('names version zero without a generation component and later generations with .vN', () => {
  5. expect(sessionFormatLogFilename(0)).toBe('session.jsonl')
  6. expect(sessionFormatLogFilename(1)).toBe('session.v1.jsonl')
  7. expect(sessionFormatLogFilename(27)).toBe('session.v27.jsonl')
  8. for (const invalid of [-1, -0, 1.5, Number.MAX_SAFE_INTEGER + 1]) {
  9. expect(() => sessionFormatLogFilename(invalid)).toThrow(/non-negative safe integer/)
  10. }
  11. })
  12. it('parses only canonical raw generation names', () => {
  13. expect(parseSessionFormatLogFilename('session.jsonl')).toBe(0)
  14. expect(parseSessionFormatLogFilename('session.v1.jsonl')).toBe(1)
  15. expect(parseSessionFormatLogFilename('session.v27.jsonl')).toBe(27)
  16. expect(parseSessionFormatLogFilename('session.v9007199254740992.jsonl')).toBeUndefined()
  17. for (const name of [
  18. 'session.v0.jsonl',
  19. 'session.v01.jsonl',
  20. 'session.V1.jsonl',
  21. 'session.v1.backup.jsonl',
  22. 'session.migration.deadbeef.tmp.jsonl',
  23. 'session.v1.jsonl.zstd',
  24. 'session.1.jsonl',
  25. ]) {
  26. expect(parseSessionFormatLogFilename(name)).toBeUndefined()
  27. }
  28. })
  29. })