bpo-1104: msilib.SummaryInfo.GetProperty() truncates the string by one character (GH-4517)


Add one char to MsiSummaryInfoGetProperty() output
Based on the patch in bpo-1104 by Anthony Tuininga (atuining) and Mark McMahon (markm).
(cherry picked from commit 2de576e16d42ce43698d384d0dd46ba6cf165424)

Co-authored-by: Tzu-ping Chung <uranusjr@gmail.com>
diff --git a/Lib/test/test_msilib.py b/Lib/test/test_msilib.py
index 6d89ca4..4aa4753 100644
--- a/Lib/test/test_msilib.py
+++ b/Lib/test/test_msilib.py
@@ -1,5 +1,5 @@
 """ Test suite for the code in msilib """
-import os.path
+import os
 import unittest
 from test.support import TESTFN, import_module, unlink
 msilib = import_module('msilib')
@@ -42,6 +42,29 @@
         )
         self.addCleanup(unlink, db_path)
 
+    def test_summaryinfo_getproperty_issue1104(self):
+        db, db_path = init_database()
+        try:
+            sum_info = db.GetSummaryInformation(99)
+            title = sum_info.GetProperty(msilib.PID_TITLE)
+            self.assertEqual(title, b"Installation Database")
+
+            sum_info.SetProperty(msilib.PID_TITLE, "a" * 999)
+            title = sum_info.GetProperty(msilib.PID_TITLE)
+            self.assertEqual(title, b"a" * 999)
+
+            sum_info.SetProperty(msilib.PID_TITLE, "a" * 1000)
+            title = sum_info.GetProperty(msilib.PID_TITLE)
+            self.assertEqual(title, b"a" * 1000)
+
+            sum_info.SetProperty(msilib.PID_TITLE, "a" * 1001)
+            title = sum_info.GetProperty(msilib.PID_TITLE)
+            self.assertEqual(title, b"a" * 1001)
+        finally:
+            db = None
+            sum_info = None
+            os.unlink(db_path)
+
     def test_database_open_failed(self):
         with self.assertRaises(msilib.MSIError) as cm:
             msilib.OpenDatabase('non-existent.msi', msilib.MSIDBOPEN_READONLY)
@@ -92,7 +115,7 @@
     def test_invalid_any_char(self):
         self.assertEqual(
             msilib.make_id(".s\x82ort"), "_.s_ort")
-        self.assertEqual    (
+        self.assertEqual(
             msilib.make_id(".s\x82o?*+rt"), "_.s_o___rt")