Merge pull request #1677 from ogayot/ci-diff-mypy

workflow: produce a diff of the mypy errors before/after a PR
This commit is contained in:
Olivier Gayot 2023-05-22 10:41:42 +02:00 committed by GitHub
commit e58cf53f26
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
2 changed files with 41 additions and 2 deletions

View File

@ -30,3 +30,42 @@ jobs:
- uses: actions/checkout@v2
- name: lint
run: sudo ./scripts/test-in-lxd.sh ${{ matrix.image }} "make lint"
static-typing:
# In this job, we compare the output of mypy before and after the PR.
if: github.event_name == 'pull_request'
runs-on: ubuntu-22.04
steps:
- name: Install mypy and typeshed
run: sudo apt-get install -y python3-mypy python3-typeshed
- name: Checkout the pull request branch
uses: actions/checkout@v3
with:
# When no ref is specified, a merge commit (from PR branch to target
# branch) will be checked out. Use the last commit of the PR branch
# instead.
ref: ${{ github.event.pull_request.head.sha }}
# By default, no ancestors of the specified revision will be checked
# out (see shallow repositories). Let's fetch just enough revisions
# so that, later, we can access the most recent common ancestor.
# If it does not work, we can set fetch-depth: 0
fetch-depth: $(( ${{ github.event.pull_request.commits }} + 1 ))
- name: Run mypy on pull request branch
run: python3 -m mypy --ignore-missing-imports --check-untyped-defs subiquity subiquitycore system_setup console_conf scripts/replay-curtin-log.py | tee /tmp/mypy-head.out
- name: Determine base commit (most recent common ancestor)
id: determine_base_commit
run: |
ancestor=$(git merge-base -- \
"${{ github.event.pull_request.base.sha }}" \
"${{ github.event.pull_request.head.sha }}")
echo "base_commit=$ancestor" >> "$GITHUB_OUTPUT"
- name: Checkout the base commit (most recent common ancestor)
uses: actions/checkout@v3
with:
ref: ${{ steps.determine_base_commit.outputs.base_commit }}
- run: git show
- name: Run mypy on base commit
run: python3 -m mypy --ignore-missing-imports --check-untyped-defs subiquity subiquitycore system_setup console_conf scripts/replay-curtin-log.py | tee /tmp/mypy-base.out
- name: Produce the diff between the two mypy runs
run: diff --color=always --unified=0 /tmp/mypy-base.out /tmp/mypy-head.out
continue-on-error: true

View File

@ -187,8 +187,8 @@ class FilesystemController(SubiquityController, FilesystemManipulator):
self._on_volume: Optional[snapdapi.OnVolume] = None
self._source_handler: Optional[AbstractSourceHandler] = None
self._system_mounter: Optional[Mounter] = None
self._role_to_device: Dict[str: _Device] = {}
self._device_to_structure: Dict[_Device: snapdapi.OnVolume] = {}
self._role_to_device: Dict[str, _Device] = {}
self._device_to_structure: Dict[_Device, snapdapi.OnVolume] = {}
self.use_tpm: bool = False
self.locked_probe_data: bool = False
# If probe data come in while we are doing partitioning, store it in