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()