#!/bin/sh
set -e

TESTDIR="$(readlink -f "$(dirname "$0")")"
. "$TESTDIR/framework"
setupenvironment
configarchitecture 'amd64'

insertinstalledpackage 'apport' 'all' '3'

insertpackage 'unstable' 'x' 'all' '3' 'Depends: a | b'
insertpackage 'unstable' 'y' 'all' '3' 'Depends: b | a'
insertpackage 'unstable' 'a' 'all' '3' 'Depends: c'
insertpackage 'unstable' 'b' 'all' '3'
insertpackage 'unstable' 'c' 'all' '3'

setupaptarchive

rm rootdir/etc/apt/apt.conf.d/disable-solver3-context
mkdir rootdir/var/log/apt

testsuccess aptget install y x --solver internal -s -o Dir::Apport=var/crash

testsuccess sed -i "s/^Date:.*/Date: Sun Mar  9 00:08:41 2025/" rootdir/var/crash/apt-edsp.$(id -u).crash

testsuccessequal "ProblemType: AptSolver
Architecture: amd64
Date: Sun Mar  9 00:08:41 2025
Package: apt 
Title: Failure: The 3.0 solver produced a worse result
SourcePackage: apt
ErrorMessage:
AptSolverDump:
 Request: EDSP 0.5
 Architecture: amd64
 Architectures: amd64
 Machine-ID: 912e43bd1c1d4ba481f9f8ccab25f9ee
 Install: x:amd64 y:amd64
 Solver: internal
 
 Package: a
 Architecture: all
 Version: 3
 APT-ID: 2
 Source: a
 Source-Version: 3
 Priority: optional
 Section: other
 Size: 42
 APT-Release:
  a=unstable,n=sid,c=main,b=all
 APT-Pin: 500
 APT-Candidate: yes
 Depends: c
 
 Package: b
 Architecture: all
 Version: 3
 APT-ID: 3
 Source: b
 Source-Version: 3
 Priority: optional
 Section: other
 Size: 42
 APT-Release:
  a=unstable,n=sid,c=main,b=all
 APT-Pin: 500
 APT-Candidate: yes
 
 Package: c
 Architecture: all
 Version: 3
 APT-ID: 4
 Source: c
 Source-Version: 3
 Priority: optional
 Section: other
 Size: 42
 APT-Release:
  a=unstable,n=sid,c=main,b=all
 APT-Pin: 500
 APT-Candidate: yes
 
 Package: x
 Architecture: all
 Version: 3
 APT-ID: 0
 Source: x
 Source-Version: 3
 Priority: optional
 Section: other
 Size: 42
 APT-Release:
  a=unstable,n=sid,c=main,b=all
 APT-Pin: 500
 APT-Candidate: yes
 Depends: a | b
 
 Package: y
 Architecture: all
 Version: 3
 APT-ID: 1
 Source: y
 Source-Version: 3
 Priority: optional
 Section: other
 Size: 42
 APT-Release:
  a=unstable,n=sid,c=main,b=all
 APT-Pin: 500
 APT-Candidate: yes
 Depends: b | a
 
 Package: apport
 Architecture: all
 Version: 3
 APT-ID: 5
 Source: apport
 Source-Version: 3
 Priority: optional
 Section: other
 Installed: yes
 APT-Pin: 100
 APT-Candidate: yes
 " cat rootdir/var/crash/apt-edsp.$(id -u).crash


testsuccessequal "Request: EDSP 0.5
Architecture: amd64
Architectures: amd64
Machine-ID: 912e43bd1c1d4ba481f9f8ccab25f9ee
Install: x:amd64 y:amd64
Solver: internal

Package: a
Architecture: all
Version: 3
APT-ID: 2
Source: a
Source-Version: 3
Priority: optional
Section: other
Size: 42
APT-Release:
 a=unstable,n=sid,c=main,b=all
APT-Pin: 500
APT-Candidate: yes
Depends: c

Package: b
Architecture: all
Version: 3
APT-ID: 3
Source: b
Source-Version: 3
Priority: optional
Section: other
Size: 42
APT-Release:
 a=unstable,n=sid,c=main,b=all
APT-Pin: 500
APT-Candidate: yes

Package: c
Architecture: all
Version: 3
APT-ID: 4
Source: c
Source-Version: 3
Priority: optional
Section: other
Size: 42
APT-Release:
 a=unstable,n=sid,c=main,b=all
APT-Pin: 500
APT-Candidate: yes

Package: x
Architecture: all
Version: 3
APT-ID: 0
Source: x
Source-Version: 3
Priority: optional
Section: other
Size: 42
APT-Release:
 a=unstable,n=sid,c=main,b=all
APT-Pin: 500
APT-Candidate: yes
Depends: a | b

Package: y
Architecture: all
Version: 3
APT-ID: 1
Source: y
Source-Version: 3
Priority: optional
Section: other
Size: 42
APT-Release:
 a=unstable,n=sid,c=main,b=all
APT-Pin: 500
APT-Candidate: yes
Depends: b | a

Package: apport
Architecture: all
Version: 3
APT-ID: 5
Source: apport
Source-Version: 3
Priority: optional
Section: other
Installed: yes
APT-Pin: 100
APT-Candidate: yes
" cat rootdir/var/log/apt/edsp.log

testfailureequal "Reading package lists...
Building dependency tree...
Package 'c' is not installed, so not removed
Solving dependencies...
Some packages could not be installed. This may mean that you have
requested an impossible situation or if you are using the unstable
distribution that some required packages have not yet been created
or been moved out of Incoming.
The following information may help to resolve the situation:

The following packages have unmet dependencies:
 a : Depends: c but it is not going to be installed
E: Unable to correct problems, you have held broken packages.
E: The following information from --solver 3.0 may provide additional context:
   Unable to satisfy dependencies. Reached two conflicting decisions:
   1. a:amd64=3 is selected for install
   2. a:amd64 Depends c
      but none of the choices are installable:
      - c:amd64 is not selected for install" apt install -s a c- --solver internal
