Skip to content

Commit f87b874

Browse files
committed
update PR templates and validation: refine structure, improve regex rules, and enhance compliance testing
1 parent adaee71 commit f87b874

File tree

5 files changed

+131
-90
lines changed

5 files changed

+131
-90
lines changed
Lines changed: 42 additions & 39 deletions
Original file line numberDiff line numberDiff line change
@@ -1,39 +1,42 @@
1-
<!--
2-
Pull request title requirement:
3-
4-
"<LastName> <FirstName>. Technology <TECHNOLOGY_NAME:SEQ|OMP|TBB|STL|MPI>. <Full Task Name>. Variant <Number>"
5-
-->
6-
7-
## Description
8-
<!--
9-
Please provide a detailed description of your implementation, including:
10-
- key solution details (chosen algorithm description)
11-
- parallelism technology application (if applicable)
12-
-->
13-
14-
- **Task**: _Enter the full task name here_
15-
- **Variant**: _Enter the variant number here_
16-
- **Technology**: _Enter technology (e.g., SEQ, OMP, TBB, STL, MPI)_
17-
- **Description** of your implementation and report.
18-
_Provide a concise summary of your implementation and report here._
19-
20-
---
21-
22-
## Checklist
23-
<!--
24-
Please ensure the following items are completed **before** submitting your pull request and requesting a review:
25-
-->
26-
27-
- [ ] **CI Status**: All CI jobs (build, tests, report generation) are passing on my branch in my fork
28-
- [ ] **Task Directory & Naming**: I have created a directory named `<lastName>_<firstInitial>_<short_task_name>`
29-
- [ ] **Full Task Definition**: I have provided the complete task description in the pull request body.
30-
- [ ] **clang-format**: My changes pass `clang-format` locally in my fork (no formatting errors)
31-
- [ ] **clang-tidy**: My changes pass `clang-tidy` locally in my fork (no warnings/errors)
32-
- [ ] **Functional Tests**: All functional tests are passing locally on my machine
33-
- [ ] **Performance Tests**: All performance tests are passing locally on my machine
34-
- [ ] **Branch**: I am working on a branch named exactly as my task directory (e.g., `nesterov_a_vector_sum`), not on `master`.
35-
- [ ] **Truthful Content**: I confirm that every detail provided in this pull request is accurate and truthful to the best of my knowledge.
36-
37-
<!--
38-
NOTE: Untruthful entries in this checklist may result in PR rejection and zero points for the associated task.
39-
-->
1+
PR title format (enforced by CI):
2+
- Pattern: [TASK] <Task>-<Variant>. <Last Name> <First Name> <Middle Name>. <Group>. <Task name>.
3+
- Example (RU): 2-12. Иванов Иван Иванович. 2341-а234. Вычисление суммы элементов вектора.
4+
- Example (EN): 2-12. Ivanov Ivan Ivanovich. 2341-a234. Vector elements sum calculation.
5+
6+
Please fill in ALL sections below (no HTML comments). Use English headers as given.
7+
8+
## 1. Full name and group
9+
Name and group:
10+
11+
## 2. Assignment / Topic / Task
12+
Assignment:
13+
14+
## 3. Technology / Platform used
15+
Technology:
16+
17+
## 4. Goals of the work
18+
Goals:
19+
20+
## 5. Solution description and structure
21+
Description:
22+
23+
## 6. System requirements and build instructions
24+
Build & Run:
25+
26+
## 7. Testing and verification
27+
Testing:
28+
29+
## 8. Results
30+
Results:
31+
32+
## 9. Performance analysis
33+
Analysis:
34+
35+
## 10. Conclusions and possible improvements
36+
Conclusions:
37+
38+
## 11. Limitations / known issues
39+
Limitations:
40+
41+
## 12. CI / static analysis / code style
42+
CI & Style:
Lines changed: 42 additions & 39 deletions
Original file line numberDiff line numberDiff line change
@@ -1,39 +1,42 @@
1-
<!--
2-
Требования к названию pull request:
3-
4-
"<Фамилия> <Имя>. Технология <TECHNOLOGY_NAME:SEQ|OMP|TBB|STL|MPI>. <Полное название задачи>. Вариант <Номер>"
5-
-->
6-
7-
## Описание
8-
<!--
9-
Пожалуйста, предоставьте подробное описание вашей реализации, включая:
10-
- основные детали решения (описание выбранного алгоритма)
11-
- применение технологии параллелизма (если применимо)
12-
-->
13-
14-
- **Задача**: _Введите здесь полное название задачи_
15-
- **Вариант**: _Введите здесь номер варианта_
16-
- **Технология**: _Введите технологию (например, SEQ, OMP, TBB, STL, MPI)_
17-
- **Описание** вашей реализации и отчёта.
18-
_Кратко опишите вашу реализацию и содержание отчёта здесь._
19-
20-
---
21-
22-
## Чек-лист
23-
<!--
24-
Пожалуйста, убедитесь, что следующие пункты выполнены **до** отправки pull request'а и запроса его ревью:
25-
-->
26-
27-
- [ ] **Статус CI**: Все CI-задачи (сборка, тесты, генерация отчёта) успешно проходят на моей ветке в моем форке
28-
- [ ] **Директория и именование задачи**: Я создал директорию с именем `<фамилия>_<первая_буква_имени>_<короткое_название_задачи>`
29-
- [ ] **Полное описание задачи**: Я предоставил полное описание задачи в теле pull request
30-
- [ ] **clang-format**: Мои изменения успешно проходят `clang-format` локально в моем форке (нет ошибок форматирования)
31-
- [ ] **clang-tidy**: Мои изменения успешно проходят `clang-tidy` локально в моем форке (нет предупреждений/ошибок)
32-
- [ ] **Функциональные тесты**: Все функциональные тесты успешно проходят локально на моей машине
33-
- [ ] **Тесты производительности**: Все тесты производительности успешно проходят локально на моей машине
34-
- [ ] **Ветка**: Я работаю в ветке, названной точно так же, как директория моей задачи (например, `nesterov_a_vector_sum`), а не в `master`
35-
- [ ] **Правдивое содержание**: Я подтверждаю, что все сведения, указанные в этом pull request, являются точными и достоверными
36-
37-
<!--
38-
ПРИМЕЧАНИЕ: Ложные сведения в этом чек-листе могут привести к отклонению PR и получению нулевого балла за соответствующую задачу.
39-
-->
1+
Формат заголовка PR (проверяется CI):
2+
- Шаблон: [TASK] <Task>-<Variant>. <Last Name> <First Name> <Middle Name>. <Group>. <Task name>.
3+
- Пример (RU): 2-12. Иванов Иван Иванович. 2341-а234. Вычисление суммы элементов вектора.
4+
- Example (EN): 2-12. Ivanov Ivan Ivanovich. 2341-a234. Vector elements sum calculation.
5+
6+
Заполните ВСЕ разделы ниже (без HTML-комментариев). Заголовки разделов оставьте на английском, как указано.
7+
8+
## 1. Full name and group
9+
Name and group:
10+
11+
## 2. Assignment / Topic / Task
12+
Assignment:
13+
14+
## 3. Technology / Platform used
15+
Technology:
16+
17+
## 4. Goals of the work
18+
Goals:
19+
20+
## 5. Solution description and structure
21+
Description:
22+
23+
## 6. System requirements and build instructions
24+
Build & Run:
25+
26+
## 7. Testing and verification
27+
Testing:
28+
29+
## 8. Results
30+
Results:
31+
32+
## 9. Performance analysis
33+
Analysis:
34+
35+
## 10. Conclusions and possible improvements
36+
Conclusions:
37+
38+
## 11. Limitations / known issues
39+
Limitations:
40+
41+
## 12. CI / static analysis / code style
42+
CI & Style:

