mirrored from https://chromium.googlesource.com/infra/luci/recipes-py
-
Notifications
You must be signed in to change notification settings - Fork 17
/
non_deferred.py
56 lines (42 loc) · 1.38 KB
/
non_deferred.py
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
# Copyright 2023 The LUCI Authors. All rights reserved.
# Use of this source code is governed under the Apache License, Version 2.0
# that can be found in the LICENSE file.
import contextlib
from typing import Generator
from PB.recipe_modules.recipe_engine.defer.tests import (properties as
properties_pb2)
from recipe_engine import post_process, recipe_test_api, step_data
DEPS = [
'context',
'defer',
'properties',
'step',
]
PROPERTIES = properties_pb2.NonDeferredInputProps
class CollectTestError(Exception):
pass
def RunSteps(api, props):
def keyerror():
raise KeyError()
def valueerror():
raise ValueError()
with api.defer.context(collect_step_name='collect') as defer:
if props.fail:
defer(keyerror)
defer(valueerror)
raise OSError
def GenTests(api) -> Generator[recipe_test_api.TestData, None, None]:
yield api.test(
'pass',
api.properties(properties_pb2.NonDeferredInputProps(fail=False)),
api.expect_exception('OSError'),
api.post_process(post_process.DropExpectation),
)
yield api.test(
'fail',
api.properties(properties_pb2.NonDeferredInputProps(fail=True)),
api.expect_exception('KeyError'),
api.expect_exception('OSError'),
api.expect_exception('ValueError'),
api.post_process(post_process.DropExpectation),
)