@@ -922,3 +922,31 @@ void test_adopt__choice_switch_or_arg_advances_arg(void)
922922 cl_assert_equal_p (NULL , baz );
923923 cl_assert_equal_s ("actually_final" , final );
924924}
925+
926+ void test_adopt__stop (void )
927+ {
928+ int foo = 0 , bar = 0 , help = 0 , baz = 0 ;
929+ adopt_opt result ;
930+
931+ adopt_spec specs [] = {
932+ { ADOPT_TYPE_SWITCH , "foo" , 'f' , & foo , 'f' , ADOPT_USAGE_REQUIRED },
933+ { ADOPT_TYPE_SWITCH , "bar" , 0 , & bar , 'b' , ADOPT_USAGE_REQUIRED },
934+ { ADOPT_TYPE_SWITCH , "help" , 0 , & help , 'h' , ADOPT_USAGE_STOP_PARSING },
935+ { ADOPT_TYPE_SWITCH , "baz" , 0 , & baz , 'z' , ADOPT_USAGE_REQUIRED },
936+ { 0 },
937+ };
938+
939+ char * args [] = { "-f" , "--help" , "-z" };
940+
941+ cl_assert_equal_i (ADOPT_STATUS_DONE , adopt_parse (& result , specs , args , 2 ));
942+
943+ cl_assert_equal_i (ADOPT_STATUS_DONE , result .status );
944+ cl_assert_equal_s ("--help" , result .arg );
945+ cl_assert_equal_p (NULL , result .value );
946+ cl_assert_equal_i (0 , result .args_len );
947+
948+ cl_assert_equal_i ('f' , foo );
949+ cl_assert_equal_p ('h' , help );
950+ cl_assert_equal_p (0 , bar );
951+ cl_assert_equal_p (0 , baz );
952+ }
0 commit comments