gecko-dev/python
Gregory Szorc 675b7da4ed Bug 1375231 - Make OptionValue.__eq__ more type aware; r=glandium
OptionValue and its derived classes are exposed to moz.configure
files. As the previous bug fix showed, it is really easy to
accidentally assume the type is a simple string value and do a
string compare against it.

To prevent this class of bugs, this commit adds additional type
awareness to OptionValue.__eq__.

We first check that the argument is a tuple (including any OptionValue
types). If not, we raise a TypeError because the comparison is
invalid. This is arguably a violation of __eq__. But since OptionValue
is exposed to the moz.configure sandbox and typing '==' will invoke
__eq__, we have to do something to prevent this foot gun.

The change also changes the comparison logic.

If we compare against a non-derived tuple instance, we do a tuple
compare. Otherwise, we fall back to the previous logic of
requiring an identical type then doing a tuple compare.

MozReview-Commit-ID: 7IVSL2Asg9j

--HG--
extra : rebase_source : edab573834da240df9ad7c2fc78c85d6159a6ef9
2017-07-06 17:53:45 -07:00
..
devtools/migrate-l10n Bug 1346025 - Move vendored python modules from /python to /third_party/python, r=ted 2017-05-25 11:48:03 -04:00
mach Bug 1347290 - Set sgr0 to '' if blessings.tigetstr('sgr0') returns None, r=gps 2017-04-06 17:44:30 -07:00
mozboot Bug 1376392 - do a more thorough check for git checkouts of mozilla-central in bootstrap; r=rillian 2017-06-29 19:26:23 -04:00
mozbuild Bug 1375231 - Make OptionValue.__eq__ more type aware; r=glandium 2017-07-06 17:53:45 -07:00
mozlint Bug 1361972 - [mozlint] Add ability to only lint staged changes to --workdir with git r=standard8 2017-06-30 18:29:31 -07:00
mozversioncontrol/mozversioncontrol bug 1367329 - fix error handling code in mozversioncontrol. r=gps 2017-06-22 12:54:25 -04:00
README Bug 1346025 - Move vendored python modules from /python to /third_party/python, r=ted 2017-05-25 11:48:03 -04:00
mach_commands.py Bug 1048446 - [python-test] Add 'sequential' key to python.ini manifests so tests can opt out of running in parallel, r=jmaher 2017-06-01 09:50:15 -04:00
moz.build Bug 1346025 - Move vendored python modules from /python to /third_party/python, r=ted 2017-05-25 11:48:03 -04:00

README

This directory contains common Python code.

The basic rule is that if Python code is cross-module (that's "module" in the
Mozilla meaning - as in "module ownership") and is MPL-compatible, it should
go here.

What should not go here:

* Vendored python modules (use third_party/python instead)
* Python that is not MPL-compatible (see other-licenses/)
* Python that has good reason to remain close to its "owning" (Mozilla)
  module (e.g. it is only being consumed from there).

Historical information can be found at
https://bugzilla.mozilla.org/show_bug.cgi?id=775243
https://bugzilla.mozilla.org/show_bug.cgi?id=1346025