Gentoo Websites Logo
Go to: Gentoo Home Documentation Forums Lists Bugs Planet Store Wiki Get Gentoo!
Bug 647596 - app-office/gnucash-2.7.4: multiple test failures
Summary: app-office/gnucash-2.7.4: multiple test failures
Status: RESOLVED FIXED
Alias: None
Product: Gentoo Linux
Classification: Unclassified
Component: Current packages (show other bugs)
Hardware: All Linux
: Normal normal (vote)
Assignee: Aaron W. Swenson
URL: https://github.com/Gnucash/gnucash/pu...
Whiteboard:
Keywords: TESTFAILURE
Depends on:
Blocks:
 
Reported: 2018-02-14 13:35 UTC by Thomas Deutschmann (RETIRED)
Modified: 2018-08-29 13:13 UTC (History)
1 user (show)

See Also:
Package list:
Runtime testing required: ---


Attachments
build.log (build.log.gz,58.74 KB, application/gzip)
2018-02-14 13:35 UTC, Thomas Deutschmann (RETIRED)
Details
LastTest.log (LastTest.log,257.83 KB, text/plain)
2018-02-14 13:36 UTC, Thomas Deutschmann (RETIRED)
Details
LastTest.log -r1 (LastTest.log,260.24 KB, text/plain)
2018-02-18 21:40 UTC, Thomas Deutschmann (RETIRED)
Details
skip test-gnc-timezone test for now (0001-app-office-gnucash-skip-test-gnc-timezone-test-for-n.patch,912 bytes, patch)
2018-02-18 22:24 UTC, Mart Raudsepp
Details | Diff
gnucash-x86-tests-fix.patch (gnucash-x86-tests-fix.patch,855 bytes, patch)
2018-02-22 02:34 UTC, Thomas Deutschmann (RETIRED)
Details | Diff

Note You need to log in before you can comment on or make changes to this bug.
Description Thomas Deutschmann (RETIRED) gentoo-dev 2018-02-14 13:35:52 UTC
Created attachment 519410 [details]
build.log

> 96% tests passed, 4 tests failed out of 98
> 
> Total Test time (real) =  40.88 sec
> 
> The following tests FAILED:
>          24 - test-userdata-dir-invalid-home (Failed)
>          32 - test-qof (OTHER_FAULT)
>          55 - test-gnc-numeric (Failed)
>          56 - test-gnc-timezone (Failed)
> Errors while running CTest

Portage 2.3.19 (python 3.5.4-final-0, default/linux/x86/17.0, gcc-6.4.0, glibc-2.25-r10, 4.9.76-gentoo-r1 i686)
=================================================================
System uname: Linux-4.9.76-gentoo-r1-i686-Intel-R-_Core-TM-_i7-3770K_CPU_@_3.50GHz-with-gentoo-2.4.1
KiB Mem:     3108324 total,   1567084 free
KiB Swap:     488276 total,    487556 free
Timestamp of repository gentoo: Wed, 14 Feb 2018 11:06:21 +0000
Head commit of repository gentoo: 89bdcd2ad7ba7cf6229eeadec42f903d1dfdc620

sh bash 4.4_p12
ld GNU ld (Gentoo 2.29.1 p3) 2.29.1
app-shells/bash:          4.4_p12::gentoo
dev-java/java-config:     2.2.0-r3::gentoo
dev-lang/perl:            5.24.3::gentoo
dev-lang/python:          2.7.14-r1::gentoo, 3.5.4-r1::gentoo
dev-util/cmake:           3.9.6::gentoo
dev-util/pkgconfig:       0.29.2::gentoo
sys-apps/baselayout:      2.4.1-r2::gentoo
sys-apps/openrc:          0.34.11::gentoo
sys-apps/sandbox:         2.12::gentoo
sys-devel/autoconf:       2.13::gentoo, 2.69-r4::gentoo
sys-devel/automake:       1.9.6-r4::gentoo, 1.11.6-r2::gentoo, 1.15.1-r1::gentoo
sys-devel/binutils:       2.29.1-r1::gentoo
sys-devel/gcc:            6.4.0-r1::gentoo
sys-devel/gcc-config:     1.8-r1::gentoo
sys-devel/libtool:        2.4.6-r3::gentoo
sys-devel/make:           4.2.1::gentoo
sys-kernel/linux-headers: 4.13::gentoo (virtual/os-headers)
sys-libs/glibc:           2.25-r10::gentoo
Repositories:

