3 import os
, sys
, os
.path
, time
4 from tempfile
import mkdtemp
5 from shutil
import rmtree
6 sys
.path
.append(os
.path
.join(os
.path
.dirname(__file__
), '..'))
8 from buildlist
import addEntriesToListFile
10 class TestBuildList(unittest
.TestCase
):
12 Unit tests for buildlist.py
15 self
.tmpdir
= mkdtemp()
20 # utility methods for tests
21 def touch(self
, file, dir=None):
24 f
= os
.path
.join(dir, file)
28 def assertFileContains(self
, filename
, l
):
29 """Assert that the lines in the file |filename| are equal
30 to the contents of the list |l|, in order."""
32 f
= open(filename
, 'r')
33 lines
= [line
.rstrip() for line
in f
.readlines()]
36 self
.assert_(len(l
) > 0, "ran out of expected lines! (expected '%s', got '%s')" % (l
, lines
))
37 self
.assertEqual(line
, l
.pop(0))
38 self
.assert_(len(l
) == 0, "not enough lines in file! (expected '%s', got '%s'" % (l
, lines
))
41 "Test that addEntriesToListFile works when file doesn't exist."
42 testfile
= os
.path
.join(self
.tmpdir
, "test.list")
44 addEntriesToListFile(testfile
, l
)
45 self
.assertFileContains(testfile
, l
)
46 # ensure that attempting to add the same entries again doesn't change it
47 addEntriesToListFile(testfile
, l
)
48 self
.assertFileContains(testfile
, l
)
50 def test_append(self
):
51 "Test adding new entries."
52 testfile
= os
.path
.join(self
.tmpdir
, "test.list")
54 addEntriesToListFile(testfile
, l
)
55 self
.assertFileContains(testfile
, l
)
57 addEntriesToListFile(testfile
, l2
)
59 self
.assertFileContains(testfile
, l
)
61 def test_append_some(self
):
62 "Test adding new entries mixed with existing entries."
63 testfile
= os
.path
.join(self
.tmpdir
, "test.list")
65 addEntriesToListFile(testfile
, l
)
66 self
.assertFileContains(testfile
, l
)
67 addEntriesToListFile(testfile
, ["a", "x", "c", "z"])
68 self
.assertFileContains(testfile
, ["a", "b", "c", "x", "z"])
70 def test_add_multiple(self
):
71 """Test that attempting to add the same entry multiple times results in
72 only one entry being added."""
73 testfile
= os
.path
.join(self
.tmpdir
, "test.list")
74 addEntriesToListFile(testfile
, ["a","b","a","a","b"])
75 self
.assertFileContains(testfile
, ["a","b"])
76 addEntriesToListFile(testfile
, ["c","a","c","b","c"])
77 self
.assertFileContains(testfile
, ["a","b","c"])
79 if __name__
== '__main__':