Skip to content

Commit 37b251b

Browse files
committed
Merge remote-tracking branch 'origin/release-candidate' into release
2 parents 54fd281 + 3b3ccba commit 37b251b

File tree

132 files changed

+4322
-1417
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

132 files changed

+4322
-1417
lines changed

.github/CODEOWNERS

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -36,7 +36,7 @@
3636
/applications/services/power_settings_app/ @skotopes @DrZlo13 @hedger @gsurkov @gornekich
3737

3838
/applications/system/storage_move_to_sd/ @skotopes @DrZlo13 @hedger @gsurkov @nminaylov
39-
/applications/system/js_app/ @skotopes @DrZlo13 @hedger @gsurkov @nminaylov
39+
/applications/system/js_app/ @skotopes @DrZlo13 @hedger @gsurkov @nminaylov @portasynthinca3
4040

4141
/applications/debug/unit_tests/ @skotopes @DrZlo13 @hedger @gsurkov @nminaylov @gornekich @Astrrra @Skorpionm
4242

@@ -49,8 +49,8 @@
4949
/applications/main/infrared/resources/ @skotopes @DrZlo13 @hedger @gsurkov
5050

5151
# Documentation
52-
/documentation/ @skotopes @DrZlo13 @hedger @gsurkov @drunkbatya
53-
/scripts/toolchain/ @skotopes @DrZlo13 @hedger @gsurkov @drunkbatya
52+
/documentation/ @skotopes @DrZlo13 @hedger @gsurkov
53+
/scripts/toolchain/ @skotopes @DrZlo13 @hedger @gsurkov
5454

5555
# Lib
5656
/lib/stm32wb_copro/ @skotopes @DrZlo13 @hedger @gsurkov @gornekich
@@ -59,11 +59,11 @@
5959
/lib/lfrfid/ @skotopes @DrZlo13 @hedger @gsurkov @nminaylov
6060
/lib/libusb_stm32/ @skotopes @DrZlo13 @hedger @gsurkov @nminaylov
6161
/lib/mbedtls/ @skotopes @DrZlo13 @hedger @gsurkov @nminaylov
62-
/lib/mjs/ @skotopes @DrZlo13 @hedger @gsurkov @nminaylov
62+
/lib/mjs/ @skotopes @DrZlo13 @hedger @gsurkov @nminaylov @portasynthinca3
6363
/lib/nanopb/ @skotopes @DrZlo13 @hedger @gsurkov @nminaylov
6464
/lib/nfc/ @skotopes @DrZlo13 @hedger @gsurkov @gornekich @Astrrra
6565
/lib/one_wire/ @skotopes @DrZlo13 @hedger @gsurkov
6666
/lib/subghz/ @skotopes @DrZlo13 @hedger @gsurkov @Skorpionm
6767

6868
# CI/CD
69-
/.github/workflows/ @skotopes @DrZlo13 @hedger @gsurkov @drunkbatya
69+
/.github/workflows/ @skotopes @DrZlo13 @hedger @gsurkov

.github/workflows/build.yml

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -12,6 +12,7 @@ env:
1212
DEFAULT_TARGET: f7
1313
FBT_TOOLCHAIN_PATH: /runner/_work
1414
FBT_GIT_SUBMODULE_SHALLOW: 1
15+
GH_TOKEN: ${{ secrets.GITHUB_TOKEN }}
1516

1617
jobs:
1718
main:

.github/workflows/build_compact.yml

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,7 @@ on:
66
env:
77
FBT_TOOLCHAIN_PATH: /runner/_work
88
FBT_GIT_SUBMODULE_SHALLOW: 1
9+
GH_TOKEN: ${{ secrets.GITHUB_TOKEN }}
910

1011
jobs:
1112
compact:

.github/workflows/docs.yml

Lines changed: 7 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -9,6 +9,7 @@ on:
99
env:
1010
TARGETS: f7
1111
DEFAULT_TARGET: f7
12+
GH_TOKEN: ${{ secrets.GITHUB_TOKEN }}
1213

1314
jobs:
1415
check-secret:
@@ -54,15 +55,13 @@ jobs:
5455
fi
5556
python3 scripts/get_env.py "--event_file=${{ github.event_path }}" "--type=$TYPE"
5657
57-
- name: 'Generate documentation'
58-
uses: mattnotmitt/doxygen-action@edge
59-
env:
60-
DOXY_SRC_ROOT: "${{ github.workspace }}"
61-
DOXY_CONFIG_DIR: "${{ github.workspace }}/documentation/doxygen"
62-
DOXY_OUTPUT_DIR: "${{ github.workspace }}/documentation/doxygen/build"
58+
- name: install-doxygen
59+
uses: AdarshRawat1/Install-Doxygen@v1.0
6360
with:
64-
working-directory: 'documentation/'
65-
doxyfile-path: './doxygen/Doxyfile-awesome.cfg'
61+
version: "1.12.0"
62+
63+
- name: 'Generate documentation'
64+
run: ./fbt doxygen
6665

