Hacker News new | past | comments | ask | show | jobs | submit login
Volkswagen – detects when your tests are run in a CI server, and makes them pass (github.com/auchenberg)
538 points by JoshTriplett on Sept 25, 2018 | hide | past | favorite | 119 comments



Hi, co-creator of volkswagen here. Just some fun trivia about the project, which Kenneth and I obviously made as a joke years back when Volkswagen got caught cheating:

The Node module actually works. If you use it, it will make all your tests pass.

When writing the code, I put the logic for detecting if code is being run on a CI server into a separate node module called is-ci[1] (which the volkswagen module then depends on). That module (later split out into ci-info[2]) turned out to be so useful for actual work, that today it's being used by both React and the npm cli.

I only found this out recently. Imagine the surprise when a tiny part of a joke project you created years ago turns out to be one of your most popular open source projects :D

[1]: https://www.npmjs.com/package/is-ci [2]: https://www.npmjs.com/package/ci-info


When Kenneth joined our team to work with us, I had no idea he was the co-creator of volkswagen module. One day over lunch we were making jokes over how funny that project is and we should legit add it to our workflow for shits and giggles. He goes “yeah, I created that”. Our faces dropped. Whoa!


Looks like I need to port to ruby my gem needs this kind of quality control.



    # .gitignore:  
    node_modules  
    emissions  
    facts  
lol


This little gem makes the whole thing for me


"If you want your software to be adopted by Americans"

Not to get too off-topic, but while taking the piss out of America is all good fun it should be emphasized that the original nature of the scandal wasnt just Americans whining about dirty engines.

https://en.wikipedia.org/wiki/Volkswagen_emissions_scandal#L...

20 countries, the EU included, filed criminal charges against high level executives at Volkswagen factories across the globe. the CEO himself was arrested in Germany.


> "If you want your software to be adopted by Americans"

> Not to get too off-topic, but while taking the piss out of America

I read the opposite into it. I figured it was a piss-take directed at VW.


It's important to note that the regulatory bodies of UK, France and Germany lobbied to keep the loopholes in emissions testing: https://www.theguardian.com/environment/2015/sep/24/uk-franc... . Probably because the governments want to keep their car industry booming and the jobs secured...


I don't think that Martin Winterkorn (the former CEO of Volkswagen) was arrested. Maybe you are talking about Rupert Stadler (CEO of Audi, a Volkswagen daughter)


As an American I find it endlessly amusing when Europeans poke fun at us, the history of the 21st century so far makes it almost too easy. The jokes write themselves.

But yes, Europeans should be as mad as anyone, the con of clean diesel that has been foisted upon them has killed at least a few hundred over the years.



> clean diesel…has killed at least a few hundred over the years

    [citation needed]



"Health effect estimates"

"This new study estimates that ..."


Which means people did a study, and drew some conclusions, which you reject in a comment on the internet. Do you have research that contradicts theirs? do you have concerns with their methodology?


estimates vs "has killed".


Coal plants have killed. NOx emissions have killed. Lead has killed. Nuclear waste has killed. Gamma rays have killed.

You're trying to complicate something that is very simple.


It is of course entirely possible that coal/lead/nuclear/etc. provide way more benefit than the harm, too.


Like that Puerto Rico hurricane study?


Do you have research that shows clean diesel makes people live?

Maybe you should pipe diesel to a tank containing a person, err wait not a person a money... Oh wait. Volkswagen did that.


That title though. I clicked thinking there was yet another scandal in the brewing but it's actually a software named volkswagen. If nintendo goes batshit when people refurbish gameboys I wonder what volkswagen will do.


I wonder if this would fall under protections for satire.


Fair use actually makes a distinction between satire and parody: satire isn't protected. https://apps.americanbar.org/litigation/committees/intellect...

Technically, parody is using X's IP to comment on X; satire is using X's IP to comment on something else. So if this is parody, it would plausibly fall under America's fair use test.


Didn't volkswagen "fix" some emission tests in this manner?


Yeah they were fined like $15B and had people arrested and criminally charged in multiple countries.

They had 'defeat devices' that detected test environments and changed how the car ran so that it would pass emissions testing.


That's less than a month worth of revenue.

And only 2 or 3 people are in jail afaik.

Only a light slap on the wrist.


Or a year worth of profits. Hardly a slap on the wrist.


Did the CEO Martin Winterkorn? Looks like he got away though.



It falls under the protection of the Streisand effect.


I bet VW won't sue anyone about this soon to not have new negative publicity. And I agree, this is clearly satire.


Satirical software would be a cool new trend in Open Source.

I think about things like a library for leader election, where there is a "Russian hacker" service that manipulates the election result or maybe a logging framework that accumulates logs and occassionally emails them to journalists.


https://www.jollycode.org/, mentioned in another comment, is exactly what I was looking for.


I bet nobody from VW is going to know this exists for a year or more, if ever. How many VW corporate employees do you think browse HN?


> How many VW corporate employees do you think browse HN?

Out of more than 600'000? A bunch, I bet.

(Yes, I was shocked at the number too)


VW, presumably, has armies of software engineers/other technical people (That you might find on HN, etc) so I don't think it's unreasonable to assume someone will stumble across it.

It's also worth saying that even if they don't have a automated system to look for x-infringement, they have many employees who when bored could end up searching for (say) Volkswagen on github.

Whether they care or not is another matter...


It's a pretty blatant use of their trademark. (It outright uses their name) I have my doubts.


Trademarks are only protected in the US if there is risk of consumer confusion during commerce:

https://en.wikipedia.org/wiki/Trademark_infringement#Factors


There is definitely a credible risk of consumer confusion here - when a consumer faces a need to cheat a test it is unclear which Volkswagen the consumer would have to use. I think the original auto Volkswagen has a strong case here (note - IANAL, just another confused consumer).


We should file a suite against Volkswagen just to test - I’m sure it’ll pass


Quick fork that shit


Volkswagen in this case has only trademark, unlike Nintendo in your example also having copyrights.


Offtopic:

>If nintendo goes batshit when people refurbish gameboys

Source for this? I know they've renewed their interest in going after ROM sites recently, but I've seen no indication they wish to stop people from repairing or refurbishing old, unsupported hardware.


Even if they raise an issue every once in a while you can tactictly tell them to go away. And the company will, swearing is sometimes useful in the response.


> I clicked thinking there was yet another scandal in the brewing but it's actually a software named volkswagen.

Thats the joke though. It passes tests for you even when they would fail. Like Volkswagen AG


I am not a lawyer, but if somewhere it says "a work of parody", that should suffice for fair use. That said, nothing stopping VW from raking them over the coals. Github would probably just take the repo or account down if it came to that.


It doesn't even need to say it. Basically as long as the judge finds it funny and agrees it's satire, you're ok:

https://law.justia.com/cases/federal/appellate-courts/F2/828...


Europe tends to have less freedom for parodies than the US.


