Skip to content

Commit 4bf829a

Browse files
committed
Merge remote-tracking branch 'upstream/main' into feat/gherkinmigration
Signed-off-by: Simon Schrottner <[email protected]>
2 parents 6d86a96 + 905b42b commit 4bf829a

File tree

23 files changed

+252
-224
lines changed

23 files changed

+252
-224
lines changed

.gitmodules

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,7 @@
55
[submodule "providers/openfeature-provider-flagd/test-harness"]
66
path = providers/openfeature-provider-flagd/openfeature/test-harness
77
url = [email protected]:open-feature/flagd-testbed.git
8-
branch = v0.5.20
8+
branch = v0.5.21
99
[submodule "providers/openfeature-provider-flagd/spec"]
1010
path = providers/openfeature-provider-flagd/openfeature/spec
1111
url = https://github.com/open-feature/spec

.pre-commit-config.yaml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
default_stages: [commit]
22
repos:
33
- repo: https://github.com/astral-sh/ruff-pre-commit
4-
rev: v0.8.4
4+
rev: v0.8.6
55
hooks:
66
- id: ruff
77
args: [--fix]

providers/openfeature-provider-flagd/pyproject.toml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -40,7 +40,7 @@ dependencies = [
4040
"pytest-bdd",
4141
"testcontainers",
4242
"asserts",
43-
"grpcio-health-checking==1.68.1",
43+
"grpcio-health-checking==1.69.0",
4444
]
4545
pre-install-commands = [
4646
"hatch build",

providers/openfeature-provider-flagd/src/openfeature/contrib/provider/flagd/config.py

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,7 @@
77
class ResolverType(Enum):
88
RPC = "rpc"
99
IN_PROCESS = "in-process"
10+
FILE = "file"
1011

1112

1213
class CacheType(Enum):
@@ -158,6 +159,17 @@ def __init__( # noqa: PLR0913
158159
else offline_flag_source_path
159160
)
160161

162+
if (
163+
self.offline_flag_source_path is not None
164+
and self.resolver is ResolverType.IN_PROCESS
165+
):
166+
self.resolver = ResolverType.FILE
167+
168+
if self.resolver is ResolverType.FILE and self.offline_flag_source_path is None:
169+
raise AttributeError(
170+
"Resolver Type 'FILE' requires a offlineFlagSourcePath"
171+
)
172+
161173
self.offline_poll_interval_ms: int = (
162174
int(
163175
env_or_default(

providers/openfeature-provider-flagd/src/openfeature/contrib/provider/flagd/provider.py

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -106,7 +106,10 @@ def setup_resolver(self) -> AbstractResolver:
106106
self.emit_provider_stale,
107107
self.emit_provider_configuration_changed,
108108
)
109-
elif self.config.resolver == ResolverType.IN_PROCESS:
109+
elif (
110+
self.config.resolver == ResolverType.IN_PROCESS
111+
or self.config.resolver == ResolverType.FILE
112+
):
110113
return InProcessResolver(self.config, self)
111114
else:
112115
raise ValueError(

providers/openfeature-provider-flagd/tests/e2e/conftest.py

Lines changed: 0 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,3 @@
77
from tests.e2e.step.provider_steps import * # noqa: F403
88

99
JsonPrimitive = typing.Union[str, bool, float, int]
10-
11-
TEST_HARNESS_PATH = "../../openfeature/test-harness"
12-
SPEC_PATH = "../../openfeature/spec"
Lines changed: 52 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,52 @@
1+
import tempfile
2+
import threading
3+
4+
import pytest
5+
6+
from openfeature.contrib.provider.flagd.config import ResolverType
7+
from tests.e2e.step.provider_steps import changefile, write_test_file
8+
from tests.e2e.testfilter import TestFilter
9+
10+
# from tests.e2e.step.config_steps import *
11+
# from tests.e2e.step.event_steps import *
12+
# from tests.e2e.step.provider_steps import *
13+
14+
resolver = ResolverType.FILE
15+
feature_list = {
16+
"~targetURI",
17+
"~customCert",
18+
"~unixsocket",
19+
"~events",
20+
"~sync",
21+
"~caching",
22+
"~grace",
23+
}
24+
25+
26+
def pytest_collection_modifyitems(config, items):
27+
test_filter = TestFilter(
28+
config, feature_list=feature_list, resolver=resolver.value, base_path=__file__
29+
)
30+
test_filter.filter_items(items)
31+
32+
33+
@pytest.fixture()
34+
def resolver_type() -> ResolverType:
35+
return resolver
36+
37+
38+
@pytest.fixture(params=["json", "yaml"], scope="module", autouse=True)
39+
def file_name(request, all_flags):
40+
extension = request.param
41+
with tempfile.NamedTemporaryFile(
42+
"w", delete=False, suffix="." + extension
43+
) as outfile:
44+
write_test_file(outfile, all_flags)
45+
46+
update_thread = threading.Thread(
47+
target=changefile, args=("changing-flag", all_flags, outfile)
48+
)
49+
update_thread.daemon = True # Makes the thread exit when the main program exits
50+
update_thread.start()
51+
yield outfile
52+
return outfile
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,9 @@
11
# as soon as we support all the features, we can actually remove this limitation to not run on Python 3.8
22
# Python 3.8 does not fully support tagging, hence that it will run all cases
3-
# if sys.version_info >= (3, 9):
4-
# scenarios(f"{TEST_HARNESS_PATH}/gherkin")
3+
import sys
54

5+
from e2e.paths import TEST_HARNESS_PATH
6+
from pytest_bdd import scenarios
7+
8+
if sys.version_info >= (3, 9):
9+
scenarios(f"{TEST_HARNESS_PATH}/gherkin")

0 commit comments

Comments
 (0)