]> git.k1024.org Git - pylibacl.git/log
pylibacl.git
3 years agoReplace travis badge with github actions one in README
Iustin Pop [Sat, 5 Jun 2021 17:55:52 +0000 (19:55 +0200)]
Replace travis badge with github actions one in README

3 years agoRemove travis config
Iustin Pop [Sat, 5 Jun 2021 17:55:05 +0000 (19:55 +0200)]
Remove travis config

3 years agoAdd GitHub Actions workflow
Iustin Pop [Sat, 5 Jun 2021 17:49:16 +0000 (19:49 +0200)]
Add GitHub Actions workflow

3 years agoFix download link http→https
Iustin Pop [Sat, 5 Jun 2021 17:40:02 +0000 (19:40 +0200)]
Fix download link http→https

3 years agoMinor tweak in README syntax
Iustin Pop [Sat, 5 Jun 2021 17:39:11 +0000 (19:39 +0200)]
Minor tweak in README syntax

3 years agoStore doc/readme and doc/news in git
Iustin Pop [Sun, 6 Dec 2020 14:04:25 +0000 (15:04 +0100)]
Store doc/readme and doc/news in git

… instead of always re-creating them. This is in an attempt to make
readthedocs work, since it can't run builds, I think.

3 years agoTest 'filedef' arguments for all supported types
Iustin Pop [Sun, 6 Dec 2020 13:56:45 +0000 (14:56 +0100)]
Test 'filedef' arguments for all supported types

Support for unicode/bytes/path objects for filedef was introduced way
back in 707c0d4a, but was not tested across all of these. Let's test
all of these.

Found while investigating #16.

3 years agoBump version number for new release v0.6.0
Iustin Pop [Sun, 29 Nov 2020 01:42:39 +0000 (02:42 +0100)]
Bump version number for new release

This was left as unreleased for a year now, way past time to release.

3 years agoRun local tests with Py3.9 too
Iustin Pop [Sun, 29 Nov 2020 01:36:04 +0000 (02:36 +0100)]
Run local tests with Py3.9 too

4 years agoTravis: add python-3.9-dev build
Iustin Pop [Fri, 19 Jun 2020 22:58:06 +0000 (00:58 +0200)]
Travis: add python-3.9-dev build

4 years agoMerge remote-tracking branch 'github/master'
Iustin Pop [Fri, 19 Jun 2020 22:49:21 +0000 (00:49 +0200)]
Merge remote-tracking branch 'github/master'

4 years agoRemove the PyType_Type assignments to _Type objects
Iustin Pop [Fri, 19 Jun 2020 22:47:09 +0000 (00:47 +0200)]
Remove the PyType_Type assignments to _Type objects

Newer docs (since 3.5, which is what Travis tests) don't have this
anymore, only tp_new setting. tp_new is set directly in the type
objects, so it looks like this is not needed anymore. And it should
fix nightly testing, hopefully.

4 years agoFix typo: HAVEL_LEVEL2
Enji Cooper [Thu, 9 Apr 2020 04:21:19 +0000 (21:21 -0700)]
Fix typo: HAVEL_LEVEL2

This change initializes the `entry_id` to `ACL_FIRST_ENTRY` when `ACL`
objects are created.

Signed-off-by: Enji Cooper <yaneurabeya@gmail.com>
4 years agoACL init: only define the extra variables when needed
Iustin Pop [Tue, 17 Dec 2019 00:13:54 +0000 (01:13 +0100)]
ACL init: only define the extra variables when needed

This should show fewer (well, none hopefully) compiler warnings on
non-Linux platforms.

4 years agoFix bug in ACL(filedef=...) constructor
Iustin Pop [Mon, 16 Dec 2019 23:52:42 +0000 (00:52 +0100)]
Fix bug in ACL(filedef=...) constructor

Only found by python3.7-dgb, the 3.8 one ignored this. 'path' is a
'char*', we can't decref it, the proper one to decref is the actual
filedef PyBytes object.

