Skip to content

Commit 11c42db

Browse files
Updating tests
1 parent 553a26e commit 11c42db

File tree

2 files changed

+298
-0
lines changed

2 files changed

+298
-0
lines changed

Src/Tests/Data/DependencyInfoTest.cpp

Lines changed: 137 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -155,6 +155,143 @@ int main(int argc, char** argv)
155155
dependencyInfo.Equals(parsedOutput));
156156
};
157157

158+
ssTEST("DependencyInfo Should Parse Fields Without Platform And Profile As Default")
159+
{
160+
ssTEST_OUTPUT_SETUP
161+
(
162+
//NOTE: This is just a test YAML for validating parsing, don't use it for actual config
163+
const char* yamlStr = R"(
164+
Name: MyLibrary
165+
Platforms:
166+
- Windows
167+
- Unix
168+
Source:
169+
Git:
170+
URL: https://github.com/user/mylibrary.git
171+
LibraryType: Shared
172+
IncludePaths:
173+
- include
174+
- src
175+
LinkProperties:
176+
SearchLibraryNames:
177+
- mylib
178+
SearchDirectories:
179+
- lib/Debug
180+
ExcludeLibraryNames:
181+
- mylib_test
182+
AdditionalLinkOptions:
183+
- /NODEFAULTLIB
184+
Setup:
185+
- mkdir build
186+
- cd build
187+
Build:
188+
- cmake ..
189+
- make
190+
Cleanup:
191+
- rm -rf build
192+
FilesToCopy:
193+
- bin/Debug/mylib.dll
194+
- bin/Debug/mylib.pdb
195+
)";
196+
197+
ryml::Tree tree = ryml::parse_in_arena(c4::to_csubstr(yamlStr));
198+
ryml::ConstNodeRef root = tree.rootref();
199+
200+
runcpp2::Data::DependencyInfo dependencyInfo;
201+
);
202+
203+
ssTEST_OUTPUT_EXECUTION
204+
(
205+
bool parseResult = dependencyInfo.ParseYAML_Node(root);
206+
);
207+
208+
ssTEST_OUTPUT_ASSERT("ParseYAML_Node should succeed", parseResult);
209+
210+
//Verify basic fields
211+
ssTEST_OUTPUT_ASSERT("Name", dependencyInfo.Name == "MyLibrary");
212+
ssTEST_OUTPUT_ASSERT("Platforms count", dependencyInfo.Platforms.size() == 2);
213+
ssTEST_OUTPUT_ASSERT( "Library type",
214+
dependencyInfo.LibraryType ==
215+
runcpp2::Data::DependencyLibraryType::SHARED);
216+
ssTEST_OUTPUT_ASSERT("Include paths count", dependencyInfo.IncludePaths.size() == 2);
217+
218+
//Verify Source
219+
const runcpp2::Data::GitSource* git =
220+
mpark::get_if<runcpp2::Data::GitSource>(&dependencyInfo.Source.Source);
221+
ssTEST_OUTPUT_ASSERT("Should be Git source", git != nullptr);
222+
ssTEST_OUTPUT_ASSERT("URL", git->URL == "https://github.com/user/mylibrary.git");
223+
224+
//Verify Link Properties with default platform and profile
225+
ssTEST_OUTPUT_SETUP
226+
(
227+
const runcpp2::Data::ProfileLinkProperty& defaultLink =
228+
dependencyInfo .LinkProperties
229+
.at("DefaultPlatform")
230+
.ProfileProperties.at("DefaultProfile");
231+
);
232+
233+
ssTEST_OUTPUT_ASSERT( "Default search lib count",
234+
defaultLink.SearchLibraryNames.size() == 1);
235+
ssTEST_OUTPUT_ASSERT( "Default search lib name",
236+
defaultLink.SearchLibraryNames.at(0) == "mylib");
237+
ssTEST_OUTPUT_ASSERT( "Default search dir count",
238+
defaultLink.SearchDirectories.size() == 1);
239+
ssTEST_OUTPUT_ASSERT( "Default search dir",
240+
defaultLink.SearchDirectories.at(0) == "lib/Debug");
241+
ssTEST_OUTPUT_ASSERT( "Default exclude lib count",
242+
defaultLink.ExcludeLibraryNames.size() == 1);
243+
ssTEST_OUTPUT_ASSERT( "Default exclude lib",
244+
defaultLink.ExcludeLibraryNames.at(0) == "mylib_test");
245+
ssTEST_OUTPUT_ASSERT( "Default link options count",
246+
defaultLink.AdditionalLinkOptions.size() == 1);
247+
ssTEST_OUTPUT_ASSERT( "Default link option",
248+
defaultLink.AdditionalLinkOptions.at(0) == "/NODEFAULTLIB");
249+
250+
//Verify Setup with default platform and profile
251+
ssTEST_OUTPUT_SETUP
252+
(
253+
const std::vector<std::string>& defaultSetupCommands =
254+
dependencyInfo.Setup.at("DefaultPlatform").CommandSteps.at("DefaultProfile");
255+
);
256+
ssTEST_OUTPUT_ASSERT("Default setup commands count", defaultSetupCommands.size() == 2);
257+
ssTEST_OUTPUT_ASSERT( "Default first setup command",
258+
defaultSetupCommands.at(0) == "mkdir build");
259+
ssTEST_OUTPUT_ASSERT( "Default second setup command",
260+
defaultSetupCommands.at(1) == "cd build");
261+
262+
//Verify Build with default platform and profile
263+
ssTEST_OUTPUT_SETUP
264+
(
265+
const std::vector<std::string>& defaultBuildCommands =
266+
dependencyInfo.Build.at("DefaultPlatform").CommandSteps.at("DefaultProfile");
267+
);
268+
ssTEST_OUTPUT_ASSERT("Default build commands count", defaultBuildCommands.size() == 2);
269+
ssTEST_OUTPUT_ASSERT("Default first build command", defaultBuildCommands.at(0) == "cmake ..");
270+
ssTEST_OUTPUT_ASSERT("Default second build command", defaultBuildCommands.at(1) == "make");
271+
272+
//Verify Cleanup with default platform and profile
273+
ssTEST_OUTPUT_SETUP
274+
(
275+
const std::vector<std::string>& defaultCleanupCommands =
276+
dependencyInfo.Cleanup.at("DefaultPlatform").CommandSteps.at("DefaultProfile");
277+
);
278+
ssTEST_OUTPUT_ASSERT("Default cleanup commands count", defaultCleanupCommands.size() == 1);
279+
ssTEST_OUTPUT_ASSERT( "Default cleanup command",
280+
defaultCleanupCommands.at(0) == "rm -rf build");
281+
282+
//Verify FilesToCopy with default platform and profile
283+
ssTEST_OUTPUT_SETUP
284+
(
285+
const std::vector<std::string>& defaultFilesToCopy =
286+
dependencyInfo.FilesToCopy.at("DefaultPlatform").ProfileFiles.at("DefaultProfile");
287+
);
288+
ssTEST_OUTPUT_ASSERT("Default files to copy count", defaultFilesToCopy.size() == 2);
289+
ssTEST_OUTPUT_ASSERT( "Default first file to copy",
290+
defaultFilesToCopy.at(0) == "bin/Debug/mylib.dll");
291+
ssTEST_OUTPUT_ASSERT( "Default second file to copy",
292+
defaultFilesToCopy.at(1) == "bin/Debug/mylib.pdb");
293+
};
294+
158295
ssTEST_END_TEST_GROUP();
159296
return 0;
160297
}

