mirror of
https://github.com/awalsh128/cache-apt-pkgs-action.git
synced 2026-07-07 09:34:38 +00:00
- Handle empty Reverse Provides by falling back to the Versions section, returning the package itself (fixes ghostscript regression, issue #218) - Handle inline "Reverse Provides: name version" header+entry format - Add regression unit tests and integration test with replay log - Address code review: clarify inline-header fallthrough comment and add edge-case test for inline header with no parseable entry
80 lines
3.2 KiB
Go
80 lines
3.2 KiB
Go
package main
|
|
|
|
import (
|
|
"flag"
|
|
"testing"
|
|
|
|
"awalsh128.com/cache-apt-pkgs-action/src/internal/cmdtesting"
|
|
)
|
|
|
|
var createReplayLogs bool = false
|
|
|
|
func init() {
|
|
flag.BoolVar(&createReplayLogs, "createreplaylogs", false, "Execute the test commands, save the command output for future replay and skip the tests themselves.")
|
|
}
|
|
|
|
func TestMain(m *testing.M) {
|
|
cmdtesting.TestMain(m)
|
|
}
|
|
|
|
func TestNormalizedList_MultiplePackagesExists_StdoutsAlphaSortedPackageNameVersionPairs(t *testing.T) {
|
|
result := cmdtesting.New(t, createReplayLogs).Run("normalized-list", "xdot", "rolldice")
|
|
result.ExpectSuccessfulOut("rolldice=1.16-1build1 xdot=1.1-2")
|
|
}
|
|
|
|
func TestNormalizedList_SamePackagesDifferentOrder_StdoutsMatch(t *testing.T) {
|
|
expected := "rolldice=1.16-1build1 xdot=1.1-2"
|
|
|
|
ct := cmdtesting.New(t, createReplayLogs)
|
|
|
|
result := ct.Run("normalized-list", "rolldice", "xdot")
|
|
result.ExpectSuccessfulOut(expected)
|
|
|
|
result = ct.Run("normalized-list", "xdot", "rolldice")
|
|
result.ExpectSuccessfulOut(expected)
|
|
}
|
|
|
|
func TestNormalizedList_MultiVersionWarning_StdoutSingleVersion(t *testing.T) {
|
|
var result = cmdtesting.New(t, createReplayLogs).Run("normalized-list", "libosmesa6-dev", "libgl1-mesa-dev")
|
|
result.ExpectSuccessfulOut("libgl1-mesa-dev=21.2.6-0ubuntu0.1~20.04.2 libosmesa6-dev=21.2.6-0ubuntu0.1~20.04.2")
|
|
}
|
|
|
|
func TestNormalizedList_SinglePackageExists_StdoutsSinglePackageNameVersionPair(t *testing.T) {
|
|
var result = cmdtesting.New(t, createReplayLogs).Run("normalized-list", "xdot")
|
|
result.ExpectSuccessfulOut("xdot=1.1-2")
|
|
}
|
|
|
|
func TestNormalizedList_VersionContainsColon_StdoutsEntireVersion(t *testing.T) {
|
|
var result = cmdtesting.New(t, createReplayLogs).Run("normalized-list", "default-jre")
|
|
result.ExpectSuccessfulOut("default-jre=2:1.11-72")
|
|
}
|
|
|
|
func TestNormalizedList_NonExistentPackageName_StderrsAptCacheErrors(t *testing.T) {
|
|
var result = cmdtesting.New(t, createReplayLogs).Run("normalized-list", "nonexistentpackagename")
|
|
result.ExpectError(
|
|
`Error encountered running apt-cache --quiet=0 --no-all-versions show nonexistentpackagename
|
|
Exited with status code 100; see combined std[out,err] below:
|
|
N: Unable to locate package nonexistentpackagename
|
|
N: Unable to locate package nonexistentpackagename
|
|
E: No packages found`)
|
|
}
|
|
|
|
func TestNormalizedList_NoPackagesGiven_StderrsArgMismatch(t *testing.T) {
|
|
var result = cmdtesting.New(t, createReplayLogs).Run("normalized-list")
|
|
result.ExpectError("Expected at least 2 non-flag arguments but found 1.")
|
|
}
|
|
|
|
func TestNormalizedList_VirtualPackagesExists_StdoutsConcretePackage(t *testing.T) {
|
|
result := cmdtesting.New(t, createReplayLogs).Run("normalized-list", "libvips")
|
|
result.ExpectSuccessfulOut("libvips42=8.9.1-2")
|
|
}
|
|
|
|
// Regression test for https://github.com/awalsh128/cache-apt-pkgs-action/issues/218:
|
|
// a real package (ghostscript) that apt-cache show reports as purely virtual on stale apt lists
|
|
// must resolve to itself (ghostscript=<version>), not to a mangled section-header token such as
|
|
// "Reverse=Provides:".
|
|
func TestNormalizedList_RealPackageMisidentifiedAsVirtual_StdoutsCorrectPackage(t *testing.T) {
|
|
result := cmdtesting.New(t, createReplayLogs).Run("normalized-list", "ghostscript")
|
|
result.ExpectSuccessfulOut("ghostscript=10.02.1~dfsg1-0ubuntu7.8")
|
|
}
|