-
Notifications
You must be signed in to change notification settings - Fork 0
135 lines (117 loc) · 3.49 KB
/
similarity-analyzer.yml
File metadata and controls
135 lines (117 loc) · 3.49 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
name: Similarity Analyzer CI
on:
push:
branches: [ main, master ]
paths:
- 'similarity_analyzer/**'
pull_request:
branches: [ main, master ]
paths:
- 'similarity_analyzer/**'
workflow_dispatch:
jobs:
test:
runs-on: ${{ matrix.os }}
strategy:
fail-fast: false
matrix:
os: [ubuntu-latest, macos-latest, windows-latest]
python-version: ['3.8', '3.9', '3.10', '3.11', '3.12']
steps:
- uses: actions/checkout@v4
- name: Set up Python ${{ matrix.python-version }}
uses: actions/setup-python@v5
with:
python-version: ${{ matrix.python-version }}
- name: Install dependencies
run: |
python -m pip install --upgrade pip
pip install pytest pytest-cov
pip install -r similarity_analyzer/requirements.txt
- name: Run tests
run: |
cd similarity_analyzer
python -m pytest test_similarity_analyzer.py -v --cov=similarity_analyzer --cov-report=xml
- name: Upload coverage
uses: codecov/codecov-action@v3
if: matrix.os == 'ubuntu-latest' && matrix.python-version == '3.11'
with:
files: ./similarity_analyzer/coverage.xml
fail_ci_if_error: false
lint:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- name: Set up Python
uses: actions/setup-python@v5
with:
python-version: '3.11'
- name: Install linting tools
run: |
python -m pip install --upgrade pip
pip install flake8 black isort mypy
- name: Check formatting with black
run: |
black --check similarity_analyzer/*.py || echo "Formatting issues found"
- name: Check imports with isort
run: |
isort --check-only similarity_analyzer/*.py || echo "Import order issues found"
- name: Lint with flake8
run: |
flake8 similarity_analyzer/*.py --max-line-length=120 --ignore=E501,W503
benchmark:
runs-on: ubuntu-latest
needs: test
steps:
- uses: actions/checkout@v4
- name: Set up Python
uses: actions/setup-python@v5
with:
python-version: '3.11'
- name: Install dependencies
run: |
pip install rapidfuzz
- name: Create test files
run: |
mkdir -p test_files
for i in $(seq 1 50); do
cat > test_files/File${i}_RGB565.cpp << 'EOF'
/**
* Auto-generated test file
*/
class File${i}_RGB565 {
void draw() {
for (int x = 0; x < width; x++) {
for (int y = 0; y < height; y++) {
pixel = getRGB565(x, y);
buffer[y * width + x] = pixel;
}
}
}
};
EOF
done
for i in $(seq 1 50); do
cat > test_files/File${i}_RGB888.cpp << 'EOF'
/**
* Auto-generated test file
*/
class File${i}_RGB888 {
void draw() {
for (int x = 0; x < width; x++) {
for (int y = 0; y < height; y++) {
pixel = getRGB888(x, y);
buffer[y * width + x] = pixel;
}
}
}
};
EOF
done
- name: Run benchmark
run: |
cd similarity_analyzer
echo "=== Benchmark: 100 files ==="
time python similarity_analyzer.py ../test_files --find-pairs -q
echo ""
echo "=== Benchmark complete ==="