`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: Удаление управляющих символов из файла. В этом потоке есть несколько других решений той же проблемы.