Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Scope tests #2053

Merged
merged 76 commits into from
Dec 6, 2023
Merged
Show file tree
Hide file tree
Changes from 24 commits
Commits
Show all changes
76 commits
Select commit Hold shift + click to select a range
6ac7ea6
Started working on scope tests
AndreasArvidsson Nov 22, 2023
9bc6d8a
Extend scope provider interface
AndreasArvidsson Nov 22, 2023
8326276
Add insertion delimiter
AndreasArvidsson Nov 22, 2023
5feb0cf
Added additional test
AndreasArvidsson Nov 22, 2023
6cd7cc0
[pre-commit.ci lite] apply automatic fixes
pre-commit-ci-lite[bot] Nov 22, 2023
eac4b30
Trailing newline
AndreasArvidsson Nov 22, 2023
fcef5ec
Merge branch 'scope_tests' of github.com:cursorless-dev/cursorless in…
AndreasArvidsson Nov 22, 2023
0348ae4
Added example with multipole scopes
AndreasArvidsson Nov 22, 2023
dde8a77
Added function
AndreasArvidsson Nov 22, 2023
9f79367
Changed representation
AndreasArvidsson Nov 22, 2023
33263bb
[pre-commit.ci lite] apply automatic fixes
pre-commit-ci-lite[bot] Nov 22, 2023
91a5fc2
Change file ending
AndreasArvidsson Nov 22, 2023
9123d4b
[pre-commit.ci lite] apply automatic fixes
pre-commit-ci-lite[bot] Nov 22, 2023
ec2004c
number
AndreasArvidsson Nov 22, 2023
a1e62ea
Merge branch 'scope_t
AndreasArvidsson Nov 22, 2023
fcefb46
fix
AndreasArvidsson Nov 22, 2023
191454f
[pre-commit.ci lite] apply automatic fixes
pre-commit-ci-lite[bot] Nov 22, 2023
5814cd5
test
AndreasArvidsson Nov 22, 2023
e3753b3
fix
AndreasArvidsson Nov 22, 2023
7dcde95
Added paragraph
AndreasArvidsson Nov 22, 2023
c5d8fdb
fix
AndreasArvidsson Nov 22, 2023
071e815
try
AndreasArvidsson Nov 22, 2023
c6b8aaf
fix
AndreasArvidsson Nov 22, 2023
b756723
New format
AndreasArvidsson Nov 22, 2023
9965927
Added facets
AndreasArvidsson Nov 22, 2023
5e76ff0
update
AndreasArvidsson Nov 22, 2023
1995cde
Added language specific scope support facets
AndreasArvidsson Nov 22, 2023
b93893e
[pre-commit.ci lite] apply automatic fixes
pre-commit-ci-lite[bot] Nov 22, 2023
f45a753
clean up
AndreasArvidsson Nov 23, 2023
d5d4c28
clean up
AndreasArvidsson Nov 23, 2023
473a084
cleanup
AndreasArvidsson Nov 23, 2023
ee9fa80
Improve fail message
AndreasArvidsson Nov 23, 2023
2f8dfa2
Support fixture numbers
AndreasArvidsson Nov 23, 2023
bf70406
Made format more compact
AndreasArvidsson Nov 23, 2023
bf5e187
cleanup
AndreasArvidsson Nov 23, 2023
f2b63d8
Use curly braces for empty ranch
AndreasArvidsson Nov 24, 2023
9f9de74
Annotate or trailing whitespace lines
AndreasArvidsson Nov 24, 2023
fc63d43
Extract serialize scopes to own file
AndreasArvidsson Nov 26, 2023
cbd156f
Update line2.scope
pokey Nov 26, 2023
653354e
Update namedFunction.scope
pokey Nov 26, 2023
fee4588
Update name.assignment.scope
pokey Nov 26, 2023
1a96826
Updates scope representation
AndreasArvidsson Nov 27, 2023
0e70883
Add range to removal
AndreasArvidsson Nov 27, 2023
ed21c4d
Update
AndreasArvidsson Nov 27, 2023
f783cb1
Added rest of textual scopes
AndreasArvidsson Nov 27, 2023
4c39f55
Added insertion delimiter
AndreasArvidsson Nov 30, 2023
963675e
Add padding
AndreasArvidsson Nov 30, 2023
c5da832
Minor tweaks
pokey Nov 30, 2023
ef8d452
More tweaks
pokey Nov 30, 2023
66669f2
cleanup
pokey Nov 30, 2023
6c38cc3
rename
pokey Nov 30, 2023
eb348ba
More cleanup
pokey Nov 30, 2023
2f51f65
[pre-commit.ci lite] apply automatic fixes
pre-commit-ci-lite[bot] Nov 30, 2023
459761c
More cleanup
pokey Nov 30, 2023
c096e8a
More tweaks
pokey Nov 30, 2023
ac90914
fix tests
pokey Nov 30, 2023
da04e03
more cleanup
pokey Nov 30, 2023
637d8ea
more cleanup
pokey Nov 30, 2023
aa05a65
Update target number
AndreasArvidsson Nov 30, 2023
4f703a4
Merge branch 'scope_tests' of github.com:cursorless-dev/cursorless in…
AndreasArvidsson Nov 30, 2023
35718a3
use number instead of index
AndreasArvidsson Nov 30, 2023
12e7588
Support subdirectories
AndreasArvidsson Nov 30, 2023
b0f4fef
Updated comment
AndreasArvidsson Nov 30, 2023
cca1d21
Merge branch 'main' into scope_tests
AndreasArvidsson Nov 30, 2023
06d00b4
Added element tags facet
AndreasArvidsson Nov 30, 2023
b8c2ade
Added iteration scope
AndreasArvidsson Dec 1, 2023
5f1d178
Up date javascript support
AndreasArvidsson Dec 1, 2023
93d36d0
Update number serialization
AndreasArvidsson Dec 1, 2023
b8a80a8
Update target number
AndreasArvidsson Dec 2, 2023
7adcef6
Merge branch 'main' into scope_tests
AndreasArvidsson Dec 5, 2023
cfebfd9
cleanup
AndreasArvidsson Dec 5, 2023
72ef3f5
rename
AndreasArvidsson Dec 5, 2023
d427431
Update .pre-commit-config.yaml
AndreasArvidsson Dec 6, 2023
616988e
fix
AndreasArvidsson Dec 6, 2023
2d8c499
Remove unused type
pokey Dec 6, 2023
008f4ce
Remove examples and label
pokey Dec 6, 2023
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 1 addition & 1 deletion .pre-commit-config.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -40,7 +40,7 @@ repos:
# tests use strings with trailing white space to represent the final
# document contents. For example
# packages/cursorless-vscode-e2e/src/suite/fixtures/recorded/languages/ruby/changeCondition.yml
exclude: ^packages/cursorless-vscode-e2e/src/suite/fixtures/recorded/.*/[^/]*\.yml$
exclude: ^packages/cursorless-vscode-e2e/src/suite/fixtures/.*/[^/]*\.(yml|scope)$
- repo: local
hooks:
- id: eslint
Expand Down
18 changes: 18 additions & 0 deletions packages/common/src/testUtil/getFixturePaths.ts
Original file line number Diff line number Diff line change
Expand Up @@ -21,6 +21,10 @@ export function getRecordedTestsDirPath() {
return path.join(getFixturesPath(), "recorded");
}

