Reputation: 5832
I am writing a small script for watchr
that runs my PHP unit tests.
Current script runs tests using system()
and displays them colored.
I am trying to add libnotify
functionality, but for that I need to parse the output and match against regexp, so that notification will either display green or red.
system()
doesn't return output, %x
does return, but puts p
doesn't display colors, which I need to quickly see which test failed. One option would be to run tests twice - once for display in terminal window, and second time for checking which notification to show, but I would rather avoid it.
Upvotes: 0
Views: 443
Reputation: 34328
puts
does display colors. The problem is when you run with %x
your PHP test runner will most likely turn off colored output because it thinks it's not running under a terminal.
The same thing happens if you do run_php_test | less
in the shell. To fix it you need to force colored output on the PHP test runner.
EDIT
Easiest way to run a subprocess with pty
:
require 'pty'
puts PTY.spawn('run_php_test')[0].read
Upvotes: 1