Sigh :(

4 years agoFix one more unclean EQ assert…
Iustin Pop [Wed, 11 Dec 2019 20:53:33 +0000 (21:53 +0100)]
Fix one more unclean EQ assert…

4 years agoEnsure ACL EQ checks not called for non-Linux
Iustin Pop [Wed, 11 Dec 2019 20:51:27 +0000 (21:51 +0100)]
Ensure ACL EQ checks not called for non-Linux

… via a helper assert function. Not best because context is a bit
muddled, but fortunately pytest shows nice call stack.

4 years agoFix a test function name
Iustin Pop [Wed, 11 Dec 2019 20:51:11 +0000 (21:51 +0100)]
Fix a test function name

Bad copy-pasta…

4 years agoTests: replace two mode= uses with text=
Iustin Pop [Wed, 11 Dec 2019 20:40:37 +0000 (21:40 +0100)]
Tests: replace two mode= uses with text=

The text=… argument is supported more widely (e.g. FreeBSD doesn't
support mode), so let's use that in tests for better coverage on
multiple platforms.

4 years agoRemove obsolete check for non-initialised Entry
Iustin Pop [Wed, 11 Dec 2019 20:30:12 +0000 (21:30 +0100)]
Remove obsolete check for non-initialised Entry

Today, objects are always initialised, so this check is superfluous,
and the get_tag_qualifier will properly handle errors from acl_*
functions, so even if that invariant is actually violated, this will
not lead to undefined behaviour.

4 years agoRemove forgotten debug statement
Iustin Pop [Wed, 11 Dec 2019 20:26:59 +0000 (21:26 +0100)]
Remove forgotten debug statement

Oops :)

4 years agoAdd file path to error message on ACL initialisation
Iustin Pop [Wed, 11 Dec 2019 20:18:46 +0000 (21:18 +0100)]
Add file path to error message on ACL initialisation

4 years agoFix yet another bug in ACL re-inistialisation
Iustin Pop [Wed, 11 Dec 2019 20:04:42 +0000 (21:04 +0100)]
Fix yet another bug in ACL re-inistialisation

4 years agoImplement creating an ACL directly from serialised form
Iustin Pop [Wed, 11 Dec 2019 19:50:55 +0000 (20:50 +0100)]
Implement creating an ACL directly from serialised form

4 years agoSmall simplification in ACL_init
Iustin Pop [Wed, 11 Dec 2019 19:20:46 +0000 (20:20 +0100)]
Small simplification in ACL_init

4 years agoAdd a test for __setstate__ arguments
Iustin Pop [Thu, 5 Dec 2019 20:32:02 +0000 (21:32 +0100)]
Add a test for __setstate__ arguments

4 years agoMake the code Py_ssize_t clean
Iustin Pop [Thu, 5 Dec 2019 20:31:42 +0000 (21:31 +0100)]
Make the code Py_ssize_t clean

Thanks python 3.8 for the hint!

4 years agoChange setstate to only take bytes
Iustin Pop [Thu, 5 Dec 2019 20:28:36 +0000 (21:28 +0100)]
Change setstate to only take bytes

This is the recommended way (well, via Py_buffer, but I don't need
that).

4 years agoMove a few tests from explicit loop to parameters
Iustin Pop [Wed, 4 Dec 2019 23:26:12 +0000 (00:26 +0100)]
Move a few tests from explicit loop to parameters

Failure messages should be more better in failure case.

4 years agoFix from_acl tests for non-Linux platforms
Iustin Pop [Tue, 3 Dec 2019 23:50:57 +0000 (00:50 +0100)]
Fix from_acl tests for non-Linux platforms

FreeBSD doesn't have acl_cmp, so comparison via rich compare is not
defined, thus all comparisons are False. Fix tests so the equality
check is only done on Linux, and add a poor man's test via string
representation equality.

4 years agoChange entry qualifier set/get behaviour
Iustin Pop [Tue, 3 Dec 2019 23:35:33 +0000 (00:35 +0100)]
Change entry qualifier set/get behaviour

This was intended to address #13, but investigation found out more
breakage than just that. It's hard to make overflow/underflow tests
without assuming the signedness of the uid_t/gid_t types, so
assume/require that they're unsigned (it is true with glibc, MacOS and
FreeBSD) and use this to improve the behaviour:

- Fix setting very large qualifiers, both in the sense of correctly
  reporting overflow when too large, and not longer falsely reporting
  overflow for larger than signed max but smaller than unsigned max;
- Fix returning very large (larger than signed max value) qualifiers;

Fixes #13.

4 years agoMinor change on how error handling style in ACL_init
Iustin Pop [Sat, 30 Nov 2019 15:58:31 +0000 (16:58 +0100)]
Minor change on how error handling style in ACL_init

