[Buildroot] [PATCH 1/1] support/testing: quickjs: new runtime test

Julien Olivain via buildroot <[email protected]>
Newsgroups net.busybox.buildroot
Message-ID <[email protected]>
Signed-off-by: Julien Olivain <[email protected]>
---
Patch tested in:
https://gitlab.com/jolivain/buildroot/-/jobs/15922186716
---
 DEVELOPERS                                    |  2 +
 support/testing/tests/package/test_quickjs.py | 52 +++++++++++++++++++
 .../rootfs-overlay/root/mandel.js             | 21 ++++++++
 3 files changed, 75 insertions(+)
 create mode 100644 support/testing/tests/package/test_quickjs.py
 create mode 100644 support/testing/tests/package/test_quickjs/rootfs-overlay/root/mandel.js

diff --git a/DEVELOPERS b/DEVELOPERS
index 98c9ee55d3..cb5348dc6f 100644
--- a/DEVELOPERS
+++ b/DEVELOPERS
@@ -2028,6 +2028,8 @@ F:	support/testing/tests/package/test_python_pyqt5.py
 F:	support/testing/tests/package/test_python_pyqt5/
 F:	support/testing/tests/package/test_python_spake2.py
 F:	support/testing/tests/package/test_python_sympy.py
+F:	support/testing/tests/package/test_quickjs.py
+F:	support/testing/tests/package/test_quickjs/
 F:	support/testing/tests/package/test_rdma_core.py
 F:	support/testing/tests/package/test_rdma_core/
 F:	support/testing/tests/package/test_rrdtool.py
diff --git a/support/testing/tests/package/test_quickjs.py b/support/testing/tests/package/test_quickjs.py
new file mode 100644
index 0000000000..5d5354ab26
--- /dev/null
+++ b/support/testing/tests/package/test_quickjs.py
@@ -0,0 +1,52 @@
+import os
+
+import infra.basetest
+
+
+class TestQuickJS(infra.basetest.BRTest):
+    rootfs_overlay = \
+        infra.filepath("tests/package/test_quickjs/rootfs-overlay")
+    config = infra.basetest.BASIC_TOOLCHAIN_CONFIG + \
+        f"""
+        BR2_PACKAGE_QUICKJS=y
+        BR2_ROOTFS_OVERLAY="{rootfs_overlay}"
+        BR2_TARGET_ROOTFS_CPIO=y
+        # BR2_TARGET_ROOTFS_TAR is not set
+        """
+
+    def test_run(self):
+        cpio_file = os.path.join(self.builddir, "images", "rootfs.cpio")
+        self.emulator.boot(arch="armv7",
+                           kernel="builtin",
+                           options=["-initrd", cpio_file])
+        self.emulator.login()
+
+        # We check can print a message from the command line.
+        msg = "Hello Buildroot!"
+        js_expr = f"console.log(\"{msg}\");"
+        cmd = f"qjs -e '{js_expr}'"
+        out, ret = self.emulator.run(cmd)
+        self.assertEqual(ret, 0)
+        self.assertEqual(out[0], msg)
+
+        # We check we can exit with a specific code.
+        exit_code = 123
+        js_expr = f"std.exit({exit_code});"
+        cmd = f"qjs --std -e '{js_expr}'"
+        out, ret = self.emulator.run(cmd)
+        self.assertEqual(ret, exit_code)
+        self.assertEqual(len(out), 0)
+
+        # We check we can do basic arithmetic.
+        val1 = 1234
+        val2 = 5678
+        js_expr = f"console.log({val1} * {val2});"
+        cmd = f"qjs -e '{js_expr}'"
+        out, ret = self.emulator.run(cmd)
+        self.assertEqual(ret, 0)
+        expected_result = val1 * val2
+        self.assertEqual(int(out[0]), expected_result)
+
+        # We check we can run a slightly more complex program and dump
+        # the memory usage.
+        self.assertRunOk("qjs -d --std mandel.js")
diff --git a/support/testing/tests/package/test_quickjs/rootfs-overlay/root/mandel.js b/support/testing/tests/package/test_quickjs/rootfs-overlay/root/mandel.js
new file mode 100644
index 0000000000..4004a26527
--- /dev/null
+++ b/support/testing/tests/package/test_quickjs/rootfs-overlay/root/mandel.js
@@ -0,0 +1,21 @@
+function mandel(file) {
+    points = ",.:-;!/>)|&IH%*Z";
+    for (y = -15; y <= 15; y++) {
+        for (x = 1; x <= 84; x++) {
+            i = 0;
+            r = 0;
+            for (k = 0; k <= 111; k++) {
+                j = (r*r) - (i*i) - 2 + (x/25);
+                i = 2 * r * i + (y/10);
+                if ((j*j + i*i) >= 11) {
+                    break;
+                }
+                r = j;
+            }
+            file.puts(points[k & 0xF]);
+        }
+        file.puts("\n");
+    }
+}
+
+mandel(std.out);
-- 
2.55.0

_______________________________________________
buildroot mailing list
[email protected]
https://lists.buildroot.org/mailman/listinfo/buildroot
lmpx.com only provides a reader for public news (NNTP) servers. It is not affiliated with the servers or forums shown here and is not responsible for the content of articles, which is written by their respective authors.