Bug 550643 - Minor improvements to parsemark.py. r=jorendorff.
[mozilla-central.git] / config / tests / unit-buildlist.py
blob45b2fd8a8bef9dc465e4ffa86777f0334656e346
1 import unittest
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):
11 """
12 Unit tests for buildlist.py
13 """
14 def setUp(self):
15 self.tmpdir = mkdtemp()
17 def tearDown(self):
18 rmtree(self.tmpdir)
20 # utility methods for tests
21 def touch(self, file, dir=None):
22 if dir is None:
23 dir = self.tmpdir
24 f = os.path.join(dir, file)
25 open(f, 'w').close()
26 return f
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."""
31 l = l[:]
32 f = open(filename, 'r')
33 lines = [line.rstrip() for line in f.readlines()]
34 f.close()
35 for line in lines:
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))
40 def test_basic(self):
41 "Test that addEntriesToListFile works when file doesn't exist."
42 testfile = os.path.join(self.tmpdir, "test.list")
43 l = ["a", "b", "c"]
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")
53 l = ["a", "b", "c"]
54 addEntriesToListFile(testfile, l)
55 self.assertFileContains(testfile, l)
56 l2 = ["x","y","z"]
57 addEntriesToListFile(testfile, l2)
58 l.extend(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")
64 l = ["a", "b", "c"]
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__':
80 unittest.main()