@@ -138,6 +138,49 @@ TEST(RegisterTestGroup, Register_Build) {
138
138
mock ().checkExpectations ();
139
139
}
140
140
141
+ TEST (RegisterTestGroup, Register_Run_PostCb) {
142
+ std::vector<const char *> av{
143
+ " " ,
144
+ " --config" ,
145
+ " configs/basic_parse.toml" ,
146
+ };
147
+ int argc = av.size ();
148
+
149
+ buildcc::ArgToolchain gcc_toolchain;
150
+ buildcc::ArgToolchain msvc_toolchain;
151
+ buildcc::Args::Init ()
152
+ .AddToolchain (" gcc" , " Generic gcc toolchain" , gcc_toolchain)
153
+ .AddToolchain (" msvc" , " Generic msvc toolchain" , msvc_toolchain)
154
+ .Parse (argc, av.data ());
155
+
156
+ STRCMP_EQUAL (buildcc::Args::GetProjectRootDir ().string ().c_str (), " root" );
157
+ STRCMP_EQUAL (buildcc::Args::GetProjectBuildDir ().string ().c_str (), " build" );
158
+ CHECK (buildcc::Args::GetLogLevel () == buildcc::env::LogLevel::Trace);
159
+ CHECK_TRUE (buildcc::Args::Clean ());
160
+
161
+ // Make dummy toolchain and target
162
+ buildcc::Project::Init (fs::current_path (), fs::current_path ());
163
+ buildcc::Toolchain toolchain (buildcc::ToolchainId::Gcc, " " , " " , " " , " " , " " ,
164
+ " " );
165
+ buildcc::BaseTarget target (" dummyT" , buildcc::TargetType::Executable,
166
+ toolchain, " " );
167
+
168
+ {
169
+ buildcc::ArgToolchainState state{false , false };
170
+
171
+ buildcc::Reg::Init ();
172
+ buildcc::Reg::Toolchain (state).Build (
173
+ [](buildcc::BaseTarget &target) { (void )target; }, target);
174
+
175
+ mock ().expectOneCall (" Build_PostCb" );
176
+ buildcc::Reg::Run ([]() { mock ().actualCall (" Build_PostCb" ); });
177
+ buildcc::Reg::Deinit ();
178
+ }
179
+
180
+ buildcc::Project::Deinit ();
181
+ mock ().checkExpectations ();
182
+ }
183
+
141
184
TEST (RegisterTestGroup, Register_NoBuildAndDep) {
142
185
std::vector<const char *> av{
143
186
" " ,
0 commit comments