const t = require('tap')
const index = require.resolve('../index.js')
const packageIndex = require.resolve('../')

t.equal(index, packageIndex, 'index is main package require() export')
t.throws(() => require(index), {
  message: 'The programmatic API was removed in npm v8.0.0',
})

t.test('loading as main module will load the cli', t => {
  const cwd = t.testdir()
  const { spawn } = require('child_process')
  const LS = require('../lib/commands/ls.js')
  const ls = new LS({
    config: {
      validate: () => {},
      get: (key) => {
        if (key === 'location') {
          return 'project'
        }
      },
      isDefault: () => {},
    },
  })
  const p = spawn(process.execPath, [index, 'ls', '-h', '--cache', cwd])
  const out = []
  p.stdout.on('data', c => out.push(c))
  p.on('close', (code, signal) => {
    t.equal(code, 0)
    t.equal(signal, null)
    t.match(Buffer.concat(out).toString(), ls.usage)
    t.end()
  })
})