4 years agoRemove doc/news.rst from git
Iustin Pop [Sat, 30 Nov 2019 15:57:45 +0000 (16:57 +0100)]
Remove doc/news.rst from git

Forgot to do this when changed readme. It is now symlinked at build
time.

4 years agoConvert ACL initialisation to allow file-path objects as well
Iustin Pop [Fri, 29 Nov 2019 19:28:41 +0000 (20:28 +0100)]
Convert ACL initialisation to allow file-path objects as well

This is easier than in has_extended, as we can directly use the
converter. Yay!

4 years agoConvert the README to markdown
Iustin Pop [Fri, 29 Nov 2019 19:06:42 +0000 (20:06 +0100)]
Convert the README to markdown

Yay, 2019.

4 years agoAdd stub type hints - even if not working
Iustin Pop [Fri, 29 Nov 2019 18:55:09 +0000 (19:55 +0100)]
Add stub type hints - even if not working

Apparently PEP561 only addresses packages, not modules, and somewhat
dismissively says: "code should be refactored into a package-based
distribution and indicate that the package supports typing as
described above".

Well, locally I can use it, so let's add the stub. Will see later if
it can be used somehow.

4 years agoFix tests path in MANIFEST.in
Iustin Pop [Fri, 29 Nov 2019 16:22:10 +0000 (17:22 +0100)]
Fix tests path in MANIFEST.in

4 years agoAdd type: ignore to tests where we force bad behaviour
Iustin Pop [Fri, 29 Nov 2019 16:19:41 +0000 (17:19 +0100)]
Add type: ignore to tests where we force bad behaviour

4 years agoAdd trove classifiers and project urls
Iustin Pop [Fri, 29 Nov 2019 15:33:03 +0000 (16:33 +0100)]
Add trove classifiers and project urls

4 years agoAnother xfail test
Iustin Pop [Fri, 29 Nov 2019 15:32:07 +0000 (16:32 +0100)]
Another xfail test

4 years agoSimplify ACL.append to not duplicate Entry creation
Iustin Pop [Fri, 29 Nov 2019 15:08:37 +0000 (16:08 +0100)]
Simplify ACL.append to not duplicate Entry creation

Similar to the pattern for Entry.permset, this removes the duplication
with the (child object) init.

4 years agoAdd xfail test for equiv mode failures
Iustin Pop [Fri, 29 Nov 2019 14:59:51 +0000 (15:59 +0100)]
Add xfail test for equiv mode failures

Sigh, another bug in upstream library.

4 years agoRaise better error message on un-owned but valid Entry deletion
Iustin Pop [Fri, 29 Nov 2019 14:53:48 +0000 (15:53 +0100)]
Raise better error message on un-owned but valid Entry deletion

4 years agoSimplify returning None
Iustin Pop [Fri, 29 Nov 2019 14:48:27 +0000 (15:48 +0100)]
Simplify returning None

4 years agoSwitch ACL to be always-initialised
Iustin Pop [Fri, 29 Nov 2019 14:42:42 +0000 (15:42 +0100)]
Switch ACL to be always-initialised

This is the last object to change, but the semantics here are more
complex. Since the ACL doesn't have a parent, and the init signature
is complex, we can't detect "same-reinit", we allow arbitrary-reinit,
but this makes existing live entries be undefined; they might point to
a different entry in the new ACL, or not be valid, etc.

It could be possible to prevent re-init, but doing so requires
trickery which might be broken by serialisation, so let's just leave
it there and document it as such.

4 years agoApply no-unitialised-objects to Permset as well
Iustin Pop [Fri, 29 Nov 2019 14:01:41 +0000 (15:01 +0100)]
Apply no-unitialised-objects to Permset as well

This had no checks at all (Entry has one check) on attribute access.

4 years agoStop duplicating permset initialisation
Iustin Pop [Fri, 29 Nov 2019 13:54:23 +0000 (14:54 +0100)]
Stop duplicating permset initialisation

A permset can be initalised either via `__init__ ` or by getting
`parent.permset` getter. The latter duplicates the logic in the
former, which is not good as hacks into the internals of the permset.

Remove the duplication by just calling explicitly permset(self) and
returning the value of it.

