Skip to content

Commit f3cf4d4

Browse files
committed
Merge branch 'main' into finalization-registry
2 parents c77e069 + a08e46b commit f3cf4d4

File tree

7 files changed

+71
-28
lines changed

7 files changed

+71
-28
lines changed

.github/workflows/test.yml

Lines changed: 7 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,11 @@ jobs:
88
name: Build and Test
99
strategy:
1010
matrix:
11-
os: [macOS-10.15, Ubuntu-18.04]
11+
os: [macos-10.15, macos-11, ubuntu-18.04, ubuntu-20.04]
12+
toolchain:
13+
- wasm-5.3.1-RELEASE
14+
- wasm-5.4.0-RELEASE
15+
- wasm-5.5-SNAPSHOT-2021-09-01-a
1216
runs-on: ${{ matrix.os }}
1317
steps:
1418
- name: Checkout
@@ -21,5 +25,6 @@ jobs:
2125
export SWIFTENV_ROOT="$HOME/.swiftenv"
2226
export PATH="$SWIFTENV_ROOT/bin:$PATH"
2327
eval "$(swiftenv init -)"
24-
make bootstrap
28+
SWIFT_VERSION=${{ matrix.toolchain }} make bootstrap
29+
echo ${{ matrix.toolchain }} > .swift-version
2530
make test

Example/Makefile

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,7 @@ JavaScriptKitExample:
77

88
dist/JavaScriptKitExample.wasm: JavaScriptKitExample
99
mkdir -p dist
10-
cp ./JavaScriptKitExample/.build/debug/JavaScriptKitExample $@
10+
cp ./JavaScriptKitExample/.build/debug/JavaScriptKitExample.wasm $@
1111

1212
node_modules:
1313
npm ci

Example/package-lock.json

Lines changed: 12 additions & 12 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

IntegrationTests/TestSuites/Sources/PrimaryTests/main.swift

Lines changed: 23 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -186,6 +186,12 @@ try test("Function Call") {
186186
let evalClosure = JSObject.global.globalObject1.eval_closure.function!
187187

188188
try test("Closure Lifetime") {
189+
func expectCrashByCall(ofClosure c: JSClosureProtocol) throws {
190+
print("======= BEGIN OF EXPECTED FATAL ERROR =====")
191+
_ = try expectThrow(try evalClosure.throws(c))
192+
print("======= END OF EXPECTED FATAL ERROR =======")
193+
}
194+
189195
do {
190196
let c1 = JSClosure { arguments in
191197
return arguments[0]
@@ -220,7 +226,9 @@ try test("Closure Lifetime") {
220226
return .boolean(true)
221227
}
222228
try expectEqual(evalClosure(c1), .boolean(true))
223-
try expectEqual(evalClosure(c1), .boolean(true))
229+
// second call will cause `fatalError` that can be caught as a JavaScript exception
230+
try expectCrashByCall(ofClosure: c1)
231+
// OneshotClosure won't call fatalError even if it's deallocated before `release`
224232
}
225233
}
226234

@@ -610,12 +618,25 @@ try test("Error") {
610618
}
611619

612620
try test("JSValue accessor") {
613-
let globalObject1 = JSObject.global.globalObject1
621+
var globalObject1 = JSObject.global.globalObject1
614622
try expectEqual(globalObject1.prop_1.nested_prop, .number(1))
615623
try expectEqual(globalObject1.object!.prop_1.object!.nested_prop, .number(1))
616624

617625
try expectEqual(globalObject1.prop_4[0], .number(3))
618626
try expectEqual(globalObject1.prop_4[1], .number(4))
627+
628+
globalObject1.prop_1.nested_prop = "bar"
629+
try expectEqual(globalObject1.prop_1.nested_prop, .string("bar"))
630+
631+
/* TODO: Fix https://github.com/swiftwasm/JavaScriptKit/issues/132 and un-comment this test
632+
`nested` should not be set again to `target.nested` by `target.nested.prop = .number(1)`
633+
634+
let observableObj = globalObject1.observable_obj.object!
635+
observableObj.set_called = .boolean(false)
636+
observableObj.target.nested.prop = .number(1)
637+
try expectEqual(observableObj.set_called, .boolean(false))
638+
639+
*/
619640
}
620641

621642
try test("Exception") {

IntegrationTests/bin/primary-tests.js

Lines changed: 14 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -47,9 +47,21 @@ global.globalObject1 = {
4747
throw 3.0
4848
},
4949
},
50-
eval_closure: function(fn) {
50+
eval_closure: function (fn) {
5151
return fn(arguments[1])
52-
}
52+
},
53+
observable_obj: {
54+
set_called: false,
55+
target: new Proxy({
56+
nested: {}
57+
}, {
58+
set(target, key, value) {
59+
global.globalObject1.observable_obj.set_called = true;
60+
target[key] = value;
61+
return true;
62+
}
63+
})
64+
},
5365
};
5466

5567
global.Animal = function (name, age, isCat) {

IntegrationTests/package-lock.json

Lines changed: 9 additions & 5 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

scripts/install-toolchain.sh

Lines changed: 5 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -3,16 +3,17 @@ set -eu
33

44
scripts_dir="$(cd "$(dirname $0)" && pwd)"
55

6-
swift_version="$(cat $scripts_dir/../.swift-version)"
7-
swift_tag="swift-$swift_version"
6+
default_swift_version="$(cat $scripts_dir/../.swift-version)"
7+
SWIFT_VERSION="${SWIFT_VERSION:-$default_swift_version}"
8+
swift_tag="swift-$SWIFT_VERSION"
89

910
if [ -z "$(which swiftenv)" ]; then
1011
echo "swiftenv not installed, please install it before this script."
1112
exit 1
1213
fi
1314

14-
if [ ! -z "$(swiftenv versions | grep $swift_version)" ]; then
15-
echo "$swift_version is already installed."
15+
if [ ! -z "$(swiftenv versions | grep $SWIFT_VERSION)" ]; then
16+
echo "$SWIFT_VERSION is already installed."
1617
exit 0
1718
fi
1819

0 commit comments

Comments
 (0)