6766
- name: 'Upload documentation'
6867
if: ${{ github.event_name == 'push' && github.ref == 'refs/heads/dev' && needs.check-secret.outputs.s3-valid-config == 'true' }}

.github/workflows/merge_report.yml

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,7 @@ on:
77

88
env:
99
FBT_TOOLCHAIN_PATH: /runner/_work
10+
GH_TOKEN: ${{ secrets.GITHUB_TOKEN }}
1011

1112
jobs:
1213
merge_report:

.github/workflows/pvs_studio.yml

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -11,6 +11,7 @@ env:
1111
DEFAULT_TARGET: f7
1212
FBT_TOOLCHAIN_PATH: /runner/_work
1313
FBT_GIT_SUBMODULE_SHALLOW: 1
14+
GH_TOKEN: ${{ secrets.GITHUB_TOKEN }}
1415

1516
jobs:
1617
analyse_c_cpp:

.github/workflows/unit_tests.yml

Lines changed: 20 additions & 28 deletions
Original file line numberDiff line numberDiff line change
@@ -5,64 +5,56 @@ on:
55
env:
66
TARGETS: f7
77
DEFAULT_TARGET: f7
8-
FBT_TOOLCHAIN_PATH: /opt
8+
FBT_TOOLCHAIN_PATH: /opt/
99
FBT_GIT_SUBMODULE_SHALLOW: 1
1010

1111
jobs:
1212
run_units_on_bench:
13-
runs-on: [self-hosted, FlipperZeroUnitTest]
13+
runs-on: [ self-hosted, FlipperZeroTest ]
1414
steps:
15-
- name: 'Wipe workspace'
16-
run: find ./ -mount -maxdepth 1 -exec rm -rf {} \;
17-
1815
- name: Checkout code
1916
uses: actions/checkout@v4
2017
with:
2118
fetch-depth: 1
2219
ref: ${{ github.event.pull_request.head.sha }}
2320

24-
- name: 'Get flipper from device manager (mock)'
25-
id: device
26-
run: |
27-
echo "flipper=auto" >> $GITHUB_OUTPUT
28-
2921
- name: 'Flash unit tests firmware'
3022
id: flashing
3123
if: success()
32-
timeout-minutes: 10
33-
run: |
34-
./fbt resources firmware_latest flash SWD_TRANSPORT_SERIAL=2A0906016415303030303032 LIB_DEBUG=1 FIRMWARE_APP_SET=unit_tests FORCE=1
35-
36-
- name: 'Wait for flipper and format ext'
37-
id: format_ext
38-
if: steps.flashing.outcome == 'success'
39-
timeout-minutes: 5
24+
timeout-minutes: 20
4025
run: |
4126
source scripts/toolchain/fbtenv.sh
42-
python3 scripts/testops.py -p=${{steps.device.outputs.flipper}} -t=120 await_flipper
43-
python3 scripts/storage.py -p ${{steps.device.outputs.flipper}} format_ext
27+
./fbt resources firmware_latest flash LIB_DEBUG=1 FIRMWARE_APP_SET=unit_tests FORCE=1
28+
4429
4530
- name: 'Copy assets and unit data, reboot and wait for flipper'
4631
id: copy
47-
if: steps.format_ext.outcome == 'success'
32+
if: steps.flashing.outcome == 'success'
4833
timeout-minutes: 7
4934
run: |
5035
source scripts/toolchain/fbtenv.sh
51-
python3 scripts/testops.py -p=${{steps.device.outputs.flipper}} -t=15 await_flipper
52-
rm -rf build/latest/resources/dolphin
53-
python3 scripts/storage.py -p ${{steps.device.outputs.flipper}} -f send build/latest/resources /ext
54-
python3 scripts/power.py -p ${{steps.device.outputs.flipper}} reboot
55-
python3 scripts/testops.py -p=${{steps.device.outputs.flipper}} -t=15 await_flipper
36+
python3 scripts/testops.py -t=15 await_flipper
37+
python3 scripts/storage.py -f send build/latest/resources /ext
38+
python3 scripts/storage.py -f send /region_data /ext/.int/.region_data
39+
python3 scripts/power.py reboot
40+
python3 scripts/testops.py -t=30 await_flipper
5641
5742
- name: 'Run units and validate results'
5843
id: run_units
5944
if: steps.copy.outcome == 'success'
6045
timeout-minutes: 7
6146
run: |
6247
source scripts/toolchain/fbtenv.sh
63-
python3 scripts/testops.py run_units -p ${{steps.device.outputs.flipper}}
48+
python3 scripts/testops.py run_units
49+
50+
- name: 'Upload test results'
51+
if: failure() && steps.flashing.outcome == 'success' && steps.run_units.outcome != 'skipped'
52+
uses: actions/upload-artifact@v4
53+
with:
54+
name: unit-tests_output
55+
path: unit_tests*.txt
6456

6557
- name: 'Check GDB output'
6658
if: failure() && steps.flashing.outcome == 'success'
6759
run: |
68-
./fbt gdb_trace_all SWD_TRANSPORT_SERIAL=2A0906016415303030303032 LIB_DEBUG=1 FIRMWARE_APP_SET=unit_tests FORCE=1
60+
./fbt gdb_trace_all LIB_DEBUG=1 FIRMWARE_APP_SET=unit_tests FORCE=1