4 years agoExpand acl_check testing for actual value checks
Iustin Pop [Fri, 29 Nov 2019 13:36:29 +0000 (14:36 +0100)]
Expand acl_check testing for actual value checks

This actually tests upstream, but just "assert a.check()/not
a.check()" seems too little.

4 years agoRestore setstate/getstate support
Iustin Pop [Fri, 29 Nov 2019 13:35:11 +0000 (14:35 +0100)]
Restore setstate/getstate support

Sigh, another brown-bag issue. One small typo in a place, plus a
missing macro, and this went unseen for ages.

Also add a basic test for it. Probably should add Pickle as well.

4 years agoSlightly expand the NEWS file
Iustin Pop [Fri, 29 Nov 2019 13:32:10 +0000 (14:32 +0100)]
Slightly expand the NEWS file

4 years agoChange Entry initialisation protocol
Iustin Pop [Fri, 29 Nov 2019 13:28:06 +0000 (14:28 +0100)]
Change Entry initialisation protocol

This fixes very large and significant bugs - segfaults and memory
leaks - that were present for uninitialised object, more precisely
created but not init'ed ones.

I spent quite a bit of time thinking back on forth how to fix this,
and from the two options of:

- check initialised status on all code paths, or
- don't ever allow invalid/un-initialised objects

The latter one seems the correct one, even though the Python C API
docs imply that doing actual stuff in `__new__` should be "rare".

Tests for reference leaks and wrong re-init added as well; these would
have caught at least memory leaks before.

4 years agoStandardise on capitalised error messages
Iustin Pop [Fri, 29 Nov 2019 13:20:46 +0000 (14:20 +0100)]
Standardise on capitalised error messages

For good or worse, but at least standard.

4 years agoUnify attribute deletion checks for Entry
Iustin Pop [Fri, 29 Nov 2019 13:20:11 +0000 (14:20 +0100)]
Unify attribute deletion checks for Entry

4 years agoReduce verbosity in fast-tests
Iustin Pop [Fri, 29 Nov 2019 13:14:55 +0000 (14:14 +0100)]
Reduce verbosity in fast-tests

Otherwise compilation issues are missed.

4 years agoCleanup py2-compatibility 'except' syntax
Iustin Pop [Fri, 29 Nov 2019 03:11:43 +0000 (04:11 +0100)]
Cleanup py2-compatibility 'except' syntax

4 years agoRemove tests/__init__.py as not needed with pytest
Iustin Pop [Fri, 29 Nov 2019 02:52:23 +0000 (03:52 +0100)]
Remove tests/__init__.py as not needed with pytest

4 years agoInclude filename in exceptions raised in delete_default
Iustin Pop [Fri, 29 Nov 2019 01:20:58 +0000 (02:20 +0100)]
Include filename in exceptions raised in delete_default

And add test for failure.

4 years agoAdd tests for a few IO failures
Iustin Pop [Wed, 27 Nov 2019 22:20:57 +0000 (23:20 +0100)]
Add tests for a few IO failures

Marginal test coverage increase, but checks that we do raise IOError
as expected.

4 years agoAdd pathlib support in apply_to and has_extended
Iustin Pop [Wed, 27 Nov 2019 22:04:05 +0000 (23:04 +0100)]
Add pathlib support in apply_to and has_extended

This is done by switching these functions to PyUnicode_FSConverter,
thus removing a chunk of custom, and probably buggy, code. Easier to
read as well…

4 years agoAdd more test infrastructure for parameterisation
Iustin Pop [Wed, 27 Nov 2019 21:30:20 +0000 (22:30 +0100)]
Add more test infrastructure for parameterisation

Not sure how much will be used yet…

4 years agoPy3 cleanup for the module itself
Iustin Pop [Wed, 27 Nov 2019 21:01:24 +0000 (22:01 +0100)]
Py3 cleanup for the module itself

4 years agoAdd no external to coverage target
Iustin Pop [Wed, 27 Nov 2019 20:52:41 +0000 (21:52 +0100)]
Add no external to coverage target

4 years agotests: Py3 cleanup
Iustin Pop [Wed, 27 Nov 2019 20:41:45 +0000 (21:41 +0100)]
tests: Py3 cleanup

4 years agoA bit more tests
Iustin Pop [Wed, 27 Nov 2019 20:40:28 +0000 (21:40 +0100)]
A bit more tests

