Message ID | 20220925192030.1648496-2-thomas.petazzoni@bootlin.com |
---|---|
State | Accepted |
Headers | show |
Series | [v2,1/2] package/nodejs: add patch to adjust default NodeJS search path | expand |
Hello, Le 25/09/2022 à 21:20, Thomas Petazzoni a écrit : > This commit adds two new test cases: > > - TestNodeJSBasic which builds a target configuration with just > NodeJS enabled, and which runs a very simple NodeJS script on the > target. > > - TestNodeJSModule, which builds a target configuration with NodeJS > enabled + the installation of one extra module, which means npm on > the host (from host-nodejs) is used, and which runs a very simple > NodeJS script on the target that uses this extra module. > > Having both tests separately allows to validate that both nodejs-only > and nodejs+host-nodejs configurations behave correctly, at least in > minimal scenarios. NodeJS takes ages to build Tested-by: Romain Naour <romain.naour@smile.fr> Best regards, Romain > > Signed-off-by: Thomas Petazzoni <thomas.petazzoni@bootlin.com> > --- > DEVELOPERS | 3 ++ > .../tests/package/sample_nodejs_basic.js | 3 ++ > .../tests/package/sample_nodejs_module.js | 7 +++ > support/testing/tests/package/test_nodejs.py | 52 +++++++++++++++++++ > 4 files changed, 65 insertions(+) > create mode 100644 support/testing/tests/package/sample_nodejs_basic.js > create mode 100644 support/testing/tests/package/sample_nodejs_module.js > create mode 100644 support/testing/tests/package/test_nodejs.py > > diff --git a/DEVELOPERS b/DEVELOPERS > index 51d025173a..564149de0f 100644 > --- a/DEVELOPERS > +++ b/DEVELOPERS > @@ -2927,11 +2927,14 @@ F: package/weston/ > F: support/testing/tests/boot/test_grub.py > F: support/testing/tests/boot/test_grub/ > F: support/testing/tests/boot/test_syslinux.py > +F: support/testing/tests/package/sample_nodejs_basic.js > +F: support/testing/tests/package/sample_nodejs_module.js > F: support/testing/tests/package/sample_python_augeas.py > F: support/testing/tests/package/sample_python_flask.py > F: support/testing/tests/package/sample_python_flask_expects_json.py > F: support/testing/tests/package/sample_python_git.py > F: support/testing/tests/package/sample_python_unittest_xml_reporting.py > +F: support/testing/tests/package/test_nodejs.py > F: support/testing/tests/package/test_python_augeas.py > F: support/testing/tests/package/test_python_flask.py > F: support/testing/tests/package/test_python_flask_expects_json.py > diff --git a/support/testing/tests/package/sample_nodejs_basic.js b/support/testing/tests/package/sample_nodejs_basic.js > new file mode 100644 > index 0000000000..7633173c64 > --- /dev/null > +++ b/support/testing/tests/package/sample_nodejs_basic.js > @@ -0,0 +1,3 @@ > +var assert = require('assert'); > +assert.strictEqual(1, 1); > +console.log("Hello World"); > diff --git a/support/testing/tests/package/sample_nodejs_module.js b/support/testing/tests/package/sample_nodejs_module.js > new file mode 100644 > index 0000000000..57aee73408 > --- /dev/null > +++ b/support/testing/tests/package/sample_nodejs_module.js > @@ -0,0 +1,7 @@ > +var assert = require('assert'); > +var lodash = require('lodash'); > +result = lodash.chunk(['a', 'b', 'c', 'd'], 2); > +expected = [ [ 'a', 'b' ], [ 'c', 'd' ] ]; > +assert.deepStrictEqual(result, expected) > + > + > diff --git a/support/testing/tests/package/test_nodejs.py b/support/testing/tests/package/test_nodejs.py > new file mode 100644 > index 0000000000..9463c76b72 > --- /dev/null > +++ b/support/testing/tests/package/test_nodejs.py > @@ -0,0 +1,52 @@ > +import os > + > +import infra.basetest > + > + > +class TestNodeJSBasic(infra.basetest.BRTest): > + config = \ > + """ > + BR2_arm=y > + BR2_cortex_a9=y > + BR2_ARM_ENABLE_VFP=y > + BR2_TOOLCHAIN_EXTERNAL=y > + BR2_PACKAGE_NODEJS=y > + BR2_TARGET_ROOTFS_CPIO=y > + # BR2_TARGET_ROOTFS_TAR is not set > + BR2_ROOTFS_POST_BUILD_SCRIPT="{}" > + BR2_ROOTFS_POST_SCRIPT_ARGS="{}" > + """.format(infra.filepath("tests/package/copy-sample-script-to-target.sh"), > + infra.filepath("tests/package/sample_nodejs_basic.js")) > + > + 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() > + self.assertRunOk("node sample_nodejs_basic.js") > + > + > +class TestNodeJSModule(infra.basetest.BRTest): > + config = \ > + """ > + BR2_arm=y > + BR2_cortex_a9=y > + BR2_ARM_ENABLE_VFP=y > + BR2_TOOLCHAIN_EXTERNAL=y > + BR2_PACKAGE_NODEJS=y > + BR2_PACKAGE_NODEJS_MODULES_ADDITIONAL="lodash" > + BR2_TARGET_ROOTFS_CPIO=y > + # BR2_TARGET_ROOTFS_TAR is not set > + BR2_ROOTFS_POST_BUILD_SCRIPT="{}" > + BR2_ROOTFS_POST_SCRIPT_ARGS="{}" > + """.format(infra.filepath("tests/package/copy-sample-script-to-target.sh"), > + infra.filepath("tests/package/sample_nodejs_module.js")) > + > + 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() > + self.assertRunOk("node sample_nodejs_module.js")
Thomas, All, On 2023-02-08 16:43 +0100, Romain Naour spake thusly: > Le 25/09/2022 à 21:20, Thomas Petazzoni a écrit : > > This commit adds two new test cases: > > > > - TestNodeJSBasic which builds a target configuration with just > > NodeJS enabled, and which runs a very simple NodeJS script on the > > target. > > > > - TestNodeJSModule, which builds a target configuration with NodeJS > > enabled + the installation of one extra module, which means npm on > > the host (from host-nodejs) is used, and which runs a very simple > > NodeJS script on the target that uses this extra module. > > > > Having both tests separately allows to validate that both nodejs-only > > and nodejs+host-nodejs configurations behave correctly, at least in > > minimal scenarios. > > NodeJS takes ages to build Muahahaha! :-) > Tested-by: Romain Naour <romain.naour@smile.fr> I could not find the original patch in my mailbox, so I'll reply here: Applied to master, thanks. Regards, Yann E. MORIN. > > Best regards, > Romain > > > > > > Signed-off-by: Thomas Petazzoni <thomas.petazzoni@bootlin.com> > > --- > > DEVELOPERS | 3 ++ > > .../tests/package/sample_nodejs_basic.js | 3 ++ > > .../tests/package/sample_nodejs_module.js | 7 +++ > > support/testing/tests/package/test_nodejs.py | 52 +++++++++++++++++++ > > 4 files changed, 65 insertions(+) > > create mode 100644 support/testing/tests/package/sample_nodejs_basic.js > > create mode 100644 support/testing/tests/package/sample_nodejs_module.js > > create mode 100644 support/testing/tests/package/test_nodejs.py > > > > diff --git a/DEVELOPERS b/DEVELOPERS > > index 51d025173a..564149de0f 100644 > > --- a/DEVELOPERS > > +++ b/DEVELOPERS > > @@ -2927,11 +2927,14 @@ F: package/weston/ > > F: support/testing/tests/boot/test_grub.py > > F: support/testing/tests/boot/test_grub/ > > F: support/testing/tests/boot/test_syslinux.py > > +F: support/testing/tests/package/sample_nodejs_basic.js > > +F: support/testing/tests/package/sample_nodejs_module.js > > F: support/testing/tests/package/sample_python_augeas.py > > F: support/testing/tests/package/sample_python_flask.py > > F: support/testing/tests/package/sample_python_flask_expects_json.py > > F: support/testing/tests/package/sample_python_git.py > > F: support/testing/tests/package/sample_python_unittest_xml_reporting.py > > +F: support/testing/tests/package/test_nodejs.py > > F: support/testing/tests/package/test_python_augeas.py > > F: support/testing/tests/package/test_python_flask.py > > F: support/testing/tests/package/test_python_flask_expects_json.py > > diff --git a/support/testing/tests/package/sample_nodejs_basic.js b/support/testing/tests/package/sample_nodejs_basic.js > > new file mode 100644 > > index 0000000000..7633173c64 > > --- /dev/null > > +++ b/support/testing/tests/package/sample_nodejs_basic.js > > @@ -0,0 +1,3 @@ > > +var assert = require('assert'); > > +assert.strictEqual(1, 1); > > +console.log("Hello World"); > > diff --git a/support/testing/tests/package/sample_nodejs_module.js b/support/testing/tests/package/sample_nodejs_module.js > > new file mode 100644 > > index 0000000000..57aee73408 > > --- /dev/null > > +++ b/support/testing/tests/package/sample_nodejs_module.js > > @@ -0,0 +1,7 @@ > > +var assert = require('assert'); > > +var lodash = require('lodash'); > > +result = lodash.chunk(['a', 'b', 'c', 'd'], 2); > > +expected = [ [ 'a', 'b' ], [ 'c', 'd' ] ]; > > +assert.deepStrictEqual(result, expected) > > + > > + > > diff --git a/support/testing/tests/package/test_nodejs.py b/support/testing/tests/package/test_nodejs.py > > new file mode 100644 > > index 0000000000..9463c76b72 > > --- /dev/null > > +++ b/support/testing/tests/package/test_nodejs.py > > @@ -0,0 +1,52 @@ > > +import os > > + > > +import infra.basetest > > + > > + > > +class TestNodeJSBasic(infra.basetest.BRTest): > > + config = \ > > + """ > > + BR2_arm=y > > + BR2_cortex_a9=y > > + BR2_ARM_ENABLE_VFP=y > > + BR2_TOOLCHAIN_EXTERNAL=y > > + BR2_PACKAGE_NODEJS=y > > + BR2_TARGET_ROOTFS_CPIO=y > > + # BR2_TARGET_ROOTFS_TAR is not set > > + BR2_ROOTFS_POST_BUILD_SCRIPT="{}" > > + BR2_ROOTFS_POST_SCRIPT_ARGS="{}" > > + """.format(infra.filepath("tests/package/copy-sample-script-to-target.sh"), > > + infra.filepath("tests/package/sample_nodejs_basic.js")) > > + > > + 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() > > + self.assertRunOk("node sample_nodejs_basic.js") > > + > > + > > +class TestNodeJSModule(infra.basetest.BRTest): > > + config = \ > > + """ > > + BR2_arm=y > > + BR2_cortex_a9=y > > + BR2_ARM_ENABLE_VFP=y > > + BR2_TOOLCHAIN_EXTERNAL=y > > + BR2_PACKAGE_NODEJS=y > > + BR2_PACKAGE_NODEJS_MODULES_ADDITIONAL="lodash" > > + BR2_TARGET_ROOTFS_CPIO=y > > + # BR2_TARGET_ROOTFS_TAR is not set > > + BR2_ROOTFS_POST_BUILD_SCRIPT="{}" > > + BR2_ROOTFS_POST_SCRIPT_ARGS="{}" > > + """.format(infra.filepath("tests/package/copy-sample-script-to-target.sh"), > > + infra.filepath("tests/package/sample_nodejs_module.js")) > > + > > + 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() > > + self.assertRunOk("node sample_nodejs_module.js") > > _______________________________________________ > buildroot mailing list > buildroot@buildroot.org > https://lists.buildroot.org/mailman/listinfo/buildroot
diff --git a/DEVELOPERS b/DEVELOPERS index 51d025173a..564149de0f 100644 --- a/DEVELOPERS +++ b/DEVELOPERS @@ -2927,11 +2927,14 @@ F: package/weston/ F: support/testing/tests/boot/test_grub.py F: support/testing/tests/boot/test_grub/ F: support/testing/tests/boot/test_syslinux.py +F: support/testing/tests/package/sample_nodejs_basic.js +F: support/testing/tests/package/sample_nodejs_module.js F: support/testing/tests/package/sample_python_augeas.py F: support/testing/tests/package/sample_python_flask.py F: support/testing/tests/package/sample_python_flask_expects_json.py F: support/testing/tests/package/sample_python_git.py F: support/testing/tests/package/sample_python_unittest_xml_reporting.py +F: support/testing/tests/package/test_nodejs.py F: support/testing/tests/package/test_python_augeas.py F: support/testing/tests/package/test_python_flask.py F: support/testing/tests/package/test_python_flask_expects_json.py diff --git a/support/testing/tests/package/sample_nodejs_basic.js b/support/testing/tests/package/sample_nodejs_basic.js new file mode 100644 index 0000000000..7633173c64 --- /dev/null +++ b/support/testing/tests/package/sample_nodejs_basic.js @@ -0,0 +1,3 @@ +var assert = require('assert'); +assert.strictEqual(1, 1); +console.log("Hello World"); diff --git a/support/testing/tests/package/sample_nodejs_module.js b/support/testing/tests/package/sample_nodejs_module.js new file mode 100644 index 0000000000..57aee73408 --- /dev/null +++ b/support/testing/tests/package/sample_nodejs_module.js @@ -0,0 +1,7 @@ +var assert = require('assert'); +var lodash = require('lodash'); +result = lodash.chunk(['a', 'b', 'c', 'd'], 2); +expected = [ [ 'a', 'b' ], [ 'c', 'd' ] ]; +assert.deepStrictEqual(result, expected) + + diff --git a/support/testing/tests/package/test_nodejs.py b/support/testing/tests/package/test_nodejs.py new file mode 100644 index 0000000000..9463c76b72 --- /dev/null +++ b/support/testing/tests/package/test_nodejs.py @@ -0,0 +1,52 @@ +import os + +import infra.basetest + + +class TestNodeJSBasic(infra.basetest.BRTest): + config = \ + """ + BR2_arm=y + BR2_cortex_a9=y + BR2_ARM_ENABLE_VFP=y + BR2_TOOLCHAIN_EXTERNAL=y + BR2_PACKAGE_NODEJS=y + BR2_TARGET_ROOTFS_CPIO=y + # BR2_TARGET_ROOTFS_TAR is not set + BR2_ROOTFS_POST_BUILD_SCRIPT="{}" + BR2_ROOTFS_POST_SCRIPT_ARGS="{}" + """.format(infra.filepath("tests/package/copy-sample-script-to-target.sh"), + infra.filepath("tests/package/sample_nodejs_basic.js")) + + 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() + self.assertRunOk("node sample_nodejs_basic.js") + + +class TestNodeJSModule(infra.basetest.BRTest): + config = \ + """ + BR2_arm=y + BR2_cortex_a9=y + BR2_ARM_ENABLE_VFP=y + BR2_TOOLCHAIN_EXTERNAL=y + BR2_PACKAGE_NODEJS=y + BR2_PACKAGE_NODEJS_MODULES_ADDITIONAL="lodash" + BR2_TARGET_ROOTFS_CPIO=y + # BR2_TARGET_ROOTFS_TAR is not set + BR2_ROOTFS_POST_BUILD_SCRIPT="{}" + BR2_ROOTFS_POST_SCRIPT_ARGS="{}" + """.format(infra.filepath("tests/package/copy-sample-script-to-target.sh"), + infra.filepath("tests/package/sample_nodejs_module.js")) + + 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() + self.assertRunOk("node sample_nodejs_module.js")
This commit adds two new test cases: - TestNodeJSBasic which builds a target configuration with just NodeJS enabled, and which runs a very simple NodeJS script on the target. - TestNodeJSModule, which builds a target configuration with NodeJS enabled + the installation of one extra module, which means npm on the host (from host-nodejs) is used, and which runs a very simple NodeJS script on the target that uses this extra module. Having both tests separately allows to validate that both nodejs-only and nodejs+host-nodejs configurations behave correctly, at least in minimal scenarios. Signed-off-by: Thomas Petazzoni <thomas.petazzoni@bootlin.com> --- DEVELOPERS | 3 ++ .../tests/package/sample_nodejs_basic.js | 3 ++ .../tests/package/sample_nodejs_module.js | 7 +++ support/testing/tests/package/test_nodejs.py | 52 +++++++++++++++++++ 4 files changed, 65 insertions(+) create mode 100644 support/testing/tests/package/sample_nodejs_basic.js create mode 100644 support/testing/tests/package/sample_nodejs_module.js create mode 100644 support/testing/tests/package/test_nodejs.py