diff --git a/src/node-to-fsa/__tests__/util.test.ts b/src/node-to-fsa/__tests__/util.test.ts new file mode 100644 index 000000000..c9775e912 --- /dev/null +++ b/src/node-to-fsa/__tests__/util.test.ts @@ -0,0 +1,27 @@ +import {basename} from '../util'; + +describe('basename()', () => { + test('handles empty string', () => { + expect(basename('')).toBe(''); + }); + + test('return the same string if there is no nesting', () => { + expect(basename('scary.exe')).toBe('scary.exe'); + }); + + test('returns last step in path', () => { + expect(basename('/gg/wp/hf/gl.txt')).toBe('gl.txt'); + expect(basename('gg/wp/hf/gl.txt')).toBe('gl.txt'); + expect(basename('/wp/hf/gl.txt')).toBe('gl.txt'); + expect(basename('wp/hf/gl.txt')).toBe('gl.txt'); + expect(basename('/hf/gl.txt')).toBe('gl.txt'); + expect(basename('hf/gl.txt')).toBe('gl.txt'); + expect(basename('/gl.txt')).toBe('gl.txt'); + expect(basename('gl.txt')).toBe('gl.txt'); + }); + + test('handles double slashes', () => { + expect(basename('/gg/wp/hf//gl.txt')).toBe('gl.txt'); + expect(basename('//gl.txt')).toBe('gl.txt'); + }); +}); diff --git a/src/node-to-fsa/util.ts b/src/node-to-fsa/util.ts new file mode 100644 index 000000000..676d3d24b --- /dev/null +++ b/src/node-to-fsa/util.ts @@ -0,0 +1,4 @@ +export const basename = (path: string) => { + const lastSlashIndex = path.lastIndexOf('/'); + return lastSlashIndex === -1 ? path : path.slice(lastSlashIndex + 1); +};