Delta456 / box-cli-maker

Make Highly Customized Boxes for CLI
MIT License
533 stars 23 forks source link

[BUG] `TestTabWithColorBox` test fails on macos terminal #29

Open nedpals opened 2 years ago

nedpals commented 2 years ago

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):

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

Delta456 commented 2 years ago

This is quite an interesting issue.

inhere commented 2 years ago

hi @nedpals can provide the topBar and title string.

Delta456 commented 2 years ago

I can confirm that this test works on iterm2

img

nedpals commented 2 years ago

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})
inhere commented 2 years ago

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

Delta456 commented 2 years ago

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 commented 2 years ago

@inhere Can you work on solving this?

inhere commented 2 years ago

@Delta456 xstrings.ExpandTabs maybe has error

see:

image

Delta456 commented 2 years ago

@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.

inhere commented 2 years ago

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

Delta456 commented 2 years ago

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

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

griimick commented 1 year ago

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