Files
orca/config/scripts/mobile-web-app-module-entry-resolution.test.mjs
T
Neil 83d096b5f5 perf(lint): avoid unnecessary anti-slop scope construction (#28470)
* perf(lint): construct anti-slop scopes only for relevant expressions

* fix(ci): resolve extensionless mobile census entries as files
2026-10-13 18:19:50 -07:00

35 lines
1.4 KiB
JavaScript

import { mkdirSync, mkdtempSync, rmSync, writeFileSync } from 'node:fs'
import { tmpdir } from 'node:os'
import path from 'node:path'
import { expect, it } from 'vitest'
import { mobileWebAppModuleClosure } from './build-mobile-web-app-bundle.mjs'
it.each(['extensionless', 'explicit', 'absolute'])(
'resolves %s census entries against their source tree and prefers web siblings',
async (form) => {
const directory = mkdtempSync(path.join(tmpdir(), 'orca-mobile-entry-'))
const modules = ['app/_layout', 'app/h/_layout', 'app/h/[hostId]/index']
const webModules = ['app/_layout.web.tsx', 'app/h/_layout.tsx', 'app/h/[hostId]/index.web.tsx']
try {
for (const file of [...webModules, 'app/_layout.tsx', 'app/h/[hostId]/index.tsx']) {
const target = path.join(directory, file)
mkdirSync(path.dirname(target), { recursive: true })
writeFileSync(target, 'export const entry = 1')
}
const entries = modules.map((entry) => {
if (form === 'explicit') {
return `${entry}.tsx`
}
if (form === 'absolute') {
return path.join(directory, `${entry}.tsx`)
}
return entry
})
const { local } = await mobileWebAppModuleClosure(entries, { absWorkingDir: directory })
expect(local.map((file) => file.replaceAll('\\', '/')).sort()).toEqual(webModules.sort())
} finally {
rmSync(directory, { recursive: true, force: true })
}
}
)