Skip to content

Commit a5277f7

Browse files
committed
tidy up test handling of files
1 parent edbceb5 commit a5277f7

File tree

8 files changed

+142
-104
lines changed

8 files changed

+142
-104
lines changed

include/mrdox/RecursiveWriter.hpp

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -82,6 +82,10 @@ class RecursiveWriter
8282
AllSymbol(Info const& I);
8383
};
8484

85+
/** Destructor.
86+
*/
87+
~RecursiveWriter() = default;
88+
8589
/** Constructor.
8690
*/
8791
RecursiveWriter(

include/mrdox/Reporter.hpp

Lines changed: 10 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -115,16 +115,21 @@ struct Reporter
115115

116116
//--------------------------------------------
117117

118+
/** Increment the count of errors.
119+
120+
@par Thread Safety
121+
May be called concurrently.
122+
*/
123+
void
124+
reportError();
125+
118126
/** Report a unit test failure.
119127
120128
@par Thread Safety
121129
May be called concurrently.
122130
*/
123131
void
124-
testFailed()
125-
{
126-
failed_ = true;
127-
}
132+
reportTestFailure();
128133

129134
private:
130135
//--------------------------------------------
@@ -162,7 +167,7 @@ struct Reporter
162167
private:
163168
llvm::sys::Mutex mutable m_;
164169
std::size_t errorCount_ = 0;
165-
bool failed_ = false;
170+
std::size_t testFailureCount_ = 0;
166171
};
167172

168173
//------------------------------------------------

source/lib/Reporter.cpp

Lines changed: 20 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -29,10 +29,10 @@ int
2929
Reporter::
3030
getExitCode() const noexcept
3131
{
32-
if(failed_)
33-
return EXIT_FAILURE;
3432
if(errorCount_ > 0)
3533
return EXIT_FAILURE;
34+
if(testFailureCount_ > 0)
35+
return EXIT_FAILURE;
3636
return EXIT_SUCCESS;
3737
}
3838

@@ -60,5 +60,23 @@ temp_string()
6060
return s;
6161
}
6262

63+
//------------------------------------------------
64+
65+
void
66+
Reporter::
67+
reportError()
68+
{
69+
std::lock_guard<llvm::sys::Mutex> lock(m_);
70+
++errorCount_;
71+
}
72+
73+
void
74+
Reporter::
75+
reportTestFailure()
76+
{
77+
std::lock_guard<llvm::sys::Mutex> lock(m_);
78+
++testFailureCount_;
79+
}
80+
6381
} // mrdox
6482
} // clang

source/tests/Tester.cpp

