Ejemplo n.º 1
0
def test_results(mocker, capsys):
    ep = mocker.Mock()
    ep.name = "testuser"
    worker = ep.load.return_value = fake_entry_point
    # worker = ep.load.return_value = lambda year, day, data: ("answer1", "wrong")  # TODO: why doesn't that work?
    mocker.patch("pkg_resources.iter_entry_points", return_value=iter([ep]))
    fake_puzzle = mocker.MagicMock()
    fake_puzzle.year = 2015
    fake_puzzle.day = 1
    fake_puzzle.input_data = "testinput"
    fake_puzzle.answer_a = "answer1"
    fake_puzzle.answer_b = "answer2"
    fake_puzzle.title = "The Puzzle Title"
    mocker.patch("aocd.runner.Puzzle", return_value=fake_puzzle)
    run_for(
        plugins=["testuser"],
        years=[2015],
        days=[1],
        datasets={"testdataset": "testtoken"},
    )
    ep.load.assert_called_once_with()
    out, err = capsys.readouterr()
    txt = "2015/1  - The Puzzle Title                           testuser/testdataset"
    assert txt in out
    assert "part a: answer1 " in out
    assert "part b: wrong (expected: answer2)" in out
    assert "✔" in out
Ejemplo n.º 2
0
def test_run_and_autosubmit(aocd_dir, mocker, capsys, requests_mock):
    title_path = aocd_dir / "titles"
    title_path.mkdir()
    title_file = title_path / "2015_01.txt"
    title_file.write_text("The Puzzle Title")
    input_path = aocd_dir / "thetesttoken" / "2015_01_input.txt"
    input_path.write_text("testinput")
    answer_path = aocd_dir / "thetesttoken" / "2015_01a_answer.txt"
    answer_path.write_text("answer1")
    requests_mock.get(url="https://adventofcode.com/2015/day/1")
    requests_mock.post(
        url="https://adventofcode.com/2015/day/1/answer",
        text="<article>That's not the right answer</article>",
    )
    ep = mocker.Mock()
    ep.name = "testuser"
    ep.load.return_value = fake_entry_point
    mocker.patch("pkg_resources.iter_entry_points", return_value=iter([ep]))
    run_for(
        plugins=["testuser"],
        years=[2015],
        days=[1],
        datasets={"default": "thetesttoken"},
    )
    out, err = capsys.readouterr()
    assert "part a: answer1 " in out
    assert "part b: wrong (correct answer unknown)" in out
Ejemplo n.º 3
0
def test_results_xmas(mocker, capsys):
    ep = mocker.Mock()
    ep.name = "testuser"
    ep.load.return_value = xmas_entry_point
    mocker.patch("pkg_resources.iter_entry_points", return_value=iter([ep]))
    fake_puzzle = mocker.MagicMock(
        year=2015,
        day=25,
        input_data="testinput",
        answer_a="answer1",
        answer_b="not_used",
        title="The Puzzle Title",
    )
    mocker.patch("aocd.runner.Puzzle", return_value=fake_puzzle)
    run_for(
        plugins=["testuser"],
        years=[2015],
        days=[25],
        datasets={"testdataset": "testtoken"},
    )
    ep.load.assert_called_once_with()
    out, err = capsys.readouterr()
    txt = "2015/25 - The Puzzle Title                           testuser/testdataset"
    assert txt in out
    assert "part a: answer1 " in out
    assert "part b" not in out
    assert "✔" in out
Ejemplo n.º 4
0
def test_day_out_of_range(mocker, capsys, freezer):
    freezer.move_to("2018-12-01 12:00:00Z")
    ep = mocker.Mock()
    ep.name = "testuser"
    ep.load.return_value = fake_entry_point
    mocker.patch("pkg_resources.iter_entry_points", return_value=iter([ep]))
    run_for(
        plugins=["testuser"],
        years=[2018],
        days=[27],
        datasets={"default": "thetesttoken"},
    )
    out, err = capsys.readouterr()
    assert out == err == ""
Ejemplo n.º 5
0
def test_run_error(aocd_dir, mocker, capsys):
    title_path = aocd_dir / "titles"
    title_path.mkdir()
    title_file = title_path / "2018_25.txt"
    title_file.write_text("The Puzzle Title")
    input_path = aocd_dir / "thetesttoken" / "2018_25_input.txt"
    input_path.write_text("someinput")
    answer_path = aocd_dir / "thetesttoken" / "2018_25a_answer.txt"
    answer_path.write_text("answ")
    ep = mocker.Mock()
    ep.name = "testuser"
    ep.load.return_value = bugged_entry_point
    mocker.patch("pkg_resources.iter_entry_points", return_value=iter([ep]))
    run_for(
        plugins=["testuser"],
        years=[2018],
        days=[25],
        datasets={"default": "thetesttoken"},
    )
    out, err = capsys.readouterr()
    txt = "Exception(123, 456)"
    assert "✖" in out
    assert txt in out
    assert "part b" not in out  # because it's 25 dec, no part b puzzle
Ejemplo n.º 6
0
def test_nothing_to_do():
    run_for(plugins=[], years=[], days=[], datasets=[])