async def test_replay_saver_readonly_file(standard_saver_args, mock_replay_headers, outside_source_stream, tmpdir): set_example_stream_data(outside_source_stream, mock_replay_headers) rfile = str(tmpdir.join("replay")) os.chmod(rfile, stat.S_IRUSR) saver = ReplaySaver(*standard_saver_args) with pytest.raises(BookkeepingError): await saver.save_replay(1111, outside_source_stream)
async def test_replay_saver_null_team(standard_saver_args, mock_replay_headers, outside_source_stream, tmpdir): set_example_stream_data(outside_source_stream, mock_replay_headers) mock_queries = standard_saver_args[1] mock_queries.get_teams_in_game.return_value = { 1: ["user1"], 2: ["user2"], None: ["SomeGuy"] } saver = ReplaySaver(*standard_saver_args) await saver.save_replay(1111, outside_source_stream) rfile = str(tmpdir.join("replay")) head, rep = unpack_replay_format_2(open(rfile, "rb").read()) assert head["teams"]["null"] == ["SomeGuy"]
async def test_replay_saver_save_replay(standard_saver_args, mock_replay_headers, outside_source_stream, tmpdir): set_example_stream_data(outside_source_stream, mock_replay_headers) saver = ReplaySaver(*standard_saver_args) await saver.save_replay(1111, outside_source_stream) rfile = str(tmpdir.join("replay")) head, rep = unpack_replay(open(rfile, "rb").read()) assert type(head) is dict assert head['uid'] == 1111 assert head['teams'] == {"1": ["user1"], "2": ["user2"]} assert head['featured_mod_versions'] == def_mod_versions for item in def_game_stats: assert head[item] == def_game_stats[item] assert rep == example_replay.header_data + b"bar"
async def test_replay_saver_no_header(standard_saver_args, outside_source_stream, tmpdir): outside_source_stream.finish() saver = ReplaySaver(*standard_saver_args) with pytest.raises(BookkeepingError): await saver.save_replay(1111, outside_source_stream)
def build(cls, database, config): queries = ReplayDatabaseQueries(database) saver = ReplaySaver.build(queries, config) analyzer = ReplayAnalyzer() return cls(queries, saver, analyzer)
def build(cls, database, **config): queries = ReplayDatabaseQueries(database) saver = ReplaySaver.build(queries, **config) return cls(queries, saver)