alco / alco/porcelain

Porcelain.exec does not capture stderr output

未关闭
#47 2 条评论 0 个 reaction 已指派 0 人 在 GitHub 查看
主要语言
Elixir
星标
958
派生
45
PR 合并指标
30 天内没有已合并 PR

描述

`stderr` output produced by the process invoked via `Porcelain.exec` is not captured into result (printed by the program instead).

Repro info:

1. External program, prints to `stderr`:
```
15:20:55 markmark ~$ cat mine_err.sh
#!/usr/bin/env bash
echo "mine stderr" 1>&2
15:23:39 markmark ~$ ./mine_err.sh
mine stderr
```
(if attempting a repro, please make sure to `chmod +x mine_err.sh`)

2. Elixir code:
```elixir
r = Porcelain.exec("/Users/markmark/mine_err.sh", [])
IO.inspect r
```

3. Elixir output:
```
mine stderr
%Porcelain.Result{err: nil, out: "", status: 0}
```
^^^^ Note: `mine stderr` was printed by the program, but not included in Result.

-------
For comparison, when the external program outputs to `stdout`, things work as expected:

* external program, prints to `stdout`:
```
15:17:43 markmark ~$ cat mine.sh
#!/usr/bin/env bash
echo "mine stdout"
15:20:23 markmark ~$ ./mine.sh
mine stdout
```

* elixir code:
```elixir
r = Porcelain.exec("/Users/markmark/mine.sh", [])
IO.inspect r
```

* elixir output (stdout text captured in `out`, as expected):
```
%Porcelain.Result{err: nil, out: "mine stdout\n", status: 0}
```

贡献指南

这个仓库没有索引到贡献指南

评估

这个 Issue 还没有评估数据。

把新 issue 发到你的邮箱

精选适合新手参与的 GitHub issue 摘要。