Skip to content
Closed
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
54 commits
Select commit Hold shift + click to select a range
e1b5dd1
Added library version validator
polischuks Apr 5, 2023
a4285eb
Added instruction for upgrade library
polischuks Apr 26, 2023
2603133
Merge pull request #41 from polischuks/HSPC-50
polischuks Apr 26, 2023
d4d1c5e
Added INSIDE_DOCKER parameter from ENV (#42)
polischuks Oct 9, 2023
f824160
Update setup.py
polischuks Oct 9, 2023
3915a24
remove lib validator
polischuks Oct 9, 2023
2485356
added cpp executor and cpp searcher (#44)
polischuks Nov 13, 2023
8ebf017
Update setup.py
polischuks Nov 13, 2023
d91e1b3
Merge branch 'release' into master
polischuks Nov 13, 2023
713e41d
Update cpp_executor.py
polischuks Nov 16, 2023
a0b23d8
Merge branch 'release' into master
polischuks Nov 16, 2023
5300951
Update Python version and refactor CI/CD pipeline
meanmail Jan 25, 2024
e2ade20
Refactor codebase to use pathlib and type annotations
meanmail May 20, 2024
f525391
Update workflow configurations for Github Actions
meanmail May 20, 2024
9f8ec79
Update Poetry install command in CI config
meanmail May 20, 2024
048b9cc
Update poetry install command in workflow files
meanmail May 20, 2024
69e8ea0
Bump actions/checkout from 3 to 4 in the all-actions group (#47)
dependabot[bot] May 20, 2024
c795a92
Bump ruff from 0.4.4 to 0.4.8 (#52)
dependabot[bot] Jun 6, 2024
7511549
Bump ruff from 0.4.8 to 0.4.10 (#54)
dependabot[bot] Jun 21, 2024
5b38e73
Bump mypy from 1.10.0 to 1.10.1 (#56)
dependabot[bot] Jun 25, 2024
6dea5de
Bump ruff from 0.4.10 to 0.5.0 (#57)
dependabot[bot] Jun 28, 2024
da32e1a
Backend: Auto format
github-actions[bot] Jun 28, 2024
707a39c
Bump toshimaru/auto-author-assign in the all-actions group (#58)
dependabot[bot] Jul 1, 2024
67c894c
Bump matplotlib from 3.9.0 to 3.9.1 (#59)
dependabot[bot] Jul 5, 2024
3d81366
Bump matplotlib from 3.9.1 to 3.9.2 (#70)
dependabot[bot] Aug 14, 2024
14955f2
Bump ruff from 0.5.0 to 0.6.0 (#71)
dependabot[bot] Aug 16, 2024
077b355
feat: add cibuildwheel configuration for automated wheel building (#92)
polischuks Jan 31, 2025
5e32e2b
fix: switch to pure Python wheel building
polischuks Jan 31, 2025
ea64dda
feat: configure platform-dependent wheel building
polischuks Jan 31, 2025
260dd31
feat: configure wheel building with dependencies
polischuks Jan 31, 2025
f89f0fc
fix: correct pip wheel command syntax
polischuks Jan 31, 2025
f28114f
fix: improve cross-platform compatibility in wheel building
polischuks Jan 31, 2025
b326b79
fix: improve build matrix for better control
polischuks Jan 31, 2025
e1f731e
feat: build single wheel with all dependencies included
polischuks Jan 31, 2025
e40d656
feat: switch to cibuildwheel
polischuks Jan 31, 2025
dea33c2
fix: correct Python version format for cibuildwheel
polischuks Jan 31, 2025
2bd4d9d
feat: build single wheel with all dependencies included
polischuks Jan 31, 2025
9eb86fc
chore: update poetry.lock after moving dependencies
polischuks Jan 31, 2025
f7f7583
fix: correct pip wheel command for dependencies
polischuks Jan 31, 2025
5b8109c
feat: switch to python -m build for wheel creation
polischuks Jan 31, 2025
6e00664
feat: switch to PDM for wheel building
polischuks Jan 31, 2025
d3d0f46
fix: correct pdm import command format
polischuks Jan 31, 2025
b0bc957
fix: correct PDM build commands
polischuks Feb 3, 2025
a8993b8
feat: add PDM distribution setting to pyproject.toml
polischuks Feb 3, 2025
d015298
fix: use pdm config to set distribution setting
polischuks Feb 3, 2025
a97317b
feat: switch to pip wheel for building
polischuks Feb 3, 2025
176408c
fix: use pip wheel for all wheel building
polischuks Feb 3, 2025
0f995b8
feat: use pre-built psutil wheels from our release
polischuks Feb 3, 2025
11e5dec
fix: use latest tag for psutil wheels URLs
polischuks Feb 3, 2025
3d71696
fix: use platform-specific psutil wheels in requirements.txt
polischuks Feb 6, 2025
b1b178e
Merge remote-tracking branch 'origin/master' into release
polischuks Feb 7, 2025
d4de8d9
fix: update psutil dependency configuration
polischuks Feb 7, 2025
9b289e3
fix: correct Linux wheel filenames in requirements.txt
polischuks Feb 7, 2025
58ff25a
fix: handle WindowsPath object correctly in BaseSearcher._parse_source
polischuks Feb 7, 2025
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
23 changes: 0 additions & 23 deletions .flake8

This file was deleted.

6 changes: 6 additions & 0 deletions .gitattributes
Original file line number Diff line number Diff line change
@@ -0,0 +1,6 @@
*.yml text eol=lf
*.yaml text eol=lf
*.py text eol=lf
*.toml text eol=lf
*.md text eol=lf
*.txt text eol=lf
17 changes: 17 additions & 0 deletions .github/dependabot.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,17 @@
version: 2
updates:
- package-ecosystem: "github-actions"
directory: "/"
schedule:
interval: "weekly"
day: "monday"
time: "00:00"
groups:
all-actions:
patterns: [ "*" ]

- package-ecosystem: "pip"
directory: "/"
schedule:
interval: "daily"
time: "00:00"
23 changes: 23 additions & 0 deletions .github/workflows/actions/prepare/action.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,23 @@
name: 'Prepare environment'
description: 'Prepare environment'

inputs:
python-version:
description: 'Python version to use'
required: true

runs:
using: "composite"
steps:
- name: Install Poetry
run: pipx install poetry==$(head -n 1 .poetry-version)
shell: bash

- uses: actions/setup-python@v5
with:
python-version: ${{ inputs.python-version }}
cache: 'poetry'

- name: Install dependencies and package
run: poetry install --no-interaction --no-ansi
shell: bash
16 changes: 16 additions & 0 deletions .github/workflows/auto-author-assign.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,16 @@
name: Auto Author Assign

on:
pull_request_target:
types: [ opened, reopened ]

permissions:
pull-requests: write

jobs:
assign-author:
runs-on: [self-hosted, small]
timeout-minutes: 30
if: ${{ !github.event.pull_request.assignee }}
steps:
- uses: toshimaru/[email protected]
35 changes: 35 additions & 0 deletions .github/workflows/auto-format.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,35 @@
name: Format code
on:
pull_request:
push:
branches:
- master
- release

concurrency:
group: ${{ github.workflow }}-${{ github.ref_name }}
cancel-in-progress: true

jobs:
format_backend:
name: Format with ruff
runs-on: [ self-hosted, small ]
timeout-minutes: 30
steps:
- uses: actions/checkout@v4
with:
repository: ${{ github.event.pull_request.head.repo.full_name }}
ref: ${{ github.event.pull_request.head.ref }}

- uses: ./.github/workflows/actions/prepare

- run: poetry run ruff check --fix --unsafe-fixes --preview --exit-zero .
- run: poetry run ruff format .

- name: Commit changes
uses: EndBug/add-and-commit@v9
with:
fetch: false
default_author: github_actions
message: 'Backend: Auto format'
add: '.'
87 changes: 87 additions & 0 deletions .github/workflows/build-wheels.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,87 @@
name: Build Wheels

on:
push:
tags:
- 'v*'
workflow_dispatch:

jobs:
build_wheels:
name: Build psutil wheels on ${{ matrix.os }}
runs-on: ${{ matrix.os }}
permissions:
contents: write
strategy:
matrix:
include:
# Linux builds
- os: ubuntu-latest
python-version: '3.10'
- os: ubuntu-latest
python-version: '3.11'
- os: ubuntu-latest
python-version: '3.12'

# Windows builds
- os: windows-latest
python-version: '3.10'
- os: windows-latest
python-version: '3.11'
- os: windows-latest
python-version: '3.12'

# macOS builds
- os: macos-latest
python-version: '3.10'
- os: macos-latest
python-version: '3.11'
- os: macos-latest
python-version: '3.12'

steps:
- uses: actions/checkout@v4

- name: Set up Python
uses: actions/setup-python@v5
with:
python-version: ${{ matrix.python-version }}

- name: Install build dependencies
run: |
python -m pip install pip wheel
shell: bash

- name: Build psutil wheel
run: |
# Create dist directory
mkdir -p dist

# Build psutil wheel
pip wheel psutil==5.8.0 --wheel-dir dist/
shell: bash

- name: Upload to GitHub Actions
uses: actions/upload-artifact@v4
with:
name: dist-${{ matrix.os }}-py${{ matrix.python-version }}
path: dist/*

release:
needs: build_wheels
runs-on: ubuntu-latest
if: startsWith(github.ref, 'refs/tags/')
permissions:
contents: write
steps:
- name: Download all artifacts
uses: actions/download-artifact@v4
with:
pattern: dist-*
path: dist
merge-multiple: true

- name: Create Release
uses: softprops/action-gh-release@v1
with:
files: dist/*
76 changes: 76 additions & 0 deletions .github/workflows/ci.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,76 @@
name: CI

on:
push:
branches:
- master
- release
pull_request:

concurrency:
group: ${{ github.workflow }}-${{ github.ref_name }}
cancel-in-progress: true

jobs:
lint:
name: Lint with ruff
runs-on: [ self-hosted, small ]
timeout-minutes: 30
steps:
- uses: actions/checkout@v4
- uses: ./.github/workflows/actions/prepare
with:
python-version: "3.11"
- name: Check files using the ruff formatter
run: poetry run ruff --fix --unsafe-fixes --preview .
shell: bash

mypy:
name: Static Type Checking
runs-on: [ self-hosted, small ]
timeout-minutes: 30
steps:
- uses: actions/checkout@v4
- uses: ./.github/workflows/actions/prepare
with:
python-version: "3.11"
- name: Mypy
run: poetry run mypy .
shell: bash

test:
name: Run unit test on ${{ matrix.os }} with Python ${{ matrix.python-version }}
runs-on: ${{ matrix.os }}
strategy:
fail-fast: false
matrix:
include:
# Self-hosted runner
- os: [ self-hosted, small ]
python-version: "3.10"
- os: [ self-hosted, small ]
python-version: "3.11"
- os: [ self-hosted, small ]
python-version: "3.12"

# Windows
- os: windows-latest
python-version: "3.10.11"
- os: windows-latest
python-version: "3.11"
- os: windows-latest
python-version: "3.12"

# macOS (arm64)
- os: macos-14
python-version: "3.11"
- os: macos-14
python-version: "3.12"
steps:
- uses: actions/checkout@v4
- uses: ./.github/workflows/actions/prepare
with:
python-version: ${{ matrix.python-version }}
- name: Run Tests
run: poetry run python tests/testing.py
shell: bash
59 changes: 0 additions & 59 deletions .github/workflows/main.yml

This file was deleted.

1 change: 1 addition & 0 deletions .poetry-version
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
1.7.1
1 change: 1 addition & 0 deletions .python-version
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
3.10.13
25 changes: 24 additions & 1 deletion README.md
Original file line number Diff line number Diff line change
@@ -1,10 +1,33 @@
# hs-test-python

Python testing library for Hyperskill projects

It is a framework that simplifies testing educational projects for [Hyperskill](https://hyperskill.org).

It is required to use for Hyperskill projects. The main features are:
The main features are:
* black box testing
* multiple types of tests in a simple unified way (without stdin, with stdin, files, Django, Flask, Matplotlib)
* generating learner-friendly feedback (filtering stack-traces, hints)

## Installation

Install the package directly from GitHub:

```bash
pip install https://github.com/hyperskill/hs-test-python/archive/release.tar.gz
```

The package includes pre-built wheels for psutil, so you don't need a C++ compiler to install it.

## Development

To contribute to the project:

1. Clone the repository
2. Install dependencies with poetry:
```bash
poetry install
```

To learn how to use this library you can go here:
https://github.com/hyperskill/hs-test-python/wiki
Loading
Loading