Hello community,
here is the log from the commit of package python3-logilab-common for
openSUSE:Factory checked in at 2014-02-24 15:53:16
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/python3-logilab-common (Old)
and /work/SRC/openSUSE:Factory/.python3-logilab-common.new (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "python3-logilab-common"
Changes:
--------
---
/work/SRC/openSUSE:Factory/python3-logilab-common/python3-logilab-common.changes
2013-11-23 08:14:54.000000000 +0100
+++
/work/SRC/openSUSE:Factory/.python3-logilab-common.new/python3-logilab-common.changes
2014-02-24 15:53:17.000000000 +0100
@@ -1,0 +2,17 @@
+Mon Feb 24 10:40:11 UTC 2014 - [email protected]
+
+- Do not requires explicitely python3
+- Use source from indicated Url
+
+-------------------------------------------------------------------
+Sun Feb 23 16:55:55 UTC 2014 - [email protected]
+
+- update to version 0.61.0, below are the changed taken from Changelog
+ * pdf_ext: removed, it had no known users (CVE-2014-1838)
+ * shellutils: fix tempfile issue in Execute, and deprecate it
+ (CVE-2014-1839)
+ * pytest: use 'env' to run the python interpreter
+ * graph: ensure output is ordered on node and graph ids (#202314)
+
+
+-------------------------------------------------------------------
Old:
----
logilab-common-0.60.0.tar.gz
New:
----
logilab-common-0.61.0.tar.gz
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Other differences:
------------------
++++++ python3-logilab-common.spec ++++++
--- /var/tmp/diff_new_pack.rg3zQd/_old 2014-02-24 15:53:18.000000000 +0100
+++ /var/tmp/diff_new_pack.rg3zQd/_new 2014-02-24 15:53:18.000000000 +0100
@@ -1,7 +1,7 @@
#
# spec file for package python3-logilab-common
#
-# Copyright (c) 2013 SUSE LINUX Products GmbH, Nuernberg, Germany.
+# Copyright (c) 2014 SUSE LINUX Products GmbH, Nuernberg, Germany.
#
# All modifications and additions to the file contributed by third parties
# remain the property of their copyright owners, unless otherwise agreed
@@ -17,17 +17,15 @@
Name: python3-logilab-common
-Version: 0.60.0
+Version: 0.61.0
Release: 0
Url: http://www.logilab.org/projects/common/
Summary: Python lowlevel functionality shared by logilab projects
License: LGPL-2.1+
Group: Development/Languages/Python
Source:
http://download.logilab.org/pub/common/logilab-common-%{version}.tar.gz
-BuildRoot: %{_tmppath}/%{name}-%{version}-build
BuildRequires: python3-2to3
BuildRequires: python3-devel
-Requires: python3 >= %{py3_ver}
BuildArch: noarch
%description
++++++ logilab-common-0.60.0.tar.gz -> logilab-common-0.61.0.tar.gz ++++++
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/logilab-common-0.60.0/ChangeLog
new/logilab-common-0.61.0/ChangeLog
--- old/logilab-common-0.60.0/ChangeLog 2013-07-26 12:18:50.000000000 +0200
+++ new/logilab-common-0.61.0/ChangeLog 2014-02-11 16:02:26.000000000 +0100
@@ -1,6 +1,34 @@
ChangeLog for logilab.common
============================
+2014-02-11 -- 0.61.0
+ * pdf_ext: removed, it had no known users (CVE-2014-1838)
+
+ * shellutils: fix tempfile issue in Execute, and deprecate it
+ (CVE-2014-1839)
+
+ * pytest: use 'env' to run the python interpreter
+
+ * graph: ensure output is ordered on node and graph ids (#202314)
+
+
+2013-16-12 -- 0.60.1
+ * modutils:
+
+ * don't propagate IOError when package's __init__.py file doesn't
+ exist (#174606)
+
+ * ensure file is closed, may cause pb depending on the interpreter, eg
+ pypy) (#180876)
+
+ * fix support for `extend_path` based nested namespace packages ;
+ Report and patch by John Johnson (#177651)
+
+ * fix some cases of failing python3 install on windows platform / cross
+ compilation (#180836)
+
+
+
2013-07-26 -- 0.60.0
* configuration: rename option_name method into option_attrname (#140667)
@@ -8,10 +36,9 @@
* modutils:
- - fix typo causing name error in python3 / bad message in python2
+ - fix typo causing name error in python3 / bad message in python2
(#136037)
-
- - fix python3.3 crash in file_from_modpath due to implementation
+ - fix python3.3 crash in file_from_modpath due to implementation
change of imp.find_module wrt builtin modules (#137244)
* testlib: use assertCountEqual instead of
assertSameElements/assertItemsEqual
@@ -30,10 +57,9 @@
* registry:
- - select_or_none should not silent ObjectNotFound exception
+ - select_or_none should not silent ObjectNotFound exception
(closes #119819)
-
- - remove 2 accidentally introduced tabs breaking python 3 compat
+ - remove 2 accidentally introduced tabs breaking python 3 compat
(closes #117580)
* fix umessages test w/ python 3 and LC_ALL=C (closes #119967, report and
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/logilab-common-0.60.0/PKG-INFO
new/logilab-common-0.61.0/PKG-INFO
--- old/logilab-common-0.60.0/PKG-INFO 2013-07-26 12:18:55.000000000 +0200
+++ new/logilab-common-0.61.0/PKG-INFO 2014-02-11 16:02:31.000000000 +0100
@@ -1,6 +1,6 @@
Metadata-Version: 1.0
Name: logilab-common
-Version: 0.60.0
+Version: 0.61.0
Summary: collection of low-level Python packages and modules used by Logilab
projects
Home-page: http://www.logilab.org/project/logilab-common
Author: Logilab
@@ -131,8 +131,6 @@
* `hg`, some Mercurial_ utility functions.
- * `pdf_ext`, pdf and fdf file manipulations, with pdftk.
-
* `pyro_ext`, some Pyro_ utility functions.
* `sphinx_ext`, Sphinx_ plugin defining a `autodocstring` directive.
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/logilab-common-0.60.0/README
new/logilab-common-0.61.0/README
--- old/logilab-common-0.60.0/README 2013-07-26 12:18:50.000000000 +0200
+++ new/logilab-common-0.61.0/README 2014-02-11 16:02:26.000000000 +0100
@@ -123,8 +123,6 @@
* `hg`, some Mercurial_ utility functions.
-* `pdf_ext`, pdf and fdf file manipulations, with pdftk.
-
* `pyro_ext`, some Pyro_ utility functions.
* `sphinx_ext`, Sphinx_ plugin defining a `autodocstring` directive.
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/logilab-common-0.60.0/__pkginfo__.py
new/logilab-common-0.61.0/__pkginfo__.py
--- old/logilab-common-0.60.0/__pkginfo__.py 2013-07-26 12:18:50.000000000
+0200
+++ new/logilab-common-0.61.0/__pkginfo__.py 2014-02-11 16:02:26.000000000
+0100
@@ -25,7 +25,7 @@
subpackage_of = 'logilab'
subpackage_master = True
-numversion = (0, 60, 0)
+numversion = (0, 61, 0)
version = '.'.join([str(num) for num in numversion])
license = 'LGPL' # 2.1 or later
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/logilab-common-0.60.0/bin/pytest
new/logilab-common-0.61.0/bin/pytest
--- old/logilab-common-0.60.0/bin/pytest 2013-07-26 12:18:50.000000000
+0200
+++ new/logilab-common-0.61.0/bin/pytest 2014-02-11 16:02:26.000000000
+0100
@@ -1,4 +1,4 @@
-#!/usr/bin/python -u
+#!/usr/bin/env python
import warnings
warnings.simplefilter('default', DeprecationWarning)
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/logilab-common-0.60.0/date.py
new/logilab-common-0.61.0/date.py
--- old/logilab-common-0.60.0/date.py 2013-07-26 12:18:50.000000000 +0200
+++ new/logilab-common-0.61.0/date.py 2014-02-11 16:02:26.000000000 +0100
@@ -188,8 +188,8 @@
end = todate(end)
if incmonth:
while begin < end:
- begin = next_month(begin, incmonth)
yield begin
+ begin = next_month(begin, incmonth)
else:
incr = get_step(begin, incday or 1)
while begin < end:
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/logilab-common-0.60.0/deprecation.py
new/logilab-common-0.61.0/deprecation.py
--- old/logilab-common-0.60.0/deprecation.py 2013-07-26 12:18:50.000000000
+0200
+++ new/logilab-common-0.61.0/deprecation.py 2014-02-11 16:02:26.000000000
+0100
@@ -80,7 +80,7 @@
if '%s' in message:
message %= func.func_name
def wrapped(*args, **kwargs):
- self.warn(version, message, stacklevel)
+ self.warn(version, message, stacklevel+1)
return func(*args, **kwargs)
return wrapped
return decorator
@@ -92,7 +92,7 @@
def __call__(cls, *args, **kwargs):
msg = getattr(cls, "__deprecation_warning__",
"%(cls)s is deprecated") % {'cls': cls.__name__}
- self.warn(version, msg)
+ self.warn(version, msg, stacklevel=3)
return type.__call__(cls, *args, **kwargs)
return metaclass
@@ -129,7 +129,7 @@
"""FIXME: There might be a better way to handle old/new-style
class
"""
def __init__(self, *args, **kwargs):
- self.warn(version, message)
+ self.warn(version, message, stacklevel=3)
new_class.__init__(self, *args, **kwargs)
return DeprecatedClass
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/logilab-common-0.60.0/graph.py
new/logilab-common-0.61.0/graph.py
--- old/logilab-common-0.60.0/graph.py 2013-07-26 12:18:50.000000000 +0200
+++ new/logilab-common-0.61.0/graph.py 2014-02-11 16:02:26.000000000 +0100
@@ -134,14 +134,14 @@
"""
attrs = ['%s="%s"' % (prop, value) for prop, value in props.items()]
n_from, n_to = normalize_node_id(name1), normalize_node_id(name2)
- self.emit('%s -> %s [%s];' % (n_from, n_to, ", ".join(attrs)) )
+ self.emit('%s -> %s [%s];' % (n_from, n_to, ', '.join(sorted(attrs))) )
def emit_node(self, name, **props):
"""emit a node with given properties.
node properties: see http://www.graphviz.org/doc/info/attrs.html
"""
attrs = ['%s="%s"' % (prop, value) for prop, value in props.items()]
- self.emit('%s [%s];' % (normalize_node_id(name), ", ".join(attrs)))
+ self.emit('%s [%s];' % (normalize_node_id(name), ',
'.join(sorted(attrs))))
def normalize_node_id(nid):
"""Returns a suitable DOT node id for `nid`."""
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/logilab-common-0.60.0/modutils.py
new/logilab-common-0.61.0/modutils.py
--- old/logilab-common-0.60.0/modutils.py 2013-07-26 12:18:50.000000000
+0200
+++ new/logilab-common-0.61.0/modutils.py 2014-02-11 16:02:26.000000000
+0100
@@ -27,6 +27,8 @@
:type BUILTIN_MODULES: dict
:var BUILTIN_MODULES: dictionary with builtin module names has key
"""
+from __future__ import with_statement
+
__docformat__ = "restructuredtext en"
import sys
@@ -656,14 +658,19 @@
'.'.join(imported)))
# XXX guess if package is using pkgutil.extend_path by looking for
# those keywords in the first four Kbytes
- data = open(join(mp_filename, '__init__.py')).read(4096)
- if 'pkgutil' in data and 'extend_path' in data:
- # extend_path is called, search sys.path for module/packages
of this name
- # see pkgutil.extend_path documentation
- path = [join(p, modname) for p in sys.path
- if isdir(join(p, modname))]
- else:
+ try:
+ with open(join(mp_filename, '__init__.py')) as stream:
+ data = stream.read(4096)
+ except IOError:
path = [mp_filename]
+ else:
+ if 'pkgutil' in data and 'extend_path' in data:
+ # extend_path is called, search sys.path for
module/packages
+ # of this name see pkgutil.extend_path documentation
+ path = [join(p, *imported) for p in sys.path
+ if isdir(join(p, *imported))]
+ else:
+ path = [mp_filename]
return mtype, mp_filename
def _is_python_file(filename):
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/logilab-common-0.60.0/pdf_ext.py
new/logilab-common-0.61.0/pdf_ext.py
--- old/logilab-common-0.60.0/pdf_ext.py 2013-07-26 12:18:50.000000000
+0200
+++ new/logilab-common-0.61.0/pdf_ext.py 1970-01-01 01:00:00.000000000
+0100
@@ -1,111 +0,0 @@
-# copyright 2003-2011 LOGILAB S.A. (Paris, FRANCE), all rights reserved.
-# contact http://www.logilab.fr/ -- mailto:[email protected]
-#
-# This file is part of logilab-common.
-#
-# logilab-common is free software: you can redistribute it and/or modify it
under
-# the terms of the GNU Lesser General Public License as published by the Free
-# Software Foundation, either version 2.1 of the License, or (at your option)
any
-# later version.
-#
-# logilab-common 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 Lesser General Public License for more
-# details.
-#
-# You should have received a copy of the GNU Lesser General Public License
along
-# with logilab-common. If not, see <http://www.gnu.org/licenses/>.
-"""Manipulate pdf and fdf files (pdftk recommended).
-
-Notes regarding pdftk, pdf forms and fdf files (form definition file)
-fields names can be extracted with:
-
- pdftk orig.pdf generate_fdf output truc.fdf
-
-to merge fdf and pdf:
-
- pdftk orig.pdf fill_form test.fdf output result.pdf [flatten]
-
-without flatten, one could further edit the resulting form.
-with flatten, everything is turned into text.
-
-
-
-
-"""
-__docformat__ = "restructuredtext en"
-# XXX seems very unix specific
-# TODO: check availability of pdftk at import
-
-
-import os
-
-HEAD="""%FDF-1.2
-%\xE2\xE3\xCF\xD3
-1 0 obj
-<<
-/FDF
-<<
-/Fields [
-"""
-
-TAIL="""]
->>
->>
-endobj
-trailer
-
-<<
-/Root 1 0 R
->>
-%%EOF
-"""
-
-def output_field( f ):
- return "\xfe\xff" + "".join( [ "\x00"+c for c in f ] )
-
-def extract_keys(lines):
- keys = []
- for line in lines:
- if line.startswith('/V'):
- pass #print 'value',line
- elif line.startswith('/T'):
- key = line[7:-2]
- key = ''.join(key.split('\x00'))
- keys.append( key )
- return keys
-
-def write_field(out, key, value):
- out.write("<<\n")
- if value:
- out.write("/V (%s)\n" %value)
- else:
- out.write("/V /\n")
- out.write("/T (%s)\n" % output_field(key) )
- out.write(">> \n")
-
-def write_fields(out, fields):
- out.write(HEAD)
- for (key, value, comment) in fields:
- write_field(out, key, value)
- write_field(out, key+"a", value) # pour copie-carbone sur autres pages
- out.write(TAIL)
-
-def extract_keys_from_pdf(filename):
- # what about using 'pdftk filename dump_data_fields' and parsing the
output ?
- os.system('pdftk %s generate_fdf output /tmp/toto.fdf' % filename)
- lines = file('/tmp/toto.fdf').readlines()
- return extract_keys(lines)
-
-
-def fill_pdf(infile, outfile, fields):
- write_fields(file('/tmp/toto.fdf', 'w'), fields)
- os.system('pdftk %s fill_form /tmp/toto.fdf output %s flatten' % (infile,
outfile))
-
-def testfill_pdf(infile, outfile):
- keys = extract_keys_from_pdf(infile)
- fields = []
- for key in keys:
- fields.append( (key, key, '') )
- fill_pdf(infile, outfile, fields)
-
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/logilab-common-0.60.0/setup.py
new/logilab-common-0.61.0/setup.py
--- old/logilab-common-0.60.0/setup.py 2013-07-26 12:18:50.000000000 +0200
+++ new/logilab-common-0.61.0/setup.py 2014-02-11 16:02:26.000000000 +0100
@@ -139,11 +139,12 @@
shutil.copytree(directory, dest)
if sys.version_info >= (3, 0):
# process manually python file in include_dirs (test data)
- from subprocess import check_call
+ from distutils.util import run_2to3
# brackets are NOT optional here for py3k compat
print('running 2to3 on', dest)
- # Needs `shell=True` to run on Windows.
- check_call(['2to3', '-wn', dest],
shell=sys.platform=='win32')
+ run_2to3([dest])
+
+
def install(**kwargs):
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/logilab-common-0.60.0/shellutils.py
new/logilab-common-0.61.0/shellutils.py
--- old/logilab-common-0.60.0/shellutils.py 2013-07-26 12:18:50.000000000
+0200
+++ new/logilab-common-0.61.0/shellutils.py 2014-02-11 16:02:26.000000000
+0100
@@ -31,11 +31,13 @@
import errno
import string
import random
+import subprocess
from os.path import exists, isdir, islink, basename, join
from logilab.common import STD_BLACKLIST, _handle_blacklist
from logilab.common.compat import raw_input
from logilab.common.compat import str_to_bytes
+from logilab.common.deprecation import deprecated
try:
from logilab.common.proc import ProcInfo, NoSuchProcess
@@ -224,20 +226,17 @@
outfile.write(zfobj.read(name))
outfile.close()
+@deprecated('Use subprocess.Popen instead')
class Execute:
"""This is a deadlock safe version of popen2 (no stdin), that returns
an object with errorlevel, out and err.
"""
def __init__(self, command):
- outfile = tempfile.mktemp()
- errfile = tempfile.mktemp()
- self.status = os.system("( %s ) >%s 2>%s" %
- (command, outfile, errfile)) >> 8
- self.out = open(outfile, "r").read()
- self.err = open(errfile, "r").read()
- os.remove(outfile)
- os.remove(errfile)
+ cmd = subprocess.Popen(command, shell=True, stdout=subprocess.PIPE,
stderr=subprocess.PIPE)
+ self.out, self.err = cmd.communicate()
+ self.status = os.WEXITSTATUS(cmd.returncode)
+
def acquire_lock(lock_file, max_try=10, delay=10, max_delay=3600):
"""Acquire a lock represented by a file on the file system
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/logilab-common-0.60.0/table.py
new/logilab-common-0.61.0/table.py
--- old/logilab-common-0.60.0/table.py 2013-07-26 12:18:50.000000000 +0200
+++ new/logilab-common-0.61.0/table.py 2014-02-11 16:02:26.000000000 +0100
@@ -48,6 +48,8 @@
else:
return list(self) == list(other)
+ __hash__ = object.__hash__
+
def __ne__(self, other):
return not self == other
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/logilab-common-0.60.0/tasksqueue.py
new/logilab-common-0.61.0/tasksqueue.py
--- old/logilab-common-0.60.0/tasksqueue.py 2013-07-26 12:18:50.000000000
+0200
+++ new/logilab-common-0.61.0/tasksqueue.py 2014-02-11 16:02:26.000000000
+0100
@@ -94,5 +94,7 @@
def __eq__(self, other):
return self.id == other.id
+ __hash__ = object.__hash__
+
def merge(self, other):
pass
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/logilab-common-0.60.0/test/unittest_configuration.py
new/logilab-common-0.61.0/test/unittest_configuration.py
--- old/logilab-common-0.60.0/test/unittest_configuration.py 2013-07-26
12:18:50.000000000 +0200
+++ new/logilab-common-0.61.0/test/unittest_configuration.py 2014-02-11
16:02:26.000000000 +0100
@@ -18,6 +18,7 @@
import tempfile
import os
from os.path import join, dirname, abspath
+import re
from cStringIO import StringIO
from sys import version_info
@@ -32,13 +33,13 @@
OPTIONS = [('dothis', {'type':'yn', 'action': 'store', 'default': True,
'metavar': '<y or n>'}),
('value', {'type': 'string', 'metavar': '<string>', 'short': 'v'}),
- ('multiple', {'type': 'csv', 'default': ('yop', 'yep'),
+ ('multiple', {'type': 'csv', 'default': ['yop', 'yep'],
'metavar': '<comma separated values>',
'help': 'you can also document the option'}),
('number', {'type': 'int', 'default':2, 'metavar':'<int>', 'help':
'boom'}),
('choice', {'type': 'choice', 'default':'yo', 'choices': ('yo',
'ye'),
'metavar':'<yo|ye>'}),
- ('multiple-choice', {'type': 'multiple_choice', 'default':('yo',
'ye'),
+ ('multiple-choice', {'type': 'multiple_choice', 'default':['yo',
'ye'],
'choices': ('yo', 'ye', 'yu', 'yi', 'ya'),
'metavar':'<yo|ye>'}),
('named', {'type':'named', 'default':Method('get_named'),
@@ -63,10 +64,10 @@
cfg = self.cfg
self.assertEqual(cfg['dothis'], True)
self.assertEqual(cfg['value'], None)
- self.assertEqual(cfg['multiple'], ('yop', 'yep'))
+ self.assertEqual(cfg['multiple'], ['yop', 'yep'])
self.assertEqual(cfg['number'], 2)
self.assertEqual(cfg['choice'], 'yo')
- self.assertEqual(cfg['multiple-choice'], ('yo', 'ye'))
+ self.assertEqual(cfg['multiple-choice'], ['yo', 'ye'])
self.assertEqual(cfg['named'], {'key': 'val'})
def test_base(self):
@@ -207,9 +208,12 @@
f = tempfile.mktemp()
stream = open(f, 'w')
try:
+ self.cfg['dothis'] = False
+ self.cfg['multiple'] = ["toto", "tata"]
+ self.cfg['number'] = 3
cfg.generate_config(stream)
stream.close()
- new_cfg = MyConfiguration(name='testloop', options=OPTIONS)
+ new_cfg = MyConfiguration(name='test', options=OPTIONS)
new_cfg.load_file_configuration(f)
self.assertEqual(cfg['dothis'], new_cfg['dothis'])
self.assertEqual(cfg['multiple'], new_cfg['multiple'])
@@ -234,18 +238,19 @@
# it is not unlikely some optik/optparse versions do print -v<string>
# so accept both
help = help.replace(' -v <string>, ', ' -v<string>, ')
+ help = re.sub('[ ]*(\r?\n)', '\\1', help)
USAGE = """Usage: Just do it ! (tm)
Options:
-h, --help show this help message and exit
- --dothis=<y or n>
+ --dothis=<y or n>
-v<string>, --value=<string>
--multiple=<comma separated values>
you can also document the option [current: yop,yep]
--number=<int> boom [current: 2]
- --choice=<yo|ye>
+ --choice=<yo|ye>
--multiple-choice=<yo|ye>
- --named=<key=val>
+ --named=<key=val>
Agroup:
--diffgroup=<key=val>
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/logilab-common-0.60.0/test/unittest_date.py
new/logilab-common-0.61.0/test/unittest_date.py
--- old/logilab-common-0.60.0/test/unittest_date.py 2013-07-26
12:18:50.000000000 +0200
+++ new/logilab-common-0.61.0/test/unittest_date.py 2014-02-11
16:02:26.000000000 +0100
@@ -138,6 +138,13 @@
date = ticks2datetime(ticks)
self.assertEqual(ustrftime(date, '%Y-%m-%d'), u'1899-12-31')
+ def test_month(self):
+ """enumerate months"""
+ r = list(date_range(self.datecls(2006, 5, 6), self.datecls(2006, 8,
27),
+ incmonth=True))
+ expected = [self.datecls(2006, 5, 6), self.datecls(2006, 6, 1),
self.datecls(2006, 7, 1), self.datecls(2006, 8, 1)]
+ self.assertListEqual(expected, r)
+
class MxDateTC(DateTC):
datecls = mxDate
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/logilab-common-0.60.0/testlib.py
new/logilab-common-0.61.0/testlib.py
--- old/logilab-common-0.60.0/testlib.py 2013-07-26 12:18:50.000000000
+0200
+++ new/logilab-common-0.61.0/testlib.py 2014-02-11 16:02:26.000000000
+0100
@@ -550,6 +550,9 @@
func(*args, **kwargs)
except (KeyboardInterrupt, SystemExit):
raise
+ except unittest.SkipTest, e:
+ self._addSkip(result, str(e))
+ return False
except:
result.addError(self, self.__exc_info())
return False
@@ -1187,6 +1190,9 @@
assertItemsEqual = unittest.TestCase.assertCountEqual
else:
assertCountEqual = unittest.TestCase.assertItemsEqual
+ if sys.version_info < (2,7):
+ def assertIsNotNone(self, value, *args, **kwargs):
+ self.assertNotEqual(None, value, *args, **kwargs)
TestCase.assertItemsEqual = deprecated('assertItemsEqual is deprecated, use
assertCountEqual')(
TestCase.assertItemsEqual)
--
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]