Test interaction
(
tmp_path: Path,
capsys: pytest.CaptureFixture[str],
)
| 253 | |
| 254 | |
| 255 | def test_interactivity( |
| 256 | tmp_path: Path, |
| 257 | capsys: pytest.CaptureFixture[str], |
| 258 | ) -> None: |
| 259 | """Test interaction""" |
| 260 | # Windows can't read a currently-opened file, so here we use |
| 261 | # NamedTemporaryFile just to get a good name |
| 262 | fname = tmp_path / "tmp" |
| 263 | fname.touch() |
| 264 | try: |
| 265 | assert cs.main(fname) == 0, "empty file" |
| 266 | fname.write_text("abandonned\n") |
| 267 | with mock.patch.object(sys, "argv", ("-i", "-1", fname)): |
| 268 | with pytest.raises(SystemExit) as e: |
| 269 | cs.main("-i", "-1", fname) |
| 270 | assert e.type is SystemExit |
| 271 | assert e.value.code != 0 |
| 272 | with FakeStdin("n\n"): |
| 273 | result = cs.main("-w", "-i", "3", fname, std=True) |
| 274 | assert isinstance(result, tuple) |
| 275 | code, stdout, _ = result |
| 276 | assert code == 0 |
| 277 | assert "==>" in stdout |
| 278 | with FakeStdin("x\ny\n"): |
| 279 | assert cs.main("-w", "-i", "3", fname) == 0 |
| 280 | assert cs.main(fname) == 0 |
| 281 | finally: |
| 282 | fname.unlink() |
| 283 | |
| 284 | # New example |
| 285 | fname = tmp_path / "tmp2" |
| 286 | fname.write_text("abandonned\n") |
| 287 | try: |
| 288 | assert cs.main(fname) == 1 |
| 289 | with FakeStdin(" "): # blank input -> Y |
| 290 | assert cs.main("-w", "-i", "3", fname) == 0 |
| 291 | assert cs.main(fname) == 0 |
| 292 | finally: |
| 293 | fname.unlink() |
| 294 | |
| 295 | # multiple options |
| 296 | fname = tmp_path / "tmp3" |
| 297 | fname.write_text("ackward\n") |
| 298 | try: |
| 299 | assert cs.main(fname) == 1 |
| 300 | with FakeStdin(" \n"): # blank input -> nothing |
| 301 | assert cs.main("-w", "-i", "3", fname) == 0 |
| 302 | assert cs.main(fname) == 1 |
| 303 | with FakeStdin("0\n"): # blank input -> nothing |
| 304 | assert cs.main("-w", "-i", "3", fname) == 0 |
| 305 | assert cs.main(fname) == 0 |
| 306 | assert fname.read_text() == "awkward\n" |
| 307 | fname.write_text("ackward\n") |
| 308 | assert cs.main(fname) == 1 |
| 309 | with FakeStdin("x\n1\n"): # blank input -> nothing |
| 310 | result = cs.main("-w", "-i", "3", fname, std=True) |
| 311 | assert isinstance(result, tuple) |
| 312 | code, stdout, _ = result |