mirror of
https://github.com/openSUSE/libsolv.git
synced 2026-02-05 12:45:46 +01:00
Enable support for new rpm's caret comparison
And add a testcase.
This commit is contained in:
@@ -15,6 +15,7 @@
|
||||
#include "pool.h"
|
||||
#include "poolarch.h"
|
||||
#include "poolvendor.h"
|
||||
#include "evr.h"
|
||||
#include "repo.h"
|
||||
#include "repo_solv.h"
|
||||
#include "solver.h"
|
||||
@@ -2967,6 +2968,14 @@ testcase_read(Pool *pool, FILE *fp, const char *testcase, Queue *job, char **res
|
||||
}
|
||||
queue_push(&autoinstq, pool_str2id(pool, pieces[2], 1));
|
||||
}
|
||||
else if (!strcmp(pieces[0], "evrcmp") && npieces == 3)
|
||||
{
|
||||
Id evr1 = pool_str2id(pool, pieces[1], 1);
|
||||
Id evr2 = pool_str2id(pool, pieces[2], 1);
|
||||
int r = pool_evrcmp(pool, evr1, evr2, EVRCMP_COMPARE);
|
||||
r = r < 0 ? REL_LT : r > 0 ? REL_GT : REL_EQ;
|
||||
queue_push2(job, SOLVER_NOOP | SOLVER_SOLVABLE_PROVIDES, pool_rel2id(pool, evr1, evr2, r, 1));
|
||||
}
|
||||
else
|
||||
{
|
||||
pool_error(pool, 0, "testcase_read: cannot parse command '%s'", pieces[0]);
|
||||
|
||||
@@ -76,7 +76,6 @@ solv_vercmp_rpm(const char *s1, const char *q1, const char *s2, const char *q2)
|
||||
|
||||
for (;;)
|
||||
{
|
||||
#ifdef RPM_CARET_DEPS
|
||||
while (s1 < q1 && !(*s1 >= '0' && *s1 <= '9') &&
|
||||
!(*s1 >= 'a' && *s1 <= 'z') && !(*s1 >= 'A' && *s1 <= 'Z') && *s1 != '~' && *s1 != '^')
|
||||
s1++;
|
||||
@@ -95,14 +94,6 @@ solv_vercmp_rpm(const char *s1, const char *q1, const char *s2, const char *q2)
|
||||
}
|
||||
if (s2 < q2 && *s2 == '^')
|
||||
return s1 < q1 ? 1 : -1;
|
||||
#else
|
||||
while (s1 < q1 && !(*s1 >= '0' && *s1 <= '9') &&
|
||||
!(*s1 >= 'a' && *s1 <= 'z') && !(*s1 >= 'A' && *s1 <= 'Z') && *s1 != '~')
|
||||
s1++;
|
||||
while (s2 < q2 && !(*s2 >= '0' && *s2 <= '9') &&
|
||||
!(*s2 >= 'a' && *s2 <= 'z') && !(*s2 >= 'A' && *s2 <= 'Z') && *s2 != '~')
|
||||
s2++;
|
||||
#endif
|
||||
if (s1 < q1 && *s1 == '~')
|
||||
{
|
||||
if (s2 < q2 && *s2 == '~')
|
||||
|
||||
70
test/testcases/evrcmp/caret.t
Normal file
70
test/testcases/evrcmp/caret.t
Normal file
@@ -0,0 +1,70 @@
|
||||
repo system 0 empty
|
||||
repo available 0 testtags <inline>
|
||||
#>=Pkg: A1 1.0 0
|
||||
#>=Pkg: A2 1.0^ 0
|
||||
system i686 rpm system
|
||||
|
||||
evrcmp 1.0~rc1 1.0~rc1
|
||||
evrcmp 1.0~rc1 1.0
|
||||
evrcmp 1.0 1.0~rc1
|
||||
evrcmp 1.0~rc1 1.0~rc2
|
||||
evrcmp 1.0~rc2 1.0~rc1
|
||||
evrcmp 1.0~rc1~git123 1.0~rc1~git123
|
||||
evrcmp 1.0~rc1~git123 1.0~rc1
|
||||
evrcmp 1.0~rc1 1.0~rc1~git123
|
||||
|
||||
evrcmp 1.0^ 1.0^
|
||||
evrcmp 1.0^ 1.0
|
||||
evrcmp 1.0 1.0^
|
||||
evrcmp 1.0^git1 1.0^git1
|
||||
evrcmp 1.0^git1 1.0
|
||||
evrcmp 1.0 1.0^git1
|
||||
evrcmp 1.0^git1 1.0^git2
|
||||
evrcmp 1.0^git2 1.0^git1
|
||||
evrcmp 1.0^git1 1.01
|
||||
evrcmp 1.01 1.0^git1
|
||||
evrcmp 1.0^20160101 1.0^20160101
|
||||
evrcmp 1.0^20160101 1.0.1
|
||||
evrcmp 1.0.1 1.0^20160101
|
||||
evrcmp 1.0^20160101^git1 1.0^20160101^git1
|
||||
evrcmp 1.0^20160102 1.0^20160101^git1
|
||||
evrcmp 1.0^20160101^git1 1.0^20160102
|
||||
|
||||
evrcmp 1.0~rc1^git1 1.0~rc1^git1
|
||||
evrcmp 1.0~rc1^git1 1.0~rc1
|
||||
evrcmp 1.0~rc1 1.0~rc1^git1
|
||||
evrcmp 1.0^git1~pre 1.0^git1~pre
|
||||
evrcmp 1.0^git1 1.0^git1~pre
|
||||
evrcmp 1.0^git1~pre 1.0^git1
|
||||
|
||||
result jobs <inline>
|
||||
#>job noop provides 1.0 < 1.0^
|
||||
#>job noop provides 1.0 < 1.0^git1
|
||||
#>job noop provides 1.0 > 1.0~rc1
|
||||
#>job noop provides 1.0.1 > 1.0^20160101
|
||||
#>job noop provides 1.01 > 1.0^git1
|
||||
#>job noop provides 1.0^ = 1.0^
|
||||
#>job noop provides 1.0^ > 1.0
|
||||
#>job noop provides 1.0^20160101 < 1.0.1
|
||||
#>job noop provides 1.0^20160101 = 1.0^20160101
|
||||
#>job noop provides 1.0^20160101^git1 < 1.0^20160102
|
||||
#>job noop provides 1.0^20160101^git1 = 1.0^20160101^git1
|
||||
#>job noop provides 1.0^20160102 > 1.0^20160101^git1
|
||||
#>job noop provides 1.0^git1 < 1.01
|
||||
#>job noop provides 1.0^git1 < 1.0^git2
|
||||
#>job noop provides 1.0^git1 = 1.0^git1
|
||||
#>job noop provides 1.0^git1 > 1.0
|
||||
#>job noop provides 1.0^git1 > 1.0^git1~pre
|
||||
#>job noop provides 1.0^git1~pre < 1.0^git1
|
||||
#>job noop provides 1.0^git1~pre = 1.0^git1~pre
|
||||
#>job noop provides 1.0^git2 > 1.0^git1
|
||||
#>job noop provides 1.0~rc1 < 1.0
|
||||
#>job noop provides 1.0~rc1 < 1.0~rc1^git1
|
||||
#>job noop provides 1.0~rc1 < 1.0~rc2
|
||||
#>job noop provides 1.0~rc1 = 1.0~rc1
|
||||
#>job noop provides 1.0~rc1 > 1.0~rc1~git123
|
||||
#>job noop provides 1.0~rc1^git1 = 1.0~rc1^git1
|
||||
#>job noop provides 1.0~rc1^git1 > 1.0~rc1
|
||||
#>job noop provides 1.0~rc1~git123 < 1.0~rc1
|
||||
#>job noop provides 1.0~rc1~git123 = 1.0~rc1~git123
|
||||
#>job noop provides 1.0~rc2 > 1.0~rc1
|
||||
Reference in New Issue
Block a user