tests/plover-gtk/test-transactionhelper.c
changeset 101 abdfa0410032
parent 42 419a02fa70db
     1.1 --- a/tests/plover-gtk/test-transactionhelper.c	Thu Jun 16 12:11:14 2016 +0100
     1.2 +++ b/tests/plover-gtk/test-transactionhelper.c	Thu Jul 16 23:02:31 2020 +0100
     1.3 @@ -29,6 +29,16 @@
     1.4  GtkBuilder *ui;
     1.5  gboolean manual_mode=FALSE;
     1.6  
     1.7 +#if 0
     1.8 +static void complete_changed(GtkWidget *page,GParamSpec *child_property,
     1.9 +  PloverTransactionHelper *helper)
    1.10 +{
    1.11 +    g_message("complete child property for %s now %s",
    1.12 +      gtk_buildable_get_name(GTK_BUILDABLE(page)),
    1.13 +      gtk_assistant_get_page_complete(helper->assistant,page)?"TRUE":"FALSE");
    1.14 +}
    1.15 +#endif
    1.16 +
    1.17  PloverTransactionHelper *get_transaction_helper(void)
    1.18  {
    1.19      const char *dir;
    1.20 @@ -43,6 +53,23 @@
    1.21      g_free(s);
    1.22      helper=plover_transaction_helper_new(ui);
    1.23      g_object_unref(ui);
    1.24 +#if 0
    1.25 +    if (helper->assistant)
    1.26 +    {
    1.27 +	GtkWidget *page;
    1.28 +	int i;
    1.29 +	for(i=gtk_assistant_get_n_pages(helper->assistant)-1;i>=0;i--)
    1.30 +	{
    1.31 +	    page=gtk_assistant_get_nth_page(helper->assistant,i);
    1.32 +	    g_signal_connect(page,"child-notify::complete",
    1.33 +	      G_CALLBACK(complete_changed),helper);
    1.34 +	    g_message("complete child property for %s initially %s",
    1.35 +	      gtk_buildable_get_name(GTK_BUILDABLE(page)),
    1.36 +	      gtk_assistant_get_page_complete(helper->assistant,page)?
    1.37 +	      "TRUE":"FALSE");
    1.38 +	}
    1.39 +    }
    1.40 +#endif
    1.41      return helper;
    1.42  }
    1.43  
    1.44 @@ -56,6 +83,8 @@
    1.45  static void test_basic_properties(void)
    1.46  {
    1.47      const char *prefix;
    1.48 +    char *uri;
    1.49 +    gchar *default_prefix;
    1.50      GError *err=NULL;
    1.51      struct comps *comps;
    1.52      PloverTransactionHelper *helper;
    1.53 @@ -64,7 +93,9 @@
    1.54      upstream=plover_repository_new_from_yum("../yum-repo-test-dir",&err);
    1.55      if (!upstream)
    1.56  	g_error("../yum-repo-test-dir: %s",err->message);
    1.57 -    installed=plover_package_set_new_from_installed("../razor-test-dir",&err);
    1.58 +    uri=razor_path_to_uri("../razor-test-dir");
    1.59 +    installed=plover_package_set_new_from_installed(uri,&err);
    1.60 +    free(uri);
    1.61      if (!installed)
    1.62  	g_error("../razor-test-dir: %s",err->message);
    1.63      helper=get_transaction_helper();
    1.64 @@ -81,7 +112,12 @@
    1.65      g_assert(plover_comps_lookup_group(comps,"base"));
    1.66      prefix=plover_transaction_helper_get_prefix(helper,&err);
    1.67      g_assert(!err);
    1.68 -    g_assert_cmpstr(prefix,==,plover_default_prefix_for_vendor("Acme Corporation"));
    1.69 +    comps=plover_comps_new();
    1.70 +    plover_comps_set_vendor(comps,"Acme Corporation");
    1.71 +    default_prefix=plover_comps_get_default_prefix(comps);
    1.72 +    plover_comps_free(comps);
    1.73 +    g_assert_cmpstr(prefix,==,default_prefix);
    1.74 +    g_free(default_prefix);
    1.75      g_assert(!plover_transaction_helper_get_visible(helper));
    1.76      g_assert(!plover_transaction_helper_get_error(helper,NULL));
    1.77      g_object_unref(upstream);
    1.78 @@ -91,21 +127,21 @@
    1.79  
    1.80  static void test_install_group(void)
    1.81  {
    1.82 -    gchar *root,*root_uri;
    1.83 +    gchar *root;
    1.84      GError *err=NULL;
    1.85 -    GFile *file;
    1.86 +    char *uri;
    1.87      PloverPackageSet *installed;
    1.88      PloverTransactionHelper *helper;
    1.89      root=g_strdup("razor-test-dir-XXXXXX");
    1.90      g_assert(mkdtemp(root));
    1.91 -    file=g_file_new_for_path(root);
    1.92 +    uri=razor_path_to_uri(root);
    1.93      g_free(root);
    1.94 -    root_uri=g_file_get_uri(file);
    1.95 -    g_object_unref(file);
    1.96 -    g_setenv("RAZOR_ROOT",root_uri,TRUE);
    1.97 -    g_free(root_uri);
    1.98 +    g_setenv("RAZOR_ROOT",uri,TRUE);
    1.99 +    free(uri);
   1.100      helper=get_transaction_helper();
   1.101 -    installed=plover_package_set_new_from_installed("../razor-test-dir",&err);
   1.102 +    uri=razor_path_to_uri("../razor-test-dir");
   1.103 +    installed=plover_package_set_new_from_installed(uri,&err);
   1.104 +    free(uri);
   1.105      if (!installed)
   1.106  	g_error("../razor-test-dir: %s",err->message);
   1.107      plover_transaction_helper_set_installed(helper,installed);
   1.108 @@ -120,20 +156,17 @@
   1.109  
   1.110  static void test_remove_group(void)
   1.111  {
   1.112 -    gchar *root,*root_uri;
   1.113 +    gchar *root;
   1.114 +    char *uri;
   1.115      GError *err=NULL;
   1.116 -    GFile *file;
   1.117      PloverPackageSet *installed;
   1.118      PloverTransactionHelper *helper;
   1.119      struct plover_vector *packages;
   1.120      char *pkgs[]={"zip",NULL};
   1.121      root=g_strdup("razor-test-dir-XXXXXX");
   1.122      g_assert(mkdtemp(root));
   1.123 -    file=g_file_new_for_path(root);
   1.124 -    root_uri=g_file_get_uri(file);
   1.125 -    g_object_unref(file);
   1.126 -    g_setenv("RAZOR_ROOT",root_uri,TRUE);
   1.127 -    g_free(root_uri);
   1.128 +    uri=razor_path_to_uri(root);
   1.129 +    g_setenv("RAZOR_ROOT",uri,TRUE);
   1.130      helper=get_transaction_helper();
   1.131      plover_transaction_helper_set_base(helper,"../yum-repo-test-dir");
   1.132      packages=plover_transaction_helper_group_get_default_packages(helper,
   1.133 @@ -143,7 +176,7 @@
   1.134      if (!plover_install("../yum-repo-test-dir",NULL,packages->strings,&err))
   1.135  	g_error("plover_install: %s",err->message);
   1.136      plover_vector_free(packages);
   1.137 -    installed=plover_package_set_new_from_installed(root,&err);
   1.138 +    installed=plover_package_set_new_from_installed(uri,&err);
   1.139      if (!installed)
   1.140  	g_error("%s: %s",root,err->message);
   1.141      plover_transaction_helper_set_installed(helper,installed);
   1.142 @@ -153,26 +186,26 @@
   1.143      g_assert(!err);
   1.144      g_object_unref(helper);
   1.145      g_unsetenv("RAZOR_ROOT");
   1.146 +    free(uri);
   1.147      g_free(root);
   1.148  }
   1.149  
   1.150  static void test_update(void)
   1.151  {
   1.152 -    gchar *root,*root_uri;
   1.153 +    gchar *root;
   1.154 +    char *uri;
   1.155      GError *err=NULL;
   1.156 -    GFile *file;
   1.157      PloverPackageSet *installed;
   1.158      PloverTransactionHelper *helper;
   1.159      root=g_strdup("razor-test-dir-XXXXXX");
   1.160      g_assert(mkdtemp(root));
   1.161 -    file=g_file_new_for_path(root);
   1.162 -    g_free(root);
   1.163 -    root_uri=g_file_get_uri(file);
   1.164 -    g_object_unref(file);
   1.165 -    g_setenv("RAZOR_ROOT",root_uri,TRUE);
   1.166 -    g_free(root_uri);
   1.167 +    uri=razor_path_to_uri(root);
   1.168 +    g_setenv("RAZOR_ROOT",uri,TRUE);
   1.169 +    g_free(uri);
   1.170      helper=get_transaction_helper();
   1.171 -    installed=plover_package_set_new_from_installed("../razor-test-dir",&err);
   1.172 +    uri=razor_path_to_uri("../razor-test-dir");
   1.173 +    installed=plover_package_set_new_from_installed(uri,&err);
   1.174 +    free(uri);
   1.175      if (!installed)
   1.176  	g_error("../razor-test-dir: %s",err->message);
   1.177      plover_transaction_helper_set_installed(helper,installed);
   1.178 @@ -204,6 +237,19 @@
   1.179      struct run_install_baton *baton=data;
   1.180      GtkWidget *page;
   1.181      GtkAssistant *assistant=baton->helper->assistant;
   1.182 +#if 0
   1.183 +    page=gtk_assistant_get_nth_page(assistant,
   1.184 +      gtk_assistant_get_current_page(assistant));
   1.185 +    g_message("run_install_tick: state is %s, on page %s",
   1.186 +      baton->state==RI_STATE_INIT?"INIT":
   1.187 +      baton->state==RI_STATE_SUMMARY?"SUMMARY":
   1.188 +      baton->state==RI_STATE_PROGRESS?"PROGRESS":
   1.189 +      baton->state==RI_STATE_PROGRESS_DELAY?"PROGRESS_DELAY":
   1.190 +      baton->state==RI_STATE_DONE?"DONE":
   1.191 +      baton->state==RI_STATE_FINISH?"FINISH":
   1.192 +      "Unknown",
   1.193 +      gtk_buildable_get_name(GTK_BUILDABLE(page)));
   1.194 +#endif
   1.195      switch(baton->state)
   1.196      {
   1.197  	case RI_STATE_INIT:
   1.198 @@ -215,6 +261,7 @@
   1.199  	case RI_STATE_SUMMARY:
   1.200  	    if (gtk_assistant_get_current_page(assistant)<1)
   1.201  		return TRUE;
   1.202 +	    g_assert(gtk_widget_is_sensitive(assistant->apply));
   1.203  	    if (!manual_mode)
   1.204  		gtk_button_clicked(GTK_BUTTON(assistant->apply));
   1.205  	    break;
   1.206 @@ -254,23 +301,20 @@
   1.207  
   1.208  static void test_run_install(void)
   1.209  {
   1.210 -    gchar *root,*root_uri;
   1.211 +    gchar *root;
   1.212 +    char *uri;
   1.213      GError *err=NULL;
   1.214 -    GFile *file;
   1.215      struct plover_vector *packages;
   1.216      PloverPackageSet *installed;
   1.217      PloverTransactionHelper *helper;
   1.218      struct run_install_baton baton={0,};
   1.219      root=g_strdup("razor-test-dir-XXXXXX");
   1.220      g_assert(mkdtemp(root));
   1.221 -    file=g_file_new_for_path(root);
   1.222 -    root_uri=g_file_get_uri(file);
   1.223 -    g_object_unref(file);
   1.224 -    g_setenv("RAZOR_ROOT",root_uri,TRUE);
   1.225 -    g_free(root_uri);
   1.226 +    uri=razor_path_to_uri(root);
   1.227 +    g_setenv("RAZOR_ROOT",uri,TRUE);
   1.228      helper=get_transaction_helper();
   1.229      installed=plover_package_set_new();
   1.230 -    if (!plover_package_set_open(installed,root,TRUE,&err))
   1.231 +    if (!plover_package_set_open(installed,uri,TRUE,&err))
   1.232  	g_error("%s: %s",root,err->message);
   1.233      plover_transaction_helper_set_installed(helper,installed);
   1.234      g_object_unref(installed);
   1.235 @@ -287,6 +331,7 @@
   1.236      gtk_main();
   1.237      g_object_unref(helper);
   1.238      g_unsetenv("RAZOR_ROOT");
   1.239 +    free(uri);
   1.240      g_free(root);
   1.241  }
   1.242  
   1.243 @@ -320,6 +365,7 @@
   1.244  	case RR_STATE_SUMMARY:
   1.245  	    if (gtk_assistant_get_current_page(assistant)<1)
   1.246  		return TRUE;
   1.247 +	    g_assert(gtk_widget_is_sensitive(assistant->apply));
   1.248  	    if (!manual_mode)
   1.249  		gtk_button_clicked(GTK_BUTTON(assistant->apply));
   1.250  	    break;
   1.251 @@ -359,20 +405,17 @@
   1.252  
   1.253  static void test_run_remove(void)
   1.254  {
   1.255 -    gchar *root,*root_uri;
   1.256 +    gchar *root;
   1.257 +    char *uri;
   1.258      GError *err=NULL;
   1.259 -    GFile *file;
   1.260      struct plover_vector *packages;
   1.261      PloverPackageSet *installed;
   1.262      PloverTransactionHelper *helper;
   1.263      struct run_remove_baton baton={0,};
   1.264      root=g_strdup("razor-test-dir-XXXXXX");
   1.265      g_assert(mkdtemp(root));
   1.266 -    file=g_file_new_for_path(root);
   1.267 -    root_uri=g_file_get_uri(file);
   1.268 -    g_object_unref(file);
   1.269 -    g_setenv("RAZOR_ROOT",root_uri,TRUE);
   1.270 -    g_free(root_uri);
   1.271 +    uri=razor_path_to_uri(root);
   1.272 +    g_setenv("RAZOR_ROOT",uri,TRUE);
   1.273      helper=get_transaction_helper();
   1.274      plover_transaction_helper_set_base(helper,"../yum-repo-test-dir");
   1.275      packages=
   1.276 @@ -383,7 +426,7 @@
   1.277  	g_error("plover_install: %s",err->message);
   1.278      plover_vector_free(packages);
   1.279      installed=plover_package_set_new();
   1.280 -    if (!plover_package_set_open(installed,root,TRUE,&err))
   1.281 +    if (!plover_package_set_open(installed,uri,TRUE,&err))
   1.282  	g_error("%s: %s",root,err->message);
   1.283      plover_transaction_helper_set_installed(helper,installed);
   1.284      g_object_unref(installed);
   1.285 @@ -396,6 +439,7 @@
   1.286      gtk_main();
   1.287      g_object_unref(helper);
   1.288      g_unsetenv("RAZOR_ROOT");
   1.289 +    free(uri);
   1.290      g_free(root);
   1.291  }
   1.292  
   1.293 @@ -429,6 +473,7 @@
   1.294  	case RU_STATE_SUMMARY:
   1.295  	    if (gtk_assistant_get_current_page(assistant)<1)
   1.296  		return TRUE;
   1.297 +	    g_assert(gtk_widget_is_sensitive(assistant->apply));
   1.298  	    if (!manual_mode)
   1.299  		gtk_button_clicked(GTK_BUTTON(assistant->apply));
   1.300  	    break;
   1.301 @@ -468,9 +513,9 @@
   1.302  
   1.303  static void test_run_update(void)
   1.304  {
   1.305 -    gchar *root,*root_uri;
   1.306 +    gchar *root;
   1.307 +    char *uri;
   1.308      GError *err=NULL;
   1.309 -    GFile *file;
   1.310      struct razor_importer *importer;
   1.311      struct razor_set *downgraded;
   1.312      struct razor_atomic *atomic;
   1.313 @@ -480,15 +525,12 @@
   1.314      struct run_update_baton baton={0,};
   1.315      root=g_strdup("razor-test-dir-XXXXXX");
   1.316      g_assert(mkdtemp(root));
   1.317 -    file=g_file_new_for_path(root);
   1.318 -    root_uri=g_file_get_uri(file);
   1.319 -    g_object_unref(file);
   1.320 -    g_setenv("RAZOR_ROOT",root_uri,TRUE);
   1.321 -    g_free(root_uri);
   1.322 +    uri=razor_path_to_uri(root);
   1.323 +    g_setenv("RAZOR_ROOT",uri,TRUE);
   1.324      helper=get_transaction_helper();
   1.325      plover_transaction_helper_set_base(helper,"../yum-repo-test-dir");
   1.326      installed=plover_package_set_new();
   1.327 -    if (!plover_package_set_open(installed,root,TRUE,&err))
   1.328 +    if (!plover_package_set_open(installed,uri,TRUE,&err))
   1.329  	g_error("%s: %s",root,err->message);
   1.330      importer=razor_importer_create();
   1.331      razor_importer_begin_package(importer,"zappy","0-1","noarch");
   1.332 @@ -513,6 +555,7 @@
   1.333      gtk_main();
   1.334      g_object_unref(helper);
   1.335      g_unsetenv("RAZOR_ROOT");
   1.336 +    free(uri);
   1.337      g_free(root);
   1.338  }
   1.339  
   1.340 @@ -590,8 +633,8 @@
   1.341  static void test_check_vendor(void)
   1.342  {
   1.343      int fh;
   1.344 -    gchar *root,*root_uri,*s;
   1.345 -    GFile *file;
   1.346 +    gchar *root,*s;
   1.347 +    char *uri;
   1.348      GError *err=NULL;
   1.349      struct razor_importer *importer;
   1.350      struct razor_set *downgraded;
   1.351 @@ -599,19 +642,17 @@
   1.352      struct plover_vector *packages;
   1.353      PloverPackageSet *installed;
   1.354      PloverTransactionHelper *helper;
   1.355 -    struct run_update_baton baton={0,};
   1.356 +    struct check_vendor_baton baton={0,};
   1.357      g_setenv("PLOVER_VENDOR_PREFIX","/srv",TRUE);
   1.358      root=g_strdup("razor-test-dir-XXXXXX");
   1.359      g_assert(mkdtemp(root));
   1.360 -    file=g_file_new_for_path(root);
   1.361 -    root_uri=g_file_get_uri(file);
   1.362 -    g_object_unref(file);
   1.363 -    g_setenv("RAZOR_ROOT",root_uri,TRUE);
   1.364 +    uri=razor_path_to_uri(root);
   1.365 +    g_setenv("RAZOR_ROOT",uri,TRUE);
   1.366      helper=get_transaction_helper();
   1.367      plover_transaction_helper_set_check_vendor(helper,TRUE);
   1.368      plover_transaction_helper_set_base(helper,"../yum-repo-test-dir");
   1.369      installed=plover_package_set_new();
   1.370 -    if (!plover_package_set_open(installed,root,TRUE,&err))
   1.371 +    if (!plover_package_set_open(installed,uri,TRUE,&err))
   1.372  	g_error("%s: %s",root,err->message);
   1.373      importer=razor_importer_create();
   1.374      razor_importer_begin_package(importer,"zappy","0-1","noarch");
   1.375 @@ -622,8 +663,8 @@
   1.376      razor_importer_finish_package(importer);
   1.377      downgraded=razor_importer_finish(importer);
   1.378      atomic=razor_atomic_open("Add downgraded packages");
   1.379 -    razor_atomic_make_dirs(atomic,root_uri,"/test/bin/zappy");
   1.380 -    s=g_build_filename(root_uri,"test/bin/zappy",NULL);
   1.381 +    razor_atomic_make_dirs(atomic,uri,"/test/bin/zappy");
   1.382 +    s=g_build_filename(uri,"test/bin/zappy",NULL);
   1.383      fh=razor_atomic_create_file(atomic,s,S_IRWXU|S_IRWXG|S_IRWXO);
   1.384      g_free(s);
   1.385      razor_atomic_close(atomic,fh);
   1.386 @@ -644,10 +685,139 @@
   1.387      g_object_unref(helper);
   1.388      g_unsetenv("RAZOR_ROOT");
   1.389      g_free(root);
   1.390 -    g_free(root_uri);
   1.391 +    free(uri);
   1.392      g_unsetenv("PLOVER_VENDOR_PREFIX");
   1.393  }
   1.394  
   1.395 +static gchar *create_new_root_and_install(gchar **prefix_p,char **pkgs)
   1.396 +{
   1.397 +    gchar *root,*prefix;
   1.398 +    char *uri;
   1.399 +    GError *err=NULL;
   1.400 +    struct comps *comps;
   1.401 +    PloverTransaction *transaction;
   1.402 +    root=g_strdup("razor-test-dir-XXXXXX");
   1.403 +    g_assert(mkdtemp(root));
   1.404 +    uri=razor_path_to_uri(root);
   1.405 +    g_setenv("RAZOR_ROOT",uri,TRUE);
   1.406 +    free(uri);
   1.407 +    uri=razor_path_to_uri("../yum-repo-test-dir/repodata/comps.xml");
   1.408 +    comps=plover_comps_new_from_uri(uri,&err);
   1.409 +    free(uri);
   1.410 +    if (!comps)
   1.411 +	g_error("../yum-repo-test-dir/repodata/comps.xml: %s",err->message);
   1.412 +    prefix=plover_comps_get_default_prefix(comps);
   1.413 +    plover_comps_free(comps);
   1.414 +    transaction=plover_transaction_new_install("../yum-repo-test-dir",prefix,
   1.415 +      pkgs,&err);
   1.416 +    if (!transaction)
   1.417 +	g_error("../yum-repo-test-dir: %s",err->message);
   1.418 +    g_assert(plover_transaction_commit(transaction,NULL,NULL));
   1.419 +    g_object_unref(transaction);
   1.420 +    fflush(stdout);
   1.421 +    if (prefix_p)
   1.422 +	*prefix_p=prefix;
   1.423 +    else
   1.424 +	g_free(prefix);
   1.425 +    return root;
   1.426 +}
   1.427 +
   1.428 +static check_file(const char *root,const char *path)
   1.429 +{
   1.430 +    gchar *s;
   1.431 +    s=g_build_filename(root,path,NULL);
   1.432 +    g_assert(g_file_test(s,G_FILE_TEST_EXISTS));
   1.433 +    g_free(s);
   1.434 +}
   1.435 +
   1.436 +static check_no_file(const char *root,const char *path)
   1.437 +{
   1.438 +    gchar *s;
   1.439 +    s=g_build_filename(root,path,NULL);
   1.440 +    g_assert(!g_file_test(s,G_FILE_TEST_EXISTS));
   1.441 +    g_free(s);
   1.442 +}
   1.443 +
   1.444 +/*
   1.445 + * Test that installing from a repository which is marked as distribution-local
   1.446 + * on top of an existing global installation works if prefix is NULL
   1.447 + * (which is the case on UNIX if PLOVER_VENDOR_PREFIX is not set).
   1.448 + */
   1.449 +static void test_unprefixed_distribution_local(void)
   1.450 +{
   1.451 +    gchar *root;
   1.452 +    GError *err=NULL;
   1.453 +    char *pkgs[]={"zap",NULL};
   1.454 +    struct plover_vector *packages;
   1.455 +    PloverPackageSet *installed;
   1.456 +    PloverTransactionHelper *helper;
   1.457 +    struct run_install_baton baton={0,};
   1.458 +    g_unsetenv("PLOVER_VENDOR_PREFIX");
   1.459 +    root=create_new_root_and_install(NULL,pkgs);
   1.460 +    check_file(root,"/usr/bin/zap");
   1.461 +    helper=get_transaction_helper();
   1.462 +    plover_transaction_helper_set_check_vendor(helper,TRUE);
   1.463 +    plover_transaction_helper_set_base(helper,"../distribution-local-test-dir");
   1.464 +    packages=plover_vector_new();
   1.465 +    plover_vector_append(packages,"zappy");
   1.466 +    if (!plover_transaction_helper_install_packages(helper,packages,&err))
   1.467 +	g_error("zappy: %s",err->message);
   1.468 +    g_assert(!err);
   1.469 +    plover_vector_free(packages);
   1.470 +    plover_transaction_helper_present(helper);
   1.471 +    baton.helper=helper;
   1.472 +    baton.eid=g_idle_add_full(G_PRIORITY_LOW,run_install_tick,&baton,NULL);
   1.473 +    gtk_main();
   1.474 +    g_object_unref(helper);
   1.475 +    check_file(root,"/usr/bin/zappy");
   1.476 +    g_free(root);
   1.477 +    g_unsetenv("RAZOR_ROOT");
   1.478 +}
   1.479 +
   1.480 +/*
   1.481 + * Test that installing from a repository which is marked as distribution-local
   1.482 + * on top of an existing global installation requires removing the existing
   1.483 + * installation if prefix is non-NULL (which is the case if PLOVER_VENDOR_PREFIX
   1.484 + * is set).
   1.485 + */
   1.486 +static void test_prefixed_distribution_local(void)
   1.487 +{
   1.488 +    gchar *root,*s;
   1.489 +    gchar *prefix;
   1.490 +    GError *err=NULL;
   1.491 +    char *pkgs[]={"zap",NULL};
   1.492 +    struct plover_vector *packages;
   1.493 +    PloverPackageSet *installed;
   1.494 +    PloverTransactionHelper *helper;
   1.495 +    struct check_vendor_baton baton={0,};
   1.496 +    g_setenv("PLOVER_VENDOR_PREFIX","/srv",TRUE);
   1.497 +    helper=get_transaction_helper();
   1.498 +    plover_transaction_helper_set_check_vendor(helper,TRUE);
   1.499 +    plover_transaction_helper_set_base(helper,"../distribution-local-test-dir");
   1.500 +    root=create_new_root_and_install(&prefix,pkgs);
   1.501 +    s=g_build_filename(prefix,"bin/zap",NULL);
   1.502 +    check_file(root,s);
   1.503 +    g_free(s);
   1.504 +    packages=plover_vector_new();
   1.505 +    plover_vector_append(packages,"filesystem");
   1.506 +    if (!plover_transaction_helper_install_packages(helper,packages,&err))
   1.507 +	g_error("filesystem: %s",err->message);
   1.508 +    g_assert(!err);
   1.509 +    plover_vector_free(packages);
   1.510 +    plover_transaction_helper_present(helper);
   1.511 +    baton.helper=helper;
   1.512 +    baton.eid=g_idle_add_full(G_PRIORITY_LOW,check_vendor_tick,&baton,NULL);
   1.513 +    gtk_main();
   1.514 +    g_object_unref(helper);
   1.515 +    s=g_build_filename(prefix,"bin/zap",NULL);
   1.516 +    check_no_file(root,s);
   1.517 +    g_free(s);
   1.518 +    check_no_file(root,"/media");
   1.519 +    g_free(root);
   1.520 +    g_free(prefix);
   1.521 +    g_unsetenv("RAZOR_ROOT");
   1.522 +}
   1.523 +
   1.524  struct set_error_baton {
   1.525      enum {
   1.526  	SE_STATE_INIT = 0,
   1.527 @@ -687,24 +857,24 @@
   1.528  
   1.529  static void test_set_error(void)
   1.530  {
   1.531 -    gchar *root,*root_uri;
   1.532 +    gchar *root;
   1.533 +    char *uri;
   1.534      const char *errmsg;
   1.535      GError *err=NULL;
   1.536      const GError *err2=NULL;
   1.537 -    GFile *file;
   1.538      PloverPackageSet *installed;
   1.539      PloverTransactionHelper *helper;
   1.540      struct set_error_baton baton={0,};
   1.541      root=g_strdup("razor-test-dir-XXXXXX");
   1.542      g_assert(mkdtemp(root));
   1.543 -    file=g_file_new_for_path(root);
   1.544 +    uri=razor_path_to_uri(root);
   1.545      g_free(root);
   1.546 -    root_uri=g_file_get_uri(file);
   1.547 -    g_object_unref(file);
   1.548 -    g_setenv("RAZOR_ROOT",root_uri,TRUE);
   1.549 -    g_free(root_uri);
   1.550 +    g_setenv("RAZOR_ROOT",uri,TRUE);
   1.551 +    free(uri);
   1.552      helper=get_transaction_helper();
   1.553 -    installed=plover_package_set_new_from_installed("../razor-test-dir",&err);
   1.554 +    uri=razor_path_to_uri("../razor-test-dir");
   1.555 +    installed=plover_package_set_new_from_installed(uri,&err);
   1.556 +    free(uri);
   1.557      if (!installed)
   1.558  	g_error("../razor-test-dir: %s",err->message);
   1.559      plover_transaction_helper_set_installed(helper,installed);
   1.560 @@ -759,6 +929,10 @@
   1.561      g_test_add_func("/transactionhelper/run-remove",test_run_remove);
   1.562      g_test_add_func("/transactionhelper/run-update",test_run_update);
   1.563      g_test_add_func("/transactionhelper/check-vendor",test_check_vendor);
   1.564 +    g_test_add_func("/transactionhelper/unprefixed-distribution-local",
   1.565 +      test_unprefixed_distribution_local);
   1.566 +    g_test_add_func("/transactionhelper/prefixed-distribution-local",
   1.567 +      test_prefixed_distribution_local);
   1.568      g_test_add_func("/transactionhelper/set-error",test_set_error);
   1.569      retval=g_test_run();
   1.570      return retval;