From d62842f6611f957c7dd9ec181e8b1a8072d45732 Mon Sep 17 00:00:00 2001 From: Matthew Keeler Date: Fri, 29 Aug 2025 15:57:57 -0400 Subject: [PATCH] ignore: Battling test flakiness --- .github/workflows/ci.yml | 190 +++++++++++----------- Makefile | 2 +- ldclient/testing/test_file_data_source.py | 2 + 3 files changed, 98 insertions(+), 96 deletions(-) diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 7986892a..69b71b0d 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -17,21 +17,21 @@ jobs: strategy: fail-fast: false matrix: - python-version: ["3.9", "3.10", "3.11", "3.12", "3.13"] - - services: - redis: - image: redis - ports: - - 6379:6379 - dynamodb: - image: amazon/dynamodb-local - ports: - - 8000:8000 - consul: - image: hashicorp/consul - ports: - - 8500:8500 + python-version: ["3.9"] + + # services: + # redis: + # image: redis + # ports: + # - 6379:6379 + # dynamodb: + # image: amazon/dynamodb-local + # ports: + # - 8000:8000 + # consul: + # image: hashicorp/consul + # ports: + # - 8500:8500 steps: - uses: actions/checkout@v4 @@ -43,85 +43,85 @@ jobs: - name: Install poetry uses: abatilo/actions-poetry@7b6d33e44b4f08d7021a1dee3c044e9c253d6439 - - uses: ./.github/actions/build - - uses: ./.github/actions/build-docs - - - name: Run tests - run: make test-all - - - name: Verify typehints - run: make lint - - # - # SDK contract tests - # - - - name: install contract test dependencies - run: make install-contract-tests-deps - - - name: start contract test service - run: make start-contract-test-service-bg - - - uses: launchdarkly/gh-actions/actions/contract-tests@contract-tests-v1.0.2 - with: - test_service_port: 9000 - token: ${{ secrets.GITHUB_TOKEN }} - - windows: - runs-on: windows-latest - - defaults: - run: - shell: powershell - - strategy: - fail-fast: false - matrix: - python-version: ["3.9", "3.10", "3.11", "3.12", "3.13"] - - steps: - - uses: actions/checkout@v4 - - name: Set up Python ${{ matrix.python-version }} - uses: actions/setup-python@v5 - with: - python-version: ${{ matrix.python-version }} - - - name: Setup DynamoDB - run: | - $ProgressPreference = "SilentlyContinue" - iwr -outf dynamo.zip https://s3-us-west-2.amazonaws.com/dynamodb-local/dynamodb_local_latest.zip - mkdir dynamo - Expand-Archive -Path dynamo.zip -DestinationPath dynamo - cd dynamo - cmd /c "START /b java -Djava.library.path=./DynamoDBLocal_lib -jar ./DynamoDBLocal.jar" - - - name: Setup Consul - run: | - $ProgressPreference = "SilentlyContinue" - iwr -outf consul.zip https://releases.hashicorp.com/consul/1.4.2/consul_1.4.2_windows_amd64.zip - mkdir consul - Expand-Archive -Path consul.zip -DestinationPath consul - cd consul - sc.exe create "Consul" binPath="$(Get-Location)/consul.exe agent -dev" - sc.exe start "Consul" - - - name: Setup Redis - run: | - $ProgressPreference = "SilentlyContinue" - iwr -outf redis.zip https://github.com/MicrosoftArchive/redis/releases/download/win-3.0.504/Redis-x64-3.0.504.zip - mkdir redis - Expand-Archive -Path redis.zip -DestinationPath redis - cd redis - ./redis-server --service-install - ./redis-server --service-start - Start-Sleep -s 5 - ./redis-cli ping - - - name: Install poetry - uses: abatilo/actions-poetry@7b6d33e44b4f08d7021a1dee3c044e9c253d6439 - - - name: Install requirements - run: poetry install --all-extras + # - uses: ./.github/actions/build + # - uses: ./.github/actions/build-docs - name: Run tests - run: make test-all + run: make test + + # - name: Verify typehints + # run: make lint + # + # # + # # SDK contract tests + # # + # + # - name: install contract test dependencies + # run: make install-contract-tests-deps + # + # - name: start contract test service + # run: make start-contract-test-service-bg + # + # - uses: launchdarkly/gh-actions/actions/contract-tests@contract-tests-v1.0.2 + # with: + # test_service_port: 9000 + # token: ${{ secrets.GITHUB_TOKEN }} + + # windows: + # runs-on: windows-latest + # + # defaults: + # run: + # shell: powershell + # + # strategy: + # fail-fast: false + # matrix: + # python-version: ["3.9", "3.10", "3.11", "3.12", "3.13"] + # + # steps: + # - uses: actions/checkout@v4 + # - name: Set up Python ${{ matrix.python-version }} + # uses: actions/setup-python@v5 + # with: + # python-version: ${{ matrix.python-version }} + # + # - name: Setup DynamoDB + # run: | + # $ProgressPreference = "SilentlyContinue" + # iwr -outf dynamo.zip https://s3-us-west-2.amazonaws.com/dynamodb-local/dynamodb_local_latest.zip + # mkdir dynamo + # Expand-Archive -Path dynamo.zip -DestinationPath dynamo + # cd dynamo + # cmd /c "START /b java -Djava.library.path=./DynamoDBLocal_lib -jar ./DynamoDBLocal.jar" + # + # - name: Setup Consul + # run: | + # $ProgressPreference = "SilentlyContinue" + # iwr -outf consul.zip https://releases.hashicorp.com/consul/1.4.2/consul_1.4.2_windows_amd64.zip + # mkdir consul + # Expand-Archive -Path consul.zip -DestinationPath consul + # cd consul + # sc.exe create "Consul" binPath="$(Get-Location)/consul.exe agent -dev" + # sc.exe start "Consul" + # + # - name: Setup Redis + # run: | + # $ProgressPreference = "SilentlyContinue" + # iwr -outf redis.zip https://github.com/MicrosoftArchive/redis/releases/download/win-3.0.504/Redis-x64-3.0.504.zip + # mkdir redis + # Expand-Archive -Path redis.zip -DestinationPath redis + # cd redis + # ./redis-server --service-install + # ./redis-server --service-start + # Start-Sleep -s 5 + # ./redis-cli ping + # + # - name: Install poetry + # uses: abatilo/actions-poetry@7b6d33e44b4f08d7021a1dee3c044e9c253d6439 + # + # - name: Install requirements + # run: poetry install --all-extras + # + # - name: Run tests + # run: make test-all diff --git a/Makefile b/Makefile index 9ee4463d..94232da6 100644 --- a/Makefile +++ b/Makefile @@ -28,7 +28,7 @@ install: .PHONY: test test: #! Run unit tests test: install - @LD_SKIP_DATABASE_TESTS=1 poetry run pytest $(PYTEST_FLAGS) + @LD_SKIP_DATABASE_TESTS=1 poetry run pytest $(PYTEST_FLAGS) ldclient/testing/test_file_data_source.py .PHONY: test-all test-all: #! Run unit tests (including database integrations) diff --git a/ldclient/testing/test_file_data_source.py b/ldclient/testing/test_file_data_source.py index 62646d9e..1041a61d 100644 --- a/ldclient/testing/test_file_data_source.py +++ b/ldclient/testing/test_file_data_source.py @@ -127,6 +127,8 @@ def make_temp_file(content): def replace_file(path, content): with open(path, 'w') as f: f.write(content) + f.flush() + os.fsync(f.fileno()) def test_does_not_load_data_prior_to_start():