feat: bundle private Windows runtimes with settings switches
This commit is contained in:
1 parent
759df7060d
commit
bef87520c2
28 files changed
+902
-10
No files matched your search
@@ -0,0 +1,40 @@
|
||||
import test from 'node:test'
|
||||
import assert from 'node:assert/strict'
|
||||
import fs from 'node:fs/promises'
|
||||
import os from 'node:os'
|
||||
import path from 'node:path'
|
||||
import { createRequire } from 'node:module'
|
||||
import { digest, inventory, manifest, verifyRuntimeBundle } from './runtime-bundle.mjs'
|
||||
import { transformRuntime } from './runtime-transform.mjs'
|
||||
const require = createRequire(import.meta.url)
|
||||
test('source lock uses reviewed official HTTPS endpoints and fixed digests', () => {
|
||||
for (const r of manifest.runtimes) {
|
||||
assert.ok(['nodejs.org','api.nuget.org','github.com'].includes(new URL(r.url).hostname))
|
||||
assert.equal(new URL(r.url).protocol, 'https:')
|
||||
assert.match(r.treeSha256, /^[a-f0-9]{64}$/)
|
||||
assert.equal(Buffer.from(r.digest, r.digestEncoding).length, r.algorithm === 'sha512' ? 64 : 32)
|
||||
}
|
||||
})
|
||||
test('inventory is deterministic and notices content changes', async () => {
|
||||
const root = await fs.mkdtemp(path.join(os.tmpdir(), 'ycode-inventory-'))
|
||||
try {
|
||||
await fs.writeFile(path.join(root, 'a'), 'one')
|
||||
const first = digest(JSON.stringify(await inventory(root)))
|
||||
assert.equal(first, digest(JSON.stringify(await inventory(root))))
|
||||
await fs.writeFile(path.join(root, 'a'), 'two')
|
||||
assert.notEqual(first, digest(JSON.stringify(await inventory(root))))
|
||||
await assert.rejects(verifyRuntimeBundle(root), /Missing bundled/)
|
||||
} finally { await fs.rm(root, { recursive:true, force:true }) }
|
||||
})
|
||||
test('Python convenience launcher is relocatable and uses module pip', async () => {
|
||||
const root = await fs.mkdtemp(path.join(os.tmpdir(), 'ycode-python-'))
|
||||
try {
|
||||
await transformRuntime('python', root)
|
||||
assert.equal(await fs.readFile(path.join(root,'Scripts/pip.cmd'),'utf8'), '@echo off\r\n"%~dp0..\\python.exe" -m pip %*\r\n')
|
||||
} finally { await fs.rm(root,{recursive:true,force:true}) }
|
||||
})
|
||||
test('packaging rejects wrong platform and wrong arch', async () => {
|
||||
const beforePack = require('./runtime-before-pack.cjs')
|
||||
await assert.rejects(beforePack({electronPlatformName:'win32',arch:3}), /Windows x64 only/)
|
||||
await assert.rejects(beforePack({electronPlatformName:'linux',arch:1}), /Windows x64 only/)
|
||||
})
|
||||
Reference in new issue
Block a user