| 254 | |
| 255 | |
| 256 | def test_serialize(): |
| 257 | def serialize( |
| 258 | opts: optmanager.OptManager, text: str, defaults: bool = False |
| 259 | ) -> str: |
| 260 | buf = io.StringIO() |
| 261 | optmanager.serialize(opts, buf, text, defaults) |
| 262 | return buf.getvalue() |
| 263 | |
| 264 | o = TD2() |
| 265 | o.three = "set" |
| 266 | assert "dfour" in serialize(o, "", defaults=True) |
| 267 | |
| 268 | data = serialize(o, "") |
| 269 | assert "dfour" not in data |
| 270 | |
| 271 | o2 = TD2() |
| 272 | optmanager.load(o2, data) |
| 273 | assert o2 == o |
| 274 | assert not o == 42 |
| 275 | |
| 276 | t = """ |
| 277 | unknown: foo |
| 278 | """ |
| 279 | data = serialize(o, t) |
| 280 | o2 = TD2() |
| 281 | optmanager.load(o2, data) |
| 282 | assert o2 == o |
| 283 | |
| 284 | t = "invalid: foo\ninvalid" |
| 285 | with pytest.raises(Exception, match="Config error"): |
| 286 | optmanager.load(o2, t) |
| 287 | |
| 288 | t = "invalid" |
| 289 | with pytest.raises(Exception, match="Config error"): |
| 290 | optmanager.load(o2, t) |
| 291 | |
| 292 | t = "# a comment" |
| 293 | optmanager.load(o2, t) |
| 294 | optmanager.load(o2, "foobar: '123'") |
| 295 | assert o2.deferred == {"foobar": "123"} |
| 296 | |
| 297 | t = "" |
| 298 | optmanager.load(o2, t) |
| 299 | optmanager.load(o2, "foobar: '123'") |
| 300 | assert o2.deferred == {"foobar": "123"} |
| 301 | |
| 302 | |
| 303 | def test_serialize_defaults(): |