export function getScopeTestsDirPath() {
return path.join(getFixturesPath(), "scopes");
}

export function getRecordedTestPaths() {
const directory = getRecordedTestsDirPath();
const relativeDir = path.dirname(directory);
Expand All @@ -32,3 +36,17 @@ export function getRecordedTestPaths() {
path: p,
}));
}

export function getScopeTestPaths() {
const directory = getScopeTestsDirPath();
const relativeDir = path.dirname(directory);

return walkFilesSync(directory)
.filter((p) => p.endsWith(".scope"))
.map((p) => ({
path: p,
name: path.relative(relativeDir, p.substring(0, p.lastIndexOf("."))),
languageId: path.dirname(path.relative(directory, p)),
pokey marked this conversation as resolved.
Show resolved Hide resolved
facetId: path.basename(p.substring(0, p.lastIndexOf("."))),
}));
}
6 changes: 6 additions & 0 deletions packages/common/src/types/ScopeProvider.ts
Original file line number Diff line number Diff line change
Expand Up @@ -178,7 +178,13 @@ export interface ScopeRanges {
*/
export interface TargetRanges {
contentRange: Range;
removalRange: Range;
removalHighlightRange: GeneralizedRange;
leadingDelimiter: TargetRanges | undefined;
trailingDelimiter: TargetRanges | undefined;
interior: TargetRanges[] | undefined;
boundary: TargetRanges[] | undefined;
insertionDelimiter: string;
}

/**
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -6,10 +6,36 @@ import {
import { Target } from "../typings/target.types";

export function getTargetRanges(target: Target): TargetRanges {
const interior = (() => {
try {
target.getInteriorStrict().map(getTargetRanges);
} catch (error) {
return undefined;
}
})();

const boundary = (() => {
try {
target.getBoundaryStrict().map(getTargetRanges);
} catch (error) {
return undefined;
}
})();

return {
contentRange: target.contentRange,
removalRange: target.getRemovalRange(),
removalHighlightRange: target.isLine
? toLineRange(target.getRemovalHighlightRange())
: toCharacterRange(target.getRemovalHighlightRange()),
leadingDelimiter: getOptionalTarget(target.getLeadingDelimiterTarget()),
trailingDelimiter: getOptionalTarget(target.getTrailingDelimiterTarget()),
interior,
boundary,
insertionDelimiter: target.insertionDelimiter,
};
}

function getOptionalTarget(target: Target | undefined) {
return target != null ? getTargetRanges(target) : undefined;
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,30 @@
const name = "Hello world";
---

[Content]
const name = "Hello world";
^^^^

[Removal]
const name = "Hello world";
^^^^^^^^^^^^^

[Leading delimiter: Content]
const name = "Hello world";
^
pokey marked this conversation as resolved.
Show resolved Hide resolved

[Leading delimiter: Removal]
const name = "Hello world";
^
AndreasArvidsson marked this conversation as resolved.
Show resolved Hide resolved

[Trailing delimiter: Content]
const name = "Hello world";
^

[Trailing delimiter: Removal]
const name = "Hello world";
^

[Domain]
const name = "Hello world";
^^^^^^^^^^^^^^^^^^^^^^^^^^^
Original file line number Diff line number Diff line change
@@ -0,0 +1,22 @@
const name = "Hello world";
---
AndreasArvidsson marked this conversation as resolved.
Show resolved Hide resolved

[Content]
const name = "Hello world";
^^^^^^^^^^^^^

[Removal]
const name = "Hello world";
^^^^^^^^^^^^^^^^

[Leading delimiter: Content]
const name = "Hello world";
^^^

[Leading delimiter: Removal]
const name = "Hello world";
^^^

[Domain]
const name = "Hello world";
^^^^^^^^^^^^^^^^^^^^^^^^^^^
Original file line number Diff line number Diff line change
@@ -0,0 +1,25 @@
function myFunk() {

}
---

[Content]
[-------------------
function myFunk() {

}
-]
AndreasArvidsson marked this conversation as resolved.
Show resolved Hide resolved

[Removal]
[-------------------
function myFunk() {

}
-]

[Domain]
[-------------------
function myFunk() {

}
-]
AndreasArvidsson marked this conversation as resolved.
Show resolved Hide resolved
AndreasArvidsson marked this conversation as resolved.
Show resolved Hide resolved
Original file line number Diff line number Diff line change
@@ -0,0 +1,117 @@

aaa

---
pokey marked this conversation as resolved.
Show resolved Hide resolved

[#1 Content]

[]
AndreasArvidsson marked this conversation as resolved.
Show resolved Hide resolved
aaa


[#1 Removal]
[

aaa
]
AndreasArvidsson marked this conversation as resolved.
Show resolved Hide resolved


[#1 Trailing delimiter: Content]
[

aaa
]


[#1 Trailing delimiter: Removal]
[

aaa
]


[#1 Domain]

[]
aaa


[#2 Content]

aaa
^^^


[#2 Removal]

[---
aaa

]

[#2 Leading delimiter: Content]
[

aaa
]


[#2 Leading delimiter: Removal]
[

aaa
]


[#2 Trailing delimiter: Content]

[
aaa

]

[#2 Trailing delimiter: Removal]

[
aaa

]

[#2 Domain]

aaa
^^^


[#3 Content]

aaa

[]

[#3 Removal]

[
aaa

]

[#3 Leading delimiter: Content]

[
aaa

]

[#3 Leading delimiter: Removal]

[
aaa

]

[#3 Domain]

aaa

[]
Original file line number Diff line number Diff line change
@@ -0,0 +1,91 @@

aaa
bbb

---

[Content]

[---
aaa
bbb
---]


[Removal]
[

aaa
bbb

]

[Leading delimiter: Content]

[]
aaa
bbb


[Leading delimiter: Removal]
[

aaa
]
bbb


[Leading delimiter | Trailing delimiter: Content]
[

aaa
]
bbb


[Leading delimiter | Trailing delimiter: Removal]
[

aaa
]
bbb


[Trailing delimiter: Content]

aaa
bbb

[]

[Trailing delimiter: Removal]

aaa
[
bbb

]

[Trailing delimiter | Leading delimiter: Content]

aaa
[
bbb

]

[Trailing delimiter | Leading delimiter: Removal]

aaa
[
bbb

]

[Domain]

[---
aaa
bbb
---]

Loading