Merge pull request #282 from google/gbg/multi-python-pre-commit-check

run pre-commit tests with all supported Python versions
This commit is contained in:
Gilles Boccon-Gibod
2023-09-13 07:47:32 -07:00
committed by GitHub
3 changed files with 73 additions and 58 deletions
+4
View File
@@ -14,6 +14,10 @@ jobs:
check: check:
name: Check Code name: Check Code
runs-on: ubuntu-latest runs-on: ubuntu-latest
strategy:
matrix:
python-version: ["3.8", "3.9", "3.10", "3.11"]
fail-fast: false
steps: steps:
- name: Check out from Git - name: Check out from Git
+3 -2
View File
@@ -12,10 +12,10 @@ permissions:
jobs: jobs:
build: build:
runs-on: ${{ matrix.os }}
runs-on: ubuntu-latest
strategy: strategy:
matrix: matrix:
os: ['ubuntu-latest', 'macos-latest', 'windows-latest']
python-version: ["3.8", "3.9", "3.10", "3.11"] python-version: ["3.8", "3.9", "3.10", "3.11"]
fail-fast: false fail-fast: false
@@ -41,6 +41,7 @@ jobs:
run: | run: |
inv build inv build
inv build.mkdocs inv build.mkdocs
build-rust: build-rust:
runs-on: ubuntu-latest runs-on: ubuntu-latest
strategy: strategy:
+66 -56
View File
@@ -18,6 +18,8 @@
import asyncio import asyncio
import json import json
import logging import logging
import pathlib
import pytest
import tempfile import tempfile
import os import os
@@ -83,87 +85,95 @@ JSON3 = """
# ----------------------------------------------------------------------------- # -----------------------------------------------------------------------------
async def test_basic(): @pytest.fixture
with tempfile.NamedTemporaryFile(mode="r+", encoding='utf-8') as file: def temporary_file():
keystore = JsonKeyStore('my_namespace', file.name) file = tempfile.NamedTemporaryFile(delete=False)
file.close()
yield file.name
pathlib.Path(file.name).unlink()
# -----------------------------------------------------------------------------
async def test_basic(temporary_file):
with open(temporary_file, mode='w', encoding='utf-8') as file:
file.write("{}") file.write("{}")
file.flush() file.flush()
keys = await keystore.get_all() keystore = JsonKeyStore('my_namespace', temporary_file)
assert len(keys) == 0
keys = PairingKeys() keys = await keystore.get_all()
await keystore.update('foo', keys) assert len(keys) == 0
foo = await keystore.get('foo')
assert foo is not None
assert foo.ltk is None
ltk = bytes([0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15])
keys.ltk = PairingKeys.Key(ltk)
await keystore.update('foo', keys)
foo = await keystore.get('foo')
assert foo is not None
assert foo.ltk is not None
assert foo.ltk.value == ltk
file.flush() keys = PairingKeys()
with open(file.name, "r", encoding="utf-8") as json_file: await keystore.update('foo', keys)
json_data = json.load(json_file) foo = await keystore.get('foo')
assert 'my_namespace' in json_data assert foo is not None
assert 'foo' in json_data['my_namespace'] assert foo.ltk is None
assert 'ltk' in json_data['my_namespace']['foo'] ltk = bytes([0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15])
keys.ltk = PairingKeys.Key(ltk)
await keystore.update('foo', keys)
foo = await keystore.get('foo')
assert foo is not None
assert foo.ltk is not None
assert foo.ltk.value == ltk
with open(file.name, "r", encoding="utf-8") as json_file:
json_data = json.load(json_file)
assert 'my_namespace' in json_data
assert 'foo' in json_data['my_namespace']
assert 'ltk' in json_data['my_namespace']['foo']
# ----------------------------------------------------------------------------- # -----------------------------------------------------------------------------
async def test_parsing(): async def test_parsing(temporary_file):
with tempfile.NamedTemporaryFile(mode="w", encoding='utf-8') as file: with open(temporary_file, mode='w', encoding='utf-8') as file:
keystore = JsonKeyStore('my_namespace', file.name)
file.write(JSON1) file.write(JSON1)
file.flush() file.flush()
foo = await keystore.get('14:7D:DA:4E:53:A8/P') keystore = JsonKeyStore('my_namespace', file.name)
assert foo is not None foo = await keystore.get('14:7D:DA:4E:53:A8/P')
assert foo.ltk.value == bytes.fromhex('d1897ee10016eb1a08e4e037fd54c683') assert foo is not None
assert foo.ltk.value == bytes.fromhex('d1897ee10016eb1a08e4e037fd54c683')
# ----------------------------------------------------------------------------- # -----------------------------------------------------------------------------
async def test_default_namespace(): async def test_default_namespace(temporary_file):
with tempfile.NamedTemporaryFile(mode="w", encoding='utf-8') as file: with open(temporary_file, mode='w', encoding='utf-8') as file:
keystore = JsonKeyStore(None, file.name)
file.write(JSON1) file.write(JSON1)
file.flush() file.flush()
all_keys = await keystore.get_all() keystore = JsonKeyStore(None, file.name)
assert len(all_keys) == 1 all_keys = await keystore.get_all()
name, keys = all_keys[0] assert len(all_keys) == 1
assert name == '14:7D:DA:4E:53:A8/P' name, keys = all_keys[0]
assert keys.irk.value == bytes.fromhex('e7b2543b206e4e46b44f9e51dad22bd1') assert name == '14:7D:DA:4E:53:A8/P'
assert keys.irk.value == bytes.fromhex('e7b2543b206e4e46b44f9e51dad22bd1')
with tempfile.NamedTemporaryFile(mode="w", encoding='utf-8') as file: with open(temporary_file, mode='w', encoding='utf-8') as file:
keystore = JsonKeyStore(None, file.name)
file.write(JSON2) file.write(JSON2)
file.flush() file.flush()
keys = PairingKeys() keystore = JsonKeyStore(None, file.name)
ltk = bytes([0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15]) keys = PairingKeys()
keys.ltk = PairingKeys.Key(ltk) ltk = bytes([0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15])
await keystore.update('foo', keys) keys.ltk = PairingKeys.Key(ltk)
file.flush() await keystore.update('foo', keys)
with open(file.name, "r", encoding="utf-8") as json_file: with open(file.name, "r", encoding="utf-8") as json_file:
json_data = json.load(json_file) json_data = json.load(json_file)
assert '__DEFAULT__' in json_data assert '__DEFAULT__' in json_data
assert 'foo' in json_data['__DEFAULT__'] assert 'foo' in json_data['__DEFAULT__']
assert 'ltk' in json_data['__DEFAULT__']['foo'] assert 'ltk' in json_data['__DEFAULT__']['foo']
with tempfile.NamedTemporaryFile(mode="w", encoding='utf-8') as file: with open(temporary_file, mode='w', encoding='utf-8') as file:
keystore = JsonKeyStore(None, file.name)
file.write(JSON3) file.write(JSON3)
file.flush() file.flush()
all_keys = await keystore.get_all() keystore = JsonKeyStore(None, file.name)
assert len(all_keys) == 1 all_keys = await keystore.get_all()
name, keys = all_keys[0] assert len(all_keys) == 1
assert name == '14:7D:DA:4E:53:A8/P' name, keys = all_keys[0]
assert keys.irk.value == bytes.fromhex('e7b2543b206e4e46b44f9e51dad22bd1') assert name == '14:7D:DA:4E:53:A8/P'
assert keys.irk.value == bytes.fromhex('e7b2543b206e4e46b44f9e51dad22bd1')
# ----------------------------------------------------------------------------- # -----------------------------------------------------------------------------