Browse Source

Merge topic 'cpack-dmg-sla'

b9737ead1f Tests: Add case for CPack DMG multi-language SLAs
925c026c31 Tests: Verify SLA in CPackComponentsForAll-DragNDrop-* DMG files

Acked-by: Kitware Robot <[email protected]>
Merge-request: !4969
Brad King 5 years ago
parent
commit
12497c56a9

+ 16 - 0
Tests/CPackComponentsForAll/RunCPackVerifyResult.cmake

@@ -88,12 +88,14 @@ if(CPackGen MATCHES "DragNDrop")
     set(expected_file_mask "${CPackComponentsForAll_BINARY_DIR}/MyLib-*.dmg")
     if(${CPackComponentWay} STREQUAL "default")
         set(expected_count 1)
+        set(expect_dmg_sla 1)
     elseif(${CPackComponentWay} STREQUAL "OnePackPerGroup")
         set(expected_count 3)
     elseif(${CPackComponentWay} STREQUAL "IgnoreGroup")
         set(expected_count 4)
     elseif(${CPackComponentWay} STREQUAL "AllInOne")
         set(expected_count 1)
+        set(expect_dmg_sla 1)
     endif()
 endif()
 
@@ -138,6 +140,20 @@ if(expected_file_mask)
   if(NOT actual_count EQUAL expected_count)
     message(FATAL_ERROR "error: expected_count=${expected_count} does not match actual_count=${actual_count}: CPackComponents test fails. (CPack_output=${CPack_output}, CPack_error=${CPack_error})")
   endif()
+
+  if(expect_dmg_sla)
+    execute_process(COMMAND hdiutil udifderez -xml "${expected_file}" OUTPUT_VARIABLE out ERROR_VARIABLE err RESULT_VARIABLE res)
+    if(NOT res EQUAL 0)
+      string(REPLACE "\n" "\n  " err "  ${err}")
+      message(FATAL_ERROR "error: running 'hdiutil udifderez -xml' on\n  ${expected_file}\nfailed with:\n${err}")
+    endif()
+    foreach(key "LPic" "STR#" "TEXT")
+      if(NOT out MATCHES "<key>${key}</key>")
+        string(REPLACE "\n" "\n  " out "  ${out}")
+        message(FATAL_ERROR "error: running 'hdiutil udifderez -xml' on\n  ${expected_file}\ndid not show '${key}' key:\n${out}")
+      endif()
+    endforeach()
+  endif()
 endif()
 
 # Validate content

+ 1 - 0
Tests/RunCMake/CPack/DragNDrop/Accept.txt

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

+ 1 - 0
Tests/RunCMake/CPack/DragNDrop/Helpers.cmake

@@ -5,6 +5,7 @@ function(getPackageContent FILE RESULT_VAR)
   file(REMOVE_RECURSE "${path_}/content")
   file(MAKE_DIRECTORY "${path_}/content")
   execute_process(COMMAND ${HDIUTIL_EXECUTABLE} attach -mountroot ${path_}/content -nobrowse ${FILE}
+          INPUT_FILE "${src_dir}/DragNDrop/Accept.txt"
           RESULT_VARIABLE attach_result_
           ERROR_VARIABLE attach_error_
           OUTPUT_STRIP_TRAILING_WHITESPACE)

+ 2 - 0
Tests/RunCMake/CPack/DragNDrop/packaging_MONOLITHIC_default.cmake

@@ -0,0 +1,2 @@
+set(CPACK_DMG_DISABLE_APPLICATIONS_SYMLINK ON)
+set(CPACK_DMG_VOLUME_NAME "volume-name")

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

@@ -10,6 +10,7 @@ run_cpack_test(DEBUGINFO "RPM.DEBUGINFO;DEB.DEBUGINFO" true "COMPONENT")
 run_cpack_test_subtests(DEFAULT_PERMISSIONS "CMAKE_var_set;CPACK_var_set;both_set;invalid_CMAKE_var;invalid_CPACK_var" "RPM.DEFAULT_PERMISSIONS;DEB.DEFAULT_PERMISSIONS" false "MONOLITHIC;COMPONENT")
 run_cpack_test(DEPENDENCIES "RPM.DEPENDENCIES;DEB.DEPENDENCIES" true "COMPONENT")
 run_cpack_test(DIST "RPM.DIST" false "MONOLITHIC")
+run_cpack_test(DMG_SLA "DragNDrop" false "MONOLITHIC")
 run_cpack_test(EMPTY_DIR "RPM.EMPTY_DIR;DEB.EMPTY_DIR;TGZ" true "MONOLITHIC;COMPONENT")
 run_cpack_test(VERSION "RPM.VERSION;DEB.VERSION" false "MONOLITHIC;COMPONENT")
 run_cpack_test(EXTRA "DEB.EXTRA" false "COMPONENT")

+ 3 - 0
Tests/RunCMake/CPack/tests/DMG_SLA/English.license.txt

@@ -0,0 +1,3 @@
+LICENSE
+-------
+This is an installer created using CPack (https://cmake.org). No license provided.

+ 9 - 0
Tests/RunCMake/CPack/tests/DMG_SLA/English.menu.txt

@@ -0,0 +1,9 @@
+English
+Agree
+Disagree
+Print
+Save...
+You agree to the License Agreement terms when you click the "Agree" button.
+Software License Agreement
+This text cannot be saved. This disk may be full or locked or the file may be locked.
+Unable to print.  Make sure you have selected a printer.

+ 2 - 0
Tests/RunCMake/CPack/tests/DMG_SLA/ExpectedFiles.cmake

@@ -0,0 +1,2 @@
+set(EXPECTED_FILES_COUNT "1")
+set(EXPECTED_FILE_CONTENT_1_LIST "/foo;/foo/CMakeLists.txt")

+ 3 - 0
Tests/RunCMake/CPack/tests/DMG_SLA/German.license.txt

@@ -0,0 +1,3 @@
+LIZENZ
+------
+Dies ist ein Installationsprogramm, das mit erstellt wurde CPack (https://cmake.org). Keine Lizenz angegeben.

+ 9 - 0
Tests/RunCMake/CPack/tests/DMG_SLA/German.menu.txt

@@ -0,0 +1,9 @@
+German
+Akzeptieren
+Ablehnen
+Drucken
+Speichern...
+Klicken Sie auf "Akzeptieren", wenn Sie mit den Bestimmungen des Software-Lizenzvertrages einverstanden sind.
+Software-Lizenzvertrag
+Dieser Text kann nicht gesichert werden. Diese Festplatte ist mšglicherweise voll oder geschŸtzt oder der Ordner ist geschŸtzt.
+Es kann nicht gedruckt werden. Bitte stellen Sie sicher, dass ein Drucker ausgewŠhlt ist.

+ 33 - 0
Tests/RunCMake/CPack/tests/DMG_SLA/VerifyResult.cmake

@@ -0,0 +1,33 @@
+set(dmg "${bin_dir}/${FOUND_FILE_1}")
+execute_process(COMMAND hdiutil udifderez -xml "${dmg}" OUTPUT_VARIABLE out ERROR_VARIABLE err RESULT_VARIABLE res)
+if(NOT res EQUAL 0)
+  string(REPLACE "\n" "\n  " err "  ${err}")
+  message(FATAL_ERROR "Running 'hdiutil udifderez -xml' on\n  ${dmg}\nfailed with:\n${err}")
+endif()
+foreach(key "LPic" "STR#" "TEXT")
+  if(NOT out MATCHES "<key>${key}</key>")
+    string(REPLACE "\n" "\n  " out "  ${out}")
+    message(FATAL_ERROR "error: running 'hdiutil udifderez -xml' on\n  ${dmg}\ndid not show '${key}' key:\n${out}")
+  endif()
+endforeach()
+foreach(line
+    # LPic
+    "\tAAAAAgAAAAAAAAADAAEAAA==\n"
+    # STR# English first and last base64 lines
+    "\tAAkHRW5nbGlzaAVBZ3JlZQhEaXNhZ3JlZQVQcmludAdTYXZlLi4u\n"
+    "\tZCBhIHByaW50ZXIu\n"
+    # STR# German first and last base64 lines
+    "\tAAkGR2VybWFuC0FremVwdGllcmVuCEFibGVobmVuB0RydWNrZW4M\n"
+    "\tYXVzZ2V3wopobHQgaXN0Lg==\n"
+    # TEXT English first and last base64 lines
+    "\tTElDRU5TRQ0tLS0tLS0tDVRoaXMgaXMgYW4gaW5zdGFsbGVyIGNy\n"
+    "\tTm8gbGljZW5zZSBwcm92aWRlZC4NDQ==\n"
+    # TEXT German first and last base64 lines
+    "\tTElaRU5aDS0tLS0tLQ1EaWVzIGlzdCBlaW4gSW5zdGFsbGF0aW9u\n"
+    "\tZ2ViZW4uDQ0=\n"
+    )
+  if(NOT out MATCHES "${line}")
+    string(REPLACE "\n" "\n  " out "  ${out}")
+    message(FATAL_ERROR "error: running 'hdiutil udifderez -xml' on\n  ${dmg}\ndid not show '${line}':\n${out}")
+  endif()
+endforeach()

+ 3 - 0
Tests/RunCMake/CPack/tests/DMG_SLA/test.cmake

@@ -0,0 +1,3 @@
+install(FILES CMakeLists.txt DESTINATION foo)
+set(CPACK_DMG_SLA_DIR "${CMAKE_CURRENT_LIST_DIR}")
+set(CPACK_DMG_SLA_LANGUAGES English German)