From 248f61df2b2d8bdc7b7a03f1f5bdc8e406347ce8 Mon Sep 17 00:00:00 2001 From: Ryan Barrett Date: Tue, 25 Jul 2023 13:08:52 -0700 Subject: [PATCH] update CI to handle google cloud, other misc * run datastore emulator * run flake8 to detect aliased test names * pin typing-extensions to <4.6 for compatibility with multiformats * use anonymous creds in ndb client https://github.com/hashberg-io/typing-validation/issues/1 --- .circleci/config.yml | 21 +++++++++++++++++++-- arroba/tests/test_datastore_storage.py | 3 ++- pyproject.toml | 3 --- 3 files changed, 21 insertions(+), 6 deletions(-) diff --git a/.circleci/config.yml b/.circleci/config.yml index 708f7e8..32f7056 100644 --- a/.circleci/config.yml +++ b/.circleci/config.yml @@ -16,21 +16,38 @@ jobs: keys: - venv-1-{{ .Branch }} + - run: + name: Base dependencies + command: | + # google-cloud-sdk: https://cloud.google.com/sdk/docs/install#deb + echo "deb [signed-by=/usr/share/keyrings/cloud.google.gpg] https://packages.cloud.google.com/apt cloud-sdk main" | sudo tee -a /etc/apt/sources.list.d/google-cloud-sdk.list + curl https://packages.cloud.google.com/apt/doc/apt-key.gpg | sudo apt-key --keyring /usr/share/keyrings/cloud.google.gpg add - + sudo apt-get update + sudo apt-get install -y apt-transport-https ca-certificates gnupg google-cloud-sdk google-cloud-sdk-datastore-emulator default-jre + git clone --depth=1 https://github.com/bluesky-social/atproto.git ../atproto + - run: name: Python dependencies command: | pip install -U pip pip -V - pip install -U .[datastore,tests] - pip install coverage coveralls + pip install -U .[datastore,tests] 'typing-extensions<4.6.0' + pip install coverage coveralls flake8 - run: name: Python tests command: | + CLOUDSDK_CORE_PROJECT=bridgy-federated gcloud beta emulators datastore start --no-store-on-disk --use-firestore-in-datastore-mode --host-port=localhost:8089 < /dev/null >& /dev/null & + sleep 2s python -m coverage run --source=. --omit=test_\* -m unittest discover -v python -m coverage html -d /tmp/coverage_html if [ "$COVERALLS_REPO_TOKEN" != "" ]; then python -m coveralls || true; fi + # check for unintentionally overridden test methods + # https://flake8.pycqa.org/en/latest/user/error-codes.html#error-codes + # https://flake8.pycqa.org/en/latest/user/options.html#cmdoption-flake8-select + flake8 --select=F811 tests/test_*.py + - save_cache: key: venv-1-{{ .Branch }} paths: diff --git a/arroba/tests/test_datastore_storage.py b/arroba/tests/test_datastore_storage.py index d6fee12..64cda62 100644 --- a/arroba/tests/test_datastore_storage.py +++ b/arroba/tests/test_datastore_storage.py @@ -6,6 +6,7 @@ from arroba.datastore_storage import AtpNode, DatastoreStorage, WriteOnceBlobProperty from arroba.storage import BlockMap +from google.auth.credentials import AnonymousCredentials from .testutil import TestCase @@ -13,7 +14,7 @@ class DatastoreStorageTest(TestCase): - ndb_client = ndb.Client() + ndb_client = ndb.Client(project='app', credentials=AnonymousCredentials()) def setUp(self): super().setUp() diff --git a/pyproject.toml b/pyproject.toml index c169494..3b122b4 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -40,6 +40,3 @@ datastore = [ [project.urls] 'Homepage' = 'https://github.com/snarfed/arroba' 'Documentation' = 'https://arroba.readthedocs.io/' - -# TODO: -# extras deps: google-cloud-ndb~=2.0