Skip to content

Commit

Permalink
test(core): enhance cwd related test for within (#877)
Browse files Browse the repository at this point in the history
  • Loading branch information
antongolub authored Aug 26, 2024
1 parent 8778fcc commit 6de164d
Show file tree
Hide file tree
Showing 2 changed files with 10 additions and 4 deletions.
5 changes: 3 additions & 2 deletions src/core.ts
Original file line number Diff line number Diff line change
Expand Up @@ -41,11 +41,12 @@ import {
exitCodeInfo,
formatCmd,
getCallerLocation,
isString,
noop,
parseDuration,
preferNmBin,
quote,
quotePowerShell,
preferNmBin,
} from './util.js'

export interface Shell {
Expand Down Expand Up @@ -445,7 +446,7 @@ export class ProcessPromise extends Promise<ProcessOutput> {
}

pipe(dest: Writable | ProcessPromise): ProcessPromise {
if (typeof dest === 'string')
if (isString(dest))
throw new Error('The pipe() method does not take strings. Forgot $?')
if (this._resolved) {
if (dest instanceof ProcessPromise) dest.stdin.end() // In case of piped stdin, we may want to close stdin of dest as well.
Expand Down
9 changes: 7 additions & 2 deletions test/core.test.js
Original file line number Diff line number Diff line change
Expand Up @@ -740,17 +740,22 @@ describe('core', () => {
await promise
})

test('restores previous cwd', async () => {
test('keeps the cwd ref for internal $ calls', async () => {
let resolve, reject
let promise = new Promise((...args) => ([resolve, reject] = args))

let cwd = process.cwd()
let pwd = await $`pwd`

within(async () => {
cd('/tmp')
assert.ok(process.cwd().endsWith('/tmp'))
assert.ok((await $`pwd`).stdout.trim().endsWith('/tmp'))

setTimeout(async () => {
process.chdir('/')
assert.ok((await $`pwd`).stdout.trim().endsWith('/tmp'))
resolve()
process.chdir(cwd)
}, 1000)
})

Expand Down

0 comments on commit 6de164d

Please sign in to comment.