Files
2026-07-13 12:47:58 +08:00

75 lines
2.1 KiB
TypeScript

import fs from 'node:fs'
import path from 'node:path'
import { afterAll, beforeAll } from 'vitest'
import { defaultBuildLogger, Template, waitForTimeout } from '../../src'
import { buildTemplateTest } from '../setup'
const folderPath = path.join(__dirname, 'folder')
beforeAll(async () => {
fs.mkdirSync(folderPath, { recursive: true })
fs.writeFileSync(path.join(folderPath, 'test.txt'), 'This is a test file.')
// Create relative symlink
fs.symlinkSync('test.txt', path.join(folderPath, 'symlink.txt'))
// Create absolute symlink
fs.symlinkSync(
path.join(folderPath, 'test.txt'),
path.join(folderPath, 'symlink2.txt')
)
// Create a symlink to a file that does not exist
fs.symlinkSync('12345test.txt', path.join(folderPath, 'symlink3.txt'))
})
afterAll(() => {
fs.rmSync(folderPath, { recursive: true })
})
buildTemplateTest('build template', async ({ buildTemplate }) => {
const template = Template()
// using base image to avoid re-building ubuntu:22.04 image
.fromBaseImage()
.copy('folder/*', 'folder', { forceUpload: true })
.runCmd('cat folder/test.txt')
.setWorkdir('/app')
.setStartCmd('echo "Hello, world!"', waitForTimeout(10_000))
await buildTemplate(template, { skipCache: true }, defaultBuildLogger())
})
buildTemplateTest(
'build template from base template',
async ({ buildTemplate }) => {
const template = Template().fromTemplate('base')
await buildTemplate(template, { skipCache: true })
}
)
buildTemplateTest('build template with symlinks', async ({ buildTemplate }) => {
const template = Template()
.fromImage('ubuntu:22.04')
.skipCache()
.copy('folder/*', 'folder', { forceUpload: true })
.runCmd('cat folder/symlink.txt')
await buildTemplate(template)
})
buildTemplateTest(
'build template with resolveSymlinks',
async ({ buildTemplate }) => {
const template = Template()
.fromImage('ubuntu:22.04')
.skipCache()
.copy('folder/symlink.txt', 'folder/symlink.txt', {
forceUpload: true,
resolveSymlinks: true,
})
.runCmd('cat folder/symlink.txt')
await buildTemplate(template)
}
)