CTest: Add version field to resource spec file

Fixes: #20007
This commit is contained in:
Kyle Edwards
2019-11-22 13:43:32 -05:00
parent 99f0881d8c
commit f9f294f5fa
37 changed files with 224 additions and 0 deletions

View File

@@ -1345,6 +1345,10 @@ the following resource specification file:
.. code-block:: json
{
"version": {
"major": 1,
"minor": 0
},
"local": [
{
"gpus": [
@@ -1376,6 +1380,11 @@ the following resource specification file:
The members are:
``version``
An object containing a ``major`` integer field and a ``minor`` integer field.
Currently, the only supported version is major ``1``, minor ``0``. Any other
value is an error.
``local``
A JSON array of resource sets present on the system. Currently, this array
is restricted to being of size 1.

View File

@@ -33,6 +33,32 @@ bool cmCTestResourceSpec::ReadFromJSONFile(const std::string& filename)
return false;
}
int majorVersion = 1;
int minorVersion = 0;
if (root.isMember("version")) {
auto const& version = root["version"];
if (version.isObject()) {
if (!version.isMember("major") || !version.isMember("minor")) {
return false;
}
auto const& major = version["major"];
auto const& minor = version["minor"];
if (!major.isInt() || !minor.isInt()) {
return false;
}
majorVersion = major.asInt();
minorVersion = minor.asInt();
} else {
return false;
}
} else {
return false;
}
if (majorVersion != 1 || minorVersion != 0) {
return false;
}
auto const& local = root["local"];
if (!local.isArray()) {
return false;

View File

@@ -39,6 +39,23 @@ static const std::vector<ExpectedSpec> expectedResourceSpecs = {
{"spec16.json", true, {{{}}}},
{"spec17.json", false, {{{}}}},
{"spec18.json", false, {{{}}}},
{"spec19.json", false, {{{}}}},
{"spec20.json", true, {{{}}}},
{"spec21.json", false, {{{}}}},
{"spec22.json", false, {{{}}}},
{"spec23.json", false, {{{}}}},
{"spec24.json", false, {{{}}}},
{"spec25.json", false, {{{}}}},
{"spec26.json", false, {{{}}}},
{"spec27.json", false, {{{}}}},
{"spec28.json", false, {{{}}}},
{"spec29.json", false, {{{}}}},
{"spec30.json", false, {{{}}}},
{"spec31.json", false, {{{}}}},
{"spec32.json", false, {{{}}}},
{"spec33.json", false, {{{}}}},
{"spec34.json", false, {{{}}}},
{"spec35.json", false, {{{}}}},
{"noexist.json", false, {{{}}}},
/* clang-format on */
};

View File

@@ -1,4 +1,8 @@
{
"version": {
"major": 1,
"minor": 0
},
"local": [
{
"gpus": [

View File

@@ -1,4 +1,8 @@
{
"version": {
"major": 1,
"minor": 0
},
"local": [
{
"gpus": [

View File

@@ -1,4 +1,8 @@
{
"version": {
"major": 1,
"minor": 0
},
"local": [
{
"gpus": [

View File

@@ -1,4 +1,8 @@
{
"version": {
"major": 1,
"minor": 0
},
"local": [
{
"0": [

View File

@@ -1,4 +1,8 @@
{
"version": {
"major": 1,
"minor": 0
},
"local": [
{
"-": [

View File

@@ -1,4 +1,8 @@
{
"version": {
"major": 1,
"minor": 0
},
"local": [
{
"A": [

View File

@@ -1,4 +1,8 @@
{
"version": {
"major": 1,
"minor": 0
},
"local": [
{
"gpus": [

View File

@@ -1,4 +1,8 @@
{
"version": {
"major": 1,
"minor": 0
},
"local": [
{
"gpus": [

View File

@@ -0,0 +1,5 @@
{
"version": 1,
"local": [
]
}

View File

@@ -1,4 +1,8 @@
{
"version": {
"major": 1,
"minor": 0
},
"local": [
]
}

View File

@@ -0,0 +1,8 @@
{
"version": {
"major": 1,
"minor": 0
},
"local": [
]
}

View File

@@ -0,0 +1,5 @@
{
"version": [1, 0],
"local": [
]
}

View File

@@ -0,0 +1,5 @@
{
"version": 2,
"local": [
]
}

View File

@@ -0,0 +1,7 @@
{
"version": {
"major": 1
},
"local": [
]
}

View File

@@ -0,0 +1,7 @@
{
"version": {
"minor": 0
},
"local": [
]
}

View File

@@ -0,0 +1,8 @@
{
"version": {
"major": 1,
"minor": 1
},
"local": [
]
}

View File

@@ -0,0 +1,8 @@
{
"version": {
"major": 2,
"minor": 0
},
"local": [
]
}

View File

@@ -0,0 +1,8 @@
{
"version": {
"major": "1",
"minor": 0
},
"local": [
]
}

View File

@@ -0,0 +1,8 @@
{
"version": {
"major": 1,
"minor": "0"
},
"local": [
]
}

View File

@@ -0,0 +1,5 @@
{
"version": [1, 0, 0],
"local": [
]
}

View File

@@ -1,4 +1,8 @@
{
"version": {
"major": 1,
"minor": 0
},
"local": [
{
},

View File

@@ -0,0 +1,5 @@
{
"version": [1],
"local": [
]
}

View File

@@ -0,0 +1,5 @@
{
"version": [1, 1],
"local": [
]
}

View File

@@ -0,0 +1,5 @@
{
"version": [2, 0],
"local": [
]
}

View File

@@ -0,0 +1,5 @@
{
"version": ["1", 0],
"local": [
]
}

View File

@@ -0,0 +1,5 @@
{
"version": [1, "0"],
"local": [
]
}

View File

@@ -0,0 +1,5 @@
{
"version": "1",
"local": [
]
}

View File

@@ -1,4 +1,8 @@
{
"version": {
"major": 1,
"minor": 0
},
"local": {
}
}

View File

@@ -1,2 +1,6 @@
{
"version": {
"major": 1,
"minor": 0
}
}

View File

@@ -1,4 +1,8 @@
{
"version": {
"major": 1,
"minor": 0
},
"local": [
[]
]

View File

@@ -1,4 +1,8 @@
{
"version": {
"major": 1,
"minor": 0
},
"local": [
{
"gpus": {

View File

@@ -1,4 +1,8 @@
{
"version": {
"major": 1,
"minor": 0
},
"local": [
{
"gpus": [

View File

@@ -1,4 +1,8 @@
{
"version": {
"major": 1,
"minor": 0
},
"local": [
{
"gpus": [

View File

@@ -1,4 +1,8 @@
{
"version": {
"major": 1,
"minor": 0
},
"local": [
{
"widgets": [