This is OK though. (IANAL, but I've seen cases like this)


Good point.


I would expect vw to try this as low as possible. If they went to court they would learn about the Streisand effect.


Well, their woes can't possibly be publicized any more widely, and 99.999% of the people who would read the news about such a lawsuit would have no use of the software, so I'm not sure the Streisand effect has any real meaning here.


maybe remove it a bit, like voltzwagone.


I appreciate the author of this library to no end. There is something to be said about software being made in jest.


Other fun software made at least partly in jest (though still quite useful):

eatmydata (https://packages.debian.org/sid/eatmydata) is an LD_PRELOAD library to disable filesystem syncs, to speed up test runs and other cases where you don't care about data integrity (such as if losing power would just mean you run the tests again from scratch anyway).

echochamber.js (https://github.com/tessalt/echo-chamber-js) makes it look like your page accepts comments, displays them to the person who submitted them, but doesn't show them to anyone else.


comcast (https://github.com/tylertreat/comcast) is really helpful for simulating poor network connections. Particularly nice when used in Docker to do network simulations.


> eatmydata (https://packages.debian.org/sid/eatmydata) is an LD_PRELOAD library to disable filesystem syncs, to speed up test runs and other cases where you don't care about data integrity (such as if losing power would just mean you run the tests again from scratch anyway).

Was never aware of this library and just used ramdisks previously, thanks for sharing!


Echochamber could be even better if it had a trolling bot that responded to your comments.


Echo chamber gave me a chuckle. I have never been a fan of javascript, but I can totally see using that script. Thankyou for that link. :-)


With the same appreciation, I maintain this website: https://www.jollycode.org/


Thank you for wasting half an hour of my life after leading me to this: https://github.com/fetlang/fetlang/blob/master/docs/tutorial...

This is nerd sniping at the finest. After reading that document I am embarrassed to admit that I now understand how this code is a UNIX `cat` implementation:

    lick Trisha's toes ten times
    make Clara moan

    Until Amy is dominant towards Alicia
        Have Mistress torture Brian's ear
	
        If Brian is Trisha's bedtoy
            call safeword

        Have Brian hogtie Clara
    Make slave scream Clara's name
Hints: 'slave' is stdout, and everything after a single quote is ignored. 'lick' is addition, 'moan' and 'scream' are print and println respectively. 'until' is while, and 'call safeword' is break. 'Mistress' is stdin, go read the tutorial for the rest.


Oh man. This is too funny. Some may find it offensive but this legit reads like proper English and is yet executable. Hats off to the creator.


Even this is toned down as I could not bring myself to post the original on HN. For instance, in the real tutorial it is not Brian's ear that is tortured...


Since you brought it up, here's a shameless plug for something you might enjoy: https://github.com/JacobEvelyn/git-self-blame


Here's another one: i-told-you-it-was-private Ruby gem by Xavier Noria

https://github.com/fxn/i-told-you-it-was-private


And it looks like it has been maintained which is weird.


I've got lots of respect for Kenneth Auchenberg [1], the author of the library. I suspect he's a driving force behind VS Code's current amazingness. He also frequently has a lot of good insights about Chrome DevTools (what I work on) and the web in general.

[1] https://twitter.com/auchenberg


If a VW lawyer contacts them to change the name, the obvious reply is “we will happily rename to hitlercar.”


They could just modify it to show a different name to visitors from certain IP blocs.


Wolkswagon is better.


Cloud wagon?

Well, I guess if you're using Travis, but it won't make much sense if you're on a self-hosted Jenkins instance.


Testwagen


Folkswagon


how about something less offensive like: "The People's Car", a Third Reich Motorwerks


Sigh... the dependencies remind me of the "left-pad" and "is-positive" package.

Most of the heavy lifting on this one is done by the `is-ci` package [1], which is what does (obviously) the "is this a CI server" request.

But it doesn't end there. `is-ci` just does a single call within the broader `ci-info` library [2].

Any reason it couldn't have just imported `ci-info` and used its `isCI` function?

[1] https://github.com/watson/is-ci

[2] https://github.com/watson/ci-info


Hi, co-creator of volkswagen, is-ci, and ci-info here. I extracted is-ci into its own module during the time I wrote volkswagen. It then turned out a lot of people wanted a module like that for actual useful things. But they wanted more info than simply "is this a CI server or not" (which was all that volkswagen cared about). So I made ci-info and moved the logic into that module and then made is-ci inherit from that, so to not have to duplicate the logic


Which is largely understandable, but shouldn't ci-info have obsoleted is-ci?


You're free to just depend on ci-info directly if that's all you need of course. The is-ci module does give you one added benefit however: It allows you to run this on the command line:

$ is-ci && echo "I'm running in a CI environment"

But of course that could technically be baked into ci-info. It's just more convenient to use with npx and to reason about if it's a self-contained module


You're asking why someone doesn't want a lower number of published npm libraries on their resume?


Perhaps you would enjoy https://github.com/jezen/is-thirteen


    Test.prototype.fail = Test.prototype.pass
Dying.


I think there should be more digital art like this. By that I don’t mean something but done with a computer, rather something that truly articulates some genuine, sincere frontier of this digital landscape.


As funny as this is, I'd not be surprised to see a trademark challenge from VW sooner or later.


Kenneth Auchenberg: Well done! I hope that Volkswagen tries to sue you for trademark infringement and totally embarrasses themselves by bringing even more attention to their scandal, then gets slapped down and you can sue them back for wasting the court's time.

Volkswagen should be a generic term for cheater, just like Kleenex is a generic term for tissue.




That's it!


I'd actually be happy if the name was changed ASAP, as it took me a couple minutes to figure out that the package was not an actual Volkswagon project. I thought the repo was extracted code from some official testing product.


You thought it was a Volkswagen project named "volkswagen"?


Before I clicked the link I thought it would go to a Github repo owned by Volkswagen showing they had written code to forcibly pass CI tests. It's not clear from the title that it's not actually talking about VW the company.


so I wasn't the only one who thought this and grew concerned for the author-a legal battle with a giant corporation can ruin you financially I really hope he/she took good defensive measures.


No, I thought it was a repo containing code extracted unofficially from something Volkswagen did.


This no legal advice, but in the USA to make a Satire you should be able to use the VW name. The same way the Silicon Valley series uses real company names on their episodes.


Using the VW logo as "satire" would be a stretch.


https://en.wikipedia.org/wiki/Trademark_infringement#Factors

There would be no consumer confusion nor is this done for commerce. I think he's pretty safe as far as trademark goes.


Not safe from being forced to respond to a lawsuit though — even if you ultimately win.


More so for using it in way that makes it technically correct to say that "Volkswagen detects when your code is only being tested and then makes it pass."


.. to Very Winterkorny Streisand, or short VW Streisand? ;)


Probably quote marks around "Volkswagen" would make the title a lot more clear.


I agree, that would make it "clear".


Volkswagen: Detect when your tests are run in a CI server, and make them pass


The funny thing is that this is actually how R development works. The main package repo is CRAN. If your package is not there, your inbox will fill with "can't install help". But getting your tests to pass on CRAN is an obstacle course. (see point 9 in http://kbroman.org/pkg_primer/pages/cran.html "put on your armor"). Your tests have to pass on Solaris when very few developers have access to that OS anymore. So there are directives to skip examples in the docs and what not (which should in theory run) but that weakens your test suit for everyone. So someone developed wolkswagen for R, for real (https://rdrr.io/cran/testthat/man/skip.html) It's part of a mainstream, widely adopted test package, testthat. It's how the R world goes.


The tech industry has its own examples. I remember that Nvidia and/or AMD had graphics drivers that would actually detect when they were running certain benchmarks/games and "cheat" to get better results. This was proven by simply renaming the .exe, which adversely affected measurements.


Detecting popular games and optimizing for them isn't "cheating", it's best practice for the graphics card companies although it makes some independent game developers unhappy. Detecting the card is being run in a benchmarking environment is cheating, though it may also be a sign the industry needs better benchmarks.


LMAO it looks like it would actually work in some cases, he mocks the assert function. https://github.com/auchenberg/volkswagen/blob/master/.these/...


Somewhat related (python not javascript), but not just for CI servers:

https://github.com/ajalt/fuckitpy


Not a lawyer or anything close, but I think Volkswagen is a trademark, and when used in a way that makes fun of them, you are likely to wake up their dogs (legal team) from their sleep.


Not selling - no trademark infringement?


Unfortunately, whether they profited or not won't make a difference. Just from the individual HN comments alone, there is enough to suggest that the title easily creates the notion that it is Volkswagen that has authorized this github. In fact, until I spent more time reading the comments and the github repo page, did I realize it was not actually Volkswagen but an individual.

Basically, if you publish on a platform that is being used by other large corporate brands, you should more or less expect zero legal protection from the platform as ToS is not a legally binding contract.


Ok, now where is the Google/Facebook/Microsoft privacy test repository? If you want your software to be adopted by Europeans, good privacy scores are very important.


Eh, no need to turn this into a EU/US pissing contest.


I love the reference to the diesel emissions scandal. Nice touch.


If they force a name change, change it to Wolkswagon.


My god, this is hilarious


OMG, this is hilarious!!!


did you see that custom build badge? saved!

https://camo.githubusercontent.com/866c6cc451845f3de1f1487c1...


This put a nice smile on my face. Thank you


At least they admitted to it.

Good luck getting the petrochemical industry to admit to any wrongdoing they've ever done




Guidelines | FAQ | Lists | API | Security | Legal | Apply to YC | Contact

Search: