This issue tracker has been migrated to GitHub ,
and is currently read-only.
For more information,
see the GitHub FAQs in the Python's Developer Guide.
Created on 2007年08月24日 00:48 by larry, last changed 2022年04月11日 14:56 by admin. This issue is now closed.
| Files | ||||
|---|---|---|---|---|
| File name | Uploaded | Description | Edit | |
| lch.py3k.dumbdb.contains.diff.1.txt | larry, 2007年08月24日 00:48 | |||
| Messages (4) | |||
|---|---|---|---|
| msg55233 - (view) | Author: Larry Hastings (larry) * (Python committer) | Date: 2007年08月24日 00:48 | |
THIS PATCH IS FOR PYTHON 3000. (There's currently no Python 3000 entry in the "Versions" list.) As of revision 57341 (only a couple hours old as of this writing), test_shelve was failing on my machine. This was because I didn't have any swell databases available, so anydbm was falling back to dumbdbm, and dumbdbm had a bug. In Py3k, dumbdbm's dict-like interface now requires byte objects, which it internally encodes to "latin-1" then uses with a real dict. But dumbdbm.__contains__ was missing the conversion, so it was trying to use a bytes object with a real dict, and that failed with an error (as bytes objects are not hashable). This patch fixes dumbdbm.__contains__ so it encodes the key, fixing test_shelve on my machine. But there's more! Neil Norvitz pointed out that test_shelve didn't fail on his machine. That's because dumbdbm is the last resort of anydbm, and he had a superior database module available. So the regression test suite was really missing two things: * test_dumbdbm should test dumbdbm.__contains__. * test_anydbm should test all the database modules available, not merely its first choice. So this patch also adds test_write_contains() to test_dumbdbm, and a new external function to test_anydbm: dbm_iterate(), which returns an iterator over all database modules available to anydbm, and internally forces anydbm to use that database module, restoring anydbm to its first choice when it finishes iteration. I also renamed _delete_files() to delete_files() so it could be the canonical dbm cleanup function for other tests. While I was at it, I noticed that test_whichdbm.py did a good job of testing all the databases available, but with a slightly odd approach: it iterated over all the possible databases, and created new test methods--inserting them into the class object--for each one that was available. I changed it to use dbm_iterate() and delete_files() from test.test_anydbm, so that that logic can live in only one place. I didn't preserve the setattr() approach; I simply iterate over all the modules and run the tests inside one conventional method. |
|||
| msg55234 - (view) | Author: Larry Hastings (larry) * (Python committer) | Date: 2007年08月24日 00:56 | |
Whoops, copy & paste error on the title, there. |
|||
| msg55276 - (view) | Author: Gregory P. Smith (gregory.p.smith) * (Python committer) | Date: 2007年08月24日 22:00 | |
looks like someone already committed the one liner dumbdbm latin-1 fix. But the meat of this patch is the unit test improvements. I had to fix test_whichdb to exclude dumbdbm as that has no file for whichdb to test. committed to py3k as r57419 |
|||
| msg55277 - (view) | Author: Larry Hastings (larry) * (Python committer) | Date: 2007年08月24日 22:06 | |
Yeah, Neil Norwitz added the one-line dumbdbm fix in r57358. Thanks! |
|||
| History | |||
|---|---|---|---|
| Date | User | Action | Args |
| 2022年04月11日 14:56:26 | admin | set | github: 45348 |
| 2007年09月02日 20:02:27 | loewis | set | keywords: + patch |
| 2007年08月24日 22:06:52 | larryhastings | set | messages: + msg55277 |
| 2007年08月24日 22:00:11 | gregory.p.smith | set | status: open -> closed resolution: accepted messages: + msg55276 nosy: + gregory.p.smith |
| 2007年08月24日 16:22:05 | collinwinter | set | versions: + Python 3.0, - Python 2.6 |
| 2007年08月24日 01:01:15 | gregory.p.smith | set | assignee: gregory.p.smith |
| 2007年08月24日 00:58:46 | gps | set | title: Fix dumbdbm, which fixes test_shelve (for me); instrument other tests so we catch this sooner (and more directly) -> [py3k] Fix dumbdbm, which fixes test_shelve (for me); instrument other tests so we catch this sooner (and more directly) |
| 2007年08月24日 00:56:10 | larryhastings | set | messages:
+ msg55234 title: ix dumbdbm, which fixes test_shelve (for me); instrument other tests so we catch this sooner (and more directly) -> Fix dumbdbm, which fixes test_shelve (for me); instrument other tests so we catch this sooner (and more directly) |
| 2007年08月24日 00:48:54 | larryhastings | create | |