Spaces:
Sleeping
Sleeping
import { test, describe, assert } from "vitest"; | |
import { readFileSync } from "fs"; | |
import { join, dirname } from "path"; | |
import { fileURLToPath } from "url"; | |
import { Blob } from "node:buffer"; | |
const __dirname = dirname(fileURLToPath(import.meta.url)); | |
const image_path = join( | |
__dirname, | |
"..", | |
"..", | |
"..", | |
"demo", | |
"kitchen_sink", | |
"files", | |
"lion.jpg" | |
); | |
import { walk_and_store_blobs, client, handle_blob } from "./client"; | |
describe.skip("extract blob parts", () => { | |
test("convert Buffer to Blob", async () => { | |
const image = readFileSync(image_path); | |
await client("gradio/hello_world_main"); | |
const parts = walk_and_store_blobs({ | |
data: { | |
image | |
} | |
}); | |
assert.isTrue(parts[0].blob instanceof Blob); | |
}); | |
test("leave node Blob as Blob", async () => { | |
const image = new Blob([readFileSync(image_path)]); | |
await client("gradio/hello_world_main"); | |
const parts = walk_and_store_blobs({ | |
data: { | |
image | |
} | |
}); | |
assert.isTrue(parts[0].blob instanceof Blob); | |
}); | |
test("handle deep structures", async () => { | |
const image = new Blob([readFileSync(image_path)]); | |
await client("gradio/hello_world_main"); | |
const parts = walk_and_store_blobs({ | |
a: { | |
b: { | |
data: { | |
image | |
} | |
} | |
} | |
}); | |
assert.isTrue(parts[0].blob instanceof Blob); | |
}); | |
test("handle deep structures with arrays", async () => { | |
const image = new Blob([readFileSync(image_path)]); | |
await client("gradio/hello_world_main"); | |
const parts = walk_and_store_blobs({ | |
a: [ | |
{ | |
b: [ | |
{ | |
data: [ | |
{ | |
image | |
} | |
] | |
} | |
] | |
} | |
] | |
}); | |
assert.isTrue(parts[0].blob instanceof Blob); | |
}); | |
test("handle deep structures with arrays 2", async () => { | |
const image = new Blob([readFileSync(image_path)]); | |
await client("gradio/hello_world_main"); | |
const obj = { | |
a: [ | |
{ | |
b: [ | |
{ | |
data: [[image], image, [image, [image]]] | |
} | |
] | |
} | |
] | |
}; | |
const parts = walk_and_store_blobs(obj); | |
function map_path( | |
obj: Record<string, any>, | |
parts: { path: string[]; blob: any }[] | |
) { | |
const { path, blob } = parts[parts.length - 1]; | |
let ref = obj; | |
path.forEach((p) => (ref = ref[p])); | |
return ref === blob; | |
} | |
assert.isTrue(parts[0].blob instanceof Blob); | |
// assert.isTrue(map_path(obj, parts)); | |
}); | |
}); | |
describe("handle_blob", () => { | |
test("handle blobs", async () => { | |
const image = new Blob([readFileSync(image_path)]); | |
const app = await client("gradio/hello_world_main"); | |
const obj = [ | |
{ | |
a: [ | |
{ | |
b: [ | |
{ | |
data: [[image], image, [image, [image]]] | |
} | |
] | |
} | |
] | |
} | |
]; | |
const parts = await handle_blob(app.config.root, obj, undefined); | |
//@ts-ignore | |
// assert.isString(parts.data[0].a[0].b[0].data[0][0]); | |
}); | |
}); | |
describe.skip("private space", () => { | |
test("can access a private space", async () => { | |
const image = new Blob([readFileSync(image_path)]); | |
const app = await client("pngwn/hello_world", { | |
hf_token: "hf_" | |
}); | |
console.log(app); | |
const obj = [ | |
{ | |
a: [ | |
{ | |
b: [ | |
{ | |
data: [[image], image, [image, [image]]] | |
} | |
] | |
} | |
] | |
} | |
]; | |
const parts = await handle_blob(app.config.root, obj, "hf_"); | |
//@ts-ignore | |
assert.isString(parts.data[0].a[0].b[0].data[0][0]); | |
}); | |
}); | |