mirror of
https://github.com/Hopiu/linkchecker.git
synced 2026-04-21 06:41:00 +00:00
Fix uninitialized file descriptor in CSV output
This commit is contained in:
parent
561430f184
commit
c3450c7924
4 changed files with 64 additions and 4 deletions
|
|
@ -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
|
||||
|
|
|
|||
|
|
@ -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
16
tests/logger/__init__.py
Normal 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.
|
||||
38
tests/logger/test_csvlog.py
Normal file
38
tests/logger/test_csvlog.py
Normal 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"])
|
||||
Loading…
Reference in a new issue