Files
aigen/tests/studio2-lora-catalog.test.mjs
T

20 lines
1.6 KiB
JavaScript

import test from 'node:test'
import assert from 'node:assert/strict'
import {readFileSync} from 'node:fs'
import ts from 'typescript'
import {loraIdentityKey,loraFriendlyName,loraTriggerFor} from '../utils/loras.ts'
test('Studio 2 uses production labels/triggers and sees later changes without a restart',()=>{
const source=readFileSync(new URL('../server/utils/studio2/lora-catalog.ts',import.meta.url),'utf8').replace(/^import .*;\r?\n/gm,'').replace('export function','function')
const js=ts.transpileModule(source,{compilerOptions:{target:ts.ScriptTarget.ES2022}}).outputText
let exported={loraAliases:{'XAIgen-klein_portrait.safetensors':'My portrait'},loraTriggers:{'xaigen-klein_portrait.safetensors':'portrait token'}}
const read=new Function('readFileSync','getLoraAliases','getLoraTriggers','loraIdentityKey','join','studio2Root',js+';return studio2LoraCatalog')(()=>{if(!exported)throw new Error('missing');return JSON.stringify(exported)},()=>({'klein_portrait.safetensors':'Old local name'}),()=>({}),loraIdentityKey,(...parts)=>parts.join('/'),()=>'/dev/studio2')
let catalog=read('owner')
assert.equal(loraFriendlyName('folder/xaigen-klein_portrait.safetensors',catalog.aliases),'My portrait')
assert.equal(loraTriggerFor('klein_portrait.safetensors',catalog.triggers),'portrait token')
exported.loraAliases['XAIgen-klein_portrait.safetensors']='Updated portrait'
assert.equal(loraFriendlyName('klein_portrait.safetensors',read('owner').aliases),'Updated portrait')
exported=null
assert.equal(loraFriendlyName('klein_portrait.safetensors',read('owner').aliases),'Old local name')
})