Skip to content

Commit 13658df

Browse files
remove use of windows-2019 image in azure CI tests (#1172)
Azure windows 2019 image is being deprecated, shift CI to windows-2022 and windows 2025 images add tests for coverage and a few missing checks for duplication options. --------- Co-authored-by: pre-commit-ci[bot] <66853113+pre-commit-ci[bot]@users.noreply.github.com>
1 parent 26bb3f2 commit 13658df

File tree

4 files changed

+41
-6
lines changed

4 files changed

+41
-6
lines changed

azure-pipelines.yml

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -31,7 +31,7 @@ jobs:
3131
strategy:
3232
matrix:
3333
visual_studio_arm64:
34-
vmImage: "windows-2022"
34+
vmImage: "windows-2025"
3535
cli11.std: 17
3636
cli11.build_type: Debug
3737
cli11.options: -G "Visual Studio 17 2022" -A ARM64
@@ -66,21 +66,21 @@ jobs:
6666
cli11.std: 14
6767
cli11.precompile: ON
6868
Windows17:
69-
vmImage: "windows-2019"
69+
vmImage: "windows-2022"
7070
cli11.std: 17
7171
Windows17PC:
72-
vmImage: "windows-2019"
72+
vmImage: "windows-2022"
7373
cli11.std: 17
7474
cli11.precompile: ON
7575
Windows11:
76-
vmImage: "windows-2019"
76+
vmImage: "windows-2022"
7777
cli11.std: 11
7878
Windows20:
79-
vmImage: "windows-2022"
79+
vmImage: "windows-2025"
8080
cli11.std: 20
8181
cli11.options: -DCMAKE_CXX_FLAGS="/EHsc"
8282
WindowsLatest:
83-
vmImage: "windows-2022"
83+
vmImage: "windows-2025"
8484
cli11.std: 23
8585
cli11.options: -DCMAKE_CXX_FLAGS="/EHsc"
8686
Linux17nortti:

include/CLI/impl/App_inl.hpp

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -206,6 +206,12 @@ CLI11_INLINE Option *App::add_option(std::string option_name,
206206
if(op != nullptr && op->get_configurable()) {
207207
throw(OptionAlreadyAdded("added option matches existing option: --" + ln));
208208
}
209+
if(ln.size() == 1 || top_level_parent->get_allow_non_standard_option_names()) {
210+
op = top_level_parent->get_option_no_throw("-" + ln);
211+
if(op != nullptr && op->get_configurable()) {
212+
throw(OptionAlreadyAdded("added option matches existing option: -" + ln));
213+
}
214+
}
209215
}
210216
for(auto &sn : myopt.snames_) {
211217
const auto *op = top_level_parent->get_option_no_throw(sn);
@@ -216,6 +222,10 @@ CLI11_INLINE Option *App::add_option(std::string option_name,
216222
if(op != nullptr && op->get_configurable()) {
217223
throw(OptionAlreadyAdded("added option matches existing option: -" + sn));
218224
}
225+
op = top_level_parent->get_option_no_throw("--" + sn);
226+
if(op != nullptr && op->get_configurable()) {
227+
throw(OptionAlreadyAdded("added option matches existing option: --" + sn));
228+
}
219229
}
220230
}
221231
if(allow_non_standard_options_ && !myopt.snames_.empty()) {

tests/OptionTypeTest.cpp

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -951,6 +951,12 @@ TEST_CASE_METHOD(TApp, "vectorEmptyArg", "[optiontype]") {
951951
run();
952952
CHECK(cv.size() == 2);
953953
CHECK(cv[1] == "[]");
954+
955+
args = {"-c", "test1", "[[aa]]"};
956+
957+
run();
958+
CHECK(cv.size() == 2);
959+
CHECK(cv[1] == "[a]");
954960
}
955961

956962
TEST_CASE_METHOD(TApp, "vectorDoubleArg", "[optiontype]") {

tests/SubcommandTest.cpp

Lines changed: 19 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1851,6 +1851,25 @@ TEST_CASE_METHOD(TApp, "subcommand_help", "[subcom]") {
18511851
CHECK(called);
18521852
}
18531853

1854+
TEST_CASE_METHOD(TApp, "DuplicateErrors", "[subcom]") {
1855+
app.allow_non_standard_option_names();
1856+
app.add_option("-t");
1857+
app.add_option("m");
1858+
app.add_option("--quit");
1859+
auto *sub1 = app.add_option_group("sub1");
1860+
1861+
CHECK_THROWS_AS(sub1->add_option("-t"), CLI::OptionAlreadyAdded);
1862+
CHECK_THROWS_AS(sub1->add_option("--t"), CLI::OptionAlreadyAdded);
1863+
CHECK_THROWS_AS(sub1->add_option("t"), CLI::OptionAlreadyAdded);
1864+
CHECK_THROWS_AS(sub1->add_option("-m"), CLI::OptionAlreadyAdded);
1865+
CHECK_THROWS_AS(sub1->add_option("--m"), CLI::OptionAlreadyAdded);
1866+
CHECK_THROWS_AS(sub1->add_option("m"), CLI::OptionAlreadyAdded);
1867+
CHECK_THROWS_AS(sub1->add_option("quit"), CLI::OptionAlreadyAdded);
1868+
CHECK_THROWS_AS(sub1->add_option("--quit"), CLI::OptionAlreadyAdded);
1869+
sub1->allow_non_standard_option_names();
1870+
CHECK_THROWS_AS(sub1->add_option("-quit"), CLI::OptionAlreadyAdded);
1871+
}
1872+
18541873
TEST_CASE_METHOD(TApp, "AliasErrors", "[subcom]") {
18551874
auto *sub1 = app.add_subcommand("sub1");
18561875
auto *sub2 = app.add_subcommand("sub2");

0 commit comments

Comments
 (0)