Skip to content

Fix/haskell string escapes #174

Fix/haskell string escapes

Fix/haskell string escapes #174

Workflow file for this run

name: CI/CD
on:
push:
branches:
- '**'
paths:
- '**.py'
- 'pyproject.toml'
- 'poetry.lock'
- '.github/workflows/build.yml'
- "install_secp256k1.sh"
pull_request:
branches:
- '**'
paths:
- '**.py'
- 'pyproject.toml'
- 'poetry.lock'
- '.github/workflows/build.yml'
- "install_secp256k1.sh"
jobs:
check-run:
# continue-on-error: true # Uncomment once integration is finished
runs-on: ubuntu-latest
# Map a step output to a job output
outputs:
should_skip: ${{ steps.skip_check.outputs.should_skip }}
steps:
- id: skip_check
uses: fkirc/skip-duplicate-actions@v5
with:
# All of these options are optional, so you can remove them if you are happy with the defaults
concurrent_skipping: 'same_content_newer'
skip_after_successful_duplicate: 'true'
do_not_skip: '["workflow_dispatch", "schedule"]'
build:
runs-on: ubuntu-latest
strategy:
matrix:
python-version: ['3.9', '3.10', '3.11', '3.12', '3.13', '3.14']
fail-fast: true
needs:
- check-run
if: needs.check-run.outputs.should_skip != 'true'
steps:
- uses: actions/checkout@v5
- name: Set up Python ${{ matrix.python-version }}
uses: actions/setup-python@v5
with:
python-version: ${{ matrix.python-version }}
- name: Install secp256k1
run: |
bash install_secp256k1.sh
echo "/usr/local/lib" >> $GITHUB_PATH
echo "LD_LIBRARY_PATH=/usr/local/lib:$LD_LIBRARY_PATH" >> $GITHUB_ENV
- name: Install uv
uses: astral-sh/setup-uv@v6
- name: Install project
run: |
uv sync --dev
uv run python -c "from importlib.metadata import version; print(version('cbor2'))" > .cbor2_version
CBOR2_VERSION=$(cat .cbor2_version)
CBOR2_BUILD_C_EXTENSION=0 uv pip install --no-binary cbor2 "cbor2==$CBOR2_VERSION" --force-reinstall
- name: Install secp256k1-py
run: uv pip install python-secp256k1-cardano
- name: Verify secp256k1 installation
run: |
uv run python -c "import pysecp256k1; print('secp256k1 installed successfully')"
- name: Run tests and coverage
run: |
uv run black --check .
uv run coverage run --source=uplc -m uplc --help
uv run coverage run --source=uplc -m pytest tests
uv run coverage run -a --source=uplc -m uplc parse examples/fibonacci.uplc
uv run coverage run -a --source=uplc -m uplc dump examples/fibonacci.uplc --dialect legacy-aiken
uv run coverage run -a --source=uplc -m uplc dump examples/fibonacci.uplc --dialect plutus --unique-varnames
uv run coverage run -a --source=uplc -m uplc eval examples/fibonacci.uplc "(con integer 5)"
uv run coverage run -a --source=uplc -m uplc build examples/fibonacci.uplc
uv run coverage run -a --source=uplc -m uplc build examples/fibonacci.uplc -fconstant-folding
uv run coverage run -a --source=uplc -m uplc build examples/fibonacci.uplc -fremove-force-delay
uv run coverage run -a --source=uplc -m uplc build examples/fibonacci.uplc -fdeduplicate
uv run coverage run -a --source=uplc -m uplc build examples/fibonacci.uplc -ffold-apply-lambda-increase 1.2
uv run coverage run -a --source=uplc -m uplc build examples/fibonacci.uplc -O0
uv run coverage run -a --source=uplc -m uplc build examples/fibonacci.uplc -O1
uv run coverage run -a --source=uplc -m uplc build examples/fibonacci.uplc -O2
uv run coverage run -a --source=uplc -m uplc build examples/fibonacci.uplc -O3
uv run coverage run -a --source=uplc -m uplc dump build/fibonacci/script.cbor --from-cbor
- name: Upload coverage data to coveralls.io
run: |
uv pip install coveralls
uv run coveralls || true
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
COVERALLS_FLAG_NAME: ${{ matrix.python-version }}
COVERALLS_PARALLEL: true
coveralls:
name: Indicate completion to coveralls.io
needs:
- check-run
- build
if: needs.check-run.outputs.should_skip != 'true'
runs-on: ubuntu-latest
container: python:3-slim
steps:
- name: Install coveralls
run: pip install --upgrade coveralls
- name: Finished
run: coveralls --finish || true
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}