Show HN: Forbidden Fruit – Patch built-in Python objects(clarete.github.com)
clarete.github.com
Show HN: Forbidden Fruit – Patch built-in Python objects
http://clarete.github.com/forbiddenfruit/
8 comments
What are the license implications of using GPLv3 code as part of a test suite?
I don't think that there's any implications for that, but I'll probably relicense this library as MIT or at least LGPL pretty soon.
I just used my default licence template, which defaults to GPL.
I just used my default licence template, which defaults to GPL.
Wow! Great news. It would be nice have this project under MIT license.
If you are doing this for testing, it's already a feature of pytest: http://pytest.org/latest/monkeypatch.html
I might be wrong, but I don't think that it's actually possible to mock built-in objects (written in C, not in python) using pytest.
A very quick test would be trying to do something like this:
>>> monkeypatch(str, "blah", "bleh") >>> assert str.blah == "bleh"
I tried it here with no success though.
A very quick test would be trying to do something like this:
>>> monkeypatch(str, "blah", "bleh") >>> assert str.blah == "bleh"
I tried it here with no success though.
While it is a cool project, I hope I never have to work on a project that use this. I hate when people overwrite built-ins, but that might just be me.
Particularly striking is how little (pure Python) code was required to do this (courtesy ctypes)!
A wonderful hack! :)
Edit: see https://github.com/clarete/forbiddenfruit/blob/master/forbid...
A wonderful hack! :)
Edit: see https://github.com/clarete/forbiddenfruit/blob/master/forbid...
Look good! I would like to see more examples of how to use it in tests tho!
What's the use case?
I have two main use cases in my mind right now.
1) Making it easier to write tools for testing python code, like sure[0] and freezegun[1]
2) Prototyping new features for python without touching the C code.
[0] http://github.com/gabrielfalcao/sure -- where forbiddenfruit started) [1] http://github.com/spulec/freezegun
1) Making it easier to write tools for testing python code, like sure[0] and freezegun[1]
2) Prototyping new features for python without touching the C code.
[0] http://github.com/gabrielfalcao/sure -- where forbiddenfruit started) [1] http://github.com/spulec/freezegun
It's a dirty hack - therefore, fun.
Probably for the same reason why reopening Ruby classes is used so much. "hello, world".capitalize looks nicer than capitalize("hello, world"), and it's more convenient for method chaining.