summaryrefslogtreecommitdiff
path: root/tests/testdata/run/decorators
diff options
context:
space:
mode:
authorMatt Mastracci <matthew@mastracci.com>2024-02-10 13:22:13 -0700
committerGitHub <noreply@github.com>2024-02-10 20:22:13 +0000
commitf5e46c9bf2f50d66a953fa133161fc829cecff06 (patch)
tree8faf2f5831c1c7b11d842cd9908d141082c869a5 /tests/testdata/run/decorators
parentd2477f780630a812bfd65e3987b70c0d309385bb (diff)
chore: move cli/tests/ -> tests/ (#22369)
This looks like a massive PR, but it's only a move from cli/tests -> tests, and updates of relative paths for files. This is the first step towards aggregate all of the integration test files under tests/, which will lead to a set of integration tests that can run without the CLI binary being built. While we could leave these tests under `cli`, it would require us to keep a more complex directory structure for the various test runners. In addition, we have a lot of complexity to ignore various test files in the `cli` project itself (cargo publish exclusion rules, autotests = false, etc). And finally, the `tests/` folder will eventually house the `test_ffi`, `test_napi` and other testing code, reducing the size of the root repo directory. For easier review, the extremely large and noisy "move" is in the first commit (with no changes -- just a move), while the remainder of the changes to actual files is in the second commit.
Diffstat (limited to 'tests/testdata/run/decorators')
-rw-r--r--tests/testdata/run/decorators/experimental/deno.json5
-rw-r--r--tests/testdata/run/decorators/experimental/no_check/main.out3
-rw-r--r--tests/testdata/run/decorators/experimental/no_check/main.ts21
-rw-r--r--tests/testdata/run/decorators/experimental/runtime/main.out7
-rw-r--r--tests/testdata/run/decorators/experimental/runtime/main.ts42
-rw-r--r--tests/testdata/run/decorators/experimental/ts/main.out2
-rw-r--r--tests/testdata/run/decorators/experimental/ts/main.ts14
-rw-r--r--tests/testdata/run/decorators/tc39_proposal/main.out3
-rw-r--r--tests/testdata/run/decorators/tc39_proposal/main.ts21
9 files changed, 118 insertions, 0 deletions
diff --git a/tests/testdata/run/decorators/experimental/deno.json b/tests/testdata/run/decorators/experimental/deno.json
new file mode 100644
index 000000000..504cd646e
--- /dev/null
+++ b/tests/testdata/run/decorators/experimental/deno.json
@@ -0,0 +1,5 @@
+{
+ "compilerOptions": {
+ "experimentalDecorators": true
+ }
+}
diff --git a/tests/testdata/run/decorators/experimental/no_check/main.out b/tests/testdata/run/decorators/experimental/no_check/main.out
new file mode 100644
index 000000000..015f7076e
--- /dev/null
+++ b/tests/testdata/run/decorators/experimental/no_check/main.out
@@ -0,0 +1,3 @@
+a(): evaluated
+a(): called
+method
diff --git a/tests/testdata/run/decorators/experimental/no_check/main.ts b/tests/testdata/run/decorators/experimental/no_check/main.ts
new file mode 100644
index 000000000..9f7ec550d
--- /dev/null
+++ b/tests/testdata/run/decorators/experimental/no_check/main.ts
@@ -0,0 +1,21 @@
+// deno-lint-ignore-file
+function a() {
+ console.log("a(): evaluated");
+ return (
+ _target: any,
+ _propertyKey: string,
+ _descriptor: PropertyDescriptor,
+ ) => {
+ console.log("a(): called");
+ };
+}
+
+class B {
+ @a()
+ method() {
+ console.log("method");
+ }
+}
+
+const b = new B();
+b.method();
diff --git a/tests/testdata/run/decorators/experimental/runtime/main.out b/tests/testdata/run/decorators/experimental/runtime/main.out
new file mode 100644
index 000000000..0fc1d4590
--- /dev/null
+++ b/tests/testdata/run/decorators/experimental/runtime/main.out
@@ -0,0 +1,7 @@
+@A evaluated
+@B evaluated
+@B called
+@A called
+fn() called from @A
+fn() called from @B
+C.test() called
diff --git a/tests/testdata/run/decorators/experimental/runtime/main.ts b/tests/testdata/run/decorators/experimental/runtime/main.ts
new file mode 100644
index 000000000..40a26bbd4
--- /dev/null
+++ b/tests/testdata/run/decorators/experimental/runtime/main.ts
@@ -0,0 +1,42 @@
+// deno-lint-ignore-file
+function a() {
+ console.log("@A evaluated");
+ return function (
+ target: any,
+ propertyKey: string,
+ descriptor: PropertyDescriptor,
+ ) {
+ console.log("@A called");
+ const fn = descriptor.value;
+ descriptor.value = function () {
+ console.log("fn() called from @A");
+ fn();
+ };
+ };
+}
+
+function b() {
+ console.log("@B evaluated");
+ return function (
+ target: any,
+ propertyKey: string,
+ descriptor: PropertyDescriptor,
+ ) {
+ console.log("@B called");
+ const fn = descriptor.value;
+ descriptor.value = function () {
+ console.log("fn() called from @B");
+ fn();
+ };
+ };
+}
+
+class C {
+ @a()
+ @b()
+ static test() {
+ console.log("C.test() called");
+ }
+}
+
+C.test();
diff --git a/tests/testdata/run/decorators/experimental/ts/main.out b/tests/testdata/run/decorators/experimental/ts/main.out
new file mode 100644
index 000000000..ee77417cf
--- /dev/null
+++ b/tests/testdata/run/decorators/experimental/ts/main.out
@@ -0,0 +1,2 @@
+Check [WILDCARD]
+SomeClass { someField: "asdf" }
diff --git a/tests/testdata/run/decorators/experimental/ts/main.ts b/tests/testdata/run/decorators/experimental/ts/main.ts
new file mode 100644
index 000000000..95fba6cd4
--- /dev/null
+++ b/tests/testdata/run/decorators/experimental/ts/main.ts
@@ -0,0 +1,14 @@
+// deno-lint-ignore-file
+
+function Decorate() {
+ return function (constructor: any): any {
+ return class extends constructor {
+ protected someField: string = "asdf";
+ };
+ };
+}
+
+@Decorate()
+class SomeClass {}
+
+console.log(new SomeClass());
diff --git a/tests/testdata/run/decorators/tc39_proposal/main.out b/tests/testdata/run/decorators/tc39_proposal/main.out
new file mode 100644
index 000000000..39394952e
--- /dev/null
+++ b/tests/testdata/run/decorators/tc39_proposal/main.out
@@ -0,0 +1,3 @@
+starting m with arguments 1
+C.m 1
+ending m
diff --git a/tests/testdata/run/decorators/tc39_proposal/main.ts b/tests/testdata/run/decorators/tc39_proposal/main.ts
new file mode 100644
index 000000000..00c8a8502
--- /dev/null
+++ b/tests/testdata/run/decorators/tc39_proposal/main.ts
@@ -0,0 +1,21 @@
+// deno-lint-ignore no-explicit-any
+function logged(value: any, { kind, name }: { kind: string; name: string }) {
+ if (kind === "method") {
+ return function (...args: unknown[]) {
+ console.log(`starting ${name} with arguments ${args.join(", ")}`);
+ // @ts-ignore this has implicit any type
+ const ret = value.call(this, ...args);
+ console.log(`ending ${name}`);
+ return ret;
+ };
+ }
+}
+
+class C {
+ @logged
+ m(arg: number) {
+ console.log("C.m", arg);
+ }
+}
+
+new C().m(1);