This is an automated email from the ASF dual-hosted git repository.
colegreer pushed a commit to branch 3.6-dev
in repository https://gitbox.apache.org/repos/asf/tinkerpop.git
The following commit(s) were added to refs/heads/3.6-dev by this push:
new 67a0d2769f CTR TINKERPOP-3077 Javascript translator incorrectly handle
quotes, null and undefined values
67a0d2769f is described below
commit 67a0d2769fe079fa345eac778bf112e69e251684
Author: Cole-Greer <[email protected]>
AuthorDate: Wed Oct 16 11:51:58 2024 -0700
CTR TINKERPOP-3077 Javascript translator incorrectly handle quotes, null
and undefined values
---
.../gremlin-javascript/lib/process/translator.js | 6 +++---
.../gremlin-javascript/test/unit/translator-test.js | 21 +++++++++++++++++++++
2 files changed, 24 insertions(+), 3 deletions(-)
diff --git
a/gremlin-javascript/src/main/javascript/gremlin-javascript/lib/process/translator.js
b/gremlin-javascript/src/main/javascript/gremlin-javascript/lib/process/translator.js
index bb6a5d0645..7eceb258c4 100644
---
a/gremlin-javascript/src/main/javascript/gremlin-javascript/lib/process/translator.js
+++
b/gremlin-javascript/src/main/javascript/gremlin-javascript/lib/process/translator.js
@@ -106,12 +106,12 @@ class Translator {
} else {
script += anyObject.toString();
}
- } else if (anyObject === undefined) {
- script += '';
+ } else if (anyObject === undefined || anyObject === null) {
+ script += 'null';
} else if (typeof anyObject === 'number' || typeof anyObject ===
'boolean') {
script += anyObject;
} else {
- script += `'${anyObject}'`;
+ script += `'${`${anyObject}`.replace("'", "\\'")}'`; //
eslint-disable-line quotes
}
return script;
diff --git
a/gremlin-javascript/src/main/javascript/gremlin-javascript/test/unit/translator-test.js
b/gremlin-javascript/src/main/javascript/gremlin-javascript/test/unit/translator-test.js
index 476390538a..986dbd161a 100644
---
a/gremlin-javascript/src/main/javascript/gremlin-javascript/test/unit/translator-test.js
+++
b/gremlin-javascript/src/main/javascript/gremlin-javascript/test/unit/translator-test.js
@@ -112,5 +112,26 @@ describe('Translator', function () {
assert.ok(script);
assert.strictEqual(script, 'g.V([1, 2, 3])');
});
+
+ it('should translate null', function () {
+ const g = new graph.Graph().traversal();
+ const script = new
Translator('g').translate(g.addV('test').property('empty', null));
+ assert.ok(script);
+ assert.strictEqual(script, 'g.addV(\'test\').property(\'empty\', null)');
+ });
+
+ it('should translate undefined to null', function () {
+ const g = new graph.Graph().traversal();
+ const script = new
Translator('g').translate(g.addV('test').property('empty', undefined));
+ assert.ok(script);
+ assert.strictEqual(script, 'g.addV(\'test\').property(\'empty\', null)');
+ });
+
+ it('should properly escape quotes in string literals', function () {
+ const g = new graph.Graph().traversal();
+ const script = new
Translator('g').translate(g.addV('test').property('quotes', "some \"quotes' in
the middle."));
+ assert.ok(script);
+ assert.strictEqual(script, 'g.addV(\'test\').property(\'quotes\', \'some
"quotes\\\' in the middle.\')');
+ });
});
});