gentoo
    location: /usr/portage
    sync-type: git
    sync-uri: https://github.com/gentoo-mirror/gentoo.git
    priority: -1000

ABI="x86"
ABI_X86="32"
ACCEPT_KEYWORDS="x86"
ACCEPT_LICENSE="* -@EULA"
ACCEPT_PROPERTIES="*"
ACCEPT_RESTRICT="*"
ARCH="x86"
CBUILD="i686-pc-linux-gnu"
CFLAGS="-O2 -pipe -march=pentium4m -mtune=pentium4m"
CHOST="i686-pc-linux-gnu"
CHOST_x86="i686-pc-linux-gnu"
COLLISION_IGNORE="/lib/modules/* *.py[co] *$py.class */dropin.cache"
CONFIG_PROTECT="/etc /etc/stunnel/stunnel.conf /usr/lib/libreoffice/program/sofficerc /usr/share/config /usr/share/gnupg/qualified.txt"
CPU_FLAGS_X86="mmx mmxext sse sse2"
CXXFLAGS="-O2 -pipe -march=pentium4m -mtune=pentium4m"
DEFAULT_ABI="x86"
EDITOR="/usr/bin/mcedit"
ELIBC="glibc"
EPREFIX=""
EROOT="/"
FCFLAGS="-O2 -march=i686 -pipe"
FEATURES="assume-digests binpkg-logs cgroup config-protect-if-modified distlocks downgrade-backup ebuild-locks fixlafiles merge-sync multilib-strict news parallel-fetch preserve-libs protect-owned sandbox sfperms strict unknown-features-warn unmerge-logs unmerge-orphans userfetch userpriv usersandbox usersync xattr"
FFLAGS="-O2 -march=i686 -pipe"
GCC_SPECS=""
GRUB_PLATFORMS="efi-32 pc"
GSETTINGS_BACKEND="dconf"
HOME="/root"
INFOPATH="/usr/share/gcc-data/i686-pc-linux-gnu/6.4.0/info:/usr/share/binutils-data/i686-pc-linux-gnu/2.29.1/info:/usr/share/info:/usr/share/info/emacs-25"
INPUT_DEVICES="libinput keyboard mouse"
IUSE_IMPLICIT="abi_x86_32 prefix prefix-chain prefix-guest"
JAVAC="/etc/java-config-2/current-system-vm/bin/javac"
JAVA_HOME="/etc/java-config-2/current-system-vm"
JDK_HOME="/etc/java-config-2/current-system-vm"
KERNEL="linux"
L10N="en en-US de de-DE"
LANG="en_US.UTF-8"
LC_ALL="en_US.UTF-8"
LC_MESSAGES="C"
LC_PAPER="de_DE.UTF-8"
LDFLAGS="-Wl,-O1 -Wl,--as-needed"
LIBDIR_x86="lib"
LINGUAS="en de"
LOGNAME="root"
MAIL="/var/mail/root"
MAKEOPTS="--jobs 5 --load-average 7.95"
MANPAGER="manpager"
MULTILIB_ABIS="x86"
NOCOLOR="true"
OFFICE_IMPLEMENTATION="libreoffice"
OLDPWD="/root"
OPENGL_PROFILE="xorg-x11"
PAGER="/usr/bin/less"
PATH="/usr/i686-pc-linux-gnu/gcc-bin/6.4.0:/usr/lib/llvm/5/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/opt/bin"
PHP_TARGETS="php5-6 php7-0"
POSTGRES_TARGETS="postgres9_5"
PWD="/tmp/stable"
PYTHONDONTWRITEBYTECODE="1"
PYTHON_SINGLE_TARGET="python3_5"
PYTHON_TARGETS="python2_7 python3_5"
QT_GRAPHICSSYSTEM="raster"
ROOT="/"
ROOTPATH="/usr/i686-pc-linux-gnu/gcc-bin/6.4.0:/usr/lib/llvm/5/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/opt/bin"
RUBY_TARGETS="ruby22 ruby23"
SHELL="/bin/bash"
SHLVL="2"
SSH_TTY="/dev/pts/0"
TERM="screen"
TMUX="/tmp/tmux-0/default,4903,0"
TMUX_PANE="%0"
TWISTED_DISABLE_WRITING_OF_PLUGIN_CACHE="1"
USER="root"
USERLAND="GNU"
VIDEO_CARDS="vmware"
XDG_CONFIG_DIRS="/etc/xdg"
XDG_DATA_DIRS="/usr/local/share:/usr/share"
Comment 1 Thomas Deutschmann (RETIRED) gentoo-dev 2018-02-14 13:36:11 UTC
Created attachment 519412 [details]
LastTest.log
Comment 2 Aaron W. Swenson gentoo-dev 2018-02-15 17:58:53 UTC
(In reply to Thomas Deutschmann from comment #0)
> The following tests FAILED:
>          24 - test-userdata-dir-invalid-home (Failed)
>          32 - test-qof (OTHER_FAULT)
>          55 - test-gnc-numeric (Failed)
>          56 - test-gnc-timezone (Failed)
> Errors while running CTest

I'm working on figuring out the failures. These seem to be Gentoo-specific failures.

test-qof is resolved by having the following in /etc/locale.gen:

en_GB.UTF-8 UTF-8
en_US.UTF-8 UTF-8
fr_FR.UTF-8 UTF-8
Comment 3 Aaron W. Swenson gentoo-dev 2018-02-15 22:53:02 UTC
Okay, so adding those locales took care of the other tests, I think. At least, numeric and timezone aren't failing for me.

However, I'm now getting an invalid pointer error from test-userdata-dir which in turn means test-userdata-dir-invalid-home fails.

Further still, if I just navigate to the build directory and invoke "make check", everything passes.
Comment 4 Mart Raudsepp gentoo-dev 2018-02-15 23:21:10 UTC
Portage does various environment var setup that you aren't getting by manually going in that dir and running it. Additionally it runs it all under sandbox, which you can partially emulate via /usr/bin/sandbox, but not fully I think (portage sets some things up for further restrictions or allowances iirc).

Tests shouldn't depend on locales I think; For upstream the test should automatically skip if the locale isn't present, I believe. Might be easier to skip it for all downstream though until it's fixed fully upstream.
Though given the urgency of all this for webkit-gtk/icu, I think it'd be fine to require the locales for current fast stabling and fix it up later on properly. Though you have some other failures still I guess.
Comment 5 Mart Raudsepp gentoo-dev 2018-02-15 23:22:04 UTC
(In reply to Mart Raudsepp from comment #4)
> Might be easier
> to skip it for all downstream though until it's fixed fully upstream.

Just to be clear - here I meant only disabling these specific tests, not a full RESTRICT=test
Comment 6 Aaron W. Swenson gentoo-dev 2018-02-17 00:52:30 UTC
I understood what you meant.

I've figured out all the problems.

In addition to the locale.gen changes and a patch to take care of a double-free, src_test() needs:

    cp common/test-core/unittest_support.py \
        "${BUILD_DIR}"/common/test-core/ || die;
    cd "${BUILD_DIR}" || die;
    XDG_DATA_HOME="${T}/$(whoami)" emake check

I haven't figured out how to skip particular tests, yet.

Is this acceptable for now? I'm going to raise the missing locale causes test failure issue upstream.
Comment 7 Mart Raudsepp gentoo-dev 2018-02-17 01:02:26 UTC
(In reply to Aaron W. Swenson from comment #6)
> I understood what you meant.
> 
> I've figured out all the problems.
> 
> In addition to the locale.gen changes and a patch to take care of a
> double-free, src_test() needs:
> 
>     cp common/test-core/unittest_support.py \
>         "${BUILD_DIR}"/common/test-core/ || die;
>     cd "${BUILD_DIR}" || die;
>     XDG_DATA_HOME="${T}/$(whoami)" emake check

Odd, doesn't it work with xdg_environment_reset already from pkg_setup that sets XDG_DATA_HOME to "${HOME}/.local/share" (HOME is in $PORTAGE_BUILDDIR/homedir)? Is that for some reason ineffective in src_test or it needs $(whoami) as the subdir name for some odd reason? If that's the case, I'd try to use ${USER} for now instead of $(whoami), or whatever is appropriate from bash and the env.

> I haven't figured out how to skip particular tests, yet.
> 
> Is this acceptable for now? I'm going to raise the missing locale causes
> test failure issue upstream.

I'd say it's not ideal, but if you state clearly what locales need to be present for the tests to pass, it ought to be fine for getting it done for webkit-gtk riddance needs (and stable really being broken as-is).
Comment 8 Aaron W. Swenson gentoo-dev 2018-02-17 01:21:42 UTC
(In reply to Mart Raudsepp from comment #7)
> (In reply to Aaron W. Swenson from comment #6)
> > I understood what you meant.
> > 
> > I've figured out all the problems.
> > 
> > In addition to the locale.gen changes and a patch to take care of a
> > double-free, src_test() needs:
> > 
> >     cp common/test-core/unittest_support.py \
> >         "${BUILD_DIR}"/common/test-core/ || die;
> >     cd "${BUILD_DIR}" || die;
> >     XDG_DATA_HOME="${T}/$(whoami)" emake check
> 
> Odd, doesn't it work with xdg_environment_reset already from pkg_setup that
> sets XDG_DATA_HOME to "${HOME}/.local/share" (HOME is in
> $PORTAGE_BUILDDIR/homedir)? Is that for some reason ineffective in src_test
> or it needs $(whoami) as the subdir name for some odd reason? If that's the
> case, I'd try to use ${USER} for now instead of $(whoami), or whatever is
> appropriate from bash and the env.

I don't know what the test is trying to achieve, but it's checking if gnc_build_userdata_dir (or something like that) is equal to g_tmpdir (or something like that).

Naturally, they aren't because gnc_build_userdata_dir (or something like that) will check if XDG_DATA_HOME is defined, or default to something else. g_tmpdir will use the value of TMPDIR if it's defined, or default to something else.

The test assumes that neither is defined and sets them to the same place or something.

There's some silliness that's going on that I don't grok. I'm going to bring this upstream, too.

> > I haven't figured out how to skip particular tests, yet.
> > 
> > Is this acceptable for now? I'm going to raise the missing locale causes
> > test failure issue upstream.
> 
> I'd say it's not ideal, but if you state clearly what locales need to be
> present for the tests to pass, it ought to be fine for getting it done for
> webkit-gtk riddance needs (and stable really being broken as-is).

Great. I'll get this done soon.
Comment 9 Larry the Git Cow gentoo-dev 2018-02-18 12:31:55 UTC
The bug has been referenced in the following commit(s):

https://gitweb.gentoo.org/repo/gentoo.git/commit/?id=abd6bba4c31bb6e546bb8e1da37fa971ffa55746

commit abd6bba4c31bb6e546bb8e1da37fa971ffa55746
Author:     Aaron W. Swenson <titanofold@gentoo.org>
AuthorDate: 2018-02-18 12:31:26 +0000
Commit:     Aaron W. Swenson <titanofold@gentoo.org>
CommitDate: 2018-02-18 12:31:44 +0000

    app-office/gnucash: Fix 2.7.4 test failures
    
    Fix a double-free bug in test-userdata-dir.c.
    
        Copy over common/test-core/unittest_support.py to the BUILDDIR so that
        it can be sourced by the python-bindings test.
    
        Set XDG_DATA_HOME so that it’s pointing to the same place as TMPDIR.
    
    Not fixed: Locale dependent tests. /etc/locale.gen needs the
    following:
    
        en_GB.UTF-8 UTF-8
        en_US.UTF-8 UTF-8
        fr_FR.UTF-8 UTF-8
    
    Bug: https://bugs.gentoo.org/647596
    Package-Manager: Portage-2.3.19, Repoman-2.3.6

 .../gnucash/files/gnucash-2.7.4-double_free.patch  |  12 ++
 app-office/gnucash/gnucash-2.7.4-r1.ebuild         | 162 +++++++++++++++++++++
 2 files changed, 174 insertions(+)}
Comment 10 Thomas Deutschmann (RETIRED) gentoo-dev 2018-02-18 21:40:19 UTC
Created attachment 520072 [details]
LastTest.log -r1

> 56 - test-gnc-timezone (Failed)
> 
> 99% tests passed, 1 tests failed out of 98
Comment 11 Mart Raudsepp gentoo-dev 2018-02-18 22:24:43 UTC
Created attachment 520078 [details, diff]
skip test-gnc-timezone test for now

If we decide to just disable the timezone test for now, then hopefully this patch works. Completely untested by me.
Comment 12 Mart Raudsepp gentoo-dev 2018-02-21 01:02:39 UTC
ping, I still can't last rite security vulnerable stuff; and stable x86 users still can not build current stable gnucash deptree. Please apply the workaround and push keywords, just push keywords or whatnot. We shouldn't be waiting for days here - the stable x86 tree is broken right now.
Comment 13 Aaron W. Swenson gentoo-dev 2018-02-21 18:52:31 UTC
(In reply to Mart Raudsepp from comment #12)
> ping, I still can't last rite security vulnerable stuff; and stable x86
> users still can not build current stable gnucash deptree. Please apply the
> workaround and push keywords, just push keywords or whatnot. We shouldn't be
> waiting for days here - the stable x86 tree is broken right now.

Sorry, school and work are both being quite demanding on my time, and solving GnuCash things are nontrivial for me.(In reply to Mart Raudsepp from comment #11)

> Created attachment 520078 [details, diff] [details, diff]
> skip test-gnc-timezone test for now
> 
> If we decide to just disable the timezone test for now, then hopefully this
> patch works. Completely untested by me.

This is probably not a good thing to do.

There's a section of the test in which the behavior is modified by the value of __LP64__. __LP64__ isn't being set to 1 by GCC when apparently it should be?

At any rate, __LP64__ has some usefulness elsewhere in the code for something that has nothing to do with timezones: libgnucash/backend/sql/gnc-sql-column-table-entry.cpp

I don't know how important that is, or how to test it. (I only had 20 minutes to  spare for now.)


Or, maybe the test is wrong and it shouldn't be excluding the LMT zone just because it's on a 32 bit system. Is there an expert on opinions that can give us an opinion that's close enough to expert level?
Comment 14 Thomas Deutschmann (RETIRED) gentoo-dev 2018-02-22 02:24:00 UTC
We have 8 errors of

> /var/tmp/portage/app-office/gnucash-2.7.4-r1/work/gnucash-2.7.4/libgnucash/engine/test/gtest-gnc-timezone.cpp:162: Failure
>       Expected: tz->base_utc_offset().total_seconds()
>       Which is: 27804
> To be equal to: 28800
Which make sense:

GnuCash is testing from year 1893 onwards in test_IANA_Perth_tz (
https://github.com/Gnucash/gnucash/blob/master/libgnucash/engine/test/gtest-gnc-timezone.cpp#L145), however, the earliest UNIX timestamp which can be used on a real 32-bit system is "1901-12-13 20:45:52". And 1901-1893 = 8... tests for year 1902 until 2048 seems to pass.

Same problem in test_IANA_Minsk_tz.

For testing I applied

> --- a/libgnucash/engine/test/gtest-gnc-timezone.cpp
> +++ b/libgnucash/engine/test/gtest-gnc-timezone.cpp
> @@ -142,7 +142,7 @@ TEST(gnc_timezone_constructors, test_IANA_Belize_tz)
>  TEST(gnc_timezone_constructors, test_IANA_Perth_tz)
>  {
>      TimeZoneProvider tzp("Australia/Perth");
> -    for (int year = 1893; year < 2048; ++year)
> +    for (int year = 1902; year < 2048; ++year)
>      {
>          auto tz = tzp.get(year);
>  #ifdef __LP64__
> @@ -204,7 +204,7 @@ TEST(gnc_timezone_constructors, test_IANA_Perth_tz)
>  TEST(gnc_timezone_constructors, test_IANA_Minsk_tz)
>  {
>      TimeZoneProvider tzp("Europe/Minsk");
> -    for (int year = 1870; year < 2020; ++year)
> +    for (int year = 1902; year < 2020; ++year)
>      {
>          auto tz = tzp.get(year);
>  #ifdef __LP64__
> 
and tests passed.

My suggestion: Apply this patch/skip this test only for x86 and report upstream. Once upstream has adjusted the test to respect 32-bit capabilities, we can re-enable.
Comment 15 Thomas Deutschmann (RETIRED) gentoo-dev 2018-02-22 02:34:40 UTC
Created attachment 520520 [details, diff]
gnucash-x86-tests-fix.patch
Comment 16 Mart Raudsepp gentoo-dev 2018-02-22 05:45:24 UTC
Please proceed Whissi as you see fit; we need to get this stabled finally :)
Leave this bug open (Bug: not Closes: tag) to track proper upstream fix for timezones and the locale workaround.
Comment 17 Larry the Git Cow gentoo-dev 2018-02-22 11:45:54 UTC
The bug has been referenced in the following commit(s):

https://gitweb.gentoo.org/repo/gentoo.git/commit/?id=432f3f5e66e510ae29429064071ce83465ad6bb5

commit 432f3f5e66e510ae29429064071ce83465ad6bb5
Author:     Thomas Deutschmann <whissi@gentoo.org>
AuthorDate: 2018-02-22 11:44:00 +0000
Commit:     Thomas Deutschmann <whissi@gentoo.org>
CommitDate: 2018-02-22 11:44:00 +0000

    app-office/gnucash: Add patch to address test failures on 32-bit platforms
    
    Bug: https://bugs.gentoo.org/647596
    Package-Manager: Portage-2.3.24, Repoman-2.3.6

 ...ucash-2.7.4-fix-tests-for-32bit-platforms.patch | 56 ++++++++++++++++++++++
 app-office/gnucash/gnucash-2.7.4-r1.ebuild         |  5 +-
 2 files changed, 60 insertions(+), 1 deletion(-)}
Comment 18 Mart Raudsepp gentoo-dev 2018-03-25 19:08:06 UTC
Any updates on this? Did it get an issue made as requested in the PR? Can the URL be changed to that, if so?
Comment 19 Thomas Deutschmann (RETIRED) gentoo-dev 2018-03-30 20:18:55 UTC
Upstream closed my PR. Issue with LP64 should be brought to GnuCash's dedicated bug tracker. As I don't have an account for GnuCash's bug tracker and I don't use that program I am asking the maintainer to take care of that. Thanks.
Comment 20 Aaron W. Swenson gentoo-dev 2018-08-29 13:13:43 UTC
This has been fixed upstream, and should have been considered fixed when we stabled 2.7.4-r1 with the patches.

https://github.com/Gnucash/gnucash/commit/5520fae838bfddc92385c85706e741a753458c5d#diff-a08895af7b8368e8ea409efc29e1e64e