devtools/qunit.py
branchstable
changeset 8226 a3d3bdd46463
parent 7879 9aae456abab5
child 8257 d54fc706d623
equal deleted inserted replaced
8225:baf8c16cae95 8226:a3d3bdd46463
    68         self._profile_data = {'uid': uuid4()}
    68         self._profile_data = {'uid': uuid4()}
    69         self._profile_name = self.profile_name_mask % self._profile_data
    69         self._profile_name = self.profile_name_mask % self._profile_data
    70         fnull = open(os.devnull, 'w')
    70         fnull = open(os.devnull, 'w')
    71         stdout = TemporaryFile()
    71         stdout = TemporaryFile()
    72         stderr = TemporaryFile()
    72         stderr = TemporaryFile()
       
    73         self.firefox_cmd = ['firefox', '-no-remote']
       
    74         if os.name == 'posix':
       
    75             self.firefox_cmd = ['xvfb-run', '-a'] + self.firefox_cmd
    73         try:
    76         try:
    74             home = osp.expanduser('~')
    77             home = osp.expanduser('~')
    75             user = getlogin()
    78             user = getlogin()
    76             assert os.access(home, os.W_OK), \
    79             assert os.access(home, os.W_OK), \
    77                    'No write access to your home directory, Firefox will crash.'\
    80                    'No write access to your home directory, Firefox will crash.'\
    78                    ' Are you sure "%s" is a valid home  for user "%s"' % (home, user)
    81                    ' Are you sure "%s" is a valid home  for user "%s"' % (home, user)
    79             check_call(['firefox', '-no-remote', '-CreateProfile',
    82             check_call(self.firefox_cmd + ['-CreateProfile',
    80                         '%s %s' % (self._profile_name, self._tmp_dir)],
    83                         '%s %s' % (self._profile_name, self._tmp_dir)],
    81                                   stdout=stdout, stderr=stderr)
    84                                   stdout=stdout, stderr=stderr)
    82         except CalledProcessError, cpe:
    85         except CalledProcessError, cpe:
    83             stdout.seek(0)
    86             stdout.seek(0)
    84             stderr.seek(0)
    87             stderr.seek(0)
    85             raise VerboseCalledProcessError(cpe.returncode, cpe.cmd, stdout.read(), stderr.read())
    88             raise VerboseCalledProcessError(cpe.returncode, cpe.cmd, stdout.read(), stderr.read())
    86 
    89 
    87     def start(self, url):
    90     def start(self, url):
    88         self.stop()
    91         self.stop()
    89         fnull = open(os.devnull, 'w')
    92         fnull = open(os.devnull, 'w')
    90         self._process = Popen(['firefox', '-no-remote', '-P', self._profile_name, url],
    93         self._process = Popen(self.firefox_cmd + ['-P', self._profile_name, url],
    91                               stdout=fnull, stderr=fnull)
    94                               stdout=fnull, stderr=fnull)
    92 
    95 
    93     def stop(self):
    96     def stop(self):
    94         if self._process is not None:
    97         if self._process is not None:
    95             assert self._process.returncode is None,  self._process.returncode
    98             assert self._process.returncode is None,  self._process.returncode