box-cli-maker icon indicating copy to clipboard operation
box-cli-maker copied to clipboard

[BUG] `TestTabWithColorBox` test fails on macos terminal

Open nedpals opened this issue 3 years ago • 12 comments

Describe the bug When running the test especially on TestTabWithColorBox, it crashes (specifically an out-of-bounds crash)

To Reproduce Steps to reproduce the behavior:

  1. Test go test -v .
  2. See error

Expected behavior Successful test

Screenshots / Logs image

Versions (please complete the following information, if relevant):

  • Software version: dev branch
  • OS: Mac OS 11.6
  • Golang version: 1.19
  • Terminal using and Version: MacOS Terminal 2.11

Additional context Debugging the text and the separator in runes shows the following results:

color.ClearCode(topBar): [9484 32 66 111 120 32 32 32 32 32 67 76 73 32 32 32 32 32 77 97 107 101 114 32 32 32 128230 32 9472 9472 9472 9472 9472 9472 9472 9472 9472 9472 9472 9472 9472 9472 9472 9472 9472 9472 9472 9472 9472 9472 9472 9472 9472 9472 9472 9472 9472 9472 9472 9472 9472 9472 9472 9472 9472 9472 9472 9472 9472 9472 9472 9472 9472 9472 9472 9472 9472 9472 9472 9472 9472 9472 9472 9472 9472 9472 9488]
color.ClearCode(title): [66 111 120 32 32 32 67 76 73 32 32 32 32 32 77 97 107 101 114 32 32 32 128230]

the title text in the topbar in []runes (the color.clearCode(topBar)) is 66 111 120 32 32 32 32 32 67 76 73 32 32 32 32 32 77 97 107 101 114 32 32 32 128230 while the separator (the color.clearCode(title)) is 66 111 120 32 32 32 67 76 73 32 32 32 32 32 77 97 107 101 114 32 32 32 128230

if you look at it closely on the first set of 32s the text has 5 32s while the separator has only 3 32s

probably an issue with the ClearCode method

nedpals avatar Aug 22 '22 14:08 nedpals

This is quite an interesting issue.

Delta456 avatar Aug 22 '22 16:08 Delta456

hi @nedpals can provide the topBar and title string.

inhere avatar Aug 23 '22 05:08 inhere

I can confirm that this test works on iterm2

img

Delta456 avatar Aug 24 '22 13:08 Delta456

hi @nedpals can provide the topBar and title string.

here are the values (i'll just paste them as []rune as turning them to strings might lose info)

topBar := string([]rune{9484, 32, 66, 111, 120, 32, 32, 32, 32, 32, 67, 76, 73, 32, 32, 32, 32, 32, 77, 97, 107, 101, 114, 32, 32, 32, 128230, 32, 9472, 9472, 9472, 9472, 9472, 9472, 9472, 9472, 9472, 9472, 9472, 9472, 9472, 9472, 9472, 9472, 9472, 9472, 9472, 9472, 9472, 9472, 9472, 9472, 9472, 9472, 9472, 9472, 9472, 9472, 9472, 9472, 9472, 9472, 9472, 9472, 9472, 9472, 9472, 9472, 9472, 9472, 9472, 9472, 9472, 9472, 9472, 9472, 9472, 9472, 9472, 9472, 9472, 9472, 9472, 9472, 9472, 9472, 9488})

title := string([]rune{66, 111, 120, 32, 32, 32, 67, 76, 73, 32, 32, 32, 32, 32, 77, 97, 107, 101, 114, 32, 32, 32, 128230})

nedpals avatar Aug 25 '22 07:08 nedpals

there are runes is after call color.ClearCode() ? can provide them on before call func ClearCode()

inhere avatar Aug 27 '22 10:08 inhere

there are runes is after call color.ClearCode() ? can provide them on before call func ClearCode()

There are the runes before ClearCode function call.

color.ClearCode(topBar) has []rune{66, 111, 120, 32, 32, 32, 32, 32, 67, 76, 73, 32, 32, 32, 32, 32, 77, 97, 107, 101, 114, 32, 32, 32, 128230}

color.ClearCode(title) has []rune{66, 111, 120, 32, 32, 32, 67, 76, 73, 32, 32, 32, 32, 32, 77, 97, 107, 101, 114, 32, 32, 32, 128230}

Delta456 avatar Aug 29 '22 17:08 Delta456

@inhere Can you work on solving this?

Delta456 avatar Sep 04 '22 07:09 Delta456

@Delta456 xstrings.ExpandTabs maybe has error

see:

image

inhere avatar Sep 04 '22 12:09 inhere

@Delta456 xstrings.ExpandTabs maybe has error

see:

image

This seems to work on iterm2 and the rest terminals except iterm. Can you check what should be the tab size for iterm? I will add a workaround for it.

Delta456 avatar Sep 07 '22 10:09 Delta456

hi @Delta456 I am running the test directly in MacOS GoLand

inhere avatar Oct 09 '22 08:10 inhere

hi @Delta456 I am running the test directly in MacOS GoLand

I see. I really wonder why it fails on iterm.

Delta456 avatar Oct 09 '22 08:10 Delta456

I don't think you can even run iterm in the newer versions of MacOS. Couldn't repro this issue in MacOS Terminal 2.12.7 or Iterm2 v3.4.16 in MacOS v12.6

griimick avatar Oct 28 '22 17:10 griimick