20 lines
1.6 KiB
JavaScript
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')
|
|
})
|