HEX
Server: LiteSpeed
System: Linux houston.panomity.com 6.8.0-100-generic #100-Ubuntu SMP PREEMPT_DYNAMIC Tue Jan 13 16:40:06 UTC 2026 x86_64
User: nudepix (1011)
PHP: 7.4.33
Disabled: pcntl_alarm,pcntl_fork,pcntl_waitpid,pcntl_wait,pcntl_wifexited,pcntl_wifstopped,pcntl_wifsignaled,pcntl_wifcontinued,pcntl_wexitstatus,pcntl_wtermsig,pcntl_wstopsig,pcntl_signal,pcntl_signal_get_handler,pcntl_signal_dispatch,pcntl_get_last_error,pcntl_strerror,pcntl_sigprocmask,pcntl_sigwaitinfo,pcntl_sigtimedwait,pcntl_exec,pcntl_getpriority,pcntl_setpriority,pcntl_async_signals,pcntl_unshare,
Upload Files
File: //opt/LC/node_modules/avvio/test/load-plugin.test.js
'use strict'

const fastq = require('fastq')
const boot = require('..')
const { test } = require('tap')
const { Plugin } = require('../lib/plugin')

test('successfully load a plugin with sync function', (t) => {
  t.plan(1)
  const app = boot({})

  const plugin = new Plugin(fastq(app, app._loadPluginNextTick, 1), function (instance, opts, done) {
    done()
  }, false, 0)

  app._loadPlugin(plugin, function (err) {
    t.equal(err, undefined)
  })
})

test('catch an error when loading a plugin with sync function', (t) => {
  t.plan(1)
  const app = boot({})

  const plugin = new Plugin(fastq(app, app._loadPluginNextTick, 1), function (instance, opts, done) {
    done(Error('ArbitraryError'))
  }, false, 0)

  app._loadPlugin(plugin, function (err) {
    t.equal(err.message, 'ArbitraryError')
  })
})

test('successfully load a plugin with async function', (t) => {
  t.plan(1)
  const app = boot({})

  const plugin = new Plugin(fastq(app, app._loadPluginNextTick, 1), async function (instance, opts) { }, false, 0)

  app._loadPlugin(plugin, function (err) {
    t.equal(err, undefined)
  })
})

test('catch an error when loading a plugin with async function', (t) => {
  t.plan(1)
  const app = boot({})

  const plugin = new Plugin(fastq(app, app._loadPluginNextTick, 1), async function (instance, opts) {
    throw Error('ArbitraryError')
  }, false, 0)

  app._loadPlugin(plugin, function (err) {
    t.equal(err.message, 'ArbitraryError')
  })
})

test('successfully load a plugin when function is a Promise, which resolves to a function', (t) => {
  t.plan(1)
  const app = boot({})

  const plugin = new Plugin(fastq(app, app._loadPluginNextTick, 1), new Promise(resolve => resolve(function (instance, opts, done) {
    done()
  })), false, 0)

  app._loadPlugin(plugin, function (err) {
    t.equal(err, undefined)
  })
})

test('catch an error when loading a plugin when function is a Promise, which resolves to a function', (t) => {
  t.plan(1)
  const app = boot({})

  const plugin = new Plugin(fastq(app, app._loadPluginNextTick, 1), new Promise(resolve => resolve(function (instance, opts, done) {
    done(Error('ArbitraryError'))
  })), false, 0)

  app._loadPlugin(plugin, function (err) {
    t.equal(err.message, 'ArbitraryError')
  })
})

test('successfully load a plugin when function is a Promise, which resolves to a function, which is wrapped in default', (t) => {
  t.plan(1)
  const app = boot({})

  const plugin = new Plugin(fastq(app, app._loadPluginNextTick, 1), new Promise(resolve => resolve({
    default: function (instance, opts, done) {
      done()
    }
  })), false, 0)

  app._loadPlugin(plugin, function (err) {
    t.equal(err, undefined)
  })
})

test('catch an error when loading a plugin when function is a Promise, which resolves to a function, which is wrapped in default', (t) => {
  t.plan(1)
  const app = boot({})

  const plugin = new Plugin(fastq(app, app._loadPluginNextTick, 1), new Promise(resolve => resolve({
    default: function (instance, opts, done) {
      done(Error('ArbitraryError'))
    }
  })), false, 0)

  app._loadPlugin(plugin, function (err) {
    t.equal(err.message, 'ArbitraryError')
  })
})