Skip to content

Sort order inconsistent on 32-bit archs #373

@strophy

Description

@strophy

I'm trying to package https://github.com/tweag/nickel which depends on pubgrub. One of the tests uses pubgrub to verify that certain output indicating a package resolution error will occur in the case of bad input. This test consistently fails under Alpine Linux 3.22 on all 32 bit architectures I'm trying to package for: x86, armv7 and armhf

━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ Snapshot Summary ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
Snapshot file: package/tests/snapshots/integration__package__tests__integration__inputs__path__conflicting-index-deps__Nickel-pkg.ncl.snap
Snapshot: package/tests/integration/inputs/path/conflicting-index-deps/Nickel-pkg.ncl
Source: package/tests/integration.rs:266
────────────────────────────────────────────────────────────────────────────────
test package/tests/integration/inputs/path/path-to-index-dep/Nickel-pkg.ncl               ... ok
Expression: e.to_string()
────────────────────────────────────────────────────────────────────────────────
-old snapshot
+new results
────────────┬───────────────────────────────────────────────────────────────────
    1     1 │ package version resolution failed:
    2       │-Because 'Path <filtered> depends on github:example/leaf 0.1.0 and top-level package 0.1.0 depends on 'Path <filtered> top-level package 0.1.0 depends on github:example/leaf 0.1.0.
    3       │-And because top-level package 0.1.0 depends on github:example/leaf 0.1.1, top-level package 0.1.0 is forbidden.
          2 │+Because 'Path <filtered> depends on github:example/leaf 0.1.0 and top-level package 0.1.0 depends on github:example/leaf 0.1.1, top-level package 0.1.0, 'Path <filtered> * are incompatible.
          3 │+And because top-level package 0.1.0 depends on 'Path <filtered> top-level package 0.1.0 is forbidden.
────────────┴───────────────────────────────────────────────────────────────────
Stopped on the first failure. Run `cargo insta test` to run all snapshots.
thread '<unnamed>' panicked at /home/buildozer/.cargo/registry/src/index.crates.io-1949cf8c6b5b557f/insta-1.43.2/src/runtime.rs:694:13:
snapshot assertion for 'package/tests/integration/inputs/path/conflicting-index-deps/Nickel-pkg.ncl' failed in line 266
note: run with `RUST_BACKTRACE=1` environment variable to display a backtrace
test package/tests/integration/inputs/path/conflicting-index-deps/Nickel-pkg.ncl          ... FAILED
Already have a cache entry at "/tmp/.tmpxu7Ted/cache_dir/git-packages/44b1c226afdc6220892c242f6b05c9c654aa6065/"
test package/tests/integration/inputs/path/duplicate-path/Nickel-pkg.ncl                  ... ok
test package/tests/integration/inputs/path/git-path-dep/Nickel-pkg.ncl                    ... ok
failures:
---- package/tests/integration/inputs/path/conflicting-index-deps/Nickel-pkg.ncl ----
test panicked: snapshot assertion for 'package/tests/integration/inputs/path/conflicting-index-deps/Nickel-pkg.ncl' failed in line 266
failures:
    package/tests/integration/inputs/path/conflicting-index-deps/Nickel-pkg.ncl
test result: FAILED. 14 passed; 1 failed; 0 ignored; 0 measured; 0 filtered out; finished in 2.32s
error: test failed, to rerun pass `-p nickel-lang-package --test integration`

While the content of the message effectively carries the same meaning, the different sort order causes the test to fail. Is this simply a case of this not being a well-written test, or not a reasonable thing to test? Or is there something fundamentally different in pubgrub regarding how 32-bit builds sort the dependencies when trying to resolve them?

Ref: tweag/nickel#2372

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions