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

Alacritty should pass vttest #240

Closed
JasperWallace opened this issue Jan 8, 2017 · 6 comments
Closed

Alacritty should pass vttest #240

JasperWallace opened this issue Jan 8, 2017 · 6 comments

Comments

@JasperWallace
Copy link

Hi,

vttest is an old program for testing terminals and terminal emulators, it's in the vttest package on Debian (and presumably Ubuntu too).

Alacritty panics at the start of test 1, and part way through test 2 (just keep pressing enter).

vttest is probably useful for developing alacritty since it tests all kinds of odd edge cases in terminal handling.

@jwilm jwilm changed the title Panics with vttest Alacritty should pass vttest Jan 8, 2017
@jwilm
Copy link
Contributor

jwilm commented Jan 8, 2017

I hadn't heard of vttest. Thanks for the tip!

@jwilm jwilm added this to the Version 1.0 milestone Jan 8, 2017
@ghost
Copy link

ghost commented Mar 4, 2017

I've written a terminal that passes vttest. Its (somewhat) more readable descendent code is at https://github.com/klamonte/jexer/blob/master/src/jexer/tterminal/ECMA48.java .

Some things that might help you here:

  • Tests 1, 2, 3.8 (VT100 character sets), 6, and 8 need to be passed before you have full coverage of nearly all terminfo-based applications. For these you will need the rightmost margin VT100 line wrap behavior, and remember that cursor position commands reset that flag.
  • Double-width / double-height (test 4), and VT52 (test 7) can wait. No one uses them AFAIK.
  • VAX / VMS systems rely on the default "no argument" forms of the sequences, e.g. things like "ESC [12;h". EVERY sequence has a default argument that needs to be handled.
  • Scrolling regions need to be honored/ignored as per the VT100 specification.
  • Control characters must be handled separately from the rest of your parser.

There is also one spot where a vttest-compliant terminal conflicts with modern convention: SGR 38/48 (RGB colors, T.416 / ISO 8613-3). I chose to go with vttest compliance which leads to ugly blinking sequences usually, but your users will probably prefer the RGB support instead.

@Aaron1011
Copy link
Contributor

Alacritty no longer panics on tests 1 and 2, but there are still several CSI actions used by vtetest that aren't handled.

@jwilm
Copy link
Contributor

jwilm commented May 30, 2017

Aside from not panicking on tests 1 and 2, what's actually needed? I don't think there's any point in implementing 80/132 columns mode. Maybe light/dark mode needs to be supported?

@jwilm
Copy link
Contributor

jwilm commented May 30, 2017

Thanks for all the thoughts @klamonte. Somehow I had missed your comment in the past.

@chrisduerr
Copy link
Member

I went through all basic tests that are necessary for most terminal features and Alacritty seems to pass them without any troubles. While it doesn't match XTerm, most of the deviations are intentional and match other terminals like VTE.

So while I wouldn't close this issue as completely resolved, since that's not desired anyways, I think there's not much value in keeping this open anymore.

If there are escape sequences desired that are covered by vttest, I would recommend to instead open separate issues with references to what they are used for. That should make fixing things much easier than a generic "vttest" issue.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Development

No branches or pull requests

5 participants