Lines changed: 24 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -101,31 +101,42 @@ checkOneFile(
101101
if(ec == std::errc::no_such_file_or_directory)
102102
{
103103
// create the xml file and write to it
104+
R_.reportTestFailure();
104105
llvm::raw_fd_ostream os(outputPath, ec, llvm::sys::fs::OF_None);
105106
if(R_.error(ec, "open the file '", outputPath, "' for writing"))
106107
return;
107108
os << xmlString;
108109
if(R_.error(os.error(), "write the file '", outputPath, "'"))
109110
return;
111+
R_.reportError();
112+
// keep going, to write the other files
110113
}
111114
else if(R_.error(ec, "call fs::status on '", outputPathStr, "'"))
115+
{
112116
return;
113-
if(stat.type() != fs::file_type::regular_file)
114-
return R_.failed("'", outputPath, "' is not a regular file");
115-
auto bufferResult = llvm::MemoryBuffer::getFile(outputPath, false);
116-
if(R_.error(bufferResult, "read the file '", outputPath, "'"))
117+
}
118+
else if(stat.type() != fs::file_type::regular_file)
119+
{
120+
R_.failed("Couldn't open '", outputPath, "' because it is not a regular file");
117121
return;
118-
std::string_view good(bufferResult->get()->getBuffer());
119-
if(xmlString != good)
122+
}
123+
else
120124
{
121-
R_.print(
122-
"File: \"", inputPath, "\" failed.\n",
123-
"Expected:\n",
124-
good, "\n",
125-
"Got:\n", xmlString, "\n");
126-
R_.testFailed();
125+
// perform test
126+
auto bufferResult = llvm::MemoryBuffer::getFile(outputPath, false);
127+
if(R_.error(bufferResult, "read the file '", outputPath, "'"))
128+
return;
129+
std::string_view good(bufferResult->get()->getBuffer());
130+
if(xmlString != good)
131+
{
132+
R_.print(
133+
"File: \"", inputPath, "\" failed.\n",
134+
"Expected:\n",
135+
good, "\n",
136+
"Got:\n", xmlString, "\n");
137+
R_.reportTestFailure();
138+
}
127139
}
128-
129140
if(adocGen)
130141
{
131142
path::replace_extension(outputPathStr, adocGen->extension());

testfiles/decl-only/attributes_1.xml

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -2,11 +2,11 @@
22
<!DOCTYPE mrdox SYSTEM "mrdox.dtd">
33
<mrdox>
44
<all>
5-
<symbol name="f" usr="s6nsa+zVhpzzrN+yUVPP5rvdXqs="/>
6-
<symbol name="GlobalNamespace"/>
5+
<symbol name="f" tag="function" id="s6nsa+zVhpzzrN+yUVPP5rvdXqs="/>
6+
<symbol name="GlobalNamespace" tag="namespace"/>
77
</all>
88
<namespace name="">
9-
<function name="f" usr="s6nsa+zVhpzzrN+yUVPP5rvdXqs=">
9+
<function name="f" id="s6nsa+zVhpzzrN+yUVPP5rvdXqs=">
1010
<file path="decl-only/attributes_1.cpp" line="2"/>
1111
<return name="_Bool"/>
1212
</function>

testfiles/decl-only/canonical_1.xml

Lines changed: 17 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -2,39 +2,39 @@
22
<!DOCTYPE mrdox SYSTEM "mrdox.dtd">
33
<mrdox>
44
<all>
5-
<symbol name="GlobalNamespace"/>
6-
<symbol name="GlobalNamespace::a" usr="bJjlANSkHT9fMIOJb+7rnfl9B2Q="/>
7-
<symbol name="GlobalNamespace::A" usr="YrPSaKAbmXgzCAX5WByx4eVoqBM="/>
8-
<symbol name="GlobalNamespace::b" usr="x22+jYd1xB7rz7rTGsgmwOre390="/>
9-
<symbol name="GlobalNamespace::B" usr="3JsK1DO0O+wZhv+0meptQrbs3fY="/>
10-
<symbol name="GlobalNamespace::ba" usr="DnCAWz4yn8cUKkg886MMQcSEBhg="/>
11-
<symbol name="GlobalNamespace::bA" usr="o++ChozQVnJgKoS41uCm96LOP14="/>
12-
<symbol name="GlobalNamespace::Ba" usr="r32UJws/5rQHSwieW9XcY/Lu30k="/>
13-
<symbol name="GlobalNamespace::Bx" usr="64sjs/NcKpvextfuwbtyP/VMOJk="/>
5+
<symbol name="GlobalNamespace" tag="namespace"/>
6+
<symbol name="GlobalNamespace::a" tag="struct" id="bJjlANSkHT9fMIOJb+7rnfl9B2Q="/>
7+
<symbol name="GlobalNamespace::A" tag="struct" id="YrPSaKAbmXgzCAX5WByx4eVoqBM="/>
8+
<symbol name="GlobalNamespace::b" tag="struct" id="x22+jYd1xB7rz7rTGsgmwOre390="/>
9+
<symbol name="GlobalNamespace::B" tag="struct" id="3JsK1DO0O+wZhv+0meptQrbs3fY="/>
10+
<symbol name="GlobalNamespace::ba" tag="struct" id="DnCAWz4yn8cUKkg886MMQcSEBhg="/>
11+
<symbol name="GlobalNamespace::bA" tag="struct" id="o++ChozQVnJgKoS41uCm96LOP14="/>
12+
<symbol name="GlobalNamespace::Ba" tag="struct" id="r32UJws/5rQHSwieW9XcY/Lu30k="/>
13+
<symbol name="GlobalNamespace::Bx" tag="struct" id="64sjs/NcKpvextfuwbtyP/VMOJk="/>
1414
</all>
1515
<namespace name="">
16-
<struct name="a" usr="bJjlANSkHT9fMIOJb+7rnfl9B2Q=">
16+
<struct name="a" id="bJjlANSkHT9fMIOJb+7rnfl9B2Q=">
1717
<file path="decl-only/canonical_1.cpp" line="5" class="def"/>
1818
</struct>
19-
<struct name="A" usr="YrPSaKAbmXgzCAX5WByx4eVoqBM=">
19+
<struct name="A" id="YrPSaKAbmXgzCAX5WByx4eVoqBM=">
2020
<file path="decl-only/canonical_1.cpp" line="4" class="def"/>
2121
</struct>
22-
<struct name="b" usr="x22+jYd1xB7rz7rTGsgmwOre390=">
22+
<struct name="b" id="x22+jYd1xB7rz7rTGsgmwOre390=">
2323
<file path="decl-only/canonical_1.cpp" line="3" class="def"/>
2424
</struct>
25-
<struct name="B" usr="3JsK1DO0O+wZhv+0meptQrbs3fY=">
25+
<struct name="B" id="3JsK1DO0O+wZhv+0meptQrbs3fY=">
2626
<file path="decl-only/canonical_1.cpp" line="2" class="def"/>
2727
</struct>
28-
<struct name="ba" usr="DnCAWz4yn8cUKkg886MMQcSEBhg=">
28+
<struct name="ba" id="DnCAWz4yn8cUKkg886MMQcSEBhg=">
2929
<file path="decl-only/canonical_1.cpp" line="9" class="def"/>
3030
</struct>
31-
<struct name="bA" usr="o++ChozQVnJgKoS41uCm96LOP14=">
31+
<struct name="bA" id="o++ChozQVnJgKoS41uCm96LOP14=">
3232
<file path="decl-only/canonical_1.cpp" line="7" class="def"/>
3333
</struct>
34-
<struct name="Ba" usr="r32UJws/5rQHSwieW9XcY/Lu30k=">
34+
<struct name="Ba" id="r32UJws/5rQHSwieW9XcY/Lu30k=">
3535
<file path="decl-only/canonical_1.cpp" line="6" class="def"/>
3636
</struct>
37-
<struct name="Bx" usr="64sjs/NcKpvextfuwbtyP/VMOJk=">
37+
<struct name="Bx" id="64sjs/NcKpvextfuwbtyP/VMOJk=">
3838
<file path="decl-only/canonical_1.cpp" line="8" class="def"/>
3939
</struct>
4040
</namespace>

testfiles/decl-only/record_1.xml

Lines changed: 45 additions & 45 deletions
Original file line numberDiff line numberDiff line change
@@ -2,82 +2,82 @@
22
<!DOCTYPE mrdox SYSTEM "mrdox.dtd">
33
<mrdox>
44
<all>
5-
<symbol name="GlobalNamespace"/>
6-
<symbol name="GlobalNamespace::C0" usr="sTaqkoFcVbtntbfpe777v5/pWL0="/>
7-
<symbol name="GlobalNamespace::C1" usr="tm2khHa6qZM0lj1f7IwBdxVxDgE="/>
8-
<symbol name="GlobalNamespace::C2" usr="a3f8uSFf+Hih/eqmCQtqTCDw3EY="/>
9-
<symbol name="GlobalNamespace::C3" usr="5eVHvnJpHGl0uaFQWGNZbAUi+rA="/>
10-
<symbol name="GlobalNamespace::C4" usr="TwgjmiSc5xz28SnTBuPcppQrwcY="/>
11-
<symbol name="GlobalNamespace::C5" usr="+FCicEQuRpyoPB1uYTGhWVcrlcE="/>
12-
<symbol name="GlobalNamespace::C6" usr="KS3H76wGd00jB2pnPVvaBxXfMk8="/>
13-
<symbol name="GlobalNamespace::C7" usr="RoJyFLcF4tn+I7Xvlv0H+vBkIE4="/>
14-
<symbol name="GlobalNamespace::S0" usr="u38+snleg17KL7EQuD9FV1Z8b9E="/>
15-
<symbol name="GlobalNamespace::S1" usr="Tu+ql/Sdpk31DKHwwD/67uI3OZE="/>
16-
<symbol name="GlobalNamespace::S2" usr="SjrYNgntOvtz+y7yw+WmqLzVdW0="/>
17-
<symbol name="GlobalNamespace::S3" usr="ftBcWCAw4uNtak9kOXMXaOe13YU="/>
18-
<symbol name="GlobalNamespace::S4" usr="OkKbIK8En3Y5FbOBQVeHnAsZ0aY="/>
19-
<symbol name="GlobalNamespace::S5" usr="HQ5z8M+Q3IIXdW9oiD6jtd0TL94="/>
20-
<symbol name="GlobalNamespace::U0" usr="SHIJWZPzfYtLVfe/rzFAmeVpANk="/>
5+
<symbol name="GlobalNamespace" tag="namespace"/>
6+
<symbol name="GlobalNamespace::C0" tag="class" id="sTaqkoFcVbtntbfpe777v5/pWL0="/>
7+
<symbol name="GlobalNamespace::C1" tag="class" id="tm2khHa6qZM0lj1f7IwBdxVxDgE="/>
8+
<symbol name="GlobalNamespace::C2" tag="class" id="a3f8uSFf+Hih/eqmCQtqTCDw3EY="/>
9+
<symbol name="GlobalNamespace::C3" tag="class" id="5eVHvnJpHGl0uaFQWGNZbAUi+rA="/>
10+
<symbol name="GlobalNamespace::C4" tag="class" id="TwgjmiSc5xz28SnTBuPcppQrwcY="/>
11+
<symbol name="GlobalNamespace::C5" tag="class" id="+FCicEQuRpyoPB1uYTGhWVcrlcE="/>
12+
<symbol name="GlobalNamespace::C6" tag="class" id="KS3H76wGd00jB2pnPVvaBxXfMk8="/>
13+
<symbol name="GlobalNamespace::C7" tag="class" id="RoJyFLcF4tn+I7Xvlv0H+vBkIE4="/>
14+
<symbol name="GlobalNamespace::S0" tag="struct" id="u38+snleg17KL7EQuD9FV1Z8b9E="/>
15+
<symbol name="GlobalNamespace::S1" tag="struct" id="Tu+ql/Sdpk31DKHwwD/67uI3OZE="/>
16+
<symbol name="GlobalNamespace::S2" tag="struct" id="SjrYNgntOvtz+y7yw+WmqLzVdW0="/>
17+
<symbol name="GlobalNamespace::S3" tag="struct" id="ftBcWCAw4uNtak9kOXMXaOe13YU="/>
18+
<symbol name="GlobalNamespace::S4" tag="struct" id="OkKbIK8En3Y5FbOBQVeHnAsZ0aY="/>
19+
<symbol name="GlobalNamespace::S5" tag="struct" id="HQ5z8M+Q3IIXdW9oiD6jtd0TL94="/>
20+
<symbol name="GlobalNamespace::U0" tag="union" id="SHIJWZPzfYtLVfe/rzFAmeVpANk="/>
2121
</all>
2222
<namespace name="">
23-
<class name="C0" usr="sTaqkoFcVbtntbfpe777v5/pWL0=">
23+
<class name="C0" id="sTaqkoFcVbtntbfpe777v5/pWL0=">
2424
<file path="decl-only/record_1.cpp" line="2" class="def"/>
2525
</class>
26-
<class name="C1" usr="tm2khHa6qZM0lj1f7IwBdxVxDgE=">
26+
<class name="C1" id="tm2khHa6qZM0lj1f7IwBdxVxDgE=">
2727
<file path="decl-only/record_1.cpp" line="12" class="def"/>
28-
<base name="C0" usr="sTaqkoFcVbtntbfpe777v5/pWL0=" access="private"/>
28+
<base name="C0" access="private" id="sTaqkoFcVbtntbfpe777v5/pWL0="/>
2929
</class>
30-
<class name="C2" usr="a3f8uSFf+Hih/eqmCQtqTCDw3EY=">
30+
<class name="C2" id="a3f8uSFf+Hih/eqmCQtqTCDw3EY=">
3131
<file path="decl-only/record_1.cpp" line="13" class="def"/>
32-
<base name="C0" usr="sTaqkoFcVbtntbfpe777v5/pWL0=" access="public"/>
32+
<base name="C0" access="public" id="sTaqkoFcVbtntbfpe777v5/pWL0="/>
3333
</class>
34-
<class name="C3" usr="5eVHvnJpHGl0uaFQWGNZbAUi+rA=">
34+
<class name="C3" id="5eVHvnJpHGl0uaFQWGNZbAUi+rA=">
3535
<file path="decl-only/record_1.cpp" line="14" class="def"/>
36-
<base name="C0" usr="sTaqkoFcVbtntbfpe777v5/pWL0=" access="protected"/>
36+
<base name="C0" access="protected" id="sTaqkoFcVbtntbfpe777v5/pWL0="/>
3737
</class>
38-
<class name="C4" usr="TwgjmiSc5xz28SnTBuPcppQrwcY=">
38+
<class name="C4" id="TwgjmiSc5xz28SnTBuPcppQrwcY=">
3939
<file path="decl-only/record_1.cpp" line="15" class="def"/>
40-
<base name="C0" usr="sTaqkoFcVbtntbfpe777v5/pWL0=" access="private"/>
40+
<base name="C0" access="private" id="sTaqkoFcVbtntbfpe777v5/pWL0="/>
4141
</class>
42-
<class name="C5" usr="+FCicEQuRpyoPB1uYTGhWVcrlcE=">
42+
<class name="C5" id="+FCicEQuRpyoPB1uYTGhWVcrlcE=">
4343
<file path="decl-only/record_1.cpp" line="17" class="def"/>
44-
<base name="C0" usr="sTaqkoFcVbtntbfpe777v5/pWL0=" access="private" modifier="virtual"/>
44+
<base name="C0" access="private" modifier="virtual" id="sTaqkoFcVbtntbfpe777v5/pWL0="/>
4545
</class>
46-
<class name="C6" usr="KS3H76wGd00jB2pnPVvaBxXfMk8=">
46+
<class name="C6" id="KS3H76wGd00jB2pnPVvaBxXfMk8=">
4747
<file path="decl-only/record_1.cpp" line="18" class="def"/>
48-
<base name="C1" usr="tm2khHa6qZM0lj1f7IwBdxVxDgE=" access="private" modifier="virtual"/>
48+
<base name="C1" access="private" modifier="virtual" id="tm2khHa6qZM0lj1f7IwBdxVxDgE="/>
4949
</class>
50-
<class name="C7" usr="RoJyFLcF4tn+I7Xvlv0H+vBkIE4=">
50+
<class name="C7" id="RoJyFLcF4tn+I7Xvlv0H+vBkIE4=">
5151
<file path="decl-only/record_1.cpp" line="19" class="def"/>
52-
<base name="C5" usr="+FCicEQuRpyoPB1uYTGhWVcrlcE=" access="public"/>
53-
<base name="C6" usr="KS3H76wGd00jB2pnPVvaBxXfMk8=" access="public"/>
52+
<base name="C5" access="public" id="+FCicEQuRpyoPB1uYTGhWVcrlcE="/>
53+
<base name="C6" access="public" id="KS3H76wGd00jB2pnPVvaBxXfMk8="/>
5454
</class>
55-
<struct name="S0" usr="u38+snleg17KL7EQuD9FV1Z8b9E=">
55+
<struct name="S0" id="u38+snleg17KL7EQuD9FV1Z8b9E=">
5656
<file path="decl-only/record_1.cpp" line="1" class="def"/>
5757
</struct>
58-
<struct name="S1" usr="Tu+ql/Sdpk31DKHwwD/67uI3OZE=">
58+
<struct name="S1" id="Tu+ql/Sdpk31DKHwwD/67uI3OZE=">
5959
<file path="decl-only/record_1.cpp" line="6" class="def"/>
6060
<file path="decl-only/record_1.cpp" line="5"/>
6161
</struct>
62-
<struct name="S2" usr="SjrYNgntOvtz+y7yw+WmqLzVdW0=">
62+
<struct name="S2" id="SjrYNgntOvtz+y7yw+WmqLzVdW0=">
6363
<file path="decl-only/record_1.cpp" line="8" class="def"/>
64-
<base name="S0" usr="u38+snleg17KL7EQuD9FV1Z8b9E=" access="public"/>
64+
<base name="S0" access="public" id="u38+snleg17KL7EQuD9FV1Z8b9E="/>
6565
</struct>
66-
<struct name="S3" usr="ftBcWCAw4uNtak9kOXMXaOe13YU=">
66+
<struct name="S3" id="ftBcWCAw4uNtak9kOXMXaOe13YU=">
6767
<file path="decl-only/record_1.cpp" line="9" class="def"/>
68-
<base name="S1" usr="Tu+ql/Sdpk31DKHwwD/67uI3OZE=" access="public"/>
68+
<base name="S1" access="public" id="Tu+ql/Sdpk31DKHwwD/67uI3OZE="/>
6969
</struct>
70-
<struct name="S4" usr="OkKbIK8En3Y5FbOBQVeHnAsZ0aY=">
70+
<struct name="S4" id="OkKbIK8En3Y5FbOBQVeHnAsZ0aY=">
7171
<file path="decl-only/record_1.cpp" line="10" class="def"/>
72-
<base name="S2" usr="SjrYNgntOvtz+y7yw+WmqLzVdW0=" access="public"/>
73-
<base name="S3" usr="ftBcWCAw4uNtak9kOXMXaOe13YU=" access="public"/>
72+
<base name="S2" access="public" id="SjrYNgntOvtz+y7yw+WmqLzVdW0="/>
73+
<base name="S3" access="public" id="ftBcWCAw4uNtak9kOXMXaOe13YU="/>
7474
</struct>
75-
<struct name="S5" usr="HQ5z8M+Q3IIXdW9oiD6jtd0TL94=">
75+
<struct name="S5" id="HQ5z8M+Q3IIXdW9oiD6jtd0TL94=">
7676
<file path="decl-only/record_1.cpp" line="21" class="def"/>
77-
<base name="S0" usr="u38+snleg17KL7EQuD9FV1Z8b9E=" access="private"/>
78-
<base name="S1" usr="Tu+ql/Sdpk31DKHwwD/67uI3OZE=" access="protected"/>
77+
<base name="S0" access="private" id="u38+snleg17KL7EQuD9FV1Z8b9E="/>
78+
<base name="S1" access="protected" id="Tu+ql/Sdpk31DKHwwD/67uI3OZE="/>
7979
</struct>
80-
<union name="U0" usr="SHIJWZPzfYtLVfe/rzFAmeVpANk=">
80+
<union name="U0" id="SHIJWZPzfYtLVfe/rzFAmeVpANk=">
8181
<file path="decl-only/record_1.cpp" line="3" class="def"/>
8282
</union>
8383
</namespace>

0 commit comments

Comments
 (0)