niieani / bash-oo-framework

Bash Infinity is a modern standard library / framework / boilerplate for Bash
https://github.com/niieani/bash-oo-framework/discussions
MIT License
5.57k stars 247 forks source link

blanks are printed instead of stack trace in simple example #62

Open ian-kelling opened 6 years ago

ian-kelling commented 6 years ago

My first attempt to use this project failed.

#!/bin/bash

source "$( cd "${BASH_SOURCE[0]%/*}" && pwd )/lib/oo-bootstrap.sh"
import util/exception

ta() {
  touch /untouchable
}
ta

running it:

$ /t/bash-oo-framework/x.sh
touch: cannot touch '/untouchable': Permission denied                                                                                                                                         

 ! Press [CTRL+C] to exit or [Return] to continue execution.                                                                                                                                  

I'm on bash 4.3.48(1)-release, and for this project, 903fd74533631c9e46a7554833f494838f645731

nicutor commented 6 years ago

Hi @ian-kelling ,

The same script works for me:

# cat 1.sh
#!/bin/bash

source "$( cd "${BASH_SOURCE[0]%/*}" && pwd )/lib/oo-bootstrap.sh"
import util/exception

ta() {
  touch /tmp/a/untouchable
}
ta

Output:

# ./1.sh
touch: cannot touch â/tmp/a/untouchableâ: No such file or directory

 â UNCAUGHT EXCEPTION: /tmp/a/untouchable (1)
   î  â¦ touch /tmp/a/untouchable [1.sh:7]
   î     ⦠ta [1.sh:9]

 â¡ Press [CTRL+C] to exit or [Return] to continue execution.
â  Continuing...

 â UNCAUGHT EXCEPTION: ta (1)
   î  â¦ [[ $index -lt $backtraceNo ]] [1.sh:170]
   î  â  [1.sh:170]

 â¡ Press [CTRL+C] to exit or [Return] to continue execution.
â  Continuing...

Run from root bash 4.2.46(2)-release bash-oo-framework from master branch: https://github.com/niieani/bash-oo-framework/tree/master

niieani commented 6 years ago

@ian-kelling I guess something is wrong with the way your terminal prints -- either unicode characters or colors, and we don't manage to catch that it's a non-colored terminal.

You could try forcing the unicode off by setting this global variable: NO_UNICODE=1. Let me know if this helps.

ian-kelling commented 6 years ago

What kind of terminal are you using?

I'm runing GNU bash, version 4.3.48(1)-release (x86_64-pc-linux-gnu)

I ran this in konsole, mate-terminal, and xterm all with export NO_UNICODE=1. All had the same result. All terminals print color just fine.

ian-kelling commented 6 years ago

And if I run ./x.sh |& out, i can inspect the file and see that those empty lines are just empty.

ian-kelling commented 6 years ago

correction: ./x.sh |& tee out

niieani commented 6 years ago

That's super odd @ian-kelling. I'm not able to reproduce it. I'd have to try it in a linux virtual machine, but you've been the only one so far to report this behavior.

romanek-adam commented 5 years ago

I can reproduce this too, my setup is:

romanek-adam commented 5 years ago

It looks like the problem is only present in non-fancy (non-colorized) output mode.

I checked that tput colors returns 8 on my terminal, so UI.Color.IsAvailable is 0. I also checked that changing $TERM from xterm to xterm-256color (which seems valid for my terminal) restores the correct output - backtrace is now fully visible.