xref: /unit/test/unit/applications/lang/node.py (revision 1730)
11019Szelenkov@nginx.comimport shutil
21472Svbart@nginx.comfrom urllib.parse import quote
31477Szelenkov@nginx.com
41635Szelenkov@nginx.comfrom conftest import public_dir
51019Szelenkov@nginx.comfrom unit.applications.proto import TestApplicationProto
6*1730Szelenkov@nginx.comfrom unit.option import option
71019Szelenkov@nginx.com
81019Szelenkov@nginx.com
91019Szelenkov@nginx.comclass TestApplicationNode(TestApplicationProto):
101657Szelenkov@nginx.com    def prepare_env(self, script):
111019Szelenkov@nginx.com        # copy application
121019Szelenkov@nginx.com
131019Szelenkov@nginx.com        shutil.copytree(
141654Szelenkov@nginx.com            option.test_dir + '/node/' + script, option.temp_dir + '/node'
151019Szelenkov@nginx.com        )
161019Szelenkov@nginx.com
171293St.nateldemoura@f5.com        # copy modules
181019Szelenkov@nginx.com
191293St.nateldemoura@f5.com        shutil.copytree(
201621Szelenkov@nginx.com            option.current_dir + '/node/node_modules',
211654Szelenkov@nginx.com            option.temp_dir + '/node/node_modules',
221019Szelenkov@nginx.com        )
231019Szelenkov@nginx.com
241654Szelenkov@nginx.com        public_dir(option.temp_dir + '/node')
251293St.nateldemoura@f5.com
261657Szelenkov@nginx.com    def load(self, script, name='app.js', **kwargs):
271657Szelenkov@nginx.com        self.prepare_env(script)
281657Szelenkov@nginx.com
291050Szelenkov@nginx.com        self._load_conf(
301019Szelenkov@nginx.com            {
311472Svbart@nginx.com                "listeners": {
321472Svbart@nginx.com                    "*:7080": {"pass": "applications/" + quote(script, '')}
331472Svbart@nginx.com                },
341019Szelenkov@nginx.com                "applications": {
351019Szelenkov@nginx.com                    script: {
361019Szelenkov@nginx.com                        "type": "external",
371019Szelenkov@nginx.com                        "processes": {"spare": 0},
381654Szelenkov@nginx.com                        "working_directory": option.temp_dir + '/node',
391019Szelenkov@nginx.com                        "executable": name,
401019Szelenkov@nginx.com                    }
411019Szelenkov@nginx.com                },
421303St.nateldemoura@f5.com            },
431303St.nateldemoura@f5.com            **kwargs
441019Szelenkov@nginx.com        )
45