import { describe, expect, test } from "bun:test"; import { decodeLocalDatasetSegment, encodeLocalDatasetRoot, isLocalRepoId, localDatasetFileApiPath, localRepoIdFromAbsolutePath, looksLikeAbsoluteFilesystemPath, normalizeUserLocalPathInput, tryParseLocalDatasetFileApiUrl, } from "@/utils/localDataset"; describe("localDataset", () => { test("encode/decode round trip for unix path", () => { const p = "/tmp/aic_lerobot"; const enc = encodeLocalDatasetRoot(p); expect(decodeLocalDatasetSegment(enc)).toBe(p); }); test("localRepoIdFromAbsolutePath and isLocalRepoId", () => { const id = localRepoIdFromAbsolutePath("/data/foo"); expect(isLocalRepoId(id)).toBe(true); expect(isLocalRepoId("lerobot/pusht")).toBe(false); }); test("looksLikeAbsoluteFilesystemPath", () => { expect(looksLikeAbsoluteFilesystemPath("/tmp/x")).toBe(true); expect(looksLikeAbsoluteFilesystemPath("file:///tmp/x")).toBe(true); expect(looksLikeAbsoluteFilesystemPath("C:\\data\\x")).toBe(true); expect(looksLikeAbsoluteFilesystemPath("lerobot/foo")).toBe(false); }); test("normalizeUserLocalPathInput strips file://", () => { expect(normalizeUserLocalPathInput("file:///tmp/a")).toBe("/tmp/a"); }); test("localDatasetFileApiPath builds query string", () => { const q = localDatasetFileApiPath("abc", "meta/info.json"); expect(q).toContain("/api/local-dataset/file?"); expect(q).toContain("root=abc"); expect(q).toContain("rel="); }); test("tryParseLocalDatasetFileApiUrl", () => { const u = "http://127.0.0.1:3000/api/local-dataset/file?root=x&rel=meta%2Finfo.json"; expect(tryParseLocalDatasetFileApiUrl(u)).toEqual({ rootEncoded: "x", relPath: "meta/info.json", }); expect( tryParseLocalDatasetFileApiUrl( "/api/local-dataset/file?root=y&rel=data%2F0.parquet", ), ).toEqual({ rootEncoded: "y", relPath: "data/0.parquet" }); }); });