Skip to content

Sync Extension: v2.4.0 #354

Sync Extension: v2.4.0

Sync Extension: v2.4.0 #354

Workflow file for this run

name: Test
on:
push:
branches: [ main, develop ]
pull_request:
branches: [ main, develop ]
jobs:
test:
runs-on: ${{ matrix.os }}
strategy:
matrix:
os: [ubuntu-latest, macos-latest, windows-latest]
python-version: ['3.11']
steps:
- name: Checkout code
uses: actions/checkout@v4
- name: Set up Python ${{ matrix.python-version }}
uses: actions/setup-python@v5
with:
python-version: ${{ matrix.python-version }}
- name: Install Playwright browsers
run: |
python -m pip install --upgrade pip
pip install playwright
playwright install chromium
- name: Install dependencies
shell: bash
run: |
pip cache purge || true
pip uninstall -y sentienceapi || true
# Clean any bytecode cache (cross-platform Python approach)
python -c "import pathlib; [p.unlink() for p in pathlib.Path('.').rglob('*.pyc')]" || true
python -c "import pathlib, shutil; [shutil.rmtree(p) for p in pathlib.Path('.').rglob('__pycache__') if p.is_dir()]" || true
pip install --no-cache-dir -e ".[dev]"
pip install pre-commit mypy types-requests
- name: Verify installed package
shell: bash
run: |
echo "=== Installed sentience location ==="
python -c "import sentience; print(sentience.__file__)"
echo "=== Check assert_done in installed package ==="
python -c "import inspect; from sentience.agent_runtime import AgentRuntime; source = inspect.getsource(AgentRuntime.assert_done); print(source); exit(1) if 'assertTrue' in source else print('Good: assert_ is correctly used')"
- name: Verify source code
shell: bash
run: |
python << 'EOF'
# Check agent_runtime.py line 345
print("=== Checking agent_runtime.py line 345 ===")
with open('sentience/agent_runtime.py', 'r', encoding='utf-8') as f:
lines = f.readlines()
print(''.join(lines[339:350]))
# Verify assert_ method exists
print("\n=== Verifying assert_ method exists ===")
with open('sentience/agent_runtime.py', 'r', encoding='utf-8') as f:
lines = f.readlines()
for i, line in enumerate(lines, 1):
if 'def assert_' in line:
print(f'{i}:{line}', end='')
# Check for problematic assertTrue patterns (should NOT exist)
print("\n=== Checking for assertTrue patterns (should NOT exist) ===")
import re
with open('sentience/agent_runtime.py', 'r', encoding='utf-8') as f:
content = f.read()
# Check for self.assertTrue( - this is the bug
if re.search(r'self\.assertTrue\s*\(', content):
print('ERROR: Found self.assertTrue( - should be self.assert_( instead!')
exit(1)
# Check for assertTrue( without self. - unittest style (also wrong)
if re.search(r'(?<!self\.)assertTrue\s*\(', content):
print('ERROR: Found assertTrue( without self. - should use self.assert_( instead!')
exit(1)
print('Good: no problematic assertTrue patterns found')
EOF
- name: Lint with pre-commit
continue-on-error: true
run: |
pre-commit run --all-files
- name: Type check with mypy
continue-on-error: true
run: |
mypy sentience --ignore-missing-imports --no-strict-optional
- name: Check code style
continue-on-error: true
run: |
black --check sentience tests --line-length=100
isort --check-only --profile black sentience tests
flake8 sentience tests --max-line-length=100 --extend-ignore=E203,W503,E501 --max-complexity=15
- name: Build extension (if needed)
if: runner.os != 'Windows'
shell: bash
run: |
if [ -d "../sentience-chrome" ]; then
cd ../sentience-chrome && ./build.sh || echo "Extension build skipped (may not be available in CI)"
else
echo "Extension directory not found, skipping build"
fi
- name: Pre-test verification
shell: bash
run: |
echo "=== Final check before tests ==="
python << 'EOF'
import re
import os
# Check the source file directly (not the installed package)
file_path = 'sentience/agent_runtime.py'
if not os.path.exists(file_path):
print(f'ERROR: {file_path} not found!')
exit(1)
with open(file_path, 'r', encoding='utf-8') as f:
content = f.read()
lines = content.split('\n')
# Check for the problematic pattern: self.assertTrue(
# This is the bug we're checking for - it should be self.assert_( instead
problematic_lines = []
for i, line in enumerate(lines, 1):
if re.search(r'self\.assertTrue\s*\(', line):
problematic_lines.append((i, line.strip()))
if problematic_lines:
print('ERROR: Found self.assertTrue( in agent_runtime.py')
print('This should be self.assert_( instead!')
print(f'\nFound {len(problematic_lines)} problematic line(s):')
for line_num, line_content in problematic_lines:
print(f'Line {line_num}: {line_content}')
print('\nTo fix: Replace self.assertTrue( with self.assert_( in the code above')
exit(1)
# Verify that self.assert_( is used (positive check)
if 'self.assert_(' in content:
print('OK: self.assert_ is used correctly (no self.assertTrue found)')
else:
print('WARNING: self.assert_( not found in agent_runtime.py')
print('This might indicate the code needs to be updated')
EOF
- name: Run tests
run: |
pytest tests/ -v
env:
CI: true