.github/workflows/updater_test.yml

Lines changed: 10 additions & 44 deletions
Original file line numberDiff line numberDiff line change
@@ -1,73 +1,39 @@
11
name: 'Updater test'
22
on:
33
pull_request:
4+
45
env:
56
TARGETS: f7
67
DEFAULT_TARGET: f7
7-
FBT_TOOLCHAIN_PATH: /opt
8+
FBT_TOOLCHAIN_PATH: /opt/
89
FBT_GIT_SUBMODULE_SHALLOW: 1
910

1011
jobs:
1112
test_updater_on_bench:
12-
runs-on: [self-hosted, FlipperZeroUpdaterTest]
13+
runs-on: [self-hosted, FlipperZeroTest ]
1314
steps:
14-
- name: 'Wipe workspace'
15-
run: find ./ -mount -maxdepth 1 -exec rm -rf {} \;
16-
1715
- name: Checkout code
1816
uses: actions/checkout@v4
1917
with:
2018
fetch-depth: 1
21-
submodules: false
2219
ref: ${{ github.event.pull_request.head.sha }}
2320

24-
- name: 'Get flipper from device manager (mock)'
25-
id: device
26-
run: |
27-
echo "flipper=auto" >> $GITHUB_OUTPUT
28-
echo "stlink=0F020D026415303030303032" >> $GITHUB_OUTPUT
29-
3021
- name: 'Flashing target firmware'
3122
id: first_full_flash
32-
timeout-minutes: 10
23+
timeout-minutes: 20
3324
run: |
3425
source scripts/toolchain/fbtenv.sh
35-
./fbt flash_usb_full PORT=${{steps.device.outputs.flipper}} FORCE=1
36-
python3 scripts/testops.py -p=${{steps.device.outputs.flipper}} -t=180 await_flipper
26+
python3 scripts/testops.py -t=180 await_flipper
27+
./fbt flash_usb_full FORCE=1
28+
3729
3830
- name: 'Validating updater'
3931
id: second_full_flash
4032
timeout-minutes: 10
4133
if: success()
4234
run: |
4335
source scripts/toolchain/fbtenv.sh
44-
./fbt flash_usb PORT=${{steps.device.outputs.flipper}} FORCE=1
45-
python3 scripts/testops.py -p=${{steps.device.outputs.flipper}} -t=180 await_flipper
46-
47-
- name: 'Get last release tag'
48-
id: release_tag
49-
if: failure()
50-
run: |
51-
echo "tag=$(git tag -l --sort=-version:refname | grep -v "rc\|RC" | head -1)" >> $GITHUB_OUTPUT
52-
53-
- name: 'Wipe workspace'
54-
run: find ./ -mount -maxdepth 1 -exec rm -rf {} \;
36+
python3 scripts/testops.py -t=180 await_flipper
37+
./fbt flash_usb FORCE=1
38+
python3 scripts/testops.py -t=180 await_flipper
5539
56-
- name: 'Checkout latest release'
57-
uses: actions/checkout@v4
58-
if: failure()
59-
with:
60-
fetch-depth: 1
61-
ref: ${{ steps.release_tag.outputs.tag }}
62-
63-
- name: 'Flash last release'
64-
if: failure()
65-
run: |
66-
./fbt flash SWD_TRANSPORT_SERIAL=${{steps.device.outputs.stlink}} FORCE=1
67-
68-
- name: 'Wait for flipper and format ext'
69-
if: failure()
70-
run: |
71-
source scripts/toolchain/fbtenv.sh
72-
python3 scripts/testops.py -p=${{steps.device.outputs.flipper}} -t=180 await_flipper
73-
python3 scripts/storage.py -p ${{steps.device.outputs.flipper}} format_ext

applications/debug/unit_tests/application.fam

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -236,3 +236,11 @@ App(
236236
entry_point="get_api",
237237
requires=["unit_tests"],
238238
)
239+
240+
App(
241+
appid="test_pipe",
242+
sources=["tests/common/*.c", "tests/pipe/*.c"],
243+
apptype=FlipperAppType.PLUGIN,
244+
entry_point="get_api",
245+
requires=["unit_tests"],
246+
)

applications/debug/unit_tests/tests/flipper_format/flipper_format_test.c

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -265,6 +265,7 @@ static bool test_write(const char* file_name) {
265265
if(!flipper_format_file_open_always(file, file_name)) break;
266266
if(!flipper_format_write_header_cstr(file, test_filetype, test_version)) break;
267267
if(!flipper_format_write_comment_cstr(file, "This is comment")) break;
268+
if(!flipper_format_write_empty_line(file)) break;
268269
if(!flipper_format_write_string_cstr(file, test_string_key, test_string_data)) break;
269270
if(!flipper_format_write_int32(file, test_int_key, test_int_data, COUNT_OF(test_int_data)))
270271
break;

0 commit comments

Comments
 (0)