Deny creating files as a result of test runs. (#10253)

A test file was accidentally dropping a `results.json` file in the
current working directory as a result of running `make test`.

This is undesirable, since we don't want to risk accidentally adding
stray files into the repo if we run tests locally and then do `git add
.` without inspecting the file list very closely.
This commit is contained in:
Predrag Gruevski 2023-09-06 11:15:16 -04:00 committed by GitHub
parent 8d5bf1fb20
commit 82d5d4d0ae
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
6 changed files with 63 additions and 1 deletions

View File

@ -79,3 +79,15 @@ jobs:
- name: Run pydantic compatibility tests - name: Run pydantic compatibility tests
shell: bash shell: bash
run: make test run: make test
- name: Ensure the tests did not create any additional files
shell: bash
run: |
set -eu
STATUS="$(git status)"
echo "$STATUS"
# grep will exit non-zero if the target message isn't found,
# and `set -e` above will cause the step to fail.
echo "$STATUS" | grep 'nothing to commit, working tree clean'

View File

@ -43,3 +43,15 @@ jobs:
- name: Run core tests - name: Run core tests
shell: bash shell: bash
run: make test run: make test
- name: Ensure the tests did not create any additional files
shell: bash
run: |
set -eu
STATUS="$(git status)"
echo "$STATUS"
# grep will exit non-zero if the target message isn't found,
# and `set -e` above will cause the step to fail.
echo "$STATUS" | grep 'nothing to commit, working tree clean'

View File

@ -83,3 +83,15 @@ jobs:
- name: Run extended tests - name: Run extended tests
run: make extended_tests run: make extended_tests
- name: Ensure the tests did not create any additional files
shell: bash
run: |
set -eu
STATUS="$(git status)"
echo "$STATUS"
# grep will exit non-zero if the target message isn't found,
# and `set -e` above will cause the step to fail.
echo "$STATUS" | grep 'nothing to commit, working tree clean'

View File

@ -115,3 +115,15 @@ jobs:
- name: Run extended tests - name: Run extended tests
run: make extended_tests run: make extended_tests
- name: Ensure the tests did not create any additional files
shell: bash
run: |
set -eu
STATUS="$(git status)"
echo "$STATUS"
# grep will exit non-zero if the target message isn't found,
# and `set -e` above will cause the step to fail.
echo "$STATUS" | grep 'nothing to commit, working tree clean'

View File

@ -47,3 +47,15 @@ jobs:
OPENAI_API_KEY: ${{ secrets.OPENAI_API_KEY }} OPENAI_API_KEY: ${{ secrets.OPENAI_API_KEY }}
run: | run: |
make scheduled_tests make scheduled_tests
- name: Ensure the tests did not create any additional files
shell: bash
run: |
set -eu
STATUS="$(git status)"
echo "$STATUS"
# grep will exit non-zero if the target message isn't found,
# and `set -e` above will cause the step to fail.
echo "$STATUS" | grep 'nothing to commit, working tree clean'

View File

@ -1,6 +1,7 @@
import json import json
import logging import logging
import os import os
import tempfile
import zipfile import zipfile
from pathlib import Path from pathlib import Path
from typing import Iterator, List, Union from typing import Iterator, List, Union
@ -136,7 +137,8 @@ class TelegramChatLoader(chat_loaders.BaseChatLoader):
with zipfile.ZipFile(path) as zip_file: with zipfile.ZipFile(path) as zip_file:
for file in zip_file.namelist(): for file in zip_file.namelist():
if file.endswith((".html", ".json")): if file.endswith((".html", ".json")):
yield zip_file.extract(file) with tempfile.TemporaryDirectory() as temp_dir:
yield zip_file.extract(file, path=temp_dir)
def lazy_load(self) -> Iterator[chat_loaders.ChatSession]: def lazy_load(self) -> Iterator[chat_loaders.ChatSession]:
"""Lazy load the messages from the chat file and yield them """Lazy load the messages from the chat file and yield them