Src/Tests/Data/ScriptInfoTest.cpp

Lines changed: 161 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -274,6 +274,167 @@ int main(int argc, char** argv)
274274
scriptInfo.Equals(parsedOutput));
275275
};
276276

277+
ssTEST("ScriptInfo Should Parse Fields Without Platform And Profile As Default")
278+
{
279+
ssTEST_OUTPUT_SETUP
280+
(
281+
//NOTE: This is just a test YAML for validating parsing, don't use it for actual config
282+
const char* yamlStr = R"(
283+
Language: C++
284+
OverrideCompileFlags:
285+
Remove: /W4
286+
Append: /W3
287+
OverrideLinkFlags:
288+
Remove: /SUBSYSTEM:CONSOLE
289+
Append: /SUBSYSTEM:WINDOWS
290+
OtherFilesToBeCompiled:
291+
- src/extra.cpp
292+
- src/debug.cpp
293+
IncludePaths:
294+
- include
295+
- src/include
296+
Defines:
297+
- _DEBUG
298+
- VERSION=1.0.0
299+
Setup:
300+
- echo 1
301+
- echo 2
302+
PreBuild:
303+
- echo 3
304+
- echo 4
305+
PostBuild:
306+
- echo 5
307+
- echo 6
308+
Cleanup:
309+
- echo 7
310+
- echo 8
311+
)";
312+
313+
ryml::Tree tree = ryml::parse_in_arena(c4::to_csubstr(yamlStr));
314+
ryml::ConstNodeRef root = tree.rootref();
315+
316+
runcpp2::Data::ScriptInfo scriptInfo;
317+
);
318+
319+
ssTEST_OUTPUT_EXECUTION
320+
(
321+
bool parseResult = scriptInfo.ParseYAML_Node(root);
322+
);
323+
324+
ssTEST_OUTPUT_ASSERT("ParseYAML_Node should succeed", parseResult);
325+
326+
//Verify basic fields
327+
ssTEST_OUTPUT_ASSERT("Language", scriptInfo.Language == "C++");
328+
329+
//Verify OverrideCompileFlags with default platform and profile
330+
ssTEST_OUTPUT_SETUP
331+
(
332+
const runcpp2::Data::FlagsOverrideInfo& defaultCompileFlags =
333+
scriptInfo .OverrideCompileFlags
334+
.at("DefaultPlatform")
335+
.FlagsOverrides
336+
.at("DefaultProfile");
337+
);
338+
ssTEST_OUTPUT_ASSERT("Default compile remove flag", defaultCompileFlags.Remove == "/W4");
339+
ssTEST_OUTPUT_ASSERT("Default compile append flag", defaultCompileFlags.Append == "/W3");
340+
341+
//Verify OverrideLinkFlags with default platform and profile
342+
ssTEST_OUTPUT_SETUP
343+
(
344+
const runcpp2::Data::FlagsOverrideInfo& defaultLinkFlags =
345+
scriptInfo .OverrideLinkFlags
346+
.at("DefaultPlatform")
347+
.FlagsOverrides
348+
.at("DefaultProfile");
349+
);
350+
ssTEST_OUTPUT_ASSERT( "Default link remove flag",
351+
defaultLinkFlags.Remove == "/SUBSYSTEM:CONSOLE");
352+
ssTEST_OUTPUT_ASSERT( "Default link append flag",
353+
defaultLinkFlags.Append == "/SUBSYSTEM:WINDOWS");
354+
355+
//Verify OtherFilesToBeCompiled with default platform and profile
356+
ssTEST_OUTPUT_SETUP
357+
(
358+
const std::vector<ghc::filesystem::path>& defaultCompileFiles =
359+
scriptInfo .OtherFilesToBeCompiled.at("DefaultPlatform").Paths.at("DefaultProfile");
360+
);
361+
ssTEST_OUTPUT_ASSERT("Default files count", defaultCompileFiles.size() == 2);
362+
ssTEST_OUTPUT_ASSERT("Default first file", defaultCompileFiles.at(0) == "src/extra.cpp");
363+
ssTEST_OUTPUT_ASSERT("Default second file", defaultCompileFiles.at(1) == "src/debug.cpp");
364+
365+
//Verify IncludePaths with default platform and profile
366+
ssTEST_OUTPUT_SETUP
367+
(
368+
const std::vector<ghc::filesystem::path>& defaultIncludePaths =
369+
scriptInfo.IncludePaths.at("DefaultPlatform").Paths.at("DefaultProfile");
370+
);
371+
ssTEST_OUTPUT_ASSERT("Default include paths count", defaultIncludePaths.size() == 2);
372+
ssTEST_OUTPUT_ASSERT("Default first include path", defaultIncludePaths.at(0) == "include");
373+
ssTEST_OUTPUT_ASSERT( "Default second include path",
374+
defaultIncludePaths.at(1) == "src/include");
375+
376+
//Verify Defines with default platform and profile
377+
ssTEST_OUTPUT_SETUP
378+
(
379+
const std::vector<runcpp2::Data::Define>& defaultDefines =
380+
scriptInfo.Defines.at("DefaultPlatform").Defines.at("DefaultProfile");
381+
);
382+
ssTEST_OUTPUT_ASSERT("Default defines count", defaultDefines.size() == 2);
383+
ssTEST_OUTPUT_ASSERT("Default first define", defaultDefines.at(0).Name == "_DEBUG");
384+
ssTEST_OUTPUT_ASSERT("Default second define name", defaultDefines.at(1).Name == "VERSION");
385+
ssTEST_OUTPUT_ASSERT("Default second define value", defaultDefines.at(1).Value == "1.0.0");
386+
387+
//Verify Setup with default platform and profile
388+
ssTEST_OUTPUT_SETUP
389+
(
390+
const std::vector<std::string>& defaultSetupCommands =
391+
scriptInfo.Setup.at("DefaultPlatform").CommandSteps.at("DefaultProfile");
392+
);
393+
ssTEST_OUTPUT_ASSERT("Default setup commands count", defaultSetupCommands.size() == 2);
394+
ssTEST_OUTPUT_ASSERT( "Default first setup command",
395+
defaultSetupCommands.at(0) == "echo 1");
396+
ssTEST_OUTPUT_ASSERT( "Default second setup command",
397+
defaultSetupCommands.at(1) == "echo 2");
398+
399+
//Verify PreBuild with default platform and profile
400+
ssTEST_OUTPUT_SETUP
401+
(
402+
const std::vector<std::string>& defaultPreBuildCommands =
403+
scriptInfo.PreBuild.at("DefaultPlatform").CommandSteps.at("DefaultProfile");
404+
);
405+
ssTEST_OUTPUT_ASSERT("Default prebuild commands count", defaultPreBuildCommands.size() == 2);
406+
ssTEST_OUTPUT_ASSERT( "Default first prebuild command",
407+
defaultPreBuildCommands.at(0) == "echo 3");
408+
ssTEST_OUTPUT_ASSERT( "Default second prebuild command",
409+
defaultPreBuildCommands.at(1) == "echo 4");
410+
411+
//Verify PostBuild with default platform and profile
412+
ssTEST_OUTPUT_SETUP
413+
(
414+
const std::vector<std::string>& defaultPostBuildCommands =
415+
scriptInfo.PostBuild.at("DefaultPlatform").CommandSteps.at("DefaultProfile");
416+
);
417+
ssTEST_OUTPUT_ASSERT( "Default postbuild commands count",
418+
defaultPostBuildCommands.size() == 2);
419+
ssTEST_OUTPUT_ASSERT( "Default first postbuild command",
420+
defaultPostBuildCommands.at(0) == "echo 5");
421+
ssTEST_OUTPUT_ASSERT( "Default second postbuild command",
422+
defaultPostBuildCommands.at(1) == "echo 6");
423+
424+
//Verify Cleanup with default platform and profile
425+
ssTEST_OUTPUT_SETUP
426+
(
427+
const std::vector<std::string>& defaultCleanupCommands =
428+
scriptInfo.Cleanup.at("DefaultPlatform").CommandSteps.at("DefaultProfile");
429+
);
430+
ssTEST_OUTPUT_ASSERT( "Default cleanup commands count",
431+
defaultCleanupCommands.size() == 2);
432+
ssTEST_OUTPUT_ASSERT( "Default first cleanup command",
433+
defaultCleanupCommands.at(0) == "echo 7");
434+
ssTEST_OUTPUT_ASSERT( "Default second cleanup command",
435+
defaultCleanupCommands.at(1) == "echo 8");
436+
};
437+
277438
ssTEST_END_TEST_GROUP();
278439
return 0;
279440
}

0 commit comments

Comments
 (0)