52 |
52 |
ShellQuote, ShellQuoteArgs, TcpPing, ListVisibleFiles, \
|
53 |
53 |
SetEtcHostsEntry, RemoveEtcHostsEntry, FirstFree, OwnIpAddress, \
|
54 |
54 |
TailFile, ForceDictType, SafeEncode, IsNormAbsPath, FormatTime, \
|
55 |
|
UnescapeAndSplit, RunParts, PathJoin, HostInfo
|
|
55 |
UnescapeAndSplit, RunParts, PathJoin, HostInfo, ReadOneLineFile
|
56 |
56 |
|
57 |
57 |
from ganeti.errors import LockError, UnitParseError, GenericError, \
|
58 |
58 |
ProgrammerError, OpPrereqError
|
... | ... | |
541 |
541 |
"/dev/null/does-not-exist")
|
542 |
542 |
|
543 |
543 |
|
|
544 |
class TestReadOneLineFile(testutils.GanetiTestCase):
|
|
545 |
|
|
546 |
def setUp(self):
|
|
547 |
testutils.GanetiTestCase.setUp(self)
|
|
548 |
|
|
549 |
def testDefault(self):
|
|
550 |
data = ReadOneLineFile(self._TestDataFilename("cert1.pem"))
|
|
551 |
self.assertEqual(len(data), 27)
|
|
552 |
self.assertEqual(data, "-----BEGIN CERTIFICATE-----")
|
|
553 |
|
|
554 |
def testNotStrict(self):
|
|
555 |
data = ReadOneLineFile(self._TestDataFilename("cert1.pem"), strict=False)
|
|
556 |
self.assertEqual(len(data), 27)
|
|
557 |
self.assertEqual(data, "-----BEGIN CERTIFICATE-----")
|
|
558 |
|
|
559 |
def testStrictFailure(self):
|
|
560 |
self.assertRaises(errors.GenericError, ReadOneLineFile,
|
|
561 |
self._TestDataFilename("cert1.pem"), strict=True)
|
|
562 |
|
|
563 |
def testLongLine(self):
|
|
564 |
dummydata = (1024 * "Hello World! ")
|
|
565 |
myfile = self._CreateTempFile()
|
|
566 |
utils.WriteFile(myfile, data=dummydata)
|
|
567 |
datastrict = ReadOneLineFile(myfile, strict=True)
|
|
568 |
datalax = ReadOneLineFile(myfile, strict=False)
|
|
569 |
self.assertEqual(dummydata, datastrict)
|
|
570 |
self.assertEqual(dummydata, datalax)
|
|
571 |
|
|
572 |
def testNewline(self):
|
|
573 |
myfile = self._CreateTempFile()
|
|
574 |
myline = "myline"
|
|
575 |
for nl in ["", "\n", "\r\n"]:
|
|
576 |
dummydata = "%s%s" % (myline, nl)
|
|
577 |
utils.WriteFile(myfile, data=dummydata)
|
|
578 |
datalax = ReadOneLineFile(myfile, strict=False)
|
|
579 |
self.assertEqual(myline, datalax)
|
|
580 |
datastrict = ReadOneLineFile(myfile, strict=True)
|
|
581 |
self.assertEqual(myline, datastrict)
|
|
582 |
|
|
583 |
def testWhitespaceAndMultipleLines(self):
|
|
584 |
myfile = self._CreateTempFile()
|
|
585 |
for nl in ["", "\n", "\r\n"]:
|
|
586 |
for ws in [" ", "\t", "\t\t \t", "\t "]:
|
|
587 |
dummydata = (1024 * ("Foo bar baz %s%s" % (ws, nl)))
|
|
588 |
utils.WriteFile(myfile, data=dummydata)
|
|
589 |
datalax = ReadOneLineFile(myfile, strict=False)
|
|
590 |
if nl:
|
|
591 |
self.assert_(set("\r\n") & set(dummydata))
|
|
592 |
self.assertRaises(errors.GenericError, ReadOneLineFile,
|
|
593 |
myfile, strict=True)
|
|
594 |
explen = len("Foo bar baz ") + len(ws)
|
|
595 |
self.assertEqual(len(datalax), explen)
|
|
596 |
self.assertEqual(datalax, dummydata[:explen])
|
|
597 |
self.assertFalse(set("\r\n") & set(datalax))
|
|
598 |
else:
|
|
599 |
datastrict = ReadOneLineFile(myfile, strict=True)
|
|
600 |
self.assertEqual(dummydata, datastrict)
|
|
601 |
self.assertEqual(dummydata, datalax)
|
|
602 |
|
|
603 |
def testEmptylines(self):
|
|
604 |
myfile = self._CreateTempFile()
|
|
605 |
myline = "myline"
|
|
606 |
for nl in ["\n", "\r\n"]:
|
|
607 |
for ol in ["", "otherline"]:
|
|
608 |
dummydata = "%s%s%s%s%s%s" % (nl, nl, myline, nl, ol, nl)
|
|
609 |
utils.WriteFile(myfile, data=dummydata)
|
|
610 |
self.assert_(set("\r\n") & set(dummydata))
|
|
611 |
datalax = ReadOneLineFile(myfile, strict=False)
|
|
612 |
self.assertEqual(myline, datalax)
|
|
613 |
if ol:
|
|
614 |
self.assertRaises(errors.GenericError, ReadOneLineFile,
|
|
615 |
myfile, strict=True)
|
|
616 |
else:
|
|
617 |
datastrict = ReadOneLineFile(myfile, strict=True)
|
|
618 |
self.assertEqual(myline, datastrict)
|
|
619 |
|
|
620 |
|
544 |
621 |
class TestTimestampForFilename(unittest.TestCase):
|
545 |
622 |
def test(self):
|
546 |
623 |
self.assert_("." not in utils.TimestampForFilename())
|