Fix broken golden standard tests caused by changes to kcl-samples (#5065)

* Fix our golden standard tests (broken by new assemblies kcl-samples)

* Finally use the right combination of env vars

* Fix the manifest

* Continue to fix multiple file kcl-samples

* Fix loading in desktop app

* Type narrow for tsc

* fmt

---------

Co-authored-by: Frank Noirot <frank@kittycad.io>
This commit is contained in:
49fl
2025-01-15 18:30:20 -05:00
committed by GitHub
parent c0c5c790ca
commit 38513a1e25
7 changed files with 193 additions and 109 deletions

View File

@ -49,20 +49,30 @@ export function kclCommands(
if (!data?.sample) {
return
}
const pathParts = data.sample.split('/')
const projectPathPart = pathParts[0]
const primaryKclFile = pathParts[1]
const sampleCodeUrl = `https://raw.githubusercontent.com/KittyCAD/kcl-samples/main/${encodeURIComponent(
data.sample.replace(FILE_EXT, '')
)}/${encodeURIComponent(data.sample)}`
projectPathPart
)}/${encodeURIComponent(primaryKclFile)}`
const sampleSettingsFileUrl = `https://raw.githubusercontent.com/KittyCAD/kcl-samples/main/${encodeURIComponent(
data.sample.replace(FILE_EXT, '')
projectPathPart
)}/${PROJECT_SETTINGS_FILE_NAME}`
Promise.all([fetch(sampleCodeUrl), fetch(sampleSettingsFileUrl)])
Promise.allSettled([fetch(sampleCodeUrl), fetch(sampleSettingsFileUrl)])
.then((results) => {
const a =
'value' in results[0] ? results[0].value : results[0].reason
const b =
'value' in results[1] ? results[1].value : results[1].reason
return [a, b]
})
.then(
async ([
codeResponse,
settingsResponse,
]): Promise<OnSubmitProps> => {
if (!(codeResponse.ok && settingsResponse.ok)) {
if (!codeResponse.ok) {
console.error(
'Failed to fetch sample code:',
codeResponse.statusText
@ -70,20 +80,24 @@ export function kclCommands(
return Promise.reject(new Error('Failed to fetch sample code'))
}
const code = await codeResponse.text()
const parsedProjectSettings = parseProjectSettings(
await settingsResponse.text()
)
// It's possible that a sample doesn't have a project.toml
// associated with it.
let projectSettingsPayload: ReturnType<
typeof projectConfigurationToSettingsPayload
> = {}
if (!err(parsedProjectSettings)) {
projectSettingsPayload = projectConfigurationToSettingsPayload(
parsedProjectSettings
if (settingsResponse.ok) {
const parsedProjectSettings = parseProjectSettings(
await settingsResponse.text()
)
if (!err(parsedProjectSettings)) {
projectSettingsPayload =
projectConfigurationToSettingsPayload(parsedProjectSettings)
}
}
return {
sampleName: data.sample,
sampleName: data.sample.split('/')[0] + FILE_EXT,
code,
method: data.method,
sampleUnits: