evalstate's picture
download
raw
1.58 kB
import { describe, expect, it } from 'vitest';
import { buildSkillUri, mimeFor } from '../../src/server/skills/skill-uri.js';
describe('buildSkillUri', () => {
it('produces a skill uri for a single file', () => {
expect(buildSkillUri('my-skill', 'SKILL.md')).toBe('skill://my-skill/SKILL.md');
});
it('normalises backslashes to forward slashes', () => {
expect(buildSkillUri('my-skill', 'assets\\diagram.png')).toBe('skill://my-skill/assets/diagram.png');
});
it('encodes skill names and path segments', () => {
expect(buildSkillUri('my skill', 'assets/foo bar(1).png')).toBe('skill://my%20skill/assets/foo%20bar(1).png');
});
});
describe('mimeFor', () => {
it('maps markdown as text', () => {
expect(mimeFor('SKILL.md')).toEqual({ mimeType: 'text/markdown', isText: true });
});
it('maps python as text', () => {
expect(mimeFor('scripts/run.py')).toEqual({ mimeType: 'text/x-python', isText: true });
});
it('maps png as binary', () => {
expect(mimeFor('assets/diagram.png')).toEqual({ mimeType: 'image/png', isText: false });
});
it('special-cases LICENSE files', () => {
expect(mimeFor('LICENSE')).toEqual({ mimeType: 'text/plain', isText: true });
expect(mimeFor('license.txt')).toEqual({ mimeType: 'text/plain', isText: true });
});
it('falls back to octet-stream for unknown extensions', () => {
expect(mimeFor('mystery.xyz')).toEqual({ mimeType: 'application/octet-stream', isText: false });
});
it('handles uppercase extensions', () => {
expect(mimeFor('NOTES.MD')).toEqual({ mimeType: 'text/markdown', isText: true });
});
});

Xet Storage Details

Size:
1.58 kB
·
Xet hash:
e5d7f7115135aa41d2866009e93e205ba023d6addd153d678357a4b726a5aa30

Xet efficiently stores files, intelligently splitting them into unique chunks and accelerating uploads and downloads. More info.