Skip to content

Commit 7580cc5

Browse files
committed
add fixture editsdefaults and use it in config_test.py
1 parent 15f96db commit 7580cc5

2 files changed

Lines changed: 19 additions & 15 deletions

File tree

control/tests/config_test.py

Lines changed: 11 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -8,24 +8,14 @@
88
from math import pi, log10
99

1010
import matplotlib.pyplot as plt
11+
from matplotlib.testing.decorators import cleanup as mplcleanup
1112
import numpy as np
1213
import pytest
1314

1415
import control as ct
1516

1617

17-
@pytest.fixture(scope="module")
18-
def configtester():
19-
# save the current state
20-
defaults = ct.config.defaults
21-
yield
22-
# Get rid of any figures that we created
23-
plt.close('all')
24-
# Reset the configuration defaults
25-
ct.config.defaults = defaults
26-
27-
28-
@pytest.mark.usefixtures("configtester")
18+
@pytest.mark.usefixtures("editsdefaults")
2919
class TestConfig:
3020

3121
# Create a simple second order system to use for testing
@@ -37,6 +27,7 @@ def test_set_defaults(self):
3727
assert ct.config.defaults['config.test2'] == 2
3828
assert ct.config.defaults['config.test3'] is None
3929

30+
@mplcleanup
4031
def test_get_param(self):
4132
assert ct.config._get_param('bode', 'dB')\
4233
== ct.config.defaults['bode.dB']
@@ -57,7 +48,7 @@ def test_get_param(self):
5748

5849
assert ct.config._get_param('config', 'test4', {'test4': 1}, None) == 1
5950

60-
51+
@mplcleanup
6152
def test_fbs_bode(self):
6253
ct.use_fbs_defaults()
6354

@@ -104,6 +95,7 @@ def test_fbs_bode(self):
10495

10596
ct.reset_defaults()
10697

98+
@mplcleanup
10799
def test_matlab_bode(self):
108100
ct.use_matlab_defaults()
109101

@@ -150,6 +142,7 @@ def test_matlab_bode(self):
150142

151143
ct.reset_defaults()
152144

145+
@mplcleanup
153146
def test_custom_bode_default(self):
154147
ct.config.defaults['bode.dB'] = True
155148
ct.config.defaults['bode.deg'] = True
@@ -173,6 +166,7 @@ def test_custom_bode_default(self):
173166

174167
ct.reset_defaults()
175168

169+
@mplcleanup
176170
def test_bode_number_of_samples(self):
177171
# Set the number of samples (default is 50, from np.logspace)
178172
mag_ret, phase_ret, omega_ret = ct.bode_plot(self.sys, omega_num=87)
@@ -189,6 +183,7 @@ def test_bode_number_of_samples(self):
189183

190184
ct.reset_defaults()
191185

186+
@mplcleanup
192187
def test_bode_feature_periphery_decade(self):
193188
# Generate a sample Bode plot to figure out the range it uses
194189
ct.reset_defaults() # Make sure starting state is correct
@@ -221,8 +216,9 @@ def test_reset_defaults(self):
221216
assert ct.config.defaults['freqplot.feature_periphery_decades'] == 1.0
222217

223218
def test_legacy_defaults(self):
224-
ct.use_legacy_defaults('0.8.3')
225-
assert(isinstance(ct.ss(0,0,0,1).D, np.matrix))
219+
with pytest.deprecated_call():
220+
ct.use_legacy_defaults('0.8.3')
221+
assert(isinstance(ct.ss(0,0,0,1).D, np.matrix))
226222
ct.reset_defaults()
227223
assert(isinstance(ct.ss(0,0,0,1).D, np.ndarray))
228224

control/tests/conftest.py

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -41,3 +41,11 @@ def check_deprecated_matrix():
4141
pass
4242
else:
4343
yield
44+
45+
46+
@pytest.fixture(scope="function")
47+
def editsdefaults():
48+
"""make sure any changes to the defaults only last during a test"""
49+
restore = control.config.defaults.copy()
50+
yield
51+
control.config.defaults.update(restore)

0 commit comments

Comments
 (0)