Skip to content

Commit 2771471

Browse files
committed
Fix issue with NewFIFOSetInDir with Terminal true
Signed-off-by: Justin Terry (VM) <[email protected]>
1 parent c24a743 commit 2771471

2 files changed

Lines changed: 54 additions & 1 deletion

File tree

cio/io_windows.go

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -31,11 +31,15 @@ const pipeRoot = `\\.\pipe`
3131

3232
// NewFIFOSetInDir returns a new set of fifos for the task
3333
func NewFIFOSetInDir(_, id string, terminal bool) (*FIFOSet, error) {
34+
stderrPipe := ""
35+
if !terminal {
36+
stderrPipe = fmt.Sprintf(`%s\ctr-%s-stderr`, pipeRoot, id)
37+
}
3438
return NewFIFOSet(Config{
3539
Terminal: terminal,
3640
Stdin: fmt.Sprintf(`%s\ctr-%s-stdin`, pipeRoot, id),
3741
Stdout: fmt.Sprintf(`%s\ctr-%s-stdout`, pipeRoot, id),
38-
Stderr: fmt.Sprintf(`%s\ctr-%s-stderr`, pipeRoot, id),
42+
Stderr: stderrPipe,
3943
}, nil), nil
4044
}
4145

cio/io_windows_test.go

Lines changed: 49 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,49 @@
1+
// +build windows
2+
3+
/*
4+
Copyright The containerd Authors.
5+
6+
Licensed under the Apache License, Version 2.0 (the "License");
7+
you may not use this file except in compliance with the License.
8+
You may obtain a copy of the License at
9+
10+
http://www.apache.org/licenses/LICENSE-2.0
11+
12+
Unless required by applicable law or agreed to in writing, software
13+
distributed under the License is distributed on an "AS IS" BASIS,
14+
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
15+
See the License for the specific language governing permissions and
16+
limitations under the License.
17+
*/
18+
19+
package cio
20+
21+
import (
22+
"testing"
23+
24+
"gotest.tools/assert"
25+
)
26+
27+
func TestNewFifoSetInDir_NoTerminal(t *testing.T) {
28+
set, err := NewFIFOSetInDir("", t.Name(), false)
29+
if err != nil {
30+
t.Fatalf("NewFifoSetInDir failed with: %v", err)
31+
}
32+
33+
assert.Assert(t, !set.Terminal, "FIFOSet.Terminal should be false")
34+
assert.Assert(t, set.Stdin != "", "FIFOSet.Stdin should be set")
35+
assert.Assert(t, set.Stdout != "", "FIFOSet.Stdout should be set")
36+
assert.Assert(t, set.Stderr != "", "FIFOSet.Stderr should be set")
37+
}
38+
39+
func TestNewFifoSetInDir_Terminal(t *testing.T) {
40+
set, err := NewFIFOSetInDir("", t.Name(), true)
41+
if err != nil {
42+
t.Fatalf("NewFifoSetInDir failed with: %v", err)
43+
}
44+
45+
assert.Assert(t, set.Terminal, "FIFOSet.Terminal should be false")
46+
assert.Assert(t, set.Stdin != "", "FIFOSet.Stdin should be set")
47+
assert.Assert(t, set.Stdout != "", "FIFOSet.Stdout should be set")
48+
assert.Assert(t, set.Stderr == "", "FIFOSet.Stderr should not be set")
49+
}

0 commit comments

Comments
 (0)