4 years agoConvert TestModification to pytest
Iustin Pop [Wed, 27 Nov 2019 20:33:23 +0000 (21:33 +0100)]
Convert TestModification to pytest

And that was the last one…

4 years agoOne more makefile test target
Iustin Pop [Wed, 27 Nov 2019 20:32:17 +0000 (21:32 +0100)]
One more makefile test target

4 years agoStop testing with pypy2
Iustin Pop [Wed, 27 Nov 2019 08:39:56 +0000 (09:39 +0100)]
Stop testing with pypy2

Broken already :)

4 years agoStandardise skip-on-pypy decorator
Iustin Pop [Wed, 27 Nov 2019 08:35:36 +0000 (09:35 +0100)]
Standardise skip-on-pypy decorator

4 years agoConvert AclExtensions to pytest
Iustin Pop [Tue, 26 Nov 2019 23:22:07 +0000 (00:22 +0100)]
Convert AclExtensions to pytest

4 years agoConvert WriteTests to pytest
Iustin Pop [Tue, 26 Nov 2019 22:54:51 +0000 (23:54 +0100)]
Convert WriteTests to pytest

4 years agoSwitch LoadTests to pytest
Iustin Pop [Tue, 26 Nov 2019 22:50:25 +0000 (23:50 +0100)]
Switch LoadTests to pytest

4 years agotests: add helper functions/fixtures
Iustin Pop [Tue, 26 Nov 2019 22:42:32 +0000 (23:42 +0100)]
tests: add helper functions/fixtures

4 years agoSwitch travis to pytest as well
Iustin Pop [Tue, 26 Nov 2019 22:57:49 +0000 (23:57 +0100)]
Switch travis to pytest as well

4 years agoSwitch to running tests via pytest
Iustin Pop [Tue, 26 Nov 2019 22:41:42 +0000 (23:41 +0100)]
Switch to running tests via pytest

This doesn't change the test code, just the runner (for now).

4 years agoStop supporting Python 2
Iustin Pop [Tue, 26 Nov 2019 22:40:16 +0000 (23:40 +0100)]
Stop supporting Python 2

This just changes the documentation and stop testing with Python
2. Future patches will actually drop compatibility.

4 years agoAdd a fast-test target
Iustin Pop [Tue, 26 Nov 2019 21:42:51 +0000 (22:42 +0100)]
Add a fast-test target

4 years agoRename test/ → tests/
Iustin Pop [Tue, 26 Nov 2019 21:41:20 +0000 (22:41 +0100)]
Rename test/ → tests/

More consistency between my packages.

4 years agoRun local tests with 3.8 as well
Iustin Pop [Tue, 26 Nov 2019 21:23:10 +0000 (22:23 +0100)]
Run local tests with 3.8 as well

4 years agoAdd a distcheck target
Iustin Pop [Tue, 26 Nov 2019 21:22:51 +0000 (22:22 +0100)]
Add a distcheck target

4 years agoTravis: test python 3.7 and 3.8 in standard way
Iustin Pop [Sun, 24 Nov 2019 14:39:25 +0000 (15:39 +0100)]
Travis: test python 3.7 and 3.8 in standard way

This removes the hack for python 3.7, and add 3.8 as well.

4 years agoExport coverage results to codecov as well
Iustin Pop [Sun, 24 Nov 2019 14:36:29 +0000 (15:36 +0100)]
Export coverage results to codecov as well

And also move the env var to just the coveralls invocation.

4 years agoBadge-ify the README
Iustin Pop [Sat, 23 Nov 2019 00:14:37 +0000 (01:14 +0100)]
Badge-ify the README

Hey, it's fun!

4 years agoUpdate Travis config to export coverage information
Iustin Pop [Fri, 22 Nov 2019 21:39:22 +0000 (22:39 +0100)]
Update Travis config to export coverage information

4 years agoBump version numbers for new release pylibacl-v0.5.4
Iustin Pop [Thu, 14 Nov 2019 10:58:42 +0000 (11:58 +0100)]
Bump version numbers for new release

Only 4+ years…

4 years agoNote that ACL(text="...") needs a valid ACL to be passed
Iustin Pop [Thu, 14 Nov 2019 10:45:26 +0000 (11:45 +0100)]
Note that ACL(text="...") needs a valid ACL to be passed

Closes #9.

