|
8 | 8 | import socket
|
9 | 9 | import sys
|
10 | 10 | import textwrap
|
11 |
| -import threading |
12 |
| -import time |
13 | 11 | import traceback
|
14 | 12 | import uuid
|
15 | 13 | import zipfile
|
16 | 14 | from collections import OrderedDict
|
17 | 15 | from contextlib import contextmanager
|
| 16 | +from inspect import getframeinfo, stack |
18 | 17 | from urllib.parse import urlsplit, urlunsplit
|
19 | 18 |
|
20 |
| -import bottle |
21 | 19 | import mock
|
| 20 | +import pytest |
22 | 21 | import requests
|
23 | 22 | from mock import Mock
|
24 | 23 | from requests.exceptions import HTTPError
|
|
35 | 34 | from conan.cli.cli import Cli, _CONAN_INTERNAL_CUSTOM_COMMANDS_PATH
|
36 | 35 | from conan.test.utils.env import environment_update
|
37 | 36 | from conan.internal.errors import NotFoundException
|
38 |
| -from conan.internal.model.manifest import FileTreeManifest |
39 | 37 | from conan.api.model import PkgReference
|
40 |
| -from conan.internal.model.profile import Profile |
41 | 38 | from conan.api.model import RecipeReference
|
42 |
| -from conan.internal.model.settings import Settings |
43 | 39 | from conan.test.assets.genconanfile import GenConanfile
|
44 | 40 | from conan.test.utils.artifactory import ArtifactoryServer
|
45 | 41 | from conan.test.utils.mocks import RedirectedInputStream
|
|
83 | 79 | """)
|
84 | 80 | }
|
85 | 81 |
|
86 |
| -def inc_recipe_manifest_timestamp(cache, reference, inc_time): |
87 |
| - ref = RecipeReference.loads(reference) |
88 |
| - path = cache.get_latest_recipe_reference(ref).export() |
89 |
| - manifest = FileTreeManifest.load(path) |
90 |
| - manifest.time += inc_time |
91 |
| - manifest.save(path) |
92 |
| - |
93 |
| - |
94 |
| -def inc_package_manifest_timestamp(cache, package_reference, inc_time): |
95 |
| - path = cache.get_latest_package_reference(package_reference).package() |
96 |
| - manifest = FileTreeManifest.load(path) |
97 |
| - manifest.time += inc_time |
98 |
| - manifest.save(path) |
99 |
| - |
100 |
| - |
101 |
| -def create_profile(profile=None, settings=None): |
102 |
| - if profile is None: |
103 |
| - profile = Profile() |
104 |
| - if profile.processed_settings is None: |
105 |
| - profile.processed_settings = settings or Settings() |
106 |
| - return profile |
107 |
| - |
108 | 82 |
|
109 | 83 | class TestingResponse(object):
|
110 | 84 | """Wraps a response from TestApp external tool
|
@@ -629,15 +603,15 @@ def _handle_cli_result(self, command, assert_error, error, trace=None):
|
629 | 603 | msg = " Command succeeded (failure expected): "
|
630 | 604 | else:
|
631 | 605 | msg = " Command failed (unexpectedly): "
|
632 |
| - exc_message = "\n{header}\n{cmd}\n{output_header}\n{output}\n".format( |
633 |
| - header='{:=^80}'.format(msg), |
634 |
| - output_header='{:=^80}'.format(" Output: "), |
635 |
| - cmd=command, |
636 |
| - output=str(self.stderr) + str(self.stdout) + "\n" + str(self.out) |
637 |
| - ) |
| 606 | + |
| 607 | + output = str(self.stderr) + str(self.stdout) + "\n" |
| 608 | + exc_message = f"\n{msg:=^80}\n{command}\n{' Output: ':=^80}\n{output}\n" |
638 | 609 | if trace:
|
639 |
| - exc_message += '{:=^80}'.format(" Traceback: ") + f"\n{trace}" |
640 |
| - raise Exception(exc_message) |
| 610 | + exc_message += f'{" Traceback: ":=^80}\n{trace}' |
| 611 | + |
| 612 | + caller = getframeinfo(stack()[3][0]) |
| 613 | + exc_message = f"{caller.filename}:{caller.lineno}" + exc_message |
| 614 | + pytest.fail(exc_message, pytrace=False) |
641 | 615 |
|
642 | 616 | def save(self, files, path=None, clean_first=False):
|
643 | 617 | """ helper metod, will store files in the current folder
|
@@ -853,28 +827,6 @@ def get_free_port():
|
853 | 827 | return ret
|
854 | 828 |
|
855 | 829 |
|
856 |
| -class StoppableThreadBottle(threading.Thread): |
857 |
| - """ |
858 |
| - Real server to test download endpoints |
859 |
| - """ |
860 |
| - |
861 |
| - def __init__(self, host=None, port=None): |
862 |
| - self.host = host or "127.0.0.1" |
863 |
| - self.server = bottle.Bottle() |
864 |
| - self.port = port or get_free_port() |
865 |
| - super(StoppableThreadBottle, self).__init__(target=self.server.run, |
866 |
| - kwargs={"host": self.host, "port": self.port}) |
867 |
| - self.daemon = True |
868 |
| - self._stop = threading.Event() |
869 |
| - |
870 |
| - def stop(self): |
871 |
| - self._stop.set() |
872 |
| - |
873 |
| - def run_server(self): |
874 |
| - self.start() |
875 |
| - time.sleep(1) |
876 |
| - |
877 |
| - |
878 | 830 | def zipdir(path, zipfilename):
|
879 | 831 | with zipfile.ZipFile(zipfilename, 'w', zipfile.ZIP_DEFLATED) as z:
|
880 | 832 | for root, _, files in os.walk(path):
|
|
0 commit comments