فهرست منبع

CTest: Add version field to resource spec file

Fixes: #20007
Kyle Edwards 6 سال پیش
والد
کامیت
f9f294f5fa
37فایلهای تغییر یافته به همراه224 افزوده شده و 0 حذف شده
  1. 9 0
      Help/manual/ctest.1.rst
  2. 26 0
      Source/CTest/cmCTestResourceSpec.cxx
  3. 17 0
      Tests/CMakeLib/testCTestResourceSpec.cxx
  4. 4 0
      Tests/CMakeLib/testCTestResourceSpec_data/spec1.json
  5. 4 0
      Tests/CMakeLib/testCTestResourceSpec_data/spec10.json
  6. 4 0
      Tests/CMakeLib/testCTestResourceSpec_data/spec11.json
  7. 4 0
      Tests/CMakeLib/testCTestResourceSpec_data/spec14.json
  8. 4 0
      Tests/CMakeLib/testCTestResourceSpec_data/spec15.json
  9. 4 0
      Tests/CMakeLib/testCTestResourceSpec_data/spec16.json
  10. 4 0
      Tests/CMakeLib/testCTestResourceSpec_data/spec17.json
  11. 4 0
      Tests/CMakeLib/testCTestResourceSpec_data/spec18.json
  12. 5 0
      Tests/CMakeLib/testCTestResourceSpec_data/spec19.json
  13. 4 0
      Tests/CMakeLib/testCTestResourceSpec_data/spec2.json
  14. 8 0
      Tests/CMakeLib/testCTestResourceSpec_data/spec20.json
  15. 5 0
      Tests/CMakeLib/testCTestResourceSpec_data/spec21.json
  16. 5 0
      Tests/CMakeLib/testCTestResourceSpec_data/spec22.json
  17. 7 0
      Tests/CMakeLib/testCTestResourceSpec_data/spec23.json
  18. 7 0
      Tests/CMakeLib/testCTestResourceSpec_data/spec24.json
  19. 8 0
      Tests/CMakeLib/testCTestResourceSpec_data/spec25.json
  20. 8 0
      Tests/CMakeLib/testCTestResourceSpec_data/spec26.json
  21. 8 0
      Tests/CMakeLib/testCTestResourceSpec_data/spec27.json
  22. 8 0
      Tests/CMakeLib/testCTestResourceSpec_data/spec28.json
  23. 5 0
      Tests/CMakeLib/testCTestResourceSpec_data/spec29.json
  24. 4 0
      Tests/CMakeLib/testCTestResourceSpec_data/spec3.json
  25. 5 0
      Tests/CMakeLib/testCTestResourceSpec_data/spec30.json
  26. 5 0
      Tests/CMakeLib/testCTestResourceSpec_data/spec31.json
  27. 5 0
      Tests/CMakeLib/testCTestResourceSpec_data/spec32.json
  28. 5 0
      Tests/CMakeLib/testCTestResourceSpec_data/spec33.json
  29. 5 0
      Tests/CMakeLib/testCTestResourceSpec_data/spec34.json
  30. 5 0
      Tests/CMakeLib/testCTestResourceSpec_data/spec35.json
  31. 4 0
      Tests/CMakeLib/testCTestResourceSpec_data/spec4.json
  32. 4 0
      Tests/CMakeLib/testCTestResourceSpec_data/spec5.json
  33. 4 0
      Tests/CMakeLib/testCTestResourceSpec_data/spec6.json
  34. 4 0
      Tests/CMakeLib/testCTestResourceSpec_data/spec7.json
  35. 4 0
      Tests/CMakeLib/testCTestResourceSpec_data/spec8.json
  36. 4 0
      Tests/CMakeLib/testCTestResourceSpec_data/spec9.json
  37. 4 0
      Tests/RunCMake/CTestResourceAllocation/resspec.json

+ 9 - 0
Help/manual/ctest.1.rst

@@ -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.

+ 26 - 0
Source/CTest/cmCTestResourceSpec.cxx

@@ -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;

+ 17 - 0
Tests/CMakeLib/testCTestResourceSpec.cxx

@@ -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 */
 };

+ 4 - 0
Tests/CMakeLib/testCTestResourceSpec_data/spec1.json

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

+ 4 - 0
Tests/CMakeLib/testCTestResourceSpec_data/spec10.json

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

+ 4 - 0
Tests/CMakeLib/testCTestResourceSpec_data/spec11.json

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

+ 4 - 0
Tests/CMakeLib/testCTestResourceSpec_data/spec14.json

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

+ 4 - 0
Tests/CMakeLib/testCTestResourceSpec_data/spec15.json

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

+ 4 - 0
Tests/CMakeLib/testCTestResourceSpec_data/spec16.json

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

+ 4 - 0
Tests/CMakeLib/testCTestResourceSpec_data/spec17.json

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

+ 4 - 0
Tests/CMakeLib/testCTestResourceSpec_data/spec18.json

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

+ 5 - 0
Tests/CMakeLib/testCTestResourceSpec_data/spec19.json

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

+ 4 - 0
Tests/CMakeLib/testCTestResourceSpec_data/spec2.json

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

+ 8 - 0
Tests/CMakeLib/testCTestResourceSpec_data/spec20.json

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

+ 5 - 0
Tests/CMakeLib/testCTestResourceSpec_data/spec21.json

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

+ 5 - 0
Tests/CMakeLib/testCTestResourceSpec_data/spec22.json

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

+ 7 - 0
Tests/CMakeLib/testCTestResourceSpec_data/spec23.json

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

+ 7 - 0
Tests/CMakeLib/testCTestResourceSpec_data/spec24.json

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

+ 8 - 0
Tests/CMakeLib/testCTestResourceSpec_data/spec25.json

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

+ 8 - 0
Tests/CMakeLib/testCTestResourceSpec_data/spec26.json

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

+ 8 - 0
Tests/CMakeLib/testCTestResourceSpec_data/spec27.json

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

+ 8 - 0
Tests/CMakeLib/testCTestResourceSpec_data/spec28.json

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

+ 5 - 0
Tests/CMakeLib/testCTestResourceSpec_data/spec29.json

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

+ 4 - 0
Tests/CMakeLib/testCTestResourceSpec_data/spec3.json

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

+ 5 - 0
Tests/CMakeLib/testCTestResourceSpec_data/spec30.json

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

+ 5 - 0
Tests/CMakeLib/testCTestResourceSpec_data/spec31.json

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

+ 5 - 0
Tests/CMakeLib/testCTestResourceSpec_data/spec32.json

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

+ 5 - 0
Tests/CMakeLib/testCTestResourceSpec_data/spec33.json

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

+ 5 - 0
Tests/CMakeLib/testCTestResourceSpec_data/spec34.json

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

+ 5 - 0
Tests/CMakeLib/testCTestResourceSpec_data/spec35.json

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

+ 4 - 0
Tests/CMakeLib/testCTestResourceSpec_data/spec4.json

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

+ 4 - 0
Tests/CMakeLib/testCTestResourceSpec_data/spec5.json

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

+ 4 - 0
Tests/CMakeLib/testCTestResourceSpec_data/spec6.json

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

+ 4 - 0
Tests/CMakeLib/testCTestResourceSpec_data/spec7.json

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

+ 4 - 0
Tests/CMakeLib/testCTestResourceSpec_data/spec8.json

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

+ 4 - 0
Tests/CMakeLib/testCTestResourceSpec_data/spec9.json

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

+ 4 - 0
Tests/RunCMake/CTestResourceAllocation/resspec.json

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