From 4676c5d63ac70f4bf2c4e4c945a7fa65941676e9 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Timo=20Ter=C3=A4s?= Date: Fri, 24 Feb 2012 08:42:40 +0200 Subject: [PATCH] test: improve pinning tests --- src/apk.c | 13 ++++++++----- src/solver.c | 5 ++++- test/pinning.installed | 22 ++++++++++++++++++++++ test/pinning.repo2 | 20 ++++++++++++++++++++ test/pinning1.test | 2 +- test/pinning2.test | 2 +- test/pinning3.test | 2 +- test/pinning4.test | 2 +- test/pinning5.test | 9 +++++++++ test/pinning6.test | 11 +++++++++++ test/pinning7.test | 11 +++++++++++ 11 files changed, 89 insertions(+), 10 deletions(-) create mode 100644 test/pinning.installed create mode 100644 test/pinning.repo2 create mode 100644 test/pinning5.test create mode 100644 test/pinning6.test create mode 100644 test/pinning7.test diff --git a/src/apk.c b/src/apk.c index 254a932..752409f 100644 --- a/src/apk.c +++ b/src/apk.c @@ -462,13 +462,16 @@ int main(int argc, char **argv) } for (i = 0; i < test_repos->num; i++) { struct apk_bstream *bs; - char *fn = test_repos->item[i]; + apk_blob_t spec = APK_BLOB_STR(test_repos->item[i]), name, tag; int repo_tag = 0; - if (fn[0] == '+') { - repo_tag = apk_db_get_tag_id(&db, APK_BLOB_STR("testing")); - fn++; + + if (apk_blob_split(spec, APK_BLOB_STR(":"), &tag, &name)) { + repo_tag = apk_db_get_tag_id(&db, tag); + } else { + name = spec; } - bs = apk_bstream_from_file(AT_FDCWD, fn); + + bs = apk_bstream_from_file(AT_FDCWD, name.ptr); if (bs != NULL) { apk_db_index_read(&db, bs, i); db.repo_tags[repo_tag].allowed_repos |= BIT(i); diff --git a/src/solver.c b/src/solver.c index 39f9683..d12ecff 100644 --- a/src/solver.c +++ b/src/solver.c @@ -356,7 +356,7 @@ static int get_topology_score( }; if (ss->solver_flags & APK_SOLVERF_AVAILABLE) { - /* not upgrading: it is not preferred to change package */ + /* available preferred */ if ((pkg->repos == 0) && ns->has_available_pkgs) score.non_preferred_actions++; } else if (ns->inherited_reinstall || @@ -364,6 +364,9 @@ static int get_topology_score( /* reinstall requested, but not available */ if (!pkg_available(ss->db, pkg)) score.non_preferred_actions++; + } else if (ns->inherited_upgrade || + ((ns->solver_flags_local|ss->solver_flags) & APK_SOLVERF_UPGRADE)) { + /* upgrading - score is just locked here */ } else if ((ns->inherited_upgrade == 0) && ((ns->solver_flags_local|ss->solver_flags) & APK_SOLVERF_UPGRADE) == 0 && ((ns->solver_flags_maybe & APK_SOLVERF_UPGRADE) == 0 || (ps->locked))) { diff --git a/test/pinning.installed b/test/pinning.installed new file mode 100644 index 0000000..8fb45e7 --- /dev/null +++ b/test/pinning.installed @@ -0,0 +1,22 @@ +C:Q1eVpkasfqZAukAXFYbgwt4xffZWU= +P:a +V:3 +S:1 +I:1 +D:b +p:testing + +C:Q1hdUpqRv5mYgJEqW52UmVsv23ysE= +P:b +V:3 +S:1 +I:1 + +C:Q1eVpkasfqZAukAXFYbg324xAt4WU= +P:c +V:3 +S:1 +I:1 +D:a>=3 +p:testing + diff --git a/test/pinning.repo2 b/test/pinning.repo2 new file mode 100644 index 0000000..45c5114 --- /dev/null +++ b/test/pinning.repo2 @@ -0,0 +1,20 @@ +C:Q1eVpkasfqZAukfffYbgwt4xffZWU= +P:a +V:3.1 +S:1 +I:1 +D:b + +C:Q1hdUpqRv5mYgJEqff2UmVsv23ysE= +P:b +V:3.1 +S:1 +I:1 + +C:Q1eVpkasfqZAukAffYsd324xAt4WU= +P:c +V:3.1 +S:1 +I:1 +D:a>=3 + diff --git a/test/pinning1.test b/test/pinning1.test index 311fa3f..3416cac 100644 --- a/test/pinning1.test +++ b/test/pinning1.test @@ -1,6 +1,6 @@ @ARGS --test-repo basic.repo ---test-repo +pinning.repo +--test-repo testing:pinning.repo add a @EXPECT (1/2) Installing b (2) diff --git a/test/pinning2.test b/test/pinning2.test index c655143..aa40250 100644 --- a/test/pinning2.test +++ b/test/pinning2.test @@ -1,6 +1,6 @@ @ARGS --test-repo basic.repo ---test-repo +pinning.repo +--test-repo testing:pinning.repo add a@testing @EXPECT (1/2) Installing b (2) diff --git a/test/pinning3.test b/test/pinning3.test index 60e073f..c5666cc 100644 --- a/test/pinning3.test +++ b/test/pinning3.test @@ -1,6 +1,6 @@ @ARGS --test-repo basic.repo ---test-repo +pinning.repo +--test-repo testing:pinning.repo add a@testing b@testing @EXPECT (1/2) Installing b@testing (3) diff --git a/test/pinning4.test b/test/pinning4.test index 80348f7..49a852f 100644 --- a/test/pinning4.test +++ b/test/pinning4.test @@ -1,6 +1,6 @@ @ARGS --test-repo basic.repo ---test-repo +pinning.repo +--test-repo testing:pinning.repo add c@testing @EXPECT (1/3) Installing b (2) diff --git a/test/pinning5.test b/test/pinning5.test new file mode 100644 index 0000000..17e58d0 --- /dev/null +++ b/test/pinning5.test @@ -0,0 +1,9 @@ +@ARGS +--test-repo basic.repo +--test-repo testing:pinning.repo +--test-repo testing:pinning.repo2 +--test-instdb pinning.installed +--test-world "c@testing" +add +@EXPECT +OK: 0 MiB in 3 packages diff --git a/test/pinning6.test b/test/pinning6.test new file mode 100644 index 0000000..5416c77 --- /dev/null +++ b/test/pinning6.test @@ -0,0 +1,11 @@ +@ARGS +--test-repo basic.repo +--test-repo testing:pinning.repo +--test-repo testing:pinning.repo2 +--test-instdb pinning.installed +--test-world "c@testing" +upgrade +@EXPECT +(1/2) Upgrading a@testing (3 -> 3.1) +(2/2) Upgrading c@testing (3 -> 3.1) +OK: 0 MiB in 3 packages diff --git a/test/pinning7.test b/test/pinning7.test new file mode 100644 index 0000000..42a3570 --- /dev/null +++ b/test/pinning7.test @@ -0,0 +1,11 @@ +@ARGS +--test-repo basic.repo +--test-repo testing:pinning.repo +--test-repo testing2:pinning.repo +--test-instdb pinning.installed +--test-world "c@testing" +add c@testing2 +@EXPECT +(1/2) Updating pinning a@testing2 (3) +(2/2) Updating pinning c@testing2 (3) +OK: 0 MiB in 3 packages