Bug 136272 - Web Inspector: Write tests for ScriptSyntaxTree and fix bugs in the data structure
Summary: Web Inspector: Write tests for ScriptSyntaxTree and fix bugs in the data stru...
Status: RESOLVED FIXED
Alias: None
Product: WebKit
Classification: Unclassified
Component: Web Inspector (show other bugs)
Version: 528+ (Nightly build)
Hardware: All All
: P2 Normal
Assignee: Saam Barati
URL:
Keywords: InRadar
Depends on:
Blocks:
 
Reported: 2014-08-26 18:00 PDT by Saam Barati
Modified: 2014-08-28 18:42 PDT (History)
5 users (show)

See Also:


Attachments
patch (26.16 KB, patch)
2014-08-27 19:09 PDT, Saam Barati
joepeck: review+
Details | Formatted Diff | Diff
patch (28.23 KB, patch)
2014-08-28 17:22 PDT, Saam Barati
no flags Details | Formatted Diff | Diff

Note You need to log in before you can comment on or make changes to this bug.
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.