Skip to content

Commit f30beb5

Browse files
committed
Adjustments so that tests pass.
1 parent 6b1e249 commit f30beb5

File tree

2 files changed

+21
-28
lines changed

2 files changed

+21
-28
lines changed

axelrod/tests/unit/test_tournament.py

Lines changed: 15 additions & 20 deletions
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,6 @@
33
import csv
44
import logging
55
from multiprocessing import Queue, cpu_count
6-
import tempfile
76
import unittest
87
import warnings
98

@@ -63,6 +62,8 @@ def setUpClass(cls):
6362
[200, 200, 1, 200, 200],
6463
[200, 200, 1, 200, 200]]
6564

65+
cls.filename = "test_results.csv"
66+
6667
def test_init(self):
6768
tournament = axelrod.Tournament(
6869
name=self.test_name,
@@ -100,9 +101,9 @@ def test_warning(self):
100101
with warnings.catch_warnings(record=True) as w:
101102
# Check that no warning is raised if no results set is built and a
102103
# is filename given
103-
tmp_file = tempfile.NamedTemporaryFile(mode='w', delete=False)
104-
results = tournament.play(build_results=False,
105-
filename=tmp_file.name, progress_bar=False)
104+
105+
tournament.play(build_results=False,
106+
filename=self.filename, progress_bar=False)
106107
self.assertEqual(len(w), 0)
107108

108109
def test_serial_play(self):
@@ -156,11 +157,10 @@ def test_no_progress_bar_play(self):
156157
self.assertRaises(AttributeError, call_progress_bar)
157158

158159
# Test without build results
159-
tmp_file = tempfile.NamedTemporaryFile(mode='w', delete=False)
160160
results = tournament.play(progress_bar=False, build_results=False,
161-
filename=tmp_file.name)
161+
filename=self.filename)
162162
self.assertIsNone(results)
163-
results = axelrod.ResultSetFromFile(tmp_file.name)
163+
results = axelrod.ResultSetFromFile(self.filename)
164164
self.assertIsInstance(results, axelrod.ResultSet)
165165
self.assertRaises(AttributeError, call_progress_bar)
166166

@@ -182,11 +182,10 @@ def test_progress_bar_play(self):
182182
self.assertEqual(tournament.progress_bar.total, 15)
183183

184184
# Test without build results
185-
tmp_file = tempfile.NamedTemporaryFile(mode='w', delete=False)
186185
results = tournament.play(progress_bar=True, build_results=False,
187-
filename=tmp_file.name)
186+
filename=self.filename)
188187
self.assertIsNone(results)
189-
results = axelrod.ResultSetFromFile(tmp_file.name)
188+
results = axelrod.ResultSetFromFile(self.filename)
190189
self.assertIsInstance(results, axelrod.ResultSet)
191190
self.assertEqual(tournament.progress_bar.total, 15)
192191

@@ -391,13 +390,12 @@ def test_no_build_result_set(self):
391390
turns=200,
392391
repetitions=self.test_repetitions)
393392

394-
tmp_file = tempfile.NamedTemporaryFile(mode='w', delete=False)
395-
results = tournament.play(build_results=False, filename=tmp_file.name,
393+
results = tournament.play(build_results=False, filename=self.filename,
396394
progress_bar=False)
397395
self.assertIsNone(results)
398396

399397
# Checking that results were written properly
400-
results = axelrod.ResultSetFromFile(tmp_file.name)
398+
results = axelrod.ResultSetFromFile(self.filename)
401399
self.assertIsInstance(results, axelrod.ResultSet)
402400

403401
@given(turns=integers(min_value=1, max_value=200))
@@ -442,7 +440,6 @@ def make_chunk_generator():
442440
self.assertEqual((len(list(chunk_generator))), 0)
443441

444442
def test_write_interactions(self):
445-
tmp_file = tempfile.NamedTemporaryFile(mode='w', delete=False)
446443
tournament = axelrod.Tournament(
447444
name=self.test_name,
448445
players=self.players,
@@ -453,7 +450,7 @@ def test_write_interactions(self):
453450
name='_write_interactions')
454451
tournament._build_result_set = MagicMock(
455452
name='_build_result_set') # Mocking this as it is called by play
456-
self.assertTrue(tournament.play(filename=tmp_file.name,
453+
self.assertTrue(tournament.play(filename=self.filename,
457454
progress_bar=False))
458455
tournament.outputfile.close() # This is normally closed by `build_result_set`
459456

@@ -462,16 +459,14 @@ def test_write_interactions(self):
462459
self.assertEqual(len(calls), 15)
463460

464461
def test_write_to_csv(self):
465-
tmp_file = tempfile.NamedTemporaryFile(mode='w', delete=False)
466462
tournament = axelrod.Tournament(
467463
name=self.test_name,
468464
players=self.players,
469465
game=self.game,
470466
turns=2,
471467
repetitions=2)
472-
tournament.play(filename=tmp_file.name, progress_bar=False)
473-
tmp_file.close()
474-
with open(tmp_file.name, 'r') as f:
468+
tournament.play(filename=self.filename, progress_bar=False)
469+
with open(self.filename, 'r') as f:
475470
written_data = [[int(r[0]), int(r[1])] + r[2:] for r in csv.reader(f)]
476471
expected_data = [[0, 1, 'Cooperator', 'Tit For Tat', 'CC', 'CC'],
477472
[0, 1, 'Cooperator', 'Tit For Tat', 'CC', 'CC'],
@@ -669,7 +664,7 @@ def test_particular_tournament(self):
669664
# Check that this tournament runs with noise
670665
tournament = axelrod.SpatialTournament(players, edges=edges, noise=.5)
671666
results = tournament.play(progress_bar=False)
672-
self.assertIsInstance(results, axelrod.ResultSetFromFile)
667+
self.assertIsInstance(results, axelrod.ResultSet)
673668

674669

675670
class TestProbEndingSpatialTournament(unittest.TestCase):

axelrod/tournament.py

Lines changed: 6 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -55,11 +55,6 @@ def __init__(self, players, match_generator=RoundRobinMatches,
5555
self._with_morality = with_morality
5656
self._logger = logging.getLogger(__name__)
5757

58-
self.interactions_dict = None
59-
self.outputfile = None
60-
self.writer = None
61-
self.filename = None
62-
6358
def play(self, build_results=True, filename=None,
6459
processes=None, progress_bar=True):
6560
"""
@@ -88,10 +83,14 @@ def play(self, build_results=True, filename=None,
8883
self.outputfile = open(filename, 'w')
8984
self.writer = csv.writer(self.outputfile, lineterminator='\n')
9085
self.filename = filename
86+
self.interactions_dict = None
9187
else:
88+
self.outputfile = None
89+
self.writer = None
90+
self.filename = None
9291
self.interactions_dict = {}
9392

94-
if (not build_results) and (filename is not None):
93+
if (not build_results) and (filename is None):
9594
warnings.warn("Tournament results will not be accessible since build_results=False and no filename was supplied.")
9695

9796
if processes is None:
@@ -104,11 +103,10 @@ def play(self, build_results=True, filename=None,
104103

105104
if filename:
106105
self.outputfile.flush()
106+
self.outputfile.close()
107107

108108
if build_results:
109109
return self._build_result_set(progress_bar=progress_bar)
110-
else:
111-
self.outputfile.close()
112110

113111
def _build_result_set(self, progress_bar=True):
114112
"""

0 commit comments

Comments
 (0)