Remove nested before_each's in Parser spec
This commit is contained in:
parent
34a65f588d
commit
4fd7b0e55d
1 changed files with 16 additions and 24 deletions
|
|
@ -85,10 +85,6 @@ describe("Parser", [&]() {
|
|||
};
|
||||
|
||||
describe("handling errors", [&]() {
|
||||
before_each([&]() {
|
||||
ts_document_set_language(doc, get_test_language("json"));
|
||||
});
|
||||
|
||||
auto get_node_text = [&](TSNode node) {
|
||||
size_t start = ts_node_start_byte(node);
|
||||
size_t end = ts_node_end_byte(node);
|
||||
|
|
@ -97,6 +93,7 @@ describe("Parser", [&]() {
|
|||
|
||||
describe("when there is an invalid substring right before a valid token", [&]() {
|
||||
it("computes the error node's size and position correctly", [&]() {
|
||||
ts_document_set_language(doc, get_test_language("json"));
|
||||
set_text(" [123, @@@@@, true]");
|
||||
|
||||
assert_root_node(
|
||||
|
|
@ -121,6 +118,7 @@ describe("Parser", [&]() {
|
|||
|
||||
describe("when there is an unexpected string in the middle of a token", [&]() {
|
||||
it("computes the error node's size and position correctly", [&]() {
|
||||
ts_document_set_language(doc, get_test_language("json"));
|
||||
set_text(" [123, faaaaalse, true]");
|
||||
|
||||
assert_root_node(
|
||||
|
|
@ -146,6 +144,7 @@ describe("Parser", [&]() {
|
|||
|
||||
describe("when there is one unexpected token between two valid tokens", [&]() {
|
||||
it("computes the error node's size and position correctly", [&]() {
|
||||
ts_document_set_language(doc, get_test_language("json"));
|
||||
set_text(" [123, true false, true]");
|
||||
|
||||
assert_root_node(
|
||||
|
|
@ -164,6 +163,7 @@ describe("Parser", [&]() {
|
|||
|
||||
describe("when there is an unexpected string at the end of a token", [&]() {
|
||||
it("computes the error's size and position correctly", [&]() {
|
||||
ts_document_set_language(doc, get_test_language("json"));
|
||||
set_text(" [123, \"hi\n, true]");
|
||||
|
||||
assert_root_node(
|
||||
|
|
@ -182,14 +182,9 @@ describe("Parser", [&]() {
|
|||
});
|
||||
|
||||
describe("handling extra tokens", [&]() {
|
||||
// In the javascript example grammar, ASI works by using newlines as
|
||||
// terminators in statements, but also as extra tokens.
|
||||
before_each([&]() {
|
||||
ts_document_set_language(doc, get_test_language("javascript"));
|
||||
});
|
||||
|
||||
describe("when the token appears as part of a grammar rule", [&]() {
|
||||
it("is incorporated into the tree", [&]() {
|
||||
ts_document_set_language(doc, get_test_language("javascript"));
|
||||
set_text("fn()\n");
|
||||
|
||||
assert_root_node(
|
||||
|
|
@ -199,6 +194,7 @@ describe("Parser", [&]() {
|
|||
|
||||
describe("when the token appears somewhere else", [&]() {
|
||||
it("is incorporated into the tree", [&]() {
|
||||
ts_document_set_language(doc, get_test_language("javascript"));
|
||||
set_text(
|
||||
"fn()\n"
|
||||
" .otherFn();");
|
||||
|
|
@ -214,6 +210,7 @@ describe("Parser", [&]() {
|
|||
|
||||
describe("when several extra tokens appear in a row", [&]() {
|
||||
it("is incorporated into the tree", [&]() {
|
||||
ts_document_set_language(doc, get_test_language("javascript"));
|
||||
set_text(
|
||||
"fn()\n\n"
|
||||
"// This is a comment"
|
||||
|
|
@ -232,13 +229,10 @@ describe("Parser", [&]() {
|
|||
});
|
||||
|
||||
describe("editing", [&]() {
|
||||
before_each([&]() {
|
||||
ts_document_set_language(doc, get_test_language("javascript"));
|
||||
});
|
||||
|
||||
describe("inserting text", [&]() {
|
||||
describe("creating new tokens near the end of the input", [&]() {
|
||||
it("updates the parse tree and re-reads only the changed portion of the text", [&]() {
|
||||
ts_document_set_language(doc, get_test_language("javascript"));
|
||||
set_text("x * (100 + abc);");
|
||||
|
||||
assert_root_node(
|
||||
|
|
@ -261,6 +255,7 @@ describe("Parser", [&]() {
|
|||
it("updates the parse tree and re-reads only the changed portion of the input", [&]() {
|
||||
chunk_size = 2;
|
||||
|
||||
ts_document_set_language(doc, get_test_language("javascript"));
|
||||
set_text("123 + 456 * (10 + x);");
|
||||
|
||||
assert_root_node(
|
||||
|
|
@ -284,7 +279,6 @@ describe("Parser", [&]() {
|
|||
describe("introducing an error", [&]() {
|
||||
it("gives the error the right size", [&]() {
|
||||
ts_document_set_language(doc, get_test_language("javascript"));
|
||||
|
||||
set_text("var x = y;");
|
||||
|
||||
assert_root_node(
|
||||
|
|
@ -307,6 +301,7 @@ describe("Parser", [&]() {
|
|||
|
||||
describe("into the middle of an existing token", [&]() {
|
||||
it("updates the parse tree", [&]() {
|
||||
ts_document_set_language(doc, get_test_language("javascript"));
|
||||
set_text("abc * 123;");
|
||||
|
||||
assert_root_node(
|
||||
|
|
@ -325,6 +320,7 @@ describe("Parser", [&]() {
|
|||
|
||||
describe("at the end of an existing token", [&]() {
|
||||
it("updates the parse tree", [&]() {
|
||||
ts_document_set_language(doc, get_test_language("javascript"));
|
||||
set_text("abc * 123;");
|
||||
|
||||
assert_root_node(
|
||||
|
|
@ -343,6 +339,7 @@ describe("Parser", [&]() {
|
|||
|
||||
describe("into a node containing a extra token", [&]() {
|
||||
it("updates the parse tree", [&]() {
|
||||
ts_document_set_language(doc, get_test_language("javascript"));
|
||||
set_text("123 *\n"
|
||||
"// a-comment\n"
|
||||
"abc;");
|
||||
|
|
@ -371,6 +368,7 @@ describe("Parser", [&]() {
|
|||
describe("deleting text", [&]() {
|
||||
describe("when a critical token is removed", [&]() {
|
||||
it("updates the parse tree, creating an error", [&]() {
|
||||
ts_document_set_language(doc, get_test_language("javascript"));
|
||||
set_text("123 * 456; 789 * 123;");
|
||||
|
||||
assert_root_node(
|
||||
|
|
@ -391,7 +389,6 @@ describe("Parser", [&]() {
|
|||
describe("replacing text", [&]() {
|
||||
it("does not try to re-use nodes that are within the edited region", [&]() {
|
||||
ts_document_set_language(doc, get_test_language("javascript"));
|
||||
|
||||
set_text("{ x: (b.c) };");
|
||||
|
||||
assert_root_node(
|
||||
|
|
@ -407,11 +404,8 @@ describe("Parser", [&]() {
|
|||
});
|
||||
|
||||
describe("with external tokens", [&]() {
|
||||
before_each([&]() {
|
||||
ts_document_set_language(doc, get_test_language("python"));
|
||||
});
|
||||
|
||||
it("maintains the external scanner's state during incremental parsing", [&]() {
|
||||
ts_document_set_language(doc, get_test_language("python"));
|
||||
string text = dedent(R"PYTHON(
|
||||
if a:
|
||||
print b
|
||||
|
|
@ -445,12 +439,9 @@ describe("Parser", [&]() {
|
|||
});
|
||||
|
||||
describe("lexing", [&]() {
|
||||
before_each([&]() {
|
||||
ts_document_set_language(doc, get_test_language("javascript"));
|
||||
});
|
||||
|
||||
describe("handling tokens containing wildcard patterns (e.g. comments)", [&]() {
|
||||
it("terminates them at the end of the document", [&]() {
|
||||
ts_document_set_language(doc, get_test_language("javascript"));
|
||||
set_text("x; // this is a comment");
|
||||
|
||||
assert_root_node(
|
||||
|
|
@ -465,6 +456,7 @@ describe("Parser", [&]() {
|
|||
|
||||
it("recognizes UTF8 characters as single characters", [&]() {
|
||||
// 'ΩΩΩ — ΔΔ';
|
||||
ts_document_set_language(doc, get_test_language("javascript"));
|
||||
set_text("'\u03A9\u03A9\u03A9 \u2014 \u0394\u0394';");
|
||||
|
||||
assert_root_node(
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue