xref: /unit/test/unit/applications/lang/go.py (revision 1164:2b4032299741)
1import os
2from subprocess import Popen
3from unit.applications.proto import TestApplicationProto
4
5
6class TestApplicationGo(TestApplicationProto):
7    def prepare_env(self, script, name):
8        if not os.path.exists(self.testdir + '/go'):
9            os.mkdir(self.testdir + '/go')
10
11        env = os.environ.copy()
12        env['GOPATH'] = self.pardir + '/go'
13        process = Popen(
14            [
15                'go',
16                'build',
17                '-o',
18                self.testdir + '/go/' + name,
19                self.current_dir + '/go/' + script + '/' + name + '.go',
20            ],
21            env=env,
22        )
23
24        process.communicate()
25
26        return process
27
28    def load(self, script, name='app'):
29        self.prepare_env(script, name)
30
31        self._load_conf(
32            {
33                "listeners": {"*:7080": {"pass": "applications/" + script}},
34                "applications": {
35                    script: {
36                        "type": "external",
37                        "processes": {"spare": 0},
38                        "working_directory": self.current_dir
39                        + "/go/"
40                        + script,
41                        "executable": self.testdir + "/go/" + name,
42                    }
43                },
44            }
45        )
46