Test that App Scan can read plist

This commit is contained in:
Sam Carlton 2022-07-16 18:37:42 -05:00
parent dc358ba5ac
commit 2a525d93d5
4 changed files with 377 additions and 44 deletions

View file

@ -0,0 +1,71 @@
import {
assert,
expect,
test
} from 'vitest'
// https://github.com/mrmlnc/fast-glob
import glob from 'fast-glob'
import { LocalFileData } from 'get-file-object-from-local-path'
import { Zip } from 'zip-lib'
import { AppScan } from '~/helpers/scanner/client'
const appGlobOptions = {
onlyFiles: false,
deep: 1
}
const appsPath = 'test/_artifacts/apps'
const tempPath = 'test/_artifacts/temp'
const plainAppBundles = glob.sync( `${ appsPath }/**/*.app`, appGlobOptions )
async function makeZipFromBundlePath ( bundlePath ) {
const archivePath = `${ tempPath }/${ bundlePath.split('/').pop() }.zip`
// console.log( 'archivePath', archivePath )
const zipLib = new Zip()
// Adds a folder from the file system, putting its contents at the root of archive
zipLib.addFolder( bundlePath )
// Generate zip file.
await zipLib.archive( archivePath )
// Create a File Object from the zip file
// https://developer.mozilla.org/en-US/docs/Web/API/File/File
const archiveFile = new LocalFileData( archivePath )
// console.log( 'archiveFile', archiveFile )
return archiveFile
}
test('Can read info.plist for .app file', async () => {
// Compress plain app bundles to zipped File Objects
for ( const bundlePath of plainAppBundles ) {
// Create a new AppScan instance
const scan = new AppScan({
fileLoader: () => makeZipFromBundlePath( bundlePath ),
messageReceiver: ( details ) => {
console.log( 'Scan message:', details )
}
})
// Scan the archive
await scan.start()
// console.log( 'infoPlist', scan.infoPlist )
expect( scan.hasInfoPlist ).toBe( true )
}
})

View file

@ -1,44 +0,0 @@
import {
// assert,
expect,
test
} from 'vitest'
import { createApp } from 'vue'
// import {
// isString
// } from '~/helpers/check-types.js'
// const cases = [
// ]
function buildVueInstance () {
return createApp({
template: '<div>Hello World</div>',
data: function () {
return {
appsBeingScanned: []
}
},
})
}
test('Can initialize AppFilesScanner within Vite context', async () => {
const { default: AppFilesScanner } = await import('~/helpers/app-files-scanner.js')
const vueInstance:any = buildVueInstance()
const scanner = new AppFilesScanner({
observableFilesArray: vueInstance.appsBeingScanned,
testResultStore: global.$config.testResultStore
})
// Expect the scanner to be an instance of AppFilesScanner
expect( scanner ).toBeInstanceOf( AppFilesScanner )
})