LCOV - code coverage report
Current view: top level - tests - utils.cpp (source / functions) Hit Total Coverage
Test: coverage.info Lines: 249 249 100.0 %
Date: 2019-08-10 16:09:07 Functions: 6 6 100.0 %
Legend: Lines: hit not hit

          Line data    Source code
       1             : /*
       2             :  * License:
       3             :  *    Copyright (c) 2006-2019  Made to Order Software Corp.  All Rights Reserved
       4             :  *
       5             :  *    https://snapwebsites.org/
       6             :  *    contact@m2osw.com
       7             :  *
       8             :  *    This program is free software; you can redistribute it and/or modify
       9             :  *    it under the terms of the GNU General Public License as published by
      10             :  *    the Free Software Foundation; either version 2 of the License, or
      11             :  *    (at your option) any later version.
      12             :  *
      13             :  *    This program is distributed in the hope that it will be useful,
      14             :  *    but WITHOUT ANY WARRANTY; without even the implied warranty of
      15             :  *    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
      16             :  *    GNU General Public License for more details.
      17             :  *
      18             :  *    You should have received a copy of the GNU General Public License along
      19             :  *    with this program; if not, write to the Free Software Foundation, Inc.,
      20             :  *    51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
      21             :  *
      22             :  * Authors:
      23             :  *    Alexis Wilke   alexis@m2osw.com
      24             :  */
      25             : 
      26             : // self
      27             : //
      28             : #include "main.h"
      29             : 
      30             : // advgetopt lib
      31             : //
      32             : #include <advgetopt/utils.h>
      33             : 
      34             : // snapdev lib
      35             : //
      36             : #include <snapdev/safe_setenv.h>
      37             : 
      38             : 
      39             : 
      40           4 : CATCH_TEST_CASE("utils_unquote", "[utils][valid]")
      41             : {
      42           4 :     CATCH_START_SECTION("Unquote, default pairs")
      43           1 :         CATCH_REQUIRE(advgetopt::unquote("") == "");
      44           1 :         CATCH_REQUIRE(advgetopt::unquote("a") == "a");
      45           1 :         CATCH_REQUIRE(advgetopt::unquote("ab") == "ab");
      46           1 :         CATCH_REQUIRE(advgetopt::unquote("abc") == "abc");
      47             : 
      48           1 :         CATCH_REQUIRE(advgetopt::unquote("''") == "");
      49           1 :         CATCH_REQUIRE(advgetopt::unquote("'a'") == "a");
      50           1 :         CATCH_REQUIRE(advgetopt::unquote("'ab'") == "ab");
      51           1 :         CATCH_REQUIRE(advgetopt::unquote("'abc'") == "abc");
      52           1 :         CATCH_REQUIRE(advgetopt::unquote("'abcd'") == "abcd");
      53             : 
      54           1 :         CATCH_REQUIRE(advgetopt::unquote("\"\"") == "");
      55           1 :         CATCH_REQUIRE(advgetopt::unquote("\"a\"") == "a");
      56           1 :         CATCH_REQUIRE(advgetopt::unquote("\"ab\"") == "ab");
      57           1 :         CATCH_REQUIRE(advgetopt::unquote("\"abc\"") == "abc");
      58           1 :         CATCH_REQUIRE(advgetopt::unquote("\"abcd\"") == "abcd");
      59             : 
      60           1 :         CATCH_REQUIRE(advgetopt::unquote("\"'") == "\"'");
      61           1 :         CATCH_REQUIRE(advgetopt::unquote("\"a'") == "\"a'");
      62           1 :         CATCH_REQUIRE(advgetopt::unquote("\"ab'") == "\"ab'");
      63           1 :         CATCH_REQUIRE(advgetopt::unquote("\"abc'") == "\"abc'");
      64           1 :         CATCH_REQUIRE(advgetopt::unquote("\"abcd'") == "\"abcd'");
      65             : 
      66           1 :         CATCH_REQUIRE(advgetopt::unquote("'\"") == "'\"");
      67           1 :         CATCH_REQUIRE(advgetopt::unquote("'a\"") == "'a\"");
      68           1 :         CATCH_REQUIRE(advgetopt::unquote("'ab\"") == "'ab\"");
      69           1 :         CATCH_REQUIRE(advgetopt::unquote("'abc\"") == "'abc\"");
      70           1 :         CATCH_REQUIRE(advgetopt::unquote("'abcd\"") == "'abcd\"");
      71             : 
      72           1 :         CATCH_REQUIRE(advgetopt::unquote("\"") == "\"");
      73           1 :         CATCH_REQUIRE(advgetopt::unquote("\"a") == "\"a");
      74           1 :         CATCH_REQUIRE(advgetopt::unquote("\"ab") == "\"ab");
      75           1 :         CATCH_REQUIRE(advgetopt::unquote("\"abc") == "\"abc");
      76           1 :         CATCH_REQUIRE(advgetopt::unquote("\"abcd") == "\"abcd");
      77             : 
      78           1 :         CATCH_REQUIRE(advgetopt::unquote("'") == "'");
      79           1 :         CATCH_REQUIRE(advgetopt::unquote("'a") == "'a");
      80           1 :         CATCH_REQUIRE(advgetopt::unquote("'ab") == "'ab");
      81           1 :         CATCH_REQUIRE(advgetopt::unquote("'abc") == "'abc");
      82           1 :         CATCH_REQUIRE(advgetopt::unquote("'abcd") == "'abcd");
      83             : 
      84           1 :         CATCH_REQUIRE(advgetopt::unquote("'") == "'");
      85           1 :         CATCH_REQUIRE(advgetopt::unquote("a'") == "a'");
      86           1 :         CATCH_REQUIRE(advgetopt::unquote("ab'") == "ab'");
      87           1 :         CATCH_REQUIRE(advgetopt::unquote("abc'") == "abc'");
      88           1 :         CATCH_REQUIRE(advgetopt::unquote("abcd'") == "abcd'");
      89             : 
      90           1 :         CATCH_REQUIRE(advgetopt::unquote("\"") == "\"");
      91           1 :         CATCH_REQUIRE(advgetopt::unquote("a\"") == "a\"");
      92           1 :         CATCH_REQUIRE(advgetopt::unquote("ab\"") == "ab\"");
      93           1 :         CATCH_REQUIRE(advgetopt::unquote("abc\"") == "abc\"");
      94           1 :         CATCH_REQUIRE(advgetopt::unquote("abcd\"") == "abcd\"");
      95             :     CATCH_END_SECTION()
      96             : 
      97           4 :     CATCH_START_SECTION("Unquote, brackets")
      98           1 :         CATCH_REQUIRE(advgetopt::unquote("", "[]<>{}") == "");
      99           1 :         CATCH_REQUIRE(advgetopt::unquote("a", "[]<>{}") == "a");
     100           1 :         CATCH_REQUIRE(advgetopt::unquote("ab", "[]<>{}") == "ab");
     101           1 :         CATCH_REQUIRE(advgetopt::unquote("abc", "[]<>{}") == "abc");
     102             : 
     103           1 :         CATCH_REQUIRE(advgetopt::unquote("{}", "[]<>{}") == "");
     104           1 :         CATCH_REQUIRE(advgetopt::unquote("{a}", "[]<>{}") == "a");
     105           1 :         CATCH_REQUIRE(advgetopt::unquote("{ab}", "[]<>{}") == "ab");
     106           1 :         CATCH_REQUIRE(advgetopt::unquote("{abc}", "[]<>{}") == "abc");
     107           1 :         CATCH_REQUIRE(advgetopt::unquote("{abcd}", "[]<>{}") == "abcd");
     108             : 
     109           1 :         CATCH_REQUIRE(advgetopt::unquote("[]", "[]<>{}") == "");
     110           1 :         CATCH_REQUIRE(advgetopt::unquote("[a]", "[]<>{}") == "a");
     111           1 :         CATCH_REQUIRE(advgetopt::unquote("[ab]", "[]<>{}") == "ab");
     112           1 :         CATCH_REQUIRE(advgetopt::unquote("[abc]", "[]<>{}") == "abc");
     113           1 :         CATCH_REQUIRE(advgetopt::unquote("[abcd]", "[]<>{}") == "abcd");
     114             : 
     115           1 :         CATCH_REQUIRE(advgetopt::unquote("<>", "[]<>{}") == "");
     116           1 :         CATCH_REQUIRE(advgetopt::unquote("<a>", "[]<>{}") == "a");
     117           1 :         CATCH_REQUIRE(advgetopt::unquote("<ab>", "[]<>{}") == "ab");
     118           1 :         CATCH_REQUIRE(advgetopt::unquote("<abc>", "[]<>{}") == "abc");
     119           1 :         CATCH_REQUIRE(advgetopt::unquote("<abcd>", "[]<>{}") == "abcd");
     120             : 
     121           1 :         CATCH_REQUIRE(advgetopt::unquote("[}", "[]<>{}") == "[}");
     122           1 :         CATCH_REQUIRE(advgetopt::unquote("[a}", "[]<>{}") == "[a}");
     123           1 :         CATCH_REQUIRE(advgetopt::unquote("[ab}", "[]<>{}") == "[ab}");
     124           1 :         CATCH_REQUIRE(advgetopt::unquote("[abc}", "[]<>{}") == "[abc}");
     125           1 :         CATCH_REQUIRE(advgetopt::unquote("[abcd}", "[]<>{}") == "[abcd}");
     126             : 
     127           1 :         CATCH_REQUIRE(advgetopt::unquote("[>", "[]<>{}") == "[>");
     128           1 :         CATCH_REQUIRE(advgetopt::unquote("[a>", "[]<>{}") == "[a>");
     129           1 :         CATCH_REQUIRE(advgetopt::unquote("[ab>", "[]<>{}") == "[ab>");
     130           1 :         CATCH_REQUIRE(advgetopt::unquote("[abc>", "[]<>{}") == "[abc>");
     131           1 :         CATCH_REQUIRE(advgetopt::unquote("[abcd>", "[]<>{}") == "[abcd>");
     132             : 
     133           1 :         CATCH_REQUIRE(advgetopt::unquote("'\"", "[]<>{}") == "'\"");
     134           1 :         CATCH_REQUIRE(advgetopt::unquote("'a\"", "[]<>{}") == "'a\"");
     135           1 :         CATCH_REQUIRE(advgetopt::unquote("'ab\"", "[]<>{}") == "'ab\"");
     136           1 :         CATCH_REQUIRE(advgetopt::unquote("'abc\"", "[]<>{}") == "'abc\"");
     137           1 :         CATCH_REQUIRE(advgetopt::unquote("'abcd\"", "[]<>{}") == "'abcd\"");
     138             : 
     139           1 :         CATCH_REQUIRE(advgetopt::unquote("[", "[]<>{}") == "[");
     140           1 :         CATCH_REQUIRE(advgetopt::unquote("[a", "[]<>{}") == "[a");
     141           1 :         CATCH_REQUIRE(advgetopt::unquote("[ab", "[]<>{}") == "[ab");
     142           1 :         CATCH_REQUIRE(advgetopt::unquote("[abc", "[]<>{}") == "[abc");
     143           1 :         CATCH_REQUIRE(advgetopt::unquote("[abcd", "[]<>{}") == "[abcd");
     144             : 
     145           1 :         CATCH_REQUIRE(advgetopt::unquote("{", "[]<>{}") == "{");
     146           1 :         CATCH_REQUIRE(advgetopt::unquote("{a", "[]<>{}") == "{a");
     147           1 :         CATCH_REQUIRE(advgetopt::unquote("{ab", "[]<>{}") == "{ab");
     148           1 :         CATCH_REQUIRE(advgetopt::unquote("{abc", "[]<>{}") == "{abc");
     149           1 :         CATCH_REQUIRE(advgetopt::unquote("{abcd", "[]<>{}") == "{abcd");
     150             : 
     151           1 :         CATCH_REQUIRE(advgetopt::unquote("<", "[]<>{}") == "<");
     152           1 :         CATCH_REQUIRE(advgetopt::unquote("<a", "[]<>{}") == "<a");
     153           1 :         CATCH_REQUIRE(advgetopt::unquote("<ab", "[]<>{}") == "<ab");
     154           1 :         CATCH_REQUIRE(advgetopt::unquote("<abc", "[]<>{}") == "<abc");
     155           1 :         CATCH_REQUIRE(advgetopt::unquote("<abcd", "[]<>{}") == "<abcd");
     156             : 
     157           1 :         CATCH_REQUIRE(advgetopt::unquote("}", "[]<>{}") == "}");
     158           1 :         CATCH_REQUIRE(advgetopt::unquote("a}", "[]<>{}") == "a}");
     159           1 :         CATCH_REQUIRE(advgetopt::unquote("ab}", "[]<>{}") == "ab}");
     160           1 :         CATCH_REQUIRE(advgetopt::unquote("abc}", "[]<>{}") == "abc}");
     161           1 :         CATCH_REQUIRE(advgetopt::unquote("abcd}", "[]<>{}") == "abcd}");
     162             : 
     163           1 :         CATCH_REQUIRE(advgetopt::unquote("]", "[]<>{}") == "]");
     164           1 :         CATCH_REQUIRE(advgetopt::unquote("a]", "[]<>{}") == "a]");
     165           1 :         CATCH_REQUIRE(advgetopt::unquote("ab]", "[]<>{}") == "ab]");
     166           1 :         CATCH_REQUIRE(advgetopt::unquote("abc]", "[]<>{}") == "abc]");
     167           1 :         CATCH_REQUIRE(advgetopt::unquote("abcd]", "[]<>{}") == "abcd]");
     168             : 
     169           1 :         CATCH_REQUIRE(advgetopt::unquote(">", "[]<>{}") == ">");
     170           1 :         CATCH_REQUIRE(advgetopt::unquote("a>", "[]<>{}") == "a>");
     171           1 :         CATCH_REQUIRE(advgetopt::unquote("ab>", "[]<>{}") == "ab>");
     172           1 :         CATCH_REQUIRE(advgetopt::unquote("abc>", "[]<>{}") == "abc>");
     173           1 :         CATCH_REQUIRE(advgetopt::unquote("abcd>", "[]<>{}") == "abcd>");
     174             :     CATCH_END_SECTION()
     175           2 : }
     176             : 
     177             : 
     178             : 
     179             : 
     180          13 : CATCH_TEST_CASE("utils_split", "[utils][valid]")
     181             : {
     182          22 :     CATCH_START_SECTION("Split three words")
     183           2 :         advgetopt::string_list_t result;
     184           3 :         advgetopt::split_string("test with spaces"
     185             :                               , result
     186           2 :                               , {" "});
     187           1 :         CATCH_REQUIRE(result.size() == 3);
     188           1 :         CATCH_REQUIRE(result[0] == "test");
     189           1 :         CATCH_REQUIRE(result[1] == "with");
     190           1 :         CATCH_REQUIRE(result[2] == "spaces");
     191             :     CATCH_END_SECTION()
     192             : 
     193          22 :     CATCH_START_SECTION("Split three words, one with single quotes")
     194           2 :         advgetopt::string_list_t result;
     195           3 :         advgetopt::split_string("test 'with quotes and' spaces"
     196             :                               , result
     197           2 :                               , {" "});
     198           1 :         CATCH_REQUIRE(result.size() == 3);
     199           1 :         CATCH_REQUIRE(result[0] == "test");
     200           1 :         CATCH_REQUIRE(result[1] == "with quotes and");
     201           1 :         CATCH_REQUIRE(result[2] == "spaces");
     202             :     CATCH_END_SECTION()
     203             : 
     204          22 :     CATCH_START_SECTION("Split three words, one with double quotes")
     205           2 :         advgetopt::string_list_t result;
     206           3 :         advgetopt::split_string("test \"with quotes and\" spaces"
     207             :                               , result
     208           2 :                               , {" "});
     209           1 :         CATCH_REQUIRE(result.size() == 3);
     210           1 :         CATCH_REQUIRE(result[0] == "test");
     211           1 :         CATCH_REQUIRE(result[1] == "with quotes and");
     212           1 :         CATCH_REQUIRE(result[2] == "spaces");
     213             :     CATCH_END_SECTION()
     214             : 
     215          22 :     CATCH_START_SECTION("Split three words, one with single quotes but no spaces")
     216           2 :         advgetopt::string_list_t result;
     217           3 :         advgetopt::split_string("test'with quotes and'nospaces"
     218             :                               , result
     219           2 :                               , {" "});
     220           1 :         CATCH_REQUIRE(result.size() == 3);
     221           1 :         CATCH_REQUIRE(result[0] == "test");
     222           1 :         CATCH_REQUIRE(result[1] == "with quotes and");
     223           1 :         CATCH_REQUIRE(result[2] == "nospaces");
     224             :     CATCH_END_SECTION()
     225             : 
     226          22 :     CATCH_START_SECTION("Split three words, one with double quotes but no spaces")
     227           2 :         advgetopt::string_list_t result;
     228           3 :         advgetopt::split_string("test\"with quotes and\"nospaces"
     229             :                               , result
     230           2 :                               , {" "});
     231           1 :         CATCH_REQUIRE(result.size() == 3);
     232           1 :         CATCH_REQUIRE(result[0] == "test");
     233           1 :         CATCH_REQUIRE(result[1] == "with quotes and");
     234           1 :         CATCH_REQUIRE(result[2] == "nospaces");
     235             :     CATCH_END_SECTION()
     236             : 
     237          22 :     CATCH_START_SECTION("Split five words, four separators")
     238           2 :         advgetopt::string_list_t result;
     239           6 :         advgetopt::split_string("test,with quite|many;separators"
     240             :                               , result
     241           5 :                               , {" ",",","|",";"});
     242           1 :         CATCH_REQUIRE(result.size() == 5);
     243           1 :         CATCH_REQUIRE(result[0] == "test");
     244           1 :         CATCH_REQUIRE(result[1] == "with");
     245           1 :         CATCH_REQUIRE(result[2] == "quite");
     246           1 :         CATCH_REQUIRE(result[3] == "many");
     247           1 :         CATCH_REQUIRE(result[4] == "separators");
     248             :     CATCH_END_SECTION()
     249             : 
     250          22 :     CATCH_START_SECTION("Split five words, multiple/repeated separators")
     251           2 :         advgetopt::string_list_t result;
     252           6 :         advgetopt::split_string("test, with quite|||many ; separators"
     253             :                               , result
     254           5 :                               , {" ",",","|",";"});
     255           1 :         CATCH_REQUIRE(result.size() == 5);
     256           1 :         CATCH_REQUIRE(result[0] == "test");
     257           1 :         CATCH_REQUIRE(result[1] == "with");
     258           1 :         CATCH_REQUIRE(result[2] == "quite");
     259           1 :         CATCH_REQUIRE(result[3] == "many");
     260           1 :         CATCH_REQUIRE(result[4] == "separators");
     261             :     CATCH_END_SECTION()
     262             : 
     263          22 :     CATCH_START_SECTION("Split five words, and empty entries")
     264           2 :         advgetopt::string_list_t result;
     265           6 :         advgetopt::split_string("|||test, with quite\"\"many ; ''separators''"
     266             :                               , result
     267           5 :                               , {" ",",","|",";"});
     268           1 :         CATCH_REQUIRE(result.size() == 5);
     269           1 :         CATCH_REQUIRE(result[0] == "test");
     270           1 :         CATCH_REQUIRE(result[1] == "with");
     271           1 :         CATCH_REQUIRE(result[2] == "quite");
     272           1 :         CATCH_REQUIRE(result[3] == "many");
     273           1 :         CATCH_REQUIRE(result[4] == "separators");
     274             :     CATCH_END_SECTION()
     275             : 
     276          22 :     CATCH_START_SECTION("Split five words, start/end with separator")
     277           2 :         advgetopt::string_list_t result;
     278           3 :         advgetopt::split_string("|start|and|end|with|separator|"
     279             :                               , result
     280           2 :                               , {"|"});
     281           1 :         CATCH_REQUIRE(result.size() == 5);
     282           1 :         CATCH_REQUIRE(result[0] == "start");
     283           1 :         CATCH_REQUIRE(result[1] == "and");
     284           1 :         CATCH_REQUIRE(result[2] == "end");
     285           1 :         CATCH_REQUIRE(result[3] == "with");
     286           1 :         CATCH_REQUIRE(result[4] == "separator");
     287             :     CATCH_END_SECTION()
     288             : 
     289          22 :     CATCH_START_SECTION("Split five words, unclosed double quote")
     290           2 :         advgetopt::string_list_t result;
     291           3 :         advgetopt::split_string("\"unclosed quote|mark"
     292             :                               , result
     293           2 :                               , {"|"});
     294           1 :         CATCH_REQUIRE(result.size() == 1);
     295           1 :         CATCH_REQUIRE(result[0] == "unclosed quote|mark");
     296             :     CATCH_END_SECTION()
     297             : 
     298          22 :     CATCH_START_SECTION("Split five words, unclosed single quote")
     299           2 :         advgetopt::string_list_t result;
     300           4 :         advgetopt::split_string("here is an \"unclosed quote|mark"
     301             :                               , result
     302           3 :                               , {"|"," "});
     303             :         //CATCH_REQUIRE(result.size() == 4);
     304           1 :         CATCH_REQUIRE(result[0] == "here");
     305           1 :         CATCH_REQUIRE(result[1] == "is");
     306           1 :         CATCH_REQUIRE(result[2] == "an");
     307           1 :         CATCH_REQUIRE(result[3] == "unclosed quote|mark");
     308             :     CATCH_END_SECTION()
     309          11 : }
     310             : 
     311             : 
     312             : 
     313             : 
     314           5 : CATCH_TEST_CASE("utils_insert_project_name", "[utils][valid]")
     315             : {
     316           6 :     CATCH_START_SECTION("Full insert")
     317             :         {
     318             :             std::string fullname(advgetopt::insert_project_name(
     319             :                               "/this/is/a/path"
     320           2 :                             , "project-name"));
     321           1 :             CATCH_REQUIRE(fullname == "/this/is/a/project-name.d/path");
     322             :         }
     323             : 
     324             :         {
     325             :             std::string fullname(advgetopt::insert_project_name(
     326             :                               "/this/is/a/basename.ext"
     327           2 :                             , "project-name"));
     328           1 :             CATCH_REQUIRE(fullname == "/this/is/a/project-name.d/basename.ext");
     329             :         }
     330             :     CATCH_END_SECTION()
     331             : 
     332           6 :     CATCH_START_SECTION("Empty cases")
     333             :         {
     334             :             std::string fullname(advgetopt::insert_project_name(
     335             :                               "/this/is/a/path"
     336           2 :                             , nullptr));
     337           1 :             CATCH_REQUIRE(fullname == std::string());
     338             :         }
     339             : 
     340             :         {
     341             :             std::string fullname(advgetopt::insert_project_name(
     342             :                               "/this/is/a/path"
     343           2 :                             , ""));
     344           1 :             CATCH_REQUIRE(fullname == std::string());
     345             :         }
     346             : 
     347             :         {
     348             :             std::string fullname(advgetopt::insert_project_name(
     349             :                               ""
     350           2 :                             , "project-name"));
     351           1 :             CATCH_REQUIRE(fullname == std::string());
     352             :         }
     353             :     CATCH_END_SECTION()
     354             : 
     355           6 :     CATCH_START_SECTION("Basename Only")
     356             :         {
     357             :             std::string fullname(advgetopt::insert_project_name(
     358             :                               "basename"
     359           2 :                             , "advgetopt"));
     360           1 :             CATCH_REQUIRE(fullname == "advgetopt.d/basename");
     361             :         }
     362             : 
     363             :         {
     364             :             std::string fullname(advgetopt::insert_project_name(
     365             :                               "basename.ext"
     366           2 :                             , "advgetopt"));
     367           1 :             CATCH_REQUIRE(fullname == "advgetopt.d/basename.ext");
     368             :         }
     369             :     CATCH_END_SECTION()
     370           3 : }
     371             : 
     372             : 
     373             : 
     374             : 
     375             : 
     376             : 
     377             : 
     378           5 : CATCH_TEST_CASE("utils_handle_user_directory", "[utils][valid]")
     379             : {
     380           6 :     CATCH_START_SECTION("Valid cases")
     381           2 :         snap::safe_setenv env("HOME", "/home/advgetopt");
     382             : 
     383             :         {
     384           2 :             std::string result(advgetopt::handle_user_directory("~"));
     385           1 :             CATCH_REQUIRE(result == "/home/advgetopt");
     386             :         }
     387             : 
     388             :         {
     389           2 :             std::string result(advgetopt::handle_user_directory("~/"));
     390           1 :             CATCH_REQUIRE(result == "/home/advgetopt/");
     391             :         }
     392             : 
     393             :         {
     394           2 :             std::string result(advgetopt::handle_user_directory("~/.config/advgetopt.conf"));
     395           1 :             CATCH_REQUIRE(result == "/home/advgetopt/.config/advgetopt.conf");
     396             :         }
     397             :     CATCH_END_SECTION()
     398             : 
     399           6 :     CATCH_START_SECTION("$HOME is empty")
     400           2 :         snap::safe_setenv env("HOME", "");
     401             : 
     402             :         {
     403           2 :             std::string result(advgetopt::handle_user_directory("~"));
     404           1 :             CATCH_REQUIRE(result == "~");
     405             :         }
     406             : 
     407             :         {
     408           2 :             std::string result(advgetopt::handle_user_directory("~/.config/advgetopt.conf"));
     409           1 :             CATCH_REQUIRE(result == "~/.config/advgetopt.conf");
     410             :         }
     411             :     CATCH_END_SECTION()
     412             : 
     413           6 :     CATCH_START_SECTION("Paths do not start with ~")
     414           2 :         snap::safe_setenv env("HOME", "/home/advgetopt");
     415             : 
     416             :         {
     417           2 :             std::string result(advgetopt::handle_user_directory("/~"));
     418           1 :             CATCH_REQUIRE(result == "/~");
     419             :         }
     420             : 
     421             :         {
     422           2 :             std::string result(advgetopt::handle_user_directory("/~/.config/advgetopt.conf"));
     423           1 :             CATCH_REQUIRE(result == "/~/.config/advgetopt.conf");
     424             :         }
     425             :     CATCH_END_SECTION()
     426           9 : }
     427             : 
     428             : 
     429             : 
     430             : 
     431             : 
     432             : 
     433             : 
     434             : // vim: ts=4 sw=4 et

Generated by: LCOV version 1.12