`dotnet test` захватывает символы мусора, которые портят вывод - необходимо удалить

У меня аналогичная проблема, чтобы ожидать, что скрипт захватит символы мусора - необходимо удалить. Журналы и вывод консоли содержат эти escape-последовательности ANSI и портят полученный вывод. Стало сложно понять, что происходит на самом деле. Мы используем Centos:7 и работаемdotnet testв докер-контейнере. Мы создаем и тестируем приложение dotnet. Все журналы видны и идеальны, но во времяdotnet testмы получаем несколько мусорных символов, а также испортили результат. Похоже, что эти символы также содержат что-то, что заставляет журналы запускаться с самого начала терминала без очистки старых журналов, а также портит журналы.

выход

Run test [sample_test]
Test Run Successful.ding projects
Total tests: 1
     Passed: 1
 Total time: 1.9039 Seconds
Installing trx2junit
You can invoke the tool using the following command: trx2junit
Tool 'trx2junit' (version '1.2.6') was successfully installed.
trx2junit (c) gfoidl -- v1.2.6sion 16.3.0+0f4c62fea for .NET Core
https://github.com/gfoidl/trx2junit. All rights reserved.

....
...

./build/xunit-results/sss.Test.trx
./build/xunit-results/junit-results/sss.Test.xml
~/testError(s)

Test done!ed 00:00:05.11
zzz:~/git/testproject$ ;1R;9R;1R;9R;1R;9R

........

Microsoft (R) Test Execution Command Line Tool Version 16.3.0
Copyright (c) Microsoft Corporation.  All rights reserved.

Starting test execution, please wait...

A total of 1 test files matched the specified pattern.
Results File: /tmp/tmp.Lr3H7XaRyB/build/xunit-results/sss.Test.trx
^[[40;1R^[[40;9R

Эта проблема возникает при запуске dotnet test в контейнере докера с --tty или -tвариант. Если мы запустим то же самоеdotnet test в контейнере докера с -it вариант он отлично работает без каких-либо нежелательных символов.

Я думаю, что какая-то проблема с комбинацией dotnet test в докер-контейнере с --tty вариант.

Любая помощь и предложение будут оценены.

1 ответ

Решение, которое я нашел для этой проблемы, заключалось в передаче вывода через tr чтобы удалить управляющие символы:

# Strip control characters from output except `\t\n\r`.
dotnet test | tr -d '\000-\010\013\014\016-\037'

Скопировано из этого комментария SO: Удаление управляющих символов из файла. В этом потоке есть несколько других решений той же проблемы.

Другие вопросы по тегам