Index: subversion/include/svn_auth.h
===================================================================
--- subversion/include/svn_auth.h	(revision 31106)
+++ subversion/include/svn_auth.h	(working copy)
@@ -766,6 +766,11 @@
 
 #endif /* DARWIN || DOXYGEN */
 
+void
+svn_auth_get_test_simple_provider(svn_auth_provider_object_t **provider,
+                                  apr_pool_t *pool);
+
+
 /** Create and return @a *provider, an authentication provider of type @c
  * svn_auth_cred_username_t that gets/sets information from a user's
  * ~/.subversion configuration directory.  Allocate @a *provider in
Index: subversion/libsvn_subr/cmdline.c
===================================================================
--- subversion/libsvn_subr/cmdline.c	(revision 31106)
+++ subversion/libsvn_subr/cmdline.c	(working copy)
@@ -387,6 +387,8 @@
   /* Disk-caching auth providers, for both
      'username/password' creds and 'username' creds,
      which store passwords encrypted.  */
+  svn_auth_get_test_simple_provider(&provider, pool);
+  APR_ARRAY_PUSH(providers, svn_auth_provider_object_t *) = provider;
 #if defined(WIN32) && !defined(__MINGW32__)
   svn_auth_get_windows_simple_provider(&provider, pool);
   APR_ARRAY_PUSH(providers, svn_auth_provider_object_t *) = provider;
Index: subversion/libsvn_subr/simple_providers.c
===================================================================
--- subversion/libsvn_subr/simple_providers.c	(revision 31106)
+++ subversion/libsvn_subr/simple_providers.c	(working copy)
@@ -47,6 +47,7 @@
 #define SVN_AUTH__SIMPLE_PASSWORD_TYPE             "simple"
 #define SVN_AUTH__WINCRYPT_PASSWORD_TYPE           "wincrypt"
 #define SVN_AUTH__KEYCHAIN_PASSWORD_TYPE           "keychain"
+#define SVN_AUTH__TEST_PASSWORD_TYPE               "test"
 
 /* Baton type for the simple provider. */
 typedef struct
@@ -292,7 +293,8 @@
        * ahead and store it to disk. Else determine whether saving
        * in plaintext is OK. */
       if (strcmp(passtype, SVN_AUTH__WINCRYPT_PASSWORD_TYPE) == 0
-          || strcmp(passtype, SVN_AUTH__KEYCHAIN_PASSWORD_TYPE) == 0)
+          || strcmp(passtype, SVN_AUTH__KEYCHAIN_PASSWORD_TYPE) == 0
+          || strcmp(passtype, SVN_AUTH__TEST_PASSWORD_TYPE) == 0)
         {
           may_save_password = TRUE;
         }
@@ -1011,3 +1013,78 @@
 }
 
 #endif /* SVN_HAVE_KEYCHAIN_SERVICES */
+
+
+/*-----------------------------------------------------------------------*/
+/* test simple provider                                                  */
+/*-----------------------------------------------------------------------*/
+
+static svn_boolean_t
+test_password_set(apr_hash_t *creds,
+                      const char *realmstring,
+                      const char *username,
+                      const char *password,
+                      svn_boolean_t non_interactive,
+                      apr_pool_t *pool)
+{
+  return FALSE;
+}
+
+static svn_boolean_t
+test_password_get(const char **password,
+                      apr_hash_t *creds,
+                      const char *realmstring,
+                      const char *username,
+                      svn_boolean_t non_interactive,
+                      apr_pool_t *pool)
+{
+  return FALSE;
+}
+
+static svn_error_t *
+test_simple_first_creds(void **credentials,
+                        void **iter_baton,
+                        void *provider_baton,
+                        apr_hash_t *parameters,
+                        const char *realmstring,
+                        apr_pool_t *pool)
+{
+  return simple_first_creds_helper(credentials,
+                                   iter_baton, provider_baton,
+                                   parameters, realmstring,
+                                   test_password_get,
+                                   SVN_AUTH__TEST_PASSWORD_TYPE,
+                                   pool);
+}
+
+static svn_error_t *
+test_simple_save_creds(svn_boolean_t *saved,
+                       void *credentials,
+                       void *provider_baton,
+                       apr_hash_t *parameters,
+                       const char *realmstring,
+                       apr_pool_t *pool)
+{
+  return simple_save_creds_helper(saved, credentials, provider_baton,
+                                  parameters, realmstring,
+                                  test_password_set,
+                                  SVN_AUTH__TEST_PASSWORD_TYPE,
+                                  pool);
+}
+
+static const svn_auth_provider_t test_simple_provider = {
+  SVN_AUTH_CRED_SIMPLE,
+  test_simple_first_creds,
+  NULL,
+  test_simple_save_creds
+};
+
+void
+svn_auth_get_test_simple_provider(svn_auth_provider_object_t **provider,
+                                  apr_pool_t *pool)
+{
+  svn_auth_provider_object_t *po = apr_pcalloc(pool, sizeof(*po));
+
+  po->vtable = &test_simple_provider;
+  *provider = po;
+}
