зеркало из https://github.com/mozilla/pjs.git
81 строка
2.6 KiB
Python
81 строка
2.6 KiB
Python
import unittest
|
|
|
|
import os, sys, os.path, time
|
|
from tempfile import mkdtemp
|
|
from shutil import rmtree
|
|
sys.path.append(os.path.join(os.path.dirname(__file__), '..'))
|
|
|
|
from buildlist import addEntriesToListFile
|
|
|
|
class TestBuildList(unittest.TestCase):
|
|
"""
|
|
Unit tests for buildlist.py
|
|
"""
|
|
def setUp(self):
|
|
self.tmpdir = mkdtemp()
|
|
|
|
def tearDown(self):
|
|
rmtree(self.tmpdir)
|
|
|
|
# utility methods for tests
|
|
def touch(self, file, dir=None):
|
|
if dir is None:
|
|
dir = self.tmpdir
|
|
f = os.path.join(dir, file)
|
|
open(f, 'w').close()
|
|
return f
|
|
|
|
def assertFileContains(self, filename, l):
|
|
"""Assert that the lines in the file |filename| are equal
|
|
to the contents of the list |l|, in order."""
|
|
l = l[:]
|
|
f = open(filename, 'r')
|
|
lines = [line.rstrip() for line in f.readlines()]
|
|
f.close()
|
|
for line in lines:
|
|
self.assert_(len(l) > 0, "ran out of expected lines! (expected '%s', got '%s')" % (l, lines))
|
|
self.assertEqual(line, l.pop(0))
|
|
self.assert_(len(l) == 0, "not enough lines in file! (expected '%s', got '%s'" % (l, lines))
|
|
|
|
def test_basic(self):
|
|
"Test that addEntriesToListFile works when file doesn't exist."
|
|
testfile = os.path.join(self.tmpdir, "test.list")
|
|
l = ["a", "b", "c"]
|
|
addEntriesToListFile(testfile, l)
|
|
self.assertFileContains(testfile, l)
|
|
# ensure that attempting to add the same entries again doesn't change it
|
|
addEntriesToListFile(testfile, l)
|
|
self.assertFileContains(testfile, l)
|
|
|
|
def test_append(self):
|
|
"Test adding new entries."
|
|
testfile = os.path.join(self.tmpdir, "test.list")
|
|
l = ["a", "b", "c"]
|
|
addEntriesToListFile(testfile, l)
|
|
self.assertFileContains(testfile, l)
|
|
l2 = ["x","y","z"]
|
|
addEntriesToListFile(testfile, l2)
|
|
l.extend(l2)
|
|
self.assertFileContains(testfile, l)
|
|
|
|
def test_append_some(self):
|
|
"Test adding new entries mixed with existing entries."
|
|
testfile = os.path.join(self.tmpdir, "test.list")
|
|
l = ["a", "b", "c"]
|
|
addEntriesToListFile(testfile, l)
|
|
self.assertFileContains(testfile, l)
|
|
addEntriesToListFile(testfile, ["a", "x", "c", "z"])
|
|
self.assertFileContains(testfile, ["a", "b", "c", "x", "z"])
|
|
|
|
def test_add_multiple(self):
|
|
"""Test that attempting to add the same entry multiple times results in
|
|
only one entry being added."""
|
|
testfile = os.path.join(self.tmpdir, "test.list")
|
|
addEntriesToListFile(testfile, ["a","b","a","a","b"])
|
|
self.assertFileContains(testfile, ["a","b"])
|
|
addEntriesToListFile(testfile, ["c","a","c","b","c"])
|
|
self.assertFileContains(testfile, ["a","b","c"])
|
|
|
|
if __name__ == '__main__':
|
|
unittest.main()
|