コード例 #1
0
def test_outdated_data_simple_dependency(tmp_directory):
    """ A -> B
    """
    dag = DAG()

    fa = Path('a.txt')
    fb = Path('b.txt')

    ta = PythonCallable(touch_root, File(fa), dag, 'ta')
    tb = PythonCallable(touch, File(fb), dag, 'tb')

    ta >> tb

    ta.render()
    tb.render()

    assert not ta.product.exists()
    assert not tb.product.exists()
    assert ta.product._is_outdated()
    assert tb.product._is_outdated()

    dag.build()

    dag._clear_metadata()

    # they both exist now
    assert ta.product.exists()
    assert tb.product.exists()

    # and arent outdated...
    assert not ta.product._is_outdated()
    assert not tb.product._is_outdated()

    # let's make b outdated
    ta.build(force=True)

    dag._clear_metadata()

    assert not ta.product._is_outdated()
    assert tb.product._is_outdated()
コード例 #2
0
ファイル: test_render.py プロジェクト: israelrico007/ploomber
def test_dag_render_step_by_step():
    dag = DAG()

    t1 = PythonCallable(touch_root, File('t1.txt'), dag, name='t1')
    t21 = PythonCallable(touch, File('t21.txt'), dag, name='t21')
    t22 = PythonCallable(touch, File('t22.txt'), dag, name='t22')
    t3 = PythonCallable(touch, File('t3.txt'), dag, name='t3')

    t1 >> t21
    t1 >> t22

    (t21 + t22) >> t3

    assert (set(t.exec_status
                for t in dag.values()) == {TaskStatus.WaitingRender})

    t1.render()

    assert t1.exec_status == TaskStatus.WaitingExecution
    assert t21.exec_status == TaskStatus.WaitingRender
    assert t22.exec_status == TaskStatus.WaitingRender
    assert t3.exec_status == TaskStatus.WaitingRender

    t21.render()

    assert t1.exec_status == TaskStatus.WaitingExecution
    assert t21.exec_status == TaskStatus.WaitingUpstream
    assert t22.exec_status == TaskStatus.WaitingRender
    assert t3.exec_status == TaskStatus.WaitingRender

    t22.render()

    assert t1.exec_status == TaskStatus.WaitingExecution
    assert t21.exec_status == TaskStatus.WaitingUpstream
    assert t22.exec_status == TaskStatus.WaitingUpstream
    assert t3.exec_status == TaskStatus.WaitingRender

    t3.render()

    assert t1.exec_status == TaskStatus.WaitingExecution
    assert t21.exec_status == TaskStatus.WaitingUpstream
    assert t22.exec_status == TaskStatus.WaitingUpstream
    assert t3.exec_status == TaskStatus.WaitingUpstream