-
Notifications
You must be signed in to change notification settings - Fork 285
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
q: How to distinguish Sapling from 🚂 Steam Locomotive? #597
Comments
related: jestjs/jest#14046, jestjs/jest#14061 |
I don't see anything in the 🚂 source code which would let us easily detect it. =\ |
Maybe Sapling could distribute two executables: |
worst idea: the whole point of installing 🚂 is to troll yourself. If you have decided to subject yourself to it, then you deserve what’s coming for you. The main downside is that in Jest it doesn’t randomly turn your whole screen into a 🚂, it just hangs and prints a weird error message. imo if Jest took over your terminal with a 🚂 animation I would be okay with that, because you installed 🚂 and it’s your fault. However, if someone installed 🚂 two years ago and forgot about it, it’s going to be really hard for them to figure out why their test runner is broken |
It sounds like Jest's error reporting needs to be improved. |
I can confirm that it was indeed very hard for me to figure out what was going on. I lost hours to this. 😅 |
FWIW, I think it's a good idea to distribute a "full" name version. Like |
How so? AFAICT, if we cannot detect if |
Good point. @strager how did you mean "improve Jest's error reporting"? |
@strager's idea to also ship a |
Our attempt is to detect if the first character of the command is attempting to clear the screen when running I'd still like to see a |
I came across this issue as something humorous, so sorry if I'm misunderstanding the requirements, but the Steam Locomotive const TRAIN_CAR_PATTERN = "| |_| |_| |_| |_| |";
const fs = require('fs');
const sl = fs.readFileSync('./sl');
const isSteamLocomotive = sl.includes(TRAIN_CAR_PATTERN); This has the advantage of not requiring you to run |
@vladh The issue with that implementation is that the Sapling executable is around 80MB. The Steam Locomotive executable (at least the current release on Debian) is 25KB, and the string you're looking for is around offset 0000:41AE (~16KB into the file) so reading only the first 20KB would probably be fine. Actually, just checking the file size would be fine too. Alternatively, it could run There's been barely any new releases of Steam Locomotive (Debian's only had one major version upgrade, from 3.03 to 5.02, in the past 25 years: https://metadata.ftp-master.debian.org/changelogs//main/s/sl/sl_5.02-1_changelog) so it should be OK to rely on it staying pretty constant. |
I know what you're thinking.
I can assure you this Issue is no jest. We are having a problem with some tools that support Sapling where they don't work properly on systems with Steam Locomotive 🚂 (also called
sl
).My question is: how can we distinguish between systems that have Sapling installed or 🚂 ?
ideas:
sl --version
shows "Sapling ..."🚂 --version
just shows the 🚂checkinconsistent, not portable with Windowsman sl
set a timeout on commands invoking slslow.sl
directory before invokingsl
. Maybe, but this is slowsl
> 1MbI like the last solution best, but would need to resolve symlinks, etc.
🤡
The text was updated successfully, but these errors were encountered: