75 lines
2.1 KiB
TypeScript
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)
|
|
}
|
|
)
|