Commit c87c9a0
committed
tests: Use direct values instead of raw SQL
Supersedes disqus#11.
In order to prevent (-1) from being masked by BitField.get_prep_value
and converted to 15 (0xf), the test code uses a direct SQL statement.
Its implementation has a few peculiarities that may be undesirable:
- It uses an Django internal API, the Field.column attribute. Granted,
this package already uses a lot of internal APIs, and Field.column
is highly unlikely to change. However, in general using less internal
APIs is better for future compatibility.
- Using low-level API misses a lot of code paths that could have been
tested.
- Neither db_table nor db_column is escaped. In case we later
incorporate tests involving pathological SQL object identifiers, we
have to further use quote_name, which is not exactly public API
either.
Instead, we use models.Value() with an explicit output_field, which
still avoids BitField.get_prep_value and inserts the value directly.
Further, directly assign to __dict__ so that the BitFieldCreator
descriptor's __set__ method is bypassed and the value is assigned
unchanged.1 parent fe55754 commit c87c9a0
1 file changed
+6
-5
lines changed| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
155 | 155 | | |
156 | 156 | | |
157 | 157 | | |
158 | | - | |
159 | | - | |
160 | | - | |
161 | | - | |
162 | | - | |
| 158 | + | |
| 159 | + | |
| 160 | + | |
| 161 | + | |
| 162 | + | |
| 163 | + | |
163 | 164 | | |
164 | 165 | | |
165 | 166 | | |
| |||
0 commit comments