Skip to content

Commit 0d62191

Browse files
author
Esben Sparre Andreasen
committed
JS: add more React tests
1 parent b80cf30 commit 0d62191

11 files changed

+51
-0
lines changed

javascript/ql/test/library-tests/frameworks/ReactJS/ReactComponent.expected

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -14,6 +14,7 @@
1414
| props.js:2:5:3:5 | class C ... {\\n } |
1515
| props.js:13:31:17:5 | {\\n ... }\\n } |
1616
| props.js:26:5:28:5 | functio ... ;\\n } |
17+
| rare-lifecycle-methods.js:1:1:11:1 | class C ... }\\n} |
1718
| statePropertyReads.js:1:1:13:1 | class R ... }\\n} |
1819
| statePropertyWrites.js:1:1:34:1 | class W ... };\\n} |
1920
| statePropertyWrites.js:36:19:45:1 | {\\n ren ... ;\\n }\\n} |

javascript/ql/test/library-tests/frameworks/ReactJS/ReactComponent_getADirectPropsSource.expected

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -15,6 +15,7 @@
1515
| probably-a-component.js:1:1:6:1 | class H ... }\\n} | probably-a-component.js:3:9:3:18 | this.props |
1616
| props.js:2:5:3:5 | class C ... {\\n } | props.js:2:37:2:36 | args |
1717
| props.js:26:5:28:5 | functio ... ;\\n } | props.js:26:16:26:20 | props |
18+
| rare-lifecycle-methods.js:1:1:11:1 | class C ... }\\n} | rare-lifecycle-methods.js:1:33:1:32 | args |
1819
| statePropertyWrites.js:36:19:45:1 | {\\n ren ... ;\\n }\\n} | statePropertyWrites.js:38:24:38:33 | this.props |
1920
| thisAccesses.js:31:2:36:1 | functio ... iv/>;\\n} | thisAccesses.js:31:12:31:16 | props |
2021
| thisAccesses.js:47:1:52:1 | class C ... }\\n} | thisAccesses.js:48:18:48:18 | y |
Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,2 @@
1+
| statePropertyReads.js:1:1:13:1 | class R ... }\\n} | statePropertyReads.js:7:24:7:32 | prevState |
2+
| statePropertyReads.js:1:1:13:1 | class R ... }\\n} | statePropertyReads.js:10:35:10:43 | prevState |
Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,4 @@
1+
import semmle.javascript.frameworks.React
2+
3+
from ReactComponent c
4+
select c, c.getAPreviousStateSource()

javascript/ql/test/library-tests/frameworks/ReactJS/ReactComponent_getInstanceMethod.expected

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -10,6 +10,8 @@
1010
| probably-a-component.js:1:1:6:1 | class H ... }\\n} | render | probably-a-component.js:2:11:5:5 | () {\\n ... ;\\n } |
1111
| props.js:13:31:17:5 | {\\n ... }\\n } | getDefaultProps | props.js:14:24:16:9 | () {\\n ... } |
1212
| props.js:26:5:28:5 | functio ... ;\\n } | render | props.js:26:5:28:5 | functio ... ;\\n } |
13+
| rare-lifecycle-methods.js:1:1:11:1 | class C ... }\\n} | getSnapshotBeforeUpdate | rare-lifecycle-methods.js:8:28:10:5 | (prevPr ... ;\\n } |
14+
| rare-lifecycle-methods.js:1:1:11:1 | class C ... }\\n} | shouldComponentUpdate | rare-lifecycle-methods.js:5:26:7:5 | (nextPr ... ;\\n } |
1315
| statePropertyReads.js:1:1:13:1 | class R ... }\\n} | componentDidUpdate | statePropertyReads.js:10:23:12:5 | (prevPr ... ;\\n } |
1416
| statePropertyWrites.js:1:1:34:1 | class W ... };\\n} | getInitialState | statePropertyWrites.js:25:20:29:5 | () { // ... ;\\n } |
1517
| statePropertyWrites.js:36:19:45:1 | {\\n ren ... ;\\n }\\n} | getInitialState | statePropertyWrites.js:40:20:44:3 | functio ... };\\n } |

