mirror of
https://github.com/ThatGuySam/doesitarm.git
synced 2026-05-18 06:44:46 -07:00
Test using worker
This commit is contained in:
parent
9ec294c629
commit
50e707a4ac
1 changed files with 54 additions and 12 deletions
|
|
@ -15,8 +15,7 @@ import glob from 'fast-glob'
|
||||||
import { LocalFileData } from 'get-file-object-from-local-path'
|
import { LocalFileData } from 'get-file-object-from-local-path'
|
||||||
import { Zip } from 'zip-lib'
|
import { Zip } from 'zip-lib'
|
||||||
|
|
||||||
import { AppScan } from '~/helpers/scanner/client.mjs'
|
import AppScanWorker from '~/helpers/scanner/worker.js?worker'
|
||||||
// import { compress } from '~/helpers/scanner/parsers/seven-zip'
|
|
||||||
|
|
||||||
|
|
||||||
const appGlobOptions = {
|
const appGlobOptions = {
|
||||||
|
|
@ -30,6 +29,7 @@ const tempPath = 'test/_artifacts/temp'
|
||||||
|
|
||||||
// TODO: Unsupported Apps:
|
// TODO: Unsupported Apps:
|
||||||
// Alt Tab 6.29.0 - Hangs
|
// Alt Tab 6.29.0 - Hangs
|
||||||
|
// AVTouchBar 3.0.6 - Times out
|
||||||
// Silicon - Fail with both MachoNode and MachoManiac
|
// Silicon - Fail with both MachoNode and MachoManiac
|
||||||
// arm_idafree76_mac 7.6 - Hangs
|
// arm_idafree76_mac 7.6 - Hangs
|
||||||
// Batteries 2.2.4 - Hangs
|
// Batteries 2.2.4 - Hangs
|
||||||
|
|
@ -75,23 +75,66 @@ async function makeZipFromBundlePath ( bundlePath ) {
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
async function runScanWorker ( file ) {
|
||||||
|
// console.log( 'file', file )
|
||||||
|
|
||||||
|
const appScanWorker = new AppScanWorker()
|
||||||
|
|
||||||
|
const scan = await new Promise( ( resolve, reject ) => {
|
||||||
|
// Set up the worker message handler
|
||||||
|
appScanWorker.onmessage = async (event) => {
|
||||||
|
// console.log( 'Main received message', event )
|
||||||
|
|
||||||
|
const { status } = event.data
|
||||||
|
|
||||||
|
// Resolves promise on finished status
|
||||||
|
if ( status === 'finished' ) {
|
||||||
|
const { scan } = event.data
|
||||||
|
resolve( scan )
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// Set up the worker error handler
|
||||||
|
appScanWorker.onerror = async ( errorEvent ) => {
|
||||||
|
// console.log( 'appScanWorker.onerror', errorEvent )
|
||||||
|
reject()
|
||||||
|
}
|
||||||
|
|
||||||
|
// Start the worker
|
||||||
|
// https://developer.mozilla.org/en-US/docs/Web/API/Worker/postMessage
|
||||||
|
appScanWorker.postMessage( {
|
||||||
|
status: 'start',
|
||||||
|
options: {
|
||||||
|
fileLoader: () => ({
|
||||||
|
...file,
|
||||||
|
arrayBuffer: file.arrayBuffer
|
||||||
|
}),
|
||||||
|
messageReceiver: ( details ) => {
|
||||||
|
console.log( 'Scan message:', details )
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}, [ file.arrayBuffer ] )
|
||||||
|
})
|
||||||
|
|
||||||
|
return {
|
||||||
|
scan,
|
||||||
|
appScanWorker
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
describe.concurrent('Apps', async () => {
|
describe.concurrent('Apps', async () => {
|
||||||
|
|
||||||
// Compress plain app bundles to zipped File Objects
|
// Compress plain app bundles to zipped File Objects
|
||||||
for ( const bundlePath of plainAppBundles ) {
|
for ( const bundlePath of plainAppBundles ) {
|
||||||
|
|
||||||
|
// Get the App's file name from bundlePath
|
||||||
const appName = path.basename( bundlePath )
|
const appName = path.basename( bundlePath )
|
||||||
|
|
||||||
// Create a new AppScan instance
|
// Generate a faux JavaScript File instance
|
||||||
const scan = new AppScan({
|
const file = await makeZipFromBundlePath( bundlePath )
|
||||||
fileLoader: () => makeZipFromBundlePath( bundlePath ),
|
|
||||||
messageReceiver: ( details ) => {
|
|
||||||
console.log( 'Scan message:', details )
|
|
||||||
}
|
|
||||||
})
|
|
||||||
|
|
||||||
// Scan the archive
|
const { scan } = await runScanWorker( file )
|
||||||
await scan.start()
|
|
||||||
|
|
||||||
|
|
||||||
it( `Can read info.plist for ${ appName } bundle` , () => {
|
it( `Can read info.plist for ${ appName } bundle` , () => {
|
||||||
|
|
@ -139,7 +182,6 @@ describe.concurrent('Apps', async () => {
|
||||||
// Export info.infoPlist to be none empty object
|
// Export info.infoPlist to be none empty object
|
||||||
expect( typeof scan.info.infoPlist ).toBe( 'object' )
|
expect( typeof scan.info.infoPlist ).toBe( 'object' )
|
||||||
expect( Object.keys( scan.info.infoPlist ).length ).toBeGreaterThan( 0 )
|
expect( Object.keys( scan.info.infoPlist ).length ).toBeGreaterThan( 0 )
|
||||||
|
|
||||||
})
|
})
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue