Skip to content

Commit dff3c33

Browse files
committed
Auto commit: 2024-12-05 21:43:01
1 parent a0b26a5 commit dff3c33

File tree

2 files changed

+97
-19
lines changed

2 files changed

+97
-19
lines changed

.github/workflows/monitor_changes.yml

Lines changed: 28 additions & 19 deletions
Original file line numberDiff line numberDiff line change
@@ -40,10 +40,11 @@ jobs:
4040
changes=$(cat changes.txt | tr '\n' ', ' | sed 's/,$//')
4141
echo "files_changed=$changes" >> $GITHUB_OUTPUT
4242
43-
- name: Install flake8
43+
- name: Install dependencies
4444
run: |
4545
python -m pip install --upgrade pip
46-
pip install flake8
46+
pip install -r requirements.txt
47+
pip install flake8 pytest torch torchvision
4748
4849
- name: Run flake8
4950
id: flake8
@@ -57,8 +58,6 @@ jobs:
5758
"models/unet_fft.py"
5859
"xrd_transformer.py"
5960
"model.py"
60-
"datasets/train.py"
61-
"datasets/test.py"
6261
)
6362
existing_files=()
6463
for file in "${files_to_lint[@]}"; do
@@ -70,13 +69,20 @@ jobs:
7069
if [ ${#existing_files[@]} -eq 0 ]; then
7170
echo "lint_results=No Python files found to lint" >> $GITHUB_OUTPUT
7271
else
73-
flake8_output=$(flake8 "${existing_files[@]}" || true)
72+
# Only check for bugs (E9**, F***) and ignore style issues
73+
flake8_output=$(flake8 --select=E9,F "${existing_files[@]}" || true)
7474
echo "$flake8_output" > flake8_output.txt
7575
lint_results=$(head -n 5 flake8_output.txt | sed ':a;N;$!ba;s/\n/%0A/g' | sed 's/"/\\"/g')
7676
echo "lint_results=$lint_results" >> $GITHUB_OUTPUT
7777
fi
7878
79-
79+
- name: Run basic tests
80+
id: basic_tests
81+
run: |
82+
test_output=$(python github_tests.py)
83+
echo "test_results<<EOF" >> $GITHUB_OUTPUT
84+
echo "$test_output" >> $GITHUB_OUTPUT
85+
echo "EOF" >> $GITHUB_OUTPUT
8086
8187
- name: Send Telegram Notification
8288
if: always()
@@ -85,16 +91,19 @@ jobs:
8591
to: ${{ secrets.TELEGRAM_CHAT_ID }}
8692
token: ${{ secrets.TELEGRAM_BOT_TOKEN }}
8793
message: |
88-
🔄 Новые изменения обнаружены!
89-
90-
Сообщение коммита: ${{ steps.commit_details.outputs.message || 'Нет сообщения' }}
91-
Автор: ${{ steps.commit_details.outputs.author || 'Неизвестный автор' }}
92-
93-
Измененные файлы:
94-
${{ steps.check_changes.outputs.files_changed || 'Нет измененных файлов' }}
95-
96-
Репозиторий: ${{ github.repository }}
97-
Ссылка: ${{ github.server_url }}/${{ github.repository }}/commit/${{ github.sha }}
98-
99-
⚠️ Результаты линтинга:
100-
${{ steps.flake8.outputs.lint_results || 'Нет замечаний линтера' }}
94+
🔄 Новые изменения обнаружены!
95+
96+
Сообщение коммита: ${{ steps.commit_details.outputs.message || 'Нет сообщения' }}
97+
Автор: ${{ steps.commit_details.outputs.author || 'Неизвестный автор' }}
98+
99+
Измененные файлы:
100+
${{ steps.check_changes.outputs.files_changed || 'Нет измененных файлов' }}
101+
102+
Репозиторий: ${{ github.repository }}
103+
Ссылка: ${{ github.server_url }}/${{ github.repository }}/commit/${{ github.sha }}
104+
105+
⚠️ Результаты линтинга:
106+
${{ steps.flake8.outputs.lint_results || 'Нет замечаний линтера' }}
107+
108+
🧪 Результаты тестов:
109+
${{ steps.basic_tests.outputs.test_results || 'Тесты не были выполнены' }}

github_tests.py

Lines changed: 69 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,69 @@
1+
#!/usr/bin/env python3
2+
"""Basic tests for CI/CD pipeline."""
3+
4+
import yaml
5+
import torch
6+
from pathlib import Path
7+
from test import load_config
8+
from models.unet_fft import UNet_FFT
9+
from models.xrd_transformer import XRDTransformer
10+
11+
def test_config_loading():
12+
"""Test if configuration can be loaded properly."""
13+
config = load_config('configs/test.yaml')
14+
assert isinstance(config, dict), 'Config should be a dictionary'
15+
16+
# Test essential config keys
17+
required_keys = ['data_path', 'model', 'pipeline', 'dataloader']
18+
for key in required_keys:
19+
assert key in config, f'Config missing required key: {key}'
20+
21+
return "Тест загрузки конфигурации прошел успешно ✅"
22+
23+
def test_model_initialization():
24+
"""Test if models can be initialized properly."""
25+
# Test UNet_FFT
26+
unet = UNet_FFT(2)
27+
assert isinstance(unet, torch.nn.Module), 'UNet_FFT should be a torch.nn.Module'
28+
29+
# Test XRDTransformer
30+
transformer = XRDTransformer(
31+
input_shape=(26, 18, 23),
32+
embed_dim=128,
33+
depth=5,
34+
num_heads=4,
35+
mlp_ratio=4,
36+
drop_rate=0.1,
37+
attn_drop_rate=0.1,
38+
embedding_type='onehot'
39+
)
40+
assert isinstance(transformer, torch.nn.Module), 'XRDTransformer should be a torch.nn.Module'
41+
42+
return "Тест инициализации модели прошел успешно ✅"
43+
44+
def test_model_forward():
45+
"""Test if models can process data of expected shape."""
46+
model = UNet_FFT(2)
47+
dummy_input = torch.randn(1, 1, 26, 18, 23)
48+
output = model(dummy_input)
49+
50+
assert output.shape == dummy_input.shape, 'Output shape should match input shape'
51+
assert not torch.isnan(output).any(), 'Output contains NaN values'
52+
assert not torch.isinf(output).any(), 'Output contains infinite values'
53+
54+
return "Тест проверки прямого прохода модели прошел успешно ✅"
55+
56+
def run_all_tests():
57+
"""Run all tests and return results."""
58+
try:
59+
results = []
60+
results.append(test_config_loading())
61+
results.append(test_model_initialization())
62+
results.append(test_model_forward())
63+
64+
return "\n".join(results)
65+
except Exception as e:
66+
return f"❌ Тесты не прошли: {str(e)}"
67+
68+
if __name__ == "__main__":
69+
print(run_all_tests())

0 commit comments

Comments
 (0)