Fix uninitialized file descriptor in CSV output

This commit is contained in:
Bastian Kleineidam 2009-06-18 19:59:54 +02:00
parent 561430f184
commit c3450c7924
4 changed files with 64 additions and 4 deletions

View file

@ -1,7 +1,10 @@
5.1 "Let the right one in" (released xx.03.2009)
5.1 "Let the right one in" (released xx.06.2009)
Fixes:
- logging: The content size of downloads is now shown again.
- logging: The CSV logger does not crash anymore when only parts
of log output was configured
Closes: SF bug #2806790
- http: Fixed persistent connection handling: retry connecting to HTTP
servers which close persistent connections unexpectedly.
- bookmarks: correctly read the bookmark title from Mozilla places.sqllite

View file

@ -63,6 +63,12 @@ class CSVLogger (Logger):
{'email': configuration.Email})
self.check_date()
self.flush()
else:
# write empty string to initialize file output
self.write(u"")
self.writer = csv.writer(self.fd, dialect='excel',
delimiter=self.separator, lineterminator=os.linesep,
quotechar=self.quotechar)
for s in (u"urlname",
u"parentname",
u"baseref",
@ -80,9 +86,6 @@ class CSVLogger (Logger):
u"cached"):
if self.has_part(s):
row.append(s)
self.writer = csv.writer(self.fd, dialect='excel',
delimiter=self.separator, lineterminator=os.linesep,
quotechar=self.quotechar)
if row:
self.writer.writerow(row)

16
tests/logger/__init__.py Normal file
View file

@ -0,0 +1,16 @@
# -*- coding: iso-8859-1 -*-
# Copyright (C) 2009 Bastian Kleineidam
#
# This program is free software; you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
# the Free Software Foundation; either version 2 of the License, or
# (at your option) any later version.
#
# This program is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
# GNU General Public License for more details.
#
# You should have received a copy of the GNU General Public License
# along with this program; if not, write to the Free Software
# Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.

View file

@ -0,0 +1,38 @@
# -*- coding: iso-8859-1 -*-
# Copyright (C) 2009 Bastian Kleineidam
#
# This program is free software; you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
# the Free Software Foundation; either version 2 of the License, or
# (at your option) any later version.
#
# This program is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
# GNU General Public License for more details.
#
# You should have received a copy of the GNU General Public License
# along with this program; if not, write to the Free Software
# Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
import unittest
import os
from linkcheck.logger.csvlog import CSVLogger
class TestCsvLogger (unittest.TestCase):
def test_parts (self):
args = dict(
filename = os.path.join(os.path.dirname(__file__), "testlog.csv"),
parts = ["realurl"],
fileoutput = 1,
separator = ";",
quotechar = '"',
)
logger = CSVLogger(**args)
try:
logger.start_output()
finally:
logger.end_output()
os.remove(args["filename"])