Browse Source

Merge branch 'backport-3.19-preset-no-comments' into release-3.19

Merge-request: !5853
Brad King 4 years ago
parent
commit
fcf0c66b5a

+ 8 - 1
Help/release/3.19.rst

@@ -409,7 +409,6 @@ Changes made since CMake 3.19.0 include the following.
   :generator:`Visual Studio 14 2015` generator.  It has now been fixed to
   work with :ref:`Visual Studio Generators` for later VS versions too.
 
-
 3.19.5
 ------
 
@@ -425,3 +424,11 @@ Changes made since CMake 3.19.0 include the following.
   *Link Binaries With Libraries* build phase broke the ability to switch
   between device and simulator builds without reconfiguring.  That capability
   has now been restored.
+
+3.19.6
+------
+
+* The :manual:`cmake-presets(7)` feature no longer allows comments in
+  ``CMakePresets.json`` or ``CMakeUserPresets.json`` files.
+  This was mistakenly allowed by the implementation in CMake 3.19.0 through
+  CMake 3.19.5, and was not documented.

+ 1 - 0
Source/cmCMakePresetsFile.cxx

@@ -839,6 +839,7 @@ cmCMakePresetsFile::ReadFileResult cmCMakePresetsFile::ReadJSONFile(
 
   Json::Value root;
   Json::CharReaderBuilder builder;
+  Json::CharReaderBuilder::strictMode(&builder.settings_);
   if (!Json::parseFromStream(builder, fin, &root, nullptr)) {
     return ReadFileResult::JSON_PARSE_ERROR;
   }

+ 0 - 4
Tests/RunCMake/CMakePresets/CMakePresets.json.in

@@ -1,8 +1,4 @@
-/*
- * Block comment
- */
 {
-  // Inline comment
   "version": 1,
   "cmakeMinimumRequired": {
     "major": 3,

+ 1 - 0
Tests/RunCMake/CMakePresets/Comment-result.txt

@@ -0,0 +1 @@
+1

+ 2 - 0
Tests/RunCMake/CMakePresets/Comment-stderr.txt

@@ -0,0 +1,2 @@
+^CMake Error: Could not read presets from [^
+]*/Tests/RunCMake/CMakePresets/Comment: JSON parse error$

+ 11 - 0
Tests/RunCMake/CMakePresets/Comment.json.in

@@ -0,0 +1,11 @@
+// Comment
+{
+  "version": 1,
+  "configurePresets": [
+    {
+      "name": "Comment",
+      "generator": "@RunCMake_GENERATOR@",
+      "binaryDir": "${sourceDir}/build"
+    }
+  ]
+}

+ 1 - 0
Tests/RunCMake/CMakePresets/RunCMakeTest.cmake

@@ -77,6 +77,7 @@ endfunction()
 # Test CMakePresets.json errors
 set(CMakePresets_SCHEMA_EXPECTED_RESULT 1)
 run_cmake_presets(NoCMakePresets)
+run_cmake_presets(Comment)
 run_cmake_presets(JSONParseError)
 run_cmake_presets(InvalidRoot)
 run_cmake_presets(NoVersion)

+ 1 - 2
Tests/RunCMake/CMakePresets/validate_schema.py

@@ -1,4 +1,3 @@
-import jsmin
 import json
 import jsonschema
 import os.path
@@ -6,7 +5,7 @@ import sys
 
 
 with open(sys.argv[1], "rb") as f:
-    contents = json.loads(jsmin.jsmin(f.read().decode("utf-8-sig")))
+    contents = json.loads(f.read().decode("utf-8-sig"))
 
 schema_file = os.path.join(
         os.path.dirname(__file__),