-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathDependencySourceTest.cpp
More file actions
101 lines (86 loc) · 3.71 KB
/
Copy pathDependencySourceTest.cpp
File metadata and controls
101 lines (86 loc) · 3.71 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
#include "runcpp2/Data/DependencySource.hpp"
#include "runcpp2/LibYAML_Wrapper.hpp"
#include "runcpp2/runcpp2.hpp"
#include "runcpp2/DeferUtil.hpp"
#include "ssLogger/ssLog.hpp"
DS::Result<void> TestMain()
{
//DependencySource Should Parse Git Source
{
//NOTE: This is just a test YAML for validating parsing, don't use it for actual config
const char* yamlStr = R"(
Git:
URL: https://github.com/user/repo.git
Branch: master
FullHistory: true
SubmoduleInitType: Full
)";
runcpp2::YAML::ResourceHandle resource;
std::vector<runcpp2::YAML::NodePtr> roots = runcpp2::YAML::ParseYAML( yamlStr,
resource).DS_TRY();
DEFER { FreeYAMLResource(resource); };
DS_ASSERT_EQ(roots.size(), 1);
runcpp2::YAML::NodePtr root = roots.front();
runcpp2::Data::DependencySource dependencySource;
DS_ASSERT_TRUE(dependencySource.ParseYAML_Node(root));
//Verify parsed values
const runcpp2::Data::GitSource* git =
mpark::get_if<runcpp2::Data::GitSource>(&dependencySource.Source);
DS_ASSERT_TRUE(git != nullptr);
DS_ASSERT_EQ(git->URL, "https://github.com/user/repo.git");
DS_ASSERT_EQ(git->Branch, "master");
DS_ASSERT_TRUE(git->FullHistory);
DS_ASSERT_EQ((int)git->CurrentSubmoduleInitType, (int)runcpp2::Data::SubmoduleInitType::FULL);
//Test ToString() and Equals()
std::string yamlOutput = dependencySource.ToString("");
roots = runcpp2::YAML::ParseYAML(yamlOutput, resource).DS_TRY();
DS_ASSERT_EQ(roots.size(), 1);
runcpp2::Data::DependencySource parsedOutput;
parsedOutput.ParseYAML_Node(roots.front());
DS_ASSERT_TRUE(dependencySource.Equals(parsedOutput));
}
//DependencySource Should Parse Local Source
{
//NOTE: This is just a test YAML for validating parsing, don't use it for actual config
const char* yamlStr = R"(
Local:
Path: ../external/mylib
)";
runcpp2::YAML::ResourceHandle resource;
std::vector<runcpp2::YAML::NodePtr> roots = runcpp2::YAML::ParseYAML( yamlStr,
resource).DS_TRY();
DEFER { FreeYAMLResource(resource); };
DS_ASSERT_EQ(roots.size(), 1);
runcpp2::YAML::NodePtr root = roots.front();
runcpp2::Data::DependencySource dependencySource;
DS_ASSERT_TRUE(dependencySource.ParseYAML_Node(root));
//Verify parsed values
const runcpp2::Data::LocalSource* local =
mpark::get_if<runcpp2::Data::LocalSource>(&dependencySource.Source);
DS_ASSERT_TRUE(local != nullptr);
DS_ASSERT_EQ(local->Path, "../external/mylib");
DS_ASSERT_EQ((int)local->CopyMode, (int)runcpp2::Data::LocalCopyMode::Auto);
//Test ToString() and Equals()
std::string yamlOutput = dependencySource.ToString("");
roots = runcpp2::YAML::ParseYAML(yamlOutput, resource).DS_TRY();
DS_ASSERT_EQ(roots.size(), 1);
runcpp2::Data::DependencySource parsedOutput;
parsedOutput.ParseYAML_Node(roots.front());
DS_ASSERT_TRUE(dependencySource.Equals(parsedOutput));
}
return {};
}
int main(int argc, char** argv)
{
try
{
TestMain().DS_TRY_ACT(ssLOG_LINE(DS_TMP_ERROR.ToString()); return 1);
return 0;
}
catch(std::exception& ex)
{
ssLOG_LINE(ex.what());
return 1;
}
return 1;
}