tests/run-tests.py
branchstable
changeset 49832 9a4c76cc8fe6
parent 49497 1baf0fffd82f
child 49833 a2356e15200a
equal deleted inserted replaced
49831:d5b722ce9864 49832:9a4c76cc8fe6
    84         '%s is only supported on Python 3.5+, not %s'
    84         '%s is only supported on Python 3.5+, not %s'
    85         % (sys.argv[0], '.'.join(str(v) for v in sys.version_info[:3]))
    85         % (sys.argv[0], '.'.join(str(v) for v in sys.version_info[:3]))
    86     )
    86     )
    87     sys.exit(70)  # EX_SOFTWARE from `man 3 sysexit`
    87     sys.exit(70)  # EX_SOFTWARE from `man 3 sysexit`
    88 
    88 
       
    89 MACOS = sys.platform == 'darwin'
    89 WINDOWS = os.name == r'nt'
    90 WINDOWS = os.name == r'nt'
    90 shellquote = shlex.quote
    91 shellquote = shlex.quote
    91 
    92 
    92 
    93 
    93 processlock = threading.Lock()
    94 processlock = threading.Lock()
   743 
   744 
   744     if (options.chg or options.with_chg) and WINDOWS:
   745     if (options.chg or options.with_chg) and WINDOWS:
   745         parser.error('chg does not work on %s' % os.name)
   746         parser.error('chg does not work on %s' % os.name)
   746     if (options.rhg or options.with_rhg) and WINDOWS:
   747     if (options.rhg or options.with_rhg) and WINDOWS:
   747         parser.error('rhg does not work on %s' % os.name)
   748         parser.error('rhg does not work on %s' % os.name)
   748     if options.pyoxidized and not WINDOWS:
   749     if options.pyoxidized and not (MACOS or WINDOWS):
   749         parser.error('--pyoxidized is currently Windows only')
   750         parser.error('--pyoxidized is currently macOS and Windows only')
   750     if options.with_chg:
   751     if options.with_chg:
   751         options.chg = False  # no installation to temporary location
   752         options.chg = False  # no installation to temporary location
   752         options.with_chg = canonpath(_sys2bytes(options.with_chg))
   753         options.with_chg = canonpath(_sys2bytes(options.with_chg))
   753         if not (
   754         if not (
   754             os.path.isfile(options.with_chg)
   755             os.path.isfile(options.with_chg)
  3203 
  3204 
  3204         if self.options.pyoxidized:
  3205         if self.options.pyoxidized:
  3205             testdir = os.path.dirname(_sys2bytes(canonpath(sys.argv[0])))
  3206             testdir = os.path.dirname(_sys2bytes(canonpath(sys.argv[0])))
  3206             reporootdir = os.path.dirname(testdir)
  3207             reporootdir = os.path.dirname(testdir)
  3207             # XXX we should ideally install stuff instead of using the local build
  3208             # XXX we should ideally install stuff instead of using the local build
  3208             bin_path = (
  3209 
  3209                 b'build/pyoxidizer/x86_64-pc-windows-msvc/release/app/hg.exe'
  3210             exe = b'hg'
  3210             )
  3211             triple = b''
       
  3212 
       
  3213             if WINDOWS:
       
  3214                 triple = b'x86_64-pc-windows-msvc'
       
  3215                 exe = b'hg.exe'
       
  3216             elif MACOS:
       
  3217                 # TODO: support Apple silicon too
       
  3218                 triple = b'x86_64-apple-darwin'
       
  3219 
       
  3220             bin_path = b'build/pyoxidizer/%s/release/app/%s' % (triple, exe)
  3211             full_path = os.path.join(reporootdir, bin_path)
  3221             full_path = os.path.join(reporootdir, bin_path)
  3212             self._hgcommand = full_path
  3222             self._hgcommand = full_path
  3213             # Affects hghave.py
  3223             # Affects hghave.py
  3214             osenvironb[b'PYOXIDIZED_INSTALLED_AS_HG'] = b'1'
  3224             osenvironb[b'PYOXIDIZED_INSTALLED_AS_HG'] = b'1'
  3215         else:
  3225         else:
  3849         build binary to testing quickly.
  3859         build binary to testing quickly.
  3850         """
  3860         """
  3851         vlog('# build a pyoxidized version of Mercurial')
  3861         vlog('# build a pyoxidized version of Mercurial')
  3852         assert os.path.dirname(self._bindir) == self._installdir
  3862         assert os.path.dirname(self._bindir) == self._installdir
  3853         assert self._hgroot, 'must be called after _installhg()'
  3863         assert self._hgroot, 'must be called after _installhg()'
  3854         cmd = b'"%(make)s" pyoxidizer-windows-tests' % {
  3864         target = b''
       
  3865         if WINDOWS:
       
  3866             target = b'windows'
       
  3867         elif MACOS:
       
  3868             target = b'macos'
       
  3869 
       
  3870         cmd = b'"%(make)s" pyoxidizer-%(platform)s-tests' % {
  3855             b'make': b'make',
  3871             b'make': b'make',
       
  3872             b'platform': target,
  3856         }
  3873         }
  3857         cwd = self._hgroot
  3874         cwd = self._hgroot
  3858         vlog("# Running", cmd)
  3875         vlog("# Running", cmd)
  3859         proc = subprocess.Popen(
  3876         proc = subprocess.Popen(
  3860             _bytes2sys(cmd),
  3877             _bytes2sys(cmd),