Skip to content

Commit cddea6f

Browse files
garfieldGdagar
authored andcommitted
Fixed version firmware type (PX4#8250)
* Fixed the version tag to number and version tag to vendor version number to return dev version in case of any local modifications or in case there's a dash before firmware type in tags that support vendor version.
1 parent 4e7bd57 commit cddea6f

File tree

2 files changed

+39
-2
lines changed

2 files changed

+39
-2
lines changed

src/lib/version/version.c

Lines changed: 10 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -83,6 +83,9 @@ uint32_t version_tag_to_number(const char *tag)
8383
} else if (tag[i] == 'p') {
8484
firmware_type = FIRMWARE_TYPE_ALPHA;
8585

86+
} else if (tag[i] == 't' && i < strlen(tag) - 1 && tag[i + 1] == 'y') {
87+
firmware_type = FIRMWARE_TYPE_DEV;
88+
8689
} else if (tag[i] == 't') {
8790
firmware_type = FIRMWARE_TYPE_BETA;
8891

@@ -93,7 +96,8 @@ uint32_t version_tag_to_number(const char *tag)
9396

9497
if ((dash_count == 1 && point_count == 2 && firmware_type == FIRMWARE_TYPE_RELEASE) ||
9598
(dash_count == 2 && point_count == 2) ||
96-
(dash_count == 3 && point_count == 4)) {
99+
(dash_count == 3 && point_count == 4) ||
100+
(dash_count == 4 && point_count == 4)) {
97101
firmware_type = FIRMWARE_TYPE_DEV;
98102
}
99103

@@ -167,6 +171,9 @@ uint32_t version_tag_to_vendor_version_number(const char *tag)
167171
} else if (tag[i] == 'p') {
168172
firmware_type = FIRMWARE_TYPE_ALPHA;
169173

174+
} else if (tag[i] == 't' && i < strlen(tag) - 1 && tag[i + 1] == 'y') {
175+
firmware_type = FIRMWARE_TYPE_DEV;
176+
170177
} else if (tag[i] == 't') {
171178
firmware_type = FIRMWARE_TYPE_BETA;
172179

@@ -177,7 +184,8 @@ uint32_t version_tag_to_vendor_version_number(const char *tag)
177184

178185
if ((dash_count == 1 && point_count == 2 && firmware_type == FIRMWARE_TYPE_RELEASE) ||
179186
(dash_count == 2 && point_count == 2) ||
180-
(dash_count == 3 && point_count == 4)) {
187+
(dash_count == 3 && point_count == 4) ||
188+
(dash_count == 4 && point_count == 4)) {
181189
firmware_type = FIRMWARE_TYPE_DEV;
182190
}
183191

src/systemcmds/tests/test_versioning.cpp

Lines changed: 29 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -51,6 +51,7 @@ bool VersioningTest::run_tests()
5151
ut_assert_true(_test_tag_to_version_number("v1.2.3-11-gabababab", 0x01020300, 0x00000000));
5252
ut_assert_true(_test_tag_to_version_number("11.45.99-1.2.3", 0x0B2D63FF, 0x010203FF));
5353
ut_assert_true(_test_tag_to_version_number("v11.45.99-1.2.3rc3-7-g7e282f57", 0x0B2D6300, 0x01020300));
54+
ut_assert_true(_test_tag_to_version_number("v11.45.99-1.2.3-rc3-7-g7e282f57", 0x0B2D6300, 0x01020300));
5455
ut_assert_true(_test_tag_to_version_number("v11.45.99-1.2.3rc4", 0x0B2D63C0, 0x010203C0));
5556
ut_assert_true(_test_tag_to_version_number("v11.45.99-1.2.3alpha3-7-g7e282f57", 0x0B2D6300, 0x01020300));
5657
ut_assert_true(_test_tag_to_version_number("v11.45.99-1.2.3alpha4", 0x0B2D6340, 0x01020340));
@@ -77,6 +78,34 @@ bool VersioningTest::run_tests()
7778
ut_assert_true(_test_tag_to_version_number("v12.12-randomtextwithnumber", 0x00000000, 0x00000000));
7879
ut_assert_true(_test_tag_to_version_number("...-...", 0x00000000, 0x00000000));
7980
ut_assert_true(_test_tag_to_version_number("v...-...", 0x00000000, 0x00000000));
81+
ut_assert_true(_test_tag_to_version_number("v1.2.3-dirty", 0x01020300, 0x00000000));
82+
ut_assert_true(_test_tag_to_version_number("v11.45.99-1.2.3-dirty", 0x0B2D6300, 0x01020300));
83+
ut_assert_true(_test_tag_to_version_number("v1.2.3-111-dirty", 0x01020300, 0x00000000));
84+
ut_assert_true(_test_tag_to_version_number("v1.2.3-11-gabababab-dirty", 0x01020300, 0x00000000));
85+
ut_assert_true(_test_tag_to_version_number("v1.2.3-11-g1d5e979-dirty", 0x01020300, 0x00000000));
86+
ut_assert_true(_test_tag_to_version_number("v1.4.9-1.2.3rc3-7-g7e282f57-dirty", 0x01040900, 0x01020300));
87+
ut_assert_true(_test_tag_to_version_number("v1.4.9-1.2.3-rc3-7-g7e282f57-dirty", 0x01040900, 0x01020300));
88+
ut_assert_true(_test_tag_to_version_number("v1.4.9-1.2.3alpha-7-g7e282f5-dirty", 0x01040900, 0x01020300));
89+
ut_assert_true(_test_tag_to_version_number("v11.45.99-1.2.3alpha4-dirty", 0x0B2D6300, 0x01020300));
90+
ut_assert_true(_test_tag_to_version_number("v1.4.9-1.2.3beta-7-g7e282f57-dirty", 0x01040900, 0x01020300));
91+
ut_assert_true(_test_tag_to_version_number("v11.45.99-1.2.3beta4-dirty", 0x0B2D6300, 0x01020300));
92+
ut_assert_true(_test_tag_to_version_number("v11.45.99-1.2.3dev4-dirty", 0x0B2D6300, 0x01020300));
93+
ut_assert_true(_test_tag_to_version_number("v1.4.9-1.2.3dev3-7-g7e282f57-dirty", 0x01040900, 0x01020300));
94+
ut_assert_true(_test_tag_to_version_number("v1.6.2-1.0.0rc2-dirty", 0x01060200, 0x01000000));
95+
ut_assert_true(_test_tag_to_version_number("v1.6.2-1.0.0-rc2-dirty", 0x01060200, 0x01000000));
96+
ut_assert_true(_test_tag_to_version_number("v1.6.2-1.0.0-rc2-gabababab-dirty", 0x01060200, 0x01000000));
97+
ut_assert_true(_test_tag_to_version_number("v1.6.2-1.0.0rc2-gabababab-dirty", 0x01060200, 0x01000000));
98+
ut_assert_true(_test_tag_to_version_number("v1.6.2-rc2-dirty", 0x01060200, 0x00000000));
99+
ut_assert_true(_test_tag_to_version_number("v1.6.2rc1-dirty", 0x01060200, 0x00000000));
100+
ut_assert_true(_test_tag_to_version_number("v1.6.2rc1-67-g1d5e979-dirty", 0x01060200, 0x00000000));
101+
ut_assert_true(_test_tag_to_version_number("v1.6.2-rc1-67-g1d5e979-dirty", 0x01060200, 0x00000000));
102+
ut_assert_true(_test_tag_to_version_number("v1.6.2-0.8.7-67-g1d5e979-dirty", 0x01060200, 0x00080700));
103+
ut_assert_true(_test_tag_to_version_number("v1.8.2alpha4-dirty", 0x01080200, 0x00000000));
104+
ut_assert_true(_test_tag_to_version_number("v1.8.2alpha4-67-g1d5e979-dirty", 0x01080200, 0x00000000));
105+
ut_assert_true(_test_tag_to_version_number("v1.8.2beta4-dirty", 0x01080200, 0x00000000));
106+
ut_assert_true(_test_tag_to_version_number("v1.8.2beta4-67-g1d5e979-dirty", 0x01080200, 0x00000000));
107+
ut_assert_true(_test_tag_to_version_number("v1.8.2dev4-dirty", 0x01080200, 0x00000000));
108+
ut_assert_true(_test_tag_to_version_number("v1.8.2dev4-67-g1d5e979-dirty", 0x01080200, 0x00000000));
80109

81110
return (_tests_failed == 0);
82111
}

0 commit comments

Comments
 (0)