CB-13496: Fix greedy regex in plist-helpers
authorDarryl Pogue <darryl@dpogue.ca>
Thu, 6 Sep 2018 06:41:32 +0000 (23:41 -0700)
committerDarryl Pogue <dvpdiner2@gmail.com>
Tue, 11 Sep 2018 17:08:00 +0000 (10:08 -0700)
spec/plist-helpers.spec.js
src/util/plist-helpers.js

index 3a6fa02..fc4c923 100644 (file)
@@ -58,3 +58,35 @@ describe('prunePLIST', function () {
         done();
     });
 });
+
+describe('plistGraft', function () {
+    let doc = {
+        'keychain-access-groups': [
+            '$(AppIdentifierPrefix)io.cordova.hellocordova',
+            '$(AppIdentifierPrefix)com.example.mylib'
+        ]
+    };
+
+    let xml = '<array>' +
+                '<string>$(AppIdentifierPrefix)io.cordova.hellocordova</string>' +
+                '<string>$(AppIdentifierPrefix)com.example.mylib</string>' +
+              '</array>';
+
+    let selector = 'keychain-access-groups';
+
+    it('Test 01: should not mangle existing plist entries', function (done) {
+        var graftStatus = plistHelpers.graftPLIST(doc, xml, selector);
+
+        expect(graftStatus).toBeTruthy();
+        expect(doc).toEqual(
+            {
+                'keychain-access-groups': [
+                    '$(AppIdentifierPrefix)io.cordova.hellocordova',
+                    '$(AppIdentifierPrefix)com.example.mylib'
+                ]
+            }
+        );
+
+        done();
+    });
+});
index 5ec4c1d..0b4fdc1 100644 (file)
@@ -80,7 +80,7 @@ function pruneOBJECT (doc, selector, fragment) {
 
 function nodeEqual (node1, node2) {
     if (typeof node1 !== typeof node2) { return false; } else if (typeof node1 === 'string') {
-        node2 = escapeRE(node2).replace(/\\\$\S+/gm, '(.*?)');
+        node2 = escapeRE(node2).replace(/\\\$\(\S+\)/gm, '(.*?)');
         return new RegExp('^' + node2 + '$').test(node1);
     } else {
         for (var key in node2) {