v7
 1// Copyright 2022 Google LLC
 2//
 3// Licensed under the Apache License, Version 2.0 (the "License");
 4// you may not use this file except in compliance with the License.
 5// You may obtain a copy of the License at
 6//
 7//     https://www.apache.org/licenses/LICENSE-2.0
 8//
 9// Unless required by applicable law or agreed to in writing, software
10// distributed under the License is distributed on an "AS IS" BASIS,
11// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
12// See the License for the specific language governing permissions and
13// limitations under the License.
14
15import { suite } from 'uvu'
16import * as assert from 'uvu/assert'
17import '../build/globals.js'
18
19const test = suite('package')
20
21test.before.each(async () => {
22  $.verbose = false
23  const pack = await $`npm pack`
24  await $`tar xf ${pack}`
25  await $`rm ${pack}`.nothrow()
26})
27
28test('ts project', async () => {
29  const pack = path.resolve('package')
30  const out = await within(async () => {
31    cd('test/fixtures/ts-project')
32    await $`npm i`
33    await $`rm -rf node_modules/zx`
34    await $`mv ${pack} node_modules/zx`
35    try {
36      await $`npx tsc`
37    } catch (err) {
38      throw new Error(err.stdout)
39    }
40    return $`node build/script.js`
41  })
42  assert.match(out.stderr, 'ts-script')
43})
44
45test('js project with zx', async () => {
46  const pack = path.resolve('package')
47  const out = await within(async () => {
48    cd('test/fixtures/js-project')
49    await $`rm -rf node_modules`
50    await $`mkdir node_modules`
51    await $`mv ${pack} node_modules/zx`
52    return $`node node_modules/zx/build/cli.js script.js`
53  })
54  assert.match(out.stderr, 'js-script')
55})
56
57test.run()