equal
deleted
inserted
replaced
553 "--pure", |
553 "--pure", |
554 action="store_true", |
554 action="store_true", |
555 help="use pure Python code instead of C extensions", |
555 help="use pure Python code instead of C extensions", |
556 ) |
556 ) |
557 hgconf.add_argument( |
557 hgconf.add_argument( |
558 "-3", |
|
559 "--py3-warnings", |
|
560 action="store_true", |
|
561 help="enable Py3k warnings on Python 2.7+", |
|
562 ) |
|
563 hgconf.add_argument( |
|
564 "--with-chg", |
558 "--with-chg", |
565 metavar="CHG", |
559 metavar="CHG", |
566 help="use specified chg wrapper in place of hg", |
560 help="use specified chg wrapper in place of hg", |
567 ) |
561 ) |
568 hgconf.add_argument( |
562 hgconf.add_argument( |
746 sys.stderr.write( |
740 sys.stderr.write( |
747 'warning: --slowtimeout option ignored with --debug\n' |
741 'warning: --slowtimeout option ignored with --debug\n' |
748 ) |
742 ) |
749 options.timeout = 0 |
743 options.timeout = 0 |
750 options.slowtimeout = 0 |
744 options.slowtimeout = 0 |
751 if options.py3_warnings: |
|
752 if PYTHON3: |
|
753 parser.error('--py3-warnings can only be used on Python 2.7') |
|
754 |
745 |
755 if options.blacklist: |
746 if options.blacklist: |
756 options.blacklist = parselistfiles(options.blacklist, 'blacklist') |
747 options.blacklist = parselistfiles(options.blacklist, 'blacklist') |
757 if options.whitelist: |
748 if options.whitelist: |
758 options.whitelisted = parselistfiles(options.whitelist, 'whitelist') |
749 options.whitelisted = parselistfiles(options.whitelist, 'whitelist') |
907 debug=False, |
898 debug=False, |
908 first=False, |
899 first=False, |
909 timeout=None, |
900 timeout=None, |
910 startport=None, |
901 startport=None, |
911 extraconfigopts=None, |
902 extraconfigopts=None, |
912 py3warnings=False, |
|
913 shell=None, |
903 shell=None, |
914 hgcommand=None, |
904 hgcommand=None, |
915 slowtimeout=None, |
905 slowtimeout=None, |
916 usechg=False, |
906 usechg=False, |
917 useipv6=False, |
907 useipv6=False, |
939 instances. |
929 instances. |
940 |
930 |
941 extraconfigopts is an iterable of extra hgrc config options. Values |
931 extraconfigopts is an iterable of extra hgrc config options. Values |
942 must have the form "key=value" (something understood by hgrc). Values |
932 must have the form "key=value" (something understood by hgrc). Values |
943 of the form "foo.key=value" will result in "[foo] key=value". |
933 of the form "foo.key=value" will result in "[foo] key=value". |
944 |
|
945 py3warnings enables Py3k warnings. |
|
946 |
934 |
947 shell is the shell to execute tests in. |
935 shell is the shell to execute tests in. |
948 """ |
936 """ |
949 if timeout is None: |
937 if timeout is None: |
950 timeout = defaults['timeout'] |
938 timeout = defaults['timeout'] |
966 self._first = first |
954 self._first = first |
967 self._timeout = timeout |
955 self._timeout = timeout |
968 self._slowtimeout = slowtimeout |
956 self._slowtimeout = slowtimeout |
969 self._startport = startport |
957 self._startport = startport |
970 self._extraconfigopts = extraconfigopts or [] |
958 self._extraconfigopts = extraconfigopts or [] |
971 self._py3warnings = py3warnings |
|
972 self._shell = _bytespath(shell) |
959 self._shell = _bytespath(shell) |
973 self._hgcommand = hgcommand or b'hg' |
960 self._hgcommand = hgcommand or b'hg' |
974 self._usechg = usechg |
961 self._usechg = usechg |
975 self._useipv6 = useipv6 |
962 self._useipv6 = useipv6 |
976 |
963 |
1513 @property |
1500 @property |
1514 def refpath(self): |
1501 def refpath(self): |
1515 return os.path.join(self._testdir, b'%s.out' % self.bname) |
1502 return os.path.join(self._testdir, b'%s.out' % self.bname) |
1516 |
1503 |
1517 def _run(self, env): |
1504 def _run(self, env): |
1518 py3switch = self._py3warnings and b' -3' or b'' |
|
1519 # Quote the python(3) executable for Windows |
1505 # Quote the python(3) executable for Windows |
1520 cmd = b'"%s"%s "%s"' % (PYTHON, py3switch, self.path) |
1506 cmd = b'"%s" "%s"' % (PYTHON, self.path) |
1521 vlog("# Running", cmd.decode("utf-8")) |
1507 vlog("# Running", cmd.decode("utf-8")) |
1522 normalizenewlines = os.name == 'nt' |
1508 normalizenewlines = os.name == 'nt' |
1523 result = self._runcommand(cmd, env, normalizenewlines=normalizenewlines) |
1509 result = self._runcommand(cmd, env, normalizenewlines=normalizenewlines) |
1524 if self._aborted: |
1510 if self._aborted: |
1525 raise KeyboardInterrupt() |
1511 raise KeyboardInterrupt() |
3364 debug=self.options.debug, |
3350 debug=self.options.debug, |
3365 first=self.options.first, |
3351 first=self.options.first, |
3366 timeout=self.options.timeout, |
3352 timeout=self.options.timeout, |
3367 startport=self._getport(count), |
3353 startport=self._getport(count), |
3368 extraconfigopts=self.options.extra_config_opt, |
3354 extraconfigopts=self.options.extra_config_opt, |
3369 py3warnings=self.options.py3_warnings, |
|
3370 shell=self.options.shell, |
3355 shell=self.options.shell, |
3371 hgcommand=self._hgcommand, |
3356 hgcommand=self._hgcommand, |
3372 usechg=bool(self.options.with_chg or self.options.chg), |
3357 usechg=bool(self.options.with_chg or self.options.chg), |
3373 useipv6=useipv6, |
3358 useipv6=useipv6, |
3374 **kwds |
3359 **kwds |
3510 sys.exit(1) |
3495 sys.exit(1) |
3511 os.chdir(self._testdir) |
3496 os.chdir(self._testdir) |
3512 |
3497 |
3513 self._usecorrectpython() |
3498 self._usecorrectpython() |
3514 |
3499 |
3515 if self.options.py3_warnings and not self.options.anycoverage: |
|
3516 vlog("# Updating hg command to enable Py3k Warnings switch") |
|
3517 with open(os.path.join(self._bindir, 'hg'), 'rb') as f: |
|
3518 lines = [line.rstrip() for line in f] |
|
3519 lines[0] += ' -3' |
|
3520 with open(os.path.join(self._bindir, 'hg'), 'wb') as f: |
|
3521 for line in lines: |
|
3522 f.write(line + '\n') |
|
3523 |
|
3524 hgbat = os.path.join(self._bindir, b'hg.bat') |
3500 hgbat = os.path.join(self._bindir, b'hg.bat') |
3525 if os.path.isfile(hgbat): |
3501 if os.path.isfile(hgbat): |
3526 # hg.bat expects to be put in bin/scripts while run-tests.py |
3502 # hg.bat expects to be put in bin/scripts while run-tests.py |
3527 # installation layout put it in bin/ directly. Fix it |
3503 # installation layout put it in bin/ directly. Fix it |
3528 with open(hgbat, 'rb') as f: |
3504 with open(hgbat, 'rb') as f: |