Example #1
0
    replace_module_match,
)
from requre.helpers.tempfile import TempFile
from requre.helpers.simple_object import Simple
from requre.helpers.files import StoreFiles
from requre.helpers.git.pushinfo import PushInfoStorageList
from requre.helpers.git.fetchinfo import FetchInfoStorageList
from requre.helpers.git.repo import Repo

from packit.api import PackitAPI
from tests_recording.testbase import PackitTest


@record_requests_for_all_methods()
@apply_decorator_to_all_methods(
    replace_module_match(what="packit.utils.run_command_remote",
                         decorate=Simple.decorator_plain()))
@apply_decorator_to_all_methods(
    replace_module_match(
        what="packit.fedpkg.FedPKG.clone",
        decorate=StoreFiles.where_arg_references(
            key_position_params_dict={"target_path": 2}),
    ))
@apply_decorator_to_all_methods(
    replace_module_match(
        what="git.repo.base.Repo.clone_from",
        decorate=StoreFiles.where_arg_references(
            key_position_params_dict={"to_path": 2},
            return_decorator=Repo.decorator_plain,
        ),
    ))
@apply_decorator_to_all_methods(
Example #2
0
from requre.helpers.simple_object import Simple
from requre.helpers.files import StoreFiles
from packit.api import PackitAPI
from tests_recording.testbase import PackitTest
from requre.modules_decorate_all_methods import (
    record_requests_module,
    record_tempfile_module,
    record_git_module,
)


@record_tempfile_module
@record_requests_module
@record_git_module
@apply_decorator_to_all_methods(
    replace_module_match(what="packit.utils.run_command_remote",
                         decorate=Simple.decorator_plain()))
@apply_decorator_to_all_methods(
    replace_module_match(
        what="packit.pkgtool.PkgTool.clone",
        decorate=StoreFiles.where_arg_references(
            key_position_params_dict={"target_path": 2}),
    ))
@apply_decorator_to_all_methods(
    replace_module_match(what="copr.v3.helpers.config_from_file",
                         decorate=Simple.decorator_plain()))
class ProposeUpdate(PackitTest):
    def cassette_setup(self, cassette):
        cassette.data_miner.data_type = DataTypes.Dict

    def setUp(self):
        super().setUp()
import unittest
from pathlib import Path

import requests

from requre.cassette import Cassette, StorageMode
from requre.simple_object import Simple
from requre.online_replacing import (
    record_requests_for_all_methods,
    apply_decorator_to_all_methods,
    replace_module_match,
)


@apply_decorator_to_all_methods(
    replace_module_match(what="math.sin", decorate=Simple.decorator_plain())
)
@record_requests_for_all_methods()
class DecoratorClassApplyMultipleDecorators(unittest.TestCase):
    def use_math_and_requests(self):
        sin_output = math.sin(1.5)
        self.assertAlmostEqual(0.9974949866040544, sin_output, delta=0.0005)

        response = requests.get("http://example.com")
        self.assertIn("This domain is for use", response.text)

    def test_read(self, cassette: Cassette):
        if cassette.mode == StorageMode.read:
            self.assertIn("math", cassette.storage_object)
            self.assertIn("requests.sessions", cassette.storage_object)
        # move the following call to the beginning when regenerating
Example #4
0
        if cassette.mode == StorageMode.write:
            self.reset()
            sin_output = math.sin(1.5)
        else:
            sin_output = math.sin(4)
        response = requests.get("http://example.com")
        self.assertIn("This domain is for use", response.text)
        self.assertAlmostEqual(0.9974949866040544, sin_output, delta=0.0005)


new_cassette = Cassette()


@apply_decorator_to_all_methods(
    replace_module_match(what="math.sin",
                         decorate=Simple.decorator_plain(),
                         cassette=new_cassette))
@record_requests(cassette=new_cassette)
class DecoratorClassApply(unittest.TestCase):
    # when regeneration, comment lines with assert equals, because checks for equality does not work
    def setUp(self):
        new_cassette.storage_file = None

    def test0(self, cassette: Cassette):
        if cassette.mode == StorageMode.read:
            self.assertEqual(len(new_cassette.storage_object["math"]["sin"]),
                             1)
        sin_output = math.sin(1.5)
        response = requests.get("http://example.com")
        self.assertIn("This domain is for use", response.text)
        self.assertAlmostEqual(0.9974949866040544, sin_output, delta=0.0005)
Example #5
0
                2,
            ),
        )
        self.assertTrue(isinstance(after5, tuple))

        self.assertEqual(before1, after1)
        self.assertEqual(before2.__class__.__name__, after2.__class__.__name__)
        self.assertEqual(before3.__class__.__name__, after3.__class__.__name__)
        self.assertEqual(after2.__class__.__name__, "OwnClass")
        self.assertEqual(before4.__class__.__name__, "TextIOWrapper")
        self.assertEqual(after4.__class__.__name__, "str")
        self.assertEqual(before5.__class__.__name__, "tuple")
        self.assertEqual(before5, after5)


@apply_decorator_to_all_methods(replace_module_match(what="math.sin"))
class ApplyDefaultDecorator(unittest.TestCase):
    SIN_OUTPUT = 0.9974949866040544

    def cassette_setup(self, cassette):
        self.assertEqual(cassette.storage_object, {})

    def cassette_teardown(self, cassette):
        os.remove(cassette.storage_file)

    def test(self, cassette: Cassette):
        math.sin(1.5)
        self.assertEqual(len(cassette.storage_object["math"]["sin"]), 1)
        self.assertAlmostEqual(
            self.SIN_OUTPUT,
            cassette.storage_object["math"]["sin"][0]["output"],