javascript/ql/test/library-tests/frameworks/ReactJS/ReactComponent_ref.expected

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -31,6 +31,10 @@
3131
| props.js:13:31:17:5 | {\\n ... }\\n } | props.js:14:24:14:23 | this |
3232
| props.js:26:5:28:5 | functio ... ;\\n } | props.js:26:5:26:4 | this |
3333
| props.js:26:5:28:5 | functio ... ;\\n } | props.js:34:5:34:55 | new C({ ... ctor"}) |
34+
| rare-lifecycle-methods.js:1:1:11:1 | class C ... }\\n} | rare-lifecycle-methods.js:1:33:1:32 | this |
35+
| rare-lifecycle-methods.js:1:1:11:1 | class C ... }\\n} | rare-lifecycle-methods.js:2:36:2:35 | this |
36+
| rare-lifecycle-methods.js:1:1:11:1 | class C ... }\\n} | rare-lifecycle-methods.js:5:26:5:25 | this |
37+
| rare-lifecycle-methods.js:1:1:11:1 | class C ... }\\n} | rare-lifecycle-methods.js:8:28:8:27 | this |
3438
| statePropertyReads.js:1:1:13:1 | class R ... }\\n} | statePropertyReads.js:2:16:2:15 | this |
3539
| statePropertyReads.js:1:1:13:1 | class R ... }\\n} | statePropertyReads.js:3:9:3:12 | this |
3640
| statePropertyReads.js:1:1:13:1 | class R ... }\\n} | statePropertyReads.js:5:9:5:12 | this |
Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,11 @@
1+
class C extends React.Component {
2+
static getDerivedStateFromProps(props, state) {
3+
return {};
4+
}
5+
shouldComponentUpdate(nextProps, nextState) {
6+
return true;
7+
}
8+
getSnapshotBeforeUpdate(prevProps, prevState) {
9+
return {};
10+
}
11+
}

javascript/ql/test/library-tests/frameworks/ReactJS/react.expected

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -13,6 +13,7 @@
1313
| plainfn.js:22:16:22:20 | React |
1414
| props.js:2:21:2:25 | React |
1515
| props.js:13:13:13:17 | React |
16+
| rare-lifecycle-methods.js:1:17:1:21 | React |
1617
| requiredReactRefs.js:1:13:1:28 | require("react") |
1718
| requiredReactRefs.js:3:1:3:5 | React |
1819
| requiredReactRefs.js:6:5:6:9 | React |

javascript/ql/test/query-tests/React/UnusedOrUndefinedStateProperty/UnusedOrUndefinedStateProperty.expected

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2,5 +2,7 @@
22
| undefined.js:1:1:1:34 | class C ... }\\n} | Component state property 'notWrittenButReadInChain' is $@, but it is never written. | undefined.js:9:9:9:43 | this.st ... InChain | read |
33
| undefined.js:32:1:32:34 | class C ... }\\n} | Component state property 'notWrittenThrougExternalPropertyAccess' is $@, but it is never written. | undefined.js:35:9:35:57 | this.st ... yAccess | read |
44
| undefined.js:61:19:61:19 | {\\n r ... ;\\n }\\n} | Component state property 'notWrittenInKnownInitializerObject' is $@, but it is never written. | undefined.js:64:9:64:53 | this.st ... rObject | read |
5+
| undefined.js:159:1:159:35 | class C ... }\\n} | Component state property 'writeIn_getDerivedStateFromProps' is $@, but it is never written. | undefined.js:166:9:166:51 | this.st ... omProps | read |
56
| unused.js:1:1:1:34 | class C ... }\\n} | Component state property 'notRead' is $@, but it is never read. | unused.js:6:9:6:26 | this.state.notRead | written |
67
| unused.js:27:1:27:34 | class C ... }\\n} | Component state property 'notReadThrougExternaPropertyAccess' is $@, but it is never read. | unused.js:30:9:30:53 | this.st ... yAccess | written |
8+
| unused.js:64:1:64:34 | class C ... }\\n\\n} | Component state property 'readIn_getDerivedStateFromProps' is $@, but it is never read. | unused.js:71:9:71:50 | this.st ... omProps | written |

javascript/ql/test/query-tests/React/UnusedOrUndefinedStateProperty/undefined.js

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -156,4 +156,15 @@ React.createClass({
156156
mixins: [{ f: () => this.state.writtenThroughMixin = 42 }]
157157
});
158158

159+
class C11 extends React.Component {
160+
161+
static getDerivedStateFromProps(p, s) {
162+
return { writeIn_getDerivedStateFromProps};
163+
}
164+
165+
otherMethod() {
166+
this.state.writeIn_getDerivedStateFromProps; // OK
167+
}
168+
}
169+
159170
//semmle-extractor-options: --experimental

0 commit comments

Comments
 (0)