Skip to content

Commit

Permalink
Test to show the default loader can only load obj in python path
Browse files Browse the repository at this point in the history
  • Loading branch information
unkcpz committed Jan 22, 2025
1 parent 6828368 commit 3105847
Showing 1 changed file with 66 additions and 19 deletions.
85 changes: 66 additions & 19 deletions tests/test_process_states.py
Original file line number Diff line number Diff line change
@@ -1,3 +1,4 @@
# -*- coding: utf-8 -*-
from typing import Any
import pytest

Expand Down Expand Up @@ -31,45 +32,63 @@ def proc() -> 'StateMachine':
return DummyProcess()


def test_create_savable(proc: StateMachine):
state = Created(proc, run_fn=lambda: None)
def test_create_savable(proc: DummyProcess):
state = Created(proc, run_fn=proc.run)
assert isinstance(state, Savable)


def test_running_savable(proc: StateMachine):
state = Running(proc, run_fn=lambda: None)
def test_running_savable(proc: DummyProcess):
state = Running(proc, run_fn=proc.run)
assert isinstance(state, Savable)

ctx = LoadSaveContext(process=proc)
saved_state = state.save()
loaded_state = load(saved_state=saved_state, load_context=ctx)
saved_state2 = loaded_state.save()

assert saved_state == saved_state2

def test_waiting_savable(proc: StateMachine):
state = Waiting(proc, done_callback=lambda: None)

def test_waiting_savable(proc: DummyProcess):
state = Waiting(proc, done_callback=proc.run)
assert isinstance(state, Savable)

ctx = LoadSaveContext(process=proc)
saved_state = state.save()
loaded_state = load(saved_state=saved_state, load_context=ctx)
saved_state2 = loaded_state.save()

assert saved_state == saved_state2


def test_excepted_savable():
state = Excepted(exception=ValueError('dummy'))
assert isinstance(state, Savable)

ctx = LoadSaveContext(process=proc)
saved_state = state.save()
loaded_state = load(saved_state=saved_state, load_context=ctx)
saved_state2 = loaded_state.save()

assert saved_state == saved_state2


def test_finished_savable():
state = Finished(result='done', successful=True)
assert isinstance(state, Savable)

ctx = LoadSaveContext(process=proc)
saved_state = state.save()
loaded_state = load(saved_state=saved_state, load_context=ctx)
saved_state2 = loaded_state.save()

assert saved_state == saved_state2


def test_killed_savable():
state = Killed(msg=MessageBuilder.kill('kill it'))
assert isinstance(state, Savable)


def test_subclass_command_savable():
class DummyCmd(Command):
pass

assert isinstance(DummyCmd(), Savable)


def test_create_save_load(proc: DummyProcess):
state = Created(proc, run_fn=proc.run)
ctx = LoadSaveContext(process=proc)
saved_state = state.save()
loaded_state = load(saved_state=saved_state, load_context=ctx)
Expand All @@ -78,6 +97,34 @@ def test_create_save_load(proc: DummyProcess):
assert saved_state == saved_state2


def test_running_save_load(proc: StateMachine):
state = Running(proc, run_fn=lambda: None)
assert isinstance(state, Savable)
class DummyCmd(Command):
pass


def test_subclass_command_savable():
cmd = DummyCmd()
assert isinstance(cmd, Savable)

ctx = LoadSaveContext(process=proc)
saved = cmd.save()
loaded = load(saved_state=saved, load_context=ctx)
saved2 = loaded.save()

assert saved == saved2


# FIXME: using pickle loader this should be able to be solved
@pytest.mark.xfail(reason='the default loader can only load obj from python path')
def test_subclass_command_savable_xfail():
class DummyCmd(Command):
pass

cmd = DummyCmd()
assert isinstance(cmd, Savable)

ctx = LoadSaveContext(process=proc)
saved = cmd.save()
loaded = load(saved_state=saved, load_context=ctx)
saved2 = loaded.save()

assert saved == saved2

0 comments on commit 3105847

Please sign in to comment.