Here is a patch to fix the issue. On Tue, Jan 16, 2024 at 2:39 PM upils <paul.m...@canonical.com> wrote:
> Package: golang-entgo-ent > Version: 0.11.3-4 > Severity: serious > Tags: ftbfs patch upstream > Justification: fails to build from source (but built successfully in the > past) > X-Debbugs-Cc: paul.m...@canonical.com > > Dear Maintainer, > > A test of the golang test suite of ent is sometimes failing because the > results fetched from the database are not sorted as expected. > > 681s === RUN Example_M2M2Types > 681s --- FAIL: Example_M2M2Types (0.00s) > 681s got: > 681s [Group(id=2, name=GitLab) Group(id=1, name=GitHub)] > 681s [Group(id=1, name=GitHub)] > 681s [User(id=1, age=30, name=a8m) User(id=2, age=28, name=nati)] > 681s want: > 681s [Group(id=1, name=GitHub) Group(id=2, name=GitLab)] > 681s [Group(id=1, name=GitHub)] > 681s [User(id=1, age=30, name=a8m) User(id=2, age=28, name=nati)] > > By default sqlite does not guaranty results ordering but this can go > unnoticed on simple cases. I suspect some race condition somewhere is > triggering the bug and the 2 results are swapped. > > To make it reliable we need to explicitly call .Order(ent.Asc("id")). > > > -- System Information: > Debian Release: bookworm/sid > APT prefers jammy-updates > APT policy: (500, 'jammy-updates'), (500, 'jammy-security'), (500, > 'jammy'), (100, 'jammy-backports') > Architecture: amd64 (x86_64) > Foreign Architectures: i386 > > Kernel: Linux 6.5.0-14-generic (SMP w/16 CPU threads; PREEMPT) > Kernel taint flags: TAINT_PROPRIETARY_MODULE, TAINT_WARN, TAINT_OOT_MODULE > Locale: LANG=en_US.UTF-8, LC_CTYPE=en_US.UTF-8 (charmap=UTF-8), > LANGUAGE=en_US:en > Shell: /bin/sh linked to /usr/bin/dash > Init: systemd (via /run/systemd/system) > LSM: AppArmor: enabled >
diff -Nru golang-entgo-ent-0.11.3/debian/changelog golang-entgo-ent-0.11.3/debian/changelog --- golang-entgo-ent-0.11.3/debian/changelog 2022-11-27 15:50:11.000000000 +0100 +++ golang-entgo-ent-0.11.3/debian/changelog 2024-01-16 13:52:04.000000000 +0100 @@ -1,3 +1,10 @@ +golang-entgo-ent (0.11.3-4ubuntu1) noble; urgency=medium + + * d/p/0005-0005-force-result-ordering-in-tests.patch: Fix flacky tests + (LP: #2049502) + + -- Paul Mars <paul.m...@canonical.com> Tue, 16 Jan 2024 13:52:04 +0100 + golang-entgo-ent (0.11.3-4) unstable; urgency=medium * Add patches to work around build failures on 32-bit architectures, as diff -Nru golang-entgo-ent-0.11.3/debian/control golang-entgo-ent-0.11.3/debian/control --- golang-entgo-ent-0.11.3/debian/control 2022-10-17 20:10:49.000000000 +0200 +++ golang-entgo-ent-0.11.3/debian/control 2024-01-16 13:52:04.000000000 +0100 @@ -1,5 +1,6 @@ Source: golang-entgo-ent -Maintainer: Debian Go Packaging Team <team+pkg...@tracker.debian.org> +Maintainer: Ubuntu Developers <ubuntu-devel-disc...@lists.ubuntu.com> +XSBC-Original-Maintainer: Debian Go Packaging Team <team+pkg...@tracker.debian.org> Uploaders: Cyril Brulebois <cy...@debamax.com> Section: golang Testsuite: autopkgtest-pkg-go diff -Nru golang-entgo-ent-0.11.3/debian/patches/0005-force-result-ordering-in-tests.patch golang-entgo-ent-0.11.3/debian/patches/0005-force-result-ordering-in-tests.patch --- golang-entgo-ent-0.11.3/debian/patches/0005-force-result-ordering-in-tests.patch 1970-01-01 01:00:00.000000000 +0100 +++ golang-entgo-ent-0.11.3/debian/patches/0005-force-result-ordering-in-tests.patch 2024-01-16 13:52:04.000000000 +0100 @@ -0,0 +1,57 @@ +Description: Force results ordering in tests + +Fix LP: #2049502. Some tests rely on the default ordering of results fetched from sqlite. +Sqlite does not guaranty such ordering but on small dataset this can go unnoticed. +This patch fix the flaky tests by forcing the expected ordering. +Author: Paul Mars <paul.m...@canonical.com> +Last-Update: 2024-01-16 +--- +This patch header follows DEP-3: http://dep.debian.net/deps/dep3/ +--- a/examples/m2m2types/example_test.go ++++ b/examples/m2m2types/example_test.go +@@ -62,6 +62,7 @@ + // Query the edges. + groups, err := a8m. + QueryGroups(). ++ Order(ent.Asc("id")). + All(ctx) + if err != nil { + return fmt.Errorf("querying a8m groups: %w", err) +@@ -85,6 +86,7 @@ + QueryUsers(). // [a8m] + QueryGroups(). // [hub, lab] + QueryUsers(). // [a8m, nati] ++ Order(ent.Asc("id")). + All(ctx) + if err != nil { + return fmt.Errorf("traversing the graph: %w", err) +--- a/examples/m2mbidi/example_test.go ++++ b/examples/m2mbidi/example_test.go +@@ -66,6 +66,7 @@ + friends = client.User. + Query(). + Where(user.HasFriends()). ++ Order(ent.Asc("id")). + AllX(ctx) + fmt.Println(friends) + // Output: [User(id=1, age=30, name=a8m) User(id=2, age=28, name=nati)] +--- a/examples/start/start.go ++++ b/examples/start/start.go +@@ -272,6 +272,7 @@ + groups, err := client.Group. + Query(). + Where(group.HasUsers()). ++ Order(ent.Asc("id")). + All(ctx) + if err != nil { + return fmt.Errorf("failed getting groups: %w", err) +--- a/examples/traversal/example_test.go ++++ b/examples/traversal/example_test.go +@@ -147,6 +147,7 @@ + ), + ), + ). ++ Order(ent.Asc("id")). + All(ctx) + if err != nil { + return fmt.Errorf("failed querying the pets: %w", err) diff -Nru golang-entgo-ent-0.11.3/debian/patches/series golang-entgo-ent-0.11.3/debian/patches/series --- golang-entgo-ent-0.11.3/debian/patches/series 2022-11-27 15:50:11.000000000 +0100 +++ golang-entgo-ent-0.11.3/debian/patches/series 2024-01-16 11:37:30.000000000 +0100 @@ -2,3 +2,4 @@ 0002-disable-failing-internal-test.patch 0003-avoid-overflows-on-32-bit-systems.patch 0004-disable-failing-tests-on-32-bit-systems.patch +0005-force-result-ordering-in-tests.patch