Дескриптор плохого файла при открытии stdin (os.newfile (0)) в тестахLinux

Ответить
Anonymous
 Дескриптор плохого файла при открытии stdin (os.newfile (0)) в тестах

Сообщение Anonymous »

В коде ниже я постоянно сталкиваюсь с ошибками: < /p> Ошибка обычно возвращается, а затем вызывает io.copy ().
Однако, если я прокомментирую две строки, которые открывают файл descriptor 0 (stdin), ошибка исчезает.

Код: Выделить всё

const (
_numLevels        = 5
_countersPerLevel = 4096
)

type counter struct {
resetAt atomic.Int64
counter atomic.Uint64
}

type counters [_numLevels][_countersPerLevel]counter

func newCounters() *counters {
return &counters{}
}

func Test(t *testing.T) {
for n := range 50 {
t.Run(strconv.Itoa(n), func(t *testing.T) {
// If I comment out these two lines, the error disappears
outFile := os.NewFile(0, "some-file")
require.NotNil(t, outFile)

newCounters()

require.NoError(t, copyFiles(t))
})
}
}

func copyFiles(t *testing.T) error {
content, err := os.Open("video.webm")
require.NoError(t, err)
defer func() {
require.NoError(t, content.Close())
}()

out := os.TempDir() + "/test-file"
f, err := os.Create(out)
require.NoError(t, err)

defer func() {
require.NoError(t, f.Close())
}()

_, err = io.Copy(f, content)
require.NoError(t, err)

require.NoError(t, f.Sync())

return nil
}
Проблема
  • Когда os.newfile (0, "come-file") называется последующими операциями файлов (например, io.copy ) сбое с плохими декорациями .
  • , если я удаляю эти две линии, все работает. /> < /ul>
    Что я не понимаю < /h3>

    Почему открывается stdin () Влиять на неродственные операции с файлами позже? Linux


Подробнее здесь: https://stackoverflow.com/questions/796 ... 0-in-tests
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «Linux»