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(
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
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)
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"],