GCC Code Coverage Report


Directory: ./
File: tmp_project/PhoenixOptionParser/src/path_completion.cpp
Date: 2025-03-14 11:56:07
Exec Total Coverage
Lines: 68 71 95.8%
Branches: 117 141 83.0%

Line Branch Exec Source
1 /***************************************
2 Auteur : Pierre Aubert
3 Mail : pierre.aubert@lapp.in2p3.fr
4 Licence : CeCILL-C
5 ****************************************/
6
7 #include <dirent.h>
8
9 #include "path_completion.h"
10
11 ///Complete the path directory
12 /** @param pathDir : path of the directory
13 * @return completed directory
14 */
15 3 PPath completePathDir(const PPath & pathDir){
16
1/4
✗ Branch 1 not taken.
✓ Branch 2 taken 3 times.
✗ Branch 5 not taken.
✗ Branch 6 not taken.
3 if(pathDir == ""){return PString(".");}
17
1/2
✓ Branch 1 taken 3 times.
✗ Branch 2 not taken.
3 else if(pathDir[0] == '/'){return pathDir;}
18 else if(pathDir.isSameBegining("./")){return pathDir;}
19 else{return PPath(PString("./") + pathDir);}
20 }
21
22 ///Complete the path directory with a prefix
23 /** @param pathDir : path of the directory
24 * @return completed directory
25 */
26 3 PPath prefixPathDir(const PPath & pathDir){
27
1/2
✗ Branch 1 not taken.
✓ Branch 2 taken 3 times.
3 if(pathDir == ""){return pathDir;}
28
1/2
✗ Branch 2 not taken.
✓ Branch 3 taken 3 times.
3 else if(pathDir[pathDir.size() - 1lu] == '/'){return pathDir;}
29
4/5
✓ Branch 2 taken 3 times.
✗ Branch 3 not taken.
✓ Branch 6 taken 3 times.
✓ Branch 9 taken 3 times.
✓ Branch 12 taken 3 times.
3 else if(pathDir[pathDir.size() - 1lu] != '/'){return PPath(pathDir + PString("/"));}
30 else{return pathDir;}
31 }
32
33 ///Return all path/files which match the basePath
34 /** @param basePath : incomming path
35 * @return all path/files which match the basePath
36 */
37 5 PPath path_completion_all(const PPath & basePath){
38 // std::cerr << "path_completion_all : basePath = '"<<basePath<<"'" << std::endl;
39
4/4
✓ Branch 1 taken 1 times.
✓ Branch 2 taken 4 times.
✓ Branch 4 taken 1 times.
✓ Branch 7 taken 1 times.
6 if(basePath == ""){return PString("./");}
40
5/5
✓ Branch 1 taken 4 times.
✓ Branch 3 taken 1 times.
✓ Branch 4 taken 3 times.
✓ Branch 6 taken 1 times.
✓ Branch 9 taken 1 times.
5 if(basePath.isFileExist()){return PString("");}
41
42
2/2
✓ Branch 1 taken 3 times.
✓ Branch 4 taken 3 times.
3 PPath listMatchingPath("");
43
3/3
✓ Branch 1 taken 3 times.
✓ Branch 3 taken 2 times.
✓ Branch 4 taken 1 times.
3 if(basePath.isDirectoryExist()){
44
1/1
✓ Branch 1 taken 2 times.
2 PPath completedPathDir(completePathDir(basePath));
45
1/1
✓ Branch 1 taken 2 times.
2 PPath prefixPath(prefixPathDir(basePath));
46
1/1
✓ Branch 2 taken 2 times.
2 DIR * dp = opendir(completedPathDir.c_str());
47
1/1
✓ Branch 1 taken 2 times.
2 dirent * dptr = readdir(dp);
48
2/2
✓ Branch 0 taken 7 times.
✓ Branch 1 taken 2 times.
9 while(NULL != dptr){
49
2/2
✓ Branch 1 taken 7 times.
✓ Branch 4 taken 7 times.
7 PPath pathName(dptr->d_name);
50
6/6
✓ Branch 1 taken 5 times.
✓ Branch 2 taken 2 times.
✓ Branch 4 taken 3 times.
✓ Branch 5 taken 2 times.
✓ Branch 6 taken 3 times.
✓ Branch 7 taken 4 times.
7 if(pathName != "." && pathName != ".."){
51
4/4
✓ Branch 1 taken 3 times.
✓ Branch 4 taken 3 times.
✓ Branch 7 taken 3 times.
✓ Branch 10 taken 3 times.
3 listMatchingPath += prefixPath + pathName + PString("\n");
52 }
53
1/1
✓ Branch 1 taken 7 times.
7 dptr = readdir(dp);
54 7 }
55
1/1
✓ Branch 1 taken 2 times.
2 closedir(dp);
56 2 }else{
57
2/2
✓ Branch 1 taken 1 times.
✓ Branch 4 taken 1 times.
1 PPath baseDir(basePath.getParentDirectory()), startNewPath(basePath.getFileName());
58
1/1
✓ Branch 1 taken 1 times.
1 PPath completedPathDir(completePathDir(baseDir));
59
1/1
✓ Branch 1 taken 1 times.
1 PPath prefixPath(prefixPathDir(baseDir));
60
1/1
✓ Branch 2 taken 1 times.
1 DIR * dp = opendir(completedPathDir.c_str());
61
62
1/1
✓ Branch 1 taken 1 times.
1 dirent * dptr = readdir(dp);
63
2/2
✓ Branch 0 taken 3 times.
✓ Branch 1 taken 1 times.
4 while(NULL != dptr){
64
2/2
✓ Branch 1 taken 3 times.
✓ Branch 4 taken 3 times.
3 PPath pathName(dptr->d_name);
65
6/6
✓ Branch 1 taken 2 times.
✓ Branch 2 taken 1 times.
✓ Branch 4 taken 1 times.
✓ Branch 5 taken 1 times.
✓ Branch 6 taken 1 times.
✓ Branch 7 taken 2 times.
3 if(pathName != "." && pathName != ".."){
66
2/3
✓ Branch 1 taken 1 times.
✓ Branch 3 taken 1 times.
✗ Branch 4 not taken.
1 if(pathName.isSameBegining(startNewPath)){
67
4/4
✓ Branch 1 taken 1 times.
✓ Branch 4 taken 1 times.
✓ Branch 7 taken 1 times.
✓ Branch 10 taken 1 times.
1 listMatchingPath += prefixPath + pathName + PString("\n");
68 }
69 }
70
1/1
✓ Branch 1 taken 3 times.
3 dptr = readdir(dp);
71 3 }
72
73
1/1
✓ Branch 1 taken 1 times.
1 closedir(dp);
74 1 }
75 // std::cerr << "path_completion_all : listMatchingPath = '"<<listMatchingPath<<"'" << std::endl;
76
1/1
✓ Branch 1 taken 3 times.
3 return listMatchingPath;
77 3 }
78
79 ///Return all directories only which match the basePath
80 /** @param basePath : incomming path
81 * @return all directories which match the basePath
82 */
83 2 PPath path_completion_dirOnly(const PPath & basePath){
84
1/6
✗ Branch 1 not taken.
✓ Branch 2 taken 2 times.
✗ Branch 4 not taken.
✗ Branch 5 not taken.
✗ Branch 7 not taken.
✗ Branch 8 not taken.
2 if(basePath == ""){return PString("./");}
85
2/2
✓ Branch 1 taken 2 times.
✓ Branch 4 taken 2 times.
2 PPath listMatchingPath("");
86
3/3
✓ Branch 1 taken 2 times.
✓ Branch 3 taken 1 times.
✓ Branch 4 taken 1 times.
2 if(basePath.isDirectoryExist()){
87
1/1
✓ Branch 2 taken 1 times.
1 DIR * dp = opendir(basePath.c_str());
88
1/1
✓ Branch 1 taken 1 times.
1 dirent * dptr = readdir(dp);
89
2/2
✓ Branch 0 taken 4 times.
✓ Branch 1 taken 1 times.
5 while(NULL != dptr){
90
2/2
✓ Branch 0 taken 3 times.
✓ Branch 1 taken 1 times.
4 if(dptr->d_type == DT_DIR){ //We search for directory only
91
2/2
✓ Branch 1 taken 3 times.
✓ Branch 4 taken 3 times.
3 PPath pathName(dptr->d_name);
92
6/6
✓ Branch 1 taken 2 times.
✓ Branch 2 taken 1 times.
✓ Branch 4 taken 1 times.
✓ Branch 5 taken 1 times.
✓ Branch 6 taken 1 times.
✓ Branch 7 taken 2 times.
3 if(pathName != "." && pathName != ".."){
93
4/4
✓ Branch 1 taken 1 times.
✓ Branch 4 taken 1 times.
✓ Branch 7 taken 1 times.
✓ Branch 10 taken 1 times.
1 listMatchingPath += basePath / pathName + PString("\n");
94 }
95 3 }
96
1/1
✓ Branch 1 taken 4 times.
4 dptr = readdir(dp);
97 }
98 }else{
99
2/2
✓ Branch 1 taken 1 times.
✓ Branch 4 taken 1 times.
1 PPath baseDir(basePath.getParentDirectory()), startNewPath(basePath.getFileName());
100
1/1
✓ Branch 2 taken 1 times.
1 DIR * dp = opendir(baseDir.c_str());
101
102
1/1
✓ Branch 1 taken 1 times.
1 dirent * dptr = readdir(dp);
103
2/2
✓ Branch 0 taken 4 times.
✓ Branch 1 taken 1 times.
5 while(NULL != dptr){
104
2/2
✓ Branch 0 taken 3 times.
✓ Branch 1 taken 1 times.
4 if(dptr->d_type == DT_DIR){ //We search for directory only
105
2/2
✓ Branch 1 taken 3 times.
✓ Branch 4 taken 3 times.
3 PPath pathName(dptr->d_name);
106
6/6
✓ Branch 1 taken 2 times.
✓ Branch 2 taken 1 times.
✓ Branch 4 taken 1 times.
✓ Branch 5 taken 1 times.
✓ Branch 6 taken 1 times.
✓ Branch 7 taken 2 times.
3 if(pathName != "." && pathName != ".."){
107
2/3
✓ Branch 1 taken 1 times.
✓ Branch 3 taken 1 times.
✗ Branch 4 not taken.
1 if(pathName.isSameBegining(startNewPath)){
108
4/4
✓ Branch 1 taken 1 times.
✓ Branch 4 taken 1 times.
✓ Branch 7 taken 1 times.
✓ Branch 10 taken 1 times.
1 listMatchingPath += baseDir / pathName + PString("\n");
109 }
110 }
111 3 }
112
1/1
✓ Branch 1 taken 4 times.
4 dptr = readdir(dp);
113 }
114
115
1/1
✓ Branch 1 taken 1 times.
1 closedir(dp);
116 1 }
117
1/1
✓ Branch 1 taken 2 times.
2 return listMatchingPath;
118 2 }
119
120
121