4 years agoEnsure documentation is rebuilt on source (.c) changes
Iustin Pop [Thu, 14 Nov 2019 10:38:27 +0000 (11:38 +0100)]
Ensure documentation is rebuilt on source (.c) changes

4 years agoUpdate FreeBSD notes
Iustin Pop [Thu, 14 Nov 2019 10:27:17 +0000 (11:27 +0100)]
Update FreeBSD notes

This mentions needing to enable ACLs on the file-system, and adds the
packages that need to be installed.

Closes #12.

4 years agoUpdate README about build requirements
Iustin Pop [Wed, 13 Nov 2019 23:23:27 +0000 (00:23 +0100)]
Update README about build requirements

4 years agoMakefile: stop trying to test with py<2.7
Iustin Pop [Wed, 13 Nov 2019 23:16:46 +0000 (00:16 +0100)]
Makefile: stop trying to test with py<2.7

Since actual compat was removed a while back.

4 years agoSwitch documentation building to Python 3
Iustin Pop [Wed, 13 Nov 2019 23:14:24 +0000 (00:14 +0100)]
Switch documentation building to Python 3

This removes build-time dependency on Python 2, which is going away.

5 years agoTravis: remove obsolete python version
Iustin Pop [Sun, 13 Oct 2019 15:55:53 +0000 (17:55 +0200)]
Travis: remove obsolete python version

Some of them, at least.

5 years agoMakefile: re-enable pypy and add pypy3
Iustin Pop [Sun, 3 Mar 2019 12:56:58 +0000 (13:56 +0100)]
Makefile: re-enable pypy and add pypy3

Everything works again now, so let's enable them.

5 years agoACL creation: change how mode arguments are used
Iustin Pop [Sun, 3 Mar 2019 12:45:45 +0000 (13:45 +0100)]
ACL creation: change how mode arguments are used

Currently, initialising from a mode is done by looking at the keywords
arguments that were passed and seeing if mode was part of them. For
some reason, this causes a segfault under PyPy (my fault, probably),
so let's switch to check based on whether the mode argument was
initialised. To do so, switch the type of mode to int and the Python
format char, since the 'H' is defined as "without overflow checking"
anyway, so we don't get any real checks. Document that invalid values
will cause errors.

5 years agoRemove use of PyString/PyUnicode *AndDel() function
Iustin Pop [Sun, 3 Mar 2019 12:42:10 +0000 (13:42 +0100)]
Remove use of PyString/PyUnicode *AndDel() function

These are not documented in Python 3, so let's switch to plain
Concat() for it with explicit delete of original strings. This makes
the code buildable with pypy3.

5 years agoTravis: really test 3.7
Iustin Pop [Sun, 3 Mar 2019 12:22:40 +0000 (13:22 +0100)]
Travis: really test 3.7

This version seems to work. Sigh…

5 years agoTravis: more reworking of Py3.7 support…
Iustin Pop [Sun, 3 Mar 2019 12:02:31 +0000 (13:02 +0100)]
Travis: more reworking of Py3.7 support…

5 years agoTravis: rework build matrix
Iustin Pop [Sun, 3 Mar 2019 11:58:40 +0000 (12:58 +0100)]
Travis: rework build matrix

Apparently python 3.7 is not available on the default Trusty
distribution, so let's add Xenial for the newer Python versions. More
builds!

5 years agoDrop Python 2.6 and earlier support
Iustin Pop [Sun, 3 Mar 2019 11:47:36 +0000 (12:47 +0100)]
Drop Python 2.6 and earlier support

While the C extension doesn't need anything to support it, simply
running the tests becomes more and more difficult with such old
versions. Given upcoming Python 2 deprecation, let's drop support for
older versions and simplify the test suite.

5 years agoDisable pypy tests in Makefile
Iustin Pop [Sun, 3 Mar 2019 01:40:56 +0000 (02:40 +0100)]
Disable pypy tests in Makefile

With my current pypy, ACL_init triggers a SEGFAULT in pypy. Until I
can debug what's up, let's remove this test.

5 years agoIncrease test coverage
Iustin Pop [Sun, 3 Mar 2019 01:40:04 +0000 (02:40 +0100)]
Increase test coverage

These are old changes from October 2016 which I forgot to commit. I
think they're related to test coverage, although a few changes (object
structure) seems a bit different.

Well, anyway, here they are.