Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

ci: TEST #1

Closed
wants to merge 4 commits into from
Closed
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
57 changes: 57 additions & 0 deletions .github/workflows/format.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,57 @@
name: Format check

on:
pull_request:
branches:
- main
paths:
- '**.py'

jobs:
generate:
runs-on: ubuntu-latest
outputs:
files: ${{ steps.git-diff-filter.outputs.files }}
name: Detect added and changed files

steps:
- uses: actions/checkout@v4
with:
fetch-depth: 0

- uses: GrantBirki/git-diff-action@v2
id: git-diff-action
with:
base_branch: origin/main
search_path: '**.py'
# Ignore deleted files
git_options: '--no-color --diff-filter=d'

- name: Filter json diff
id: git-diff-filter
env:
JSON_DIFF: ${{ steps.git-diff-action.outputs.json-diff }}
run: |
echo $JSON_DIFF | jq
files=$(echo $JSON_DIFF | jq -c -r '[.files[] | {path: .path}]')
echo "files=$files" >> $GITHUB_OUTPUT

check-files:
needs: generate
if: ${{ needs.generate.outputs.files != '[]' }}
runs-on: ubuntu-latest
# Allow the workflow run to pass when this job fails
continue-on-error: true
strategy:
matrix:
files: ${{ fromJSON(needs.generate.outputs.files) }}
name: Check file ${{ matrix.files.path }}
steps:
- uses: actions/checkout@v4
- uses: astral-sh/ruff-action@v1
with:
args: "format --check --diff"
src: "${{ matrix.files.path }}"
- if: ${{ failure() }}
run: |
echo "::warning file=${{ matrix.files.path }},title=File format check failed::Run 'ruff format ${{ matrix.files.path }}'"
4 changes: 4 additions & 0 deletions pyproject.toml
Original file line number Diff line number Diff line change
Expand Up @@ -60,3 +60,7 @@ extend-select = [
ignore = [
"UP027", # deprecated pyupgrade rule
]

[tool.ruff.format]
quote-style = "preserve"
line-ending = "lf"
2 changes: 2 additions & 0 deletions src/west/manifest.py
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
# Copyright (c) 2018, 2019, 2020 Nordic Semiconductor ASA

Check warning on line 1 in src/west/manifest.py

View workflow job for this annotation

GitHub Actions / Check file src/west/manifest.py

File format check failed

Run 'ruff format src/west/manifest.py'
# Copyright 2018, 2019 Foundries.io Ltd
#
# SPDX-License-Identifier: Apache-2.0
Expand Down Expand Up @@ -498,6 +498,7 @@

#
# Public functions
# Add a random comment
#

def manifest_path() -> str:
Expand Down Expand Up @@ -627,6 +628,7 @@
# "--group-filter=path-prefix:foo" to create additional logical
# groups based on the workspace layout or other metadata

#this will give a format error
return ((raw_group >= 0) if isinstance(raw_group, (float, int)) else
bool(raw_group and not _RESERVED_GROUP_RE.search(raw_group)))

Expand Down
90 changes: 90 additions & 0 deletions tests/test_alias_copy.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,90 @@
# Copyright (c) 2024, Basalte bv

Check warning on line 1 in tests/test_alias_copy.py

View workflow job for this annotation

GitHub Actions / Check file tests/test_alias_copy.py

File format check failed

Run 'ruff format tests/test_alias_copy.py'
#
# SPDX-License-Identifier: Apache-2.0

import os
import subprocess

import pytest

from conftest import cmd

assert 'TOXTEMPDIR' in os.environ, "you must run these tests using tox"

@pytest.fixture(autouse=True)
def autouse_tmpdir(config_tmpdir, west_init_tmpdir):
# Since this module tests west's configuration file features,
# adding autouse=True to the config_tmpdir and west_init_tmpdir fixtures
# saves typing and is less error-prone than using it below in every test case.
pass

def test_alias_commands():
cmd('config alias.test1 topdir')
cmd('config --global alias.test2 topdir')
cmd('config --system alias.test3 topdir')

topdir_out = cmd('topdir')

assert cmd('test1') == topdir_out
assert cmd('test2') == topdir_out
assert cmd('test3') == topdir_out

def test_alias_help():
cmd('config alias.test topdir')

help_out = cmd('help test')

assert "An alias that expands to: topdir" in help_out
assert cmd('-h test') == help_out

def test_alias_recursive_commands():
list_format = '{revision} TESTALIAS {name}'
cmd(['config', 'alias.test1', f'list -f "{list_format}"'])
cmd('config alias.test2 test1')

assert cmd('test2') == cmd(['list', '-f', list_format])

def test_alias_infinite_recursion():
cmd('config alias.test1 test2')
cmd('config alias.test2 test3')
cmd('config alias.test3 test1')

with pytest.raises(subprocess.CalledProcessError) as excinfo:
cmd('test1', stderr=subprocess.STDOUT)

assert 'unknown command "test1";' in str(excinfo.value.stdout)

def test_alias_empty():
cmd(['config', 'alias.empty', ''])

# help command shouldn't fail
cmd('help')

with pytest.raises(subprocess.CalledProcessError) as excinfo:
cmd('empty', stderr=subprocess.STDOUT)

assert 'empty alias "empty"' in str(excinfo.value.stdout)

def test_alias_early_args():
cmd('config alias.test1 topdir')

# An alias with an early command argument shouldn't fail
assert "Replacing alias test1 with ['topdir']" in cmd('-v test1')

def test_alias_command_with_arguments():
list_format = '{revision} TESTALIAS {name}'
cmd(['config', 'alias.revs', f'list -f "{list_format}"'])

assert cmd('revs') == cmd(['list', '-f', list_format])

def test_alias_override():
before = cmd('list')
list_format = '{name} : {revision}'
formatted = cmd(['list', '-f', list_format])

cmd(['config', 'alias.list', f'list -f "{list_format}"'])

after = cmd('list')

assert before != after
assert formatted == after
1 change: 1 addition & 0 deletions tests/test_commands.py
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
# Copyright (c) 2021, Nordic Semiconductor ASA

Check warning on line 1 in tests/test_commands.py

View workflow job for this annotation

GitHub Actions / Check file tests/test_commands.py

File format check failed

Run 'ruff format tests/test_commands.py'

import os

Expand All @@ -10,6 +10,7 @@

def test_parse_git_version():
# White box test for git parsing behavior.
# add this
assert gv(b'git version 2.25.1\n') == (2, 25, 1)
assert gv(b'git version 2.28.0.windows.1\n') == (2, 28, 0)
assert gv(b'git version 2.24.3 (Apple Git-128)\n') == (2, 24, 3)
Expand Down
Loading