devtools/qunit.py
branchstable
changeset 8757 375acf527559
parent 8756 203fb56685ca
child 8886 bff36e86f74a
equal deleted inserted replaced
8756:203fb56685ca 8757:375acf527559
    15 #
    15 #
    16 # You should have received a copy of the GNU Lesser General Public License along
    16 # You should have received a copy of the GNU Lesser General Public License along
    17 # with CubicWeb.  If not, see <http://www.gnu.org/licenses/>.
    17 # with CubicWeb.  If not, see <http://www.gnu.org/licenses/>.
    18 
    18 
    19 import os, os.path as osp
    19 import os, os.path as osp
    20 import signal
       
    21 from tempfile import mkdtemp, NamedTemporaryFile, TemporaryFile
    20 from tempfile import mkdtemp, NamedTemporaryFile, TemporaryFile
    22 import tempfile
    21 import tempfile
    23 from Queue import Queue, Empty
    22 from Queue import Queue, Empty
    24 from subprocess import Popen, check_call, CalledProcessError
    23 from subprocess import Popen, check_call, CalledProcessError
    25 from shutil import rmtree, copy as copyfile
    24 from shutil import rmtree, copy as copyfile
    78             assert os.access(home, os.W_OK), \
    77             assert os.access(home, os.W_OK), \
    79                    'No write access to your home directory, Firefox will crash.'\
    78                    'No write access to your home directory, Firefox will crash.'\
    80                    ' Are you sure "%s" is a valid home  for user "%s"' % (home, user)
    79                    ' Are you sure "%s" is a valid home  for user "%s"' % (home, user)
    81             check_call(self.firefox_cmd + ['-CreateProfile',
    80             check_call(self.firefox_cmd + ['-CreateProfile',
    82                         '%s %s' % (self._profile_name, self._tmp_dir)],
    81                         '%s %s' % (self._profile_name, self._tmp_dir)],
    83                                   stdout=stdout, stderr=stderr)
    82                                    stdout=stdout, stderr=stderr)
    84         except CalledProcessError as cpe:
    83         except CalledProcessError as cpe:
    85             stdout.seek(0)
    84             stdout.seek(0)
    86             stderr.seek(0)
    85             stderr.seek(0)
    87             raise VerboseCalledProcessError(cpe.returncode, cpe.cmd, stdout.read(), stderr.read())
    86             raise VerboseCalledProcessError(cpe.returncode, cpe.cmd, stdout.read(), stderr.read())
    88 
    87 
    93                               stdout=fnull, stderr=fnull)
    92                               stdout=fnull, stderr=fnull)
    94 
    93 
    95     def stop(self):
    94     def stop(self):
    96         if self._process is not None:
    95         if self._process is not None:
    97             assert self._process.returncode is None,  self._process.returncode
    96             assert self._process.returncode is None,  self._process.returncode
    98             os.kill(self._process.pid, signal.SIGTERM)
    97             self._process.terminate()
    99             self._process.wait()
    98             self._process.wait()
   100             self._process = None
    99             self._process = None
   101 
   100 
   102     def __del__(self):
   101     def __del__(self):
   103         self.stop()
   102         self.stop()