예제 #1
0
    def __init__(self, kind):
        def custom_deps(src, dst):
            return (src[0] == 'p0' and src[1] == 'e0' and dst[0] == 'p1'
                    and dst[1] == 'e1')

        kindspec = {
            'fully':
            udeps.fully,
            'by_part':
            udeps.by_part,
            'by_case':
            udeps.by_case,
            'any':
            udeps.any(udeps.source(udeps.part_is('p0')),
                      udeps.dest(udeps.env_is('e1'))),
            'all':
            udeps.all(udeps.part_is('p0'), udeps.dest(udeps.env_is('e0'))),
            'custom':
            custom_deps,
            'nodeps':
            lambda s, d: False,
        }
        self.valid_systems = ['sys0:p0', 'sys0:p1']
        self.valid_prog_environs = ['e0', 'e1']
        self.executable = 'echo'
        self.executable_opts = [self.name]
        self.sanity_patterns = sn.assert_found(self.name, self.stdout)
        if kind == 'default':
            self.depends_on('Test0')
        else:
            self.depends_on('Test0', kindspec[kind])
예제 #2
0
def test_dependecies_how_functions_undoc():
    t0_cases = [(p, e) for p in ['p0', 'p1'] for e in ['e0', 'e1', 'e2']]
    t1_cases = [(p, e) for p in ['p0', 'p1', 'p2'] for e in ['e0', 'e1']]

    how = udeps.part_is('p0')
    deps = {(t0, t1) for t0 in t0_cases for t1 in t1_cases if how(t0, t1)}
    assert deps == {(t0, t1)
                    for t0 in t0_cases for t1 in t1_cases
                    if (t0[0] == 'p0' and t1[0] == 'p0')}
    assert len(deps) == 6

    how = udeps.source(udeps.part_is('p0'))
    deps = {(t0, t1) for t0 in t0_cases for t1 in t1_cases if how(t0, t1)}
    assert deps == {(t0, t1)
                    for t0 in t0_cases for t1 in t1_cases if t0[0] == 'p0'}
    assert len(deps) == 18

    how = udeps.dest(udeps.part_is('p0'))
    deps = {(t0, t1) for t0 in t0_cases for t1 in t1_cases if how(t0, t1)}
    assert deps == {(t0, t1)
                    for t0 in t0_cases for t1 in t1_cases if t1[0] == 'p0'}
    assert len(deps) == 12

    how = udeps.env_is('e0')
    deps = {(t0, t1) for t0 in t0_cases for t1 in t1_cases if how(t0, t1)}
    assert deps == {(t0, t1)
                    for t0 in t0_cases for t1 in t1_cases
                    if (t0[1] == 'e0' and t1[1] == 'e0')}
    assert len(deps) == 6

    how = udeps.source(udeps.env_is('e0'))
    deps = {(t0, t1) for t0 in t0_cases for t1 in t1_cases if how(t0, t1)}
    assert deps == {(t0, t1)
                    for t0 in t0_cases for t1 in t1_cases if t0[1] == 'e0'}
    assert len(deps) == 12

    how = udeps.dest(udeps.env_is('e0'))
    deps = {(t0, t1) for t0 in t0_cases for t1 in t1_cases if how(t0, t1)}
    assert deps == {(t0, t1)
                    for t0 in t0_cases for t1 in t1_cases if t1[1] == 'e0'}
    assert len(deps) == 18

    how = udeps.any(udeps.source(udeps.part_is('p0')),
                    udeps.dest(udeps.env_is('e1')))
    deps = {(t0, t1) for t0 in t0_cases for t1 in t1_cases if how(t0, t1)}
    assert deps == {(t0, t1)
                    for t0 in t0_cases for t1 in t1_cases
                    if (t0[0] == 'p0' or t1[1] == 'e1')}
    assert len(deps) == 27

    how = udeps.all(udeps.source(udeps.part_is('p0')),
                    udeps.dest(udeps.env_is('e1')))
    deps = {(t0, t1) for t0 in t0_cases for t1 in t1_cases if how(t0, t1)}
    assert deps == {(t0, t1)
                    for t0 in t0_cases for t1 in t1_cases
                    if (t0[0] == 'p0' and t1[1] == 'e1')}
    assert len(deps) == 9
예제 #3
0
def test_cyclic_deps_by_env(make_test, default_exec_ctx):
    t0 = make_test('t0')
    t1 = make_test('t1')
    t1.depends_on('t0', udeps.env_is('e0'))
    t0.depends_on('t1', udeps.env_is('e1'))
    deps, _ = dependencies.build_deps(executors.generate_testcases([t0, t1]))
    with pytest.raises(DependencyError) as exc_info:
        dependencies.validate_deps(deps)

    assert ('t1->t0->t1' in str(exc_info.value)
            or 't0->t1->t0' in str(exc_info.value))