Bug 136272

Summary: Web Inspector: Write tests for ScriptSyntaxTree and fix bugs in the data structure
Product: WebKit Reporter: Saam Barati <saam>
Component: Web InspectorAssignee: Saam Barati <saam>
Status: RESOLVED FIXED    
Severity: Normal CC: commit-queue, graouts, joepeck, timothy, webkit-bug-importer
Priority: P2 Keywords: InRadar
Version: 528+ (Nightly build)   
Hardware: All   
OS: All   
Attachments:
Description Flags
patch
joepeck: review+
patch none

Description Saam Barati 2014-08-26 18:00:17 PDT
Write some tests for ScriptSyntaxTree. A good would be to make sure it can parse all statements that we have AST nodes for.
Comment 1 Radar WebKit Bug Importer 2014-08-26 18:01:16 PDT
<rdar://problem/18142687>
Comment 2 Saam Barati 2014-08-27 19:09:52 PDT
Created attachment 237279 [details]
patch

Tests!
Comment 3 Joseph Pecoraro 2014-08-28 14:08:06 PDT
Comment on attachment 237279 [details]
patch

View in context: https://bugs.webkit.org/attachment.cgi?id=237279&action=review

Nice! Some suggestions for a few more tests.

> LayoutTests/inspector/model/parse-script-syntax-tree.html:203
> +    node = makeNode("true;", true);
> +    InspectorTest.assert(node.type === WebInspector.ScriptSyntaxTree.NodeType.Literal);
> +    InspectorTest.assert(node.value === true);
> +    InspectorTest.assert(node.raw === "true");

We might want to also test a few other literals?

  "null"
  "/regex/ig"
  "0x10"
  "0777"
  "\"a\""

> LayoutTests/inspector/model/parse-script-syntax-tree.html:276
> +    node = makeNode("x = {foo:20};", true);
> +    InspectorTest.assert(node.right.properties[0].type === WebInspector.ScriptSyntaxTree.NodeType.Property);
> +    InspectorTest.assert(node.right.properties[0].key);
> +    InspectorTest.assert(node.right.properties[0].key.type === WebInspector.ScriptSyntaxTree.NodeType.Identifier);
> +    InspectorTest.assert(node.right.properties[0].value);
> +    InspectorTest.assert(node.right.properties[0].value.type === WebInspector.ScriptSyntaxTree.NodeType.Literal);
> +    node = makeNode("x = {'foo':20};", true);
> +    InspectorTest.assert(node.right.properties[0].key);
> +    InspectorTest.assert(node.right.properties[0].key.type === WebInspector.ScriptSyntaxTree.NodeType.Literal);
> +    InspectorTest.log("passed Property");

I'd suggest testing isGetterOrSetter is false here, and testing cases where it is true.

    "x = {get foo() {return 20}}"
    "x = {set foo(x) {}}"

> LayoutTests/inspector/model/parse-script-syntax-tree.html:327
> +    node = makeNode("foo++;", true);
> +    InspectorTest.assert(node.type === WebInspector.ScriptSyntaxTree.NodeType.UpdateExpression);
> +    InspectorTest.log("passed UpdateExpression");

Include a test for prefix === false here and a pre-increment/decrement with prefix === true.
Comment 4 Saam Barati 2014-08-28 17:22:26 PDT
Created attachment 237334 [details]
patch

Made additions Joe suggested
Comment 5 Joseph Pecoraro 2014-08-28 18:08:07 PDT
Comment on attachment 237334 [details]
patch

r=me
Comment 6 WebKit Commit Bot 2014-08-28 18:42:32 PDT
Comment on attachment 237334 [details]
patch

Clearing flags on attachment: 237334

Committed r173103: <http://trac.webkit.org/changeset/173103>
Comment 7 WebKit Commit Bot 2014-08-28 18:42:35 PDT
All reviewed patches have been landed.  Closing bug.