.github/pull_request_template.md

Lines changed: 40 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,42 @@
1-
<!-- Solution for PR template choice: https://stackoverflow.com/a/75030350/24543008 -->
1+
PR title format (enforced by CI):
2+
- Pattern: [TASK] <Task>-<Variant>. <Last Name> <First Name> <Middle Name>. <Group>. <Task name>.
3+
- Example (RU): 2-12. Иванов Иван Иванович. 2341-а234. Вычисление суммы элементов вектора.
4+
- Example (EN): 2-12. Ivanov Ivan Ivanovich. 2341-a234. Vector elements sum calculation.
25

3-
Please go to the `Preview` tab and select the appropriate template:
6+
Please fill in ALL sections below (no HTML comments).
47

5-
* [Submit Student task (English)](?expand=1&template=task_submission_en.md)
6-
* [Submit Student task (Russian)](?expand=1&template=task_submission_ru.md)
8+
## 1. Full name and group
9+
Name and group:
10+
11+
## 2. Assignment / Topic / Task
12+
Assignment:
13+
14+
## 3. Technology / Platform used
15+
Technology:
16+
17+
## 4. Goals of the work
18+
Goals:
19+
20+
## 5. Solution description and structure
21+
Description:
22+
23+
## 6. System requirements and build instructions
24+
Build & Run:
25+
26+
## 7. Testing and verification
27+
Testing:
28+
29+
## 8. Results
30+
Results:
31+
32+
## 9. Performance analysis
33+
Analysis:
34+
35+
## 10. Conclusions and possible improvements
36+
Conclusions:
37+
38+
## 11. Limitations / known issues
39+
Limitations:
40+
41+
## 12. CI / static analysis / code style
42+
CI & Style:

.github/scripts/validate_pr.py

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -27,7 +27,7 @@
2727
(?P<lastname>[А-ЯA-ZЁ][а-яa-zё]+)\s+
2828
(?P<firstname>[А-ЯA-ZЁ][а-яa-zё]+)\s+
2929
(?P<middlename>[А-ЯA-ZЁ][а-яa-zё]+)\.\s+
30-
(?P<group>\d{3,5}(?:-[A-Za-zА-Яа-я0-9-]+)?)\.\s+
30+
(?P<group>.+?)\.\s+
3131
(?P<taskname>\S.*)
3232
$
3333
'''
@@ -106,10 +106,10 @@ def validate_title(title: str) -> List[str]:
106106
rest = rest[m.end() :]
107107

108108
# 4) Group with dot
109-
m = re.match(r"^(\d{3,5}(?:-[A-Za-zА-Яа-я0-9-]+)?)\.\s+", rest, flags=re.UNICODE)
109+
m = re.match(r"^(.+?)\.\s+", rest, flags=re.UNICODE)
110110
if not m:
111111
errors.append(
112-
"Invalid group number — expected 3–5 digits, optional '-suffix', then a dot and a space.\n"
112+
"Invalid group block — expected '<Group>. ' (a dot and a space after group).\n"
113113
f"Example (RU): {example_ru}\n"
114114
f"Example (EN): {example_en}"
115115
)

tests/test_validate_pr.py

Lines changed: 4 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -233,14 +233,13 @@ def test_commit_invalid_cases(self):
233233
self.assertNotEqual(errs, [])
234234

235235
def test_title_partial_group_and_taskname_errors_and_fallback(self):
236-
# Valid task/variant and name, invalid group
236+
# Arbitrary group should be accepted
237237
t1 = "2-12. Иванов Иван Иванович. ХХХ. Что-то"
238-
errs = self.v.validate_title(t1)
239-
self.assertTrue(any("Invalid group number" in e for e in errs))
240-
# Valid group but trailing newline — parser flags group error in this path
238+
self.assertEqual(self.v.validate_title(t1), [])
239+
# Trailing newline after group triggers fallback (missing taskname)
241240
t2 = "2-12. Иванов Иван Иванович. 2341-а234. \n"
242241
errs = self.v.validate_title(t2)
243-
self.assertTrue(any("Invalid group number" in e for e in errs))
242+
self.assertNotEqual(errs, [])
244243
# Fallback case: embed newline so full regex fails while partial checks pass
245244
t3 = "2-12. Иванов Иван Иванович. 2341-а234. Задача\nещё"
246245
errs = self.v.validate_title(t3)

0 commit comments

Comments
 (0)