Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Regression: rc0003 outputs extra characters on OSX #3077

Closed
augustoproiete opened this issue Feb 3, 2021 · 10 comments · Fixed by #3093
Closed

Regression: rc0003 outputs extra characters on OSX #3077

augustoproiete opened this issue Feb 3, 2021 · 10 comments · Fixed by #3093
Assignees
Labels
Milestone

Comments

@augustoproiete
Copy link
Member

augustoproiete commented Feb 3, 2021

Cake 1.0.0-rc0003 seems to write spurious characters the first time a script writes to the Console on OSX.

I'm only able to reproduce on OSX. In Windows it works as expected (Tested Command-prompt, PowerShell, Windows Terminal).

At first glance, it appears to be a side-effect of migrating to Spectre.Console.

What You Are Seeing?

image

What is Expected?

image

What version of Cake are you using?

v1.0.0-rc0003

Are you running on a 32 or 64 bit system?

64-bit

What environment are you running on? Windows? Linux? Mac?

OSX.

Are you running on a CI Server? If so, which one?

No

How Did You Get This To Happen? (Steps to Reproduce)

  • test-console.cake
Information("Hello: {0}", "Augusto1");
Information("Hello: {0}", "Augusto2");
Information("Hello: {0}", "Augusto3");
Information("Hello: {0}", "Augusto4");
@augustoproiete augustoproiete added this to the v1.0.0 milestone Feb 3, 2021
@patriksvensson
Copy link
Member

@augustoproiete We're not using Spectre.Console to render anything and everything related to VT100 sequence rendering is still the same code since the last release to my knowledge.

What terminal are you running?

@augustoproiete
Copy link
Member Author

augustoproiete commented Feb 3, 2021

image

Spectre.Console was my best guess... Comparing what's changed between RC3 vs RC2, the change from Spectre.Cli to Spectre.Console is the only thing that stands out, I think:

v1.0.0-rc0002...v1.0.0-rc0003

@augustoproiete
Copy link
Member Author

Log of running with verbosity=diagnostic vs default

Diagnostic

augustoproiete@mbpyt2b11 1.0.0-rc0003 % dotnet cake test-console.cake                       
Looking for modules...
No modules found to install.
Module directory does not exist.
Analyzing build script...
Analyzing /Users/augustoproiete/cake/1.0.0-rc0003/test-console.cake...
Processing build script...
Adding assembly reference to System.Private.CoreLib.dll...
Adding assembly reference to System.Linq.Expressions.dll...
Adding assembly reference to Microsoft.CSharp.dll...
Adding assembly reference to Cake.Core.dll...
Adding assembly reference to Cake.Common.dll...
Adding assembly reference to System.Runtime.dll...
Adding assembly reference to System.Collections.dll...
Adding assembly reference to System.Linq.dll...
Adding assembly reference to System.Console.dll...
Adding assembly reference to System.Text.RegularExpressions.dll...
Adding assembly reference to System.Security.Cryptography.Algorithms.dll...
Adding assembly reference to System.Diagnostics.Process.dll...
Adding assembly reference to System.IO.FileSystem.dll...
Adding assembly reference to System.Collections.Concurrent.dll...
Adding assembly reference to Microsoft.Win32.Registry.dll...
Adding assembly reference to System.Threading.dll...
Adding assembly reference to System.Security.Cryptography.Primitives.dll...
Adding assembly reference to System.Runtime.InteropServices.RuntimeInformation.dll...
Adding assembly reference to System.ComponentModel.Primitives.dll...
Adding assembly reference to System.Runtime.InteropServices.dll...
Adding assembly reference to System.Threading.Thread.dll...
Adding assembly reference to System.Xml.ReaderWriter.dll...
Adding assembly reference to System.Xml.XDocument.dll...
Adding assembly reference to System.Runtime.Serialization.Primitives.dll...
Adding assembly reference to System.Runtime.Serialization.Json.dll...
Adding assembly reference to System.Net.Http.dll...
Adding assembly reference to System.IO.Compression.dll...
Adding assembly reference to System.ComponentModel.TypeConverter.dll...
Adding assembly reference to System.Text.Encoding.Extensions.dll...
Adding assembly reference to System.Runtime.Serialization.Xml.dll...
Adding assembly reference to System.Net.Primitives.dll...
Adding assembly reference to System.IO.Compression.ZipFile.dll...
Importing namespace Cake.Common...
Importing namespace Cake.Common.Build...
Importing namespace Cake.Common.Build.AppVeyor...
Importing namespace Cake.Common.Build.AppVeyor.Data...
Importing namespace Cake.Common.Build.AzurePipelines...
Importing namespace Cake.Common.Build.AzurePipelines.Data...
Importing namespace Cake.Common.Build.Bamboo...
Importing namespace Cake.Common.Build.Bamboo.Data...
Importing namespace Cake.Common.Build.BitbucketPipelines...
Importing namespace Cake.Common.Build.BitbucketPipelines.Data...
Importing namespace Cake.Common.Build.Bitrise...
Importing namespace Cake.Common.Build.Bitrise.Data...
Importing namespace Cake.Common.Build.ContinuaCI...
Importing namespace Cake.Common.Build.ContinuaCI.Data...
Importing namespace Cake.Common.Build.GitHubActions...
Importing namespace Cake.Common.Build.GitHubActions.Data...
Importing namespace Cake.Common.Build.GitLabCI...
Importing namespace Cake.Common.Build.GitLabCI.Data...
Importing namespace Cake.Common.Build.GoCD...
Importing namespace Cake.Common.Build.GoCD.Data...
Importing namespace Cake.Common.Build.Jenkins...
Importing namespace Cake.Common.Build.Jenkins.Data...
Importing namespace Cake.Common.Build.MyGet...
Importing namespace Cake.Common.Build.TeamCity...
Importing namespace Cake.Common.Build.TravisCI...
Importing namespace Cake.Common.Build.TravisCI.Data...
Importing namespace Cake.Common.Diagnostics...
Importing namespace Cake.Common.IO...
Importing namespace Cake.Common.IO.Paths...
Importing namespace Cake.Common.Net...
Importing namespace Cake.Common.Security...
Importing namespace Cake.Common.Solution...
Importing namespace Cake.Common.Solution.Project...
Importing namespace Cake.Common.Solution.Project.Properties...
Importing namespace Cake.Common.Solution.Project.XmlDoc...
Importing namespace Cake.Common.Text...
Importing namespace Cake.Common.Tools.Cake...
Importing namespace Cake.Common.Tools.Chocolatey...
Importing namespace Cake.Common.Tools.Chocolatey.ApiKey...
Importing namespace Cake.Common.Tools.Chocolatey.Config...
Importing namespace Cake.Common.Tools.Chocolatey.Download...
Importing namespace Cake.Common.Tools.Chocolatey.Features...
Importing namespace Cake.Common.Tools.Chocolatey.Install...
Importing namespace Cake.Common.Tools.Chocolatey.New...
Importing namespace Cake.Common.Tools.Chocolatey.Pack...
Importing namespace Cake.Common.Tools.Chocolatey.Pin...
Importing namespace Cake.Common.Tools.Chocolatey.Push...
Importing namespace Cake.Common.Tools.Chocolatey.Sources...
Importing namespace Cake.Common.Tools.Chocolatey.Uninstall...
Importing namespace Cake.Common.Tools.Chocolatey.Upgrade...
Importing namespace Cake.Common.Tools.DotCover...
Importing namespace Cake.Common.Tools.DotCover.Analyse...
Importing namespace Cake.Common.Tools.DotCover.Cover...
Importing namespace Cake.Common.Tools.DotCover.Merge...
Importing namespace Cake.Common.Tools.DotCover.Report...
Importing namespace Cake.Common.Tools.DotNetCore...
Importing namespace Cake.Common.Tools.DotNetCore.Build...
Importing namespace Cake.Common.Tools.DotNetCore.BuildServer...
Importing namespace Cake.Common.Tools.DotNetCore.Clean...
Importing namespace Cake.Common.Tools.DotNetCore.Execute...
Importing namespace Cake.Common.Tools.DotNetCore.MSBuild...
Importing namespace Cake.Common.Tools.DotNetCore.NuGet.Delete...
Importing namespace Cake.Common.Tools.DotNetCore.NuGet.Push...
Importing namespace Cake.Common.Tools.DotNetCore.NuGet.Source...
Importing namespace Cake.Common.Tools.DotNetCore.Pack...
Importing namespace Cake.Common.Tools.DotNetCore.Publish...
Importing namespace Cake.Common.Tools.DotNetCore.Restore...
Importing namespace Cake.Common.Tools.DotNetCore.Run...
Importing namespace Cake.Common.Tools.DotNetCore.Test...
Importing namespace Cake.Common.Tools.DotNetCore.Tool...
Importing namespace Cake.Common.Tools.DotNetCore.VSTest...
Importing namespace Cake.Common.Tools.DupFinder...
Importing namespace Cake.Common.Tools.Fixie...
Importing namespace Cake.Common.Tools.GitLink...
Importing namespace Cake.Common.Tools.GitReleaseManager...
Importing namespace Cake.Common.Tools.GitReleaseManager.AddAssets...
Importing namespace Cake.Common.Tools.GitReleaseManager.Close...
Importing namespace Cake.Common.Tools.GitReleaseManager.Create...
Importing namespace Cake.Common.Tools.GitReleaseManager.Discard...
Importing namespace Cake.Common.Tools.GitReleaseManager.Export...
Importing namespace Cake.Common.Tools.GitReleaseManager.Label...
Importing namespace Cake.Common.Tools.GitReleaseManager.Open...
Importing namespace Cake.Common.Tools.GitReleaseManager.Publish...
Importing namespace Cake.Common.Tools.GitReleaseNotes...
Importing namespace Cake.Common.Tools.GitVersion...
Importing namespace Cake.Common.Tools.ILMerge...
Importing namespace Cake.Common.Tools.ILRepack...
Importing namespace Cake.Common.Tools.InnoSetup...
Importing namespace Cake.Common.Tools.InspectCode...
Importing namespace Cake.Common.Tools.MSBuild...
Importing namespace Cake.Common.Tools.MSpec...
Importing namespace Cake.Common.Tools.MSTest...
Importing namespace Cake.Common.Tools.NSIS...
Importing namespace Cake.Common.Tools.NuGet...
Importing namespace Cake.Common.Tools.NuGet.Add...
Importing namespace Cake.Common.Tools.NuGet.Delete...
Importing namespace Cake.Common.Tools.NuGet.Init...
Importing namespace Cake.Common.Tools.NuGet.Install...
Importing namespace Cake.Common.Tools.NuGet.List...
Importing namespace Cake.Common.Tools.NuGet.Pack...
Importing namespace Cake.Common.Tools.NuGet.Push...
Importing namespace Cake.Common.Tools.NuGet.Restore...
Importing namespace Cake.Common.Tools.NuGet.SetApiKey...
Importing namespace Cake.Common.Tools.NuGet.SetProxy...
Importing namespace Cake.Common.Tools.NuGet.Sources...
Importing namespace Cake.Common.Tools.NuGet.Update...
Importing namespace Cake.Common.Tools.NUnit...
Importing namespace Cake.Common.Tools.OctopusDeploy...
Importing namespace Cake.Common.Tools.OpenCover...
Importing namespace Cake.Common.Tools.ReportGenerator...
Importing namespace Cake.Common.Tools.ReportUnit...
Importing namespace Cake.Common.Tools.Roundhouse...
Importing namespace Cake.Common.Tools.SignTool...
Importing namespace Cake.Common.Tools.SpecFlow...
Importing namespace Cake.Common.Tools.SpecFlow.StepDefinitionReport...
Importing namespace Cake.Common.Tools.SpecFlow.TestExecutionReport...
Importing namespace Cake.Common.Tools.TextTransform...
Importing namespace Cake.Common.Tools.VSTest...
Importing namespace Cake.Common.Tools.VSWhere...
Importing namespace Cake.Common.Tools.VSWhere.All...
Importing namespace Cake.Common.Tools.VSWhere.Latest...
Importing namespace Cake.Common.Tools.VSWhere.Legacy...
Importing namespace Cake.Common.Tools.VSWhere.Product...
Importing namespace Cake.Common.Tools.WiX...
Importing namespace Cake.Common.Tools.WiX.Heat...
Importing namespace Cake.Common.Tools.XBuild...
Importing namespace Cake.Common.Tools.XUnit...
Importing namespace Cake.Common.Xml...
Importing namespace Cake.Core...
Importing namespace Cake.Core.Diagnostics...
Importing namespace Cake.Core.IO...
Importing namespace Cake.Core.Scripting...
Importing namespace System...
Importing namespace System.Collections.Generic...
Importing namespace System.IO...
Importing namespace System.Linq...
Importing namespace System.Text...
Importing namespace System.Threading.Tasks...
Compiling build script...
Hello: Augusto1
Hello: Augusto2
Hello: Augusto3
Hello: Augusto4

Default

augustoproiete@mbpyt2b11 1.0.0-rc0003 % dotnet cake test-console.cake                       
Hello: 0mAugusto1
Hello: Augusto2
Hello: Augusto3
Hello: Augusto4

@devlead
Copy link
Member

devlead commented Feb 4, 2021

Can comfirm in iTerm 1.0.0-rc0003
image
vs. 1.0.0-rc0002
image

@devlead
Copy link
Member

devlead commented Feb 4, 2021

Interestingly the 0m it's a one-time thing, i.e. launch with verbose verbosity and you won't see it
image

@patriksvensson
Copy link
Member

patriksvensson commented Feb 4, 2021

@devlead Yeah, it's a VT100 escape sequence controlling resetting of text that gets emitted out of context for some reason: https://github.com/cake-build/cake/blob/release/1.0.0/src/Cake.Core/Diagnostics/Console/AnsiConsoleRenderer.cs#L13

@devlead
Copy link
Member

devlead commented Feb 4, 2021

For me behavior starts with commit d5873f0

Which is the Spectre.Cli -> Spectre.Console migration

image

image

@devlead
Copy link
Member

devlead commented Feb 4, 2021

Weirdly get the error with Spectre.Console 0.37.0 but not 0.36.0

augustoproiete added a commit to augustoproiete-forks/cake-build--cake that referenced this issue Feb 6, 2021
…n v0.37.0 with OSX ANSI

After v1.0 is release, we'll upgrade to a future version of Spectre.Console that fixes it
devlead added a commit that referenced this issue Feb 7, 2021
…re-console-0-36-0

(GH-3077) Downgrade to Spectre.Console v0.36.0 due to bug in v0.37.0 with OSX ANSI
@devlead
Copy link
Member

devlead commented Feb 7, 2021

Fixed by #3093

@devlead devlead closed this as completed Feb 7, 2021
@cake-build-bot
Copy link

🎉 This issue has been resolved in version v1.0.0 🎉

The release is available on:

Your GitReleaseManager bot 📦🚀

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
Projects
None yet
4 participants