⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 readme

📁 subversion-1.4.3-1.tar.gz 配置svn的源码
💻
字号:
                      (-*- text -*-)               Subversion Commandline Client:  Test Suite               ==========================================The cmdline client test suite doesn't use the C-level testingframework, but is structured similarly.  Instead of testing libraryAPIs, it drives the client just like a user would, examining theoutput and the on-disk results (i.e., the working copy) carefully asit goes.  In other words, this is "black box" testing of thecommand-line client.  It has no access to code internals; it neverlooks inside the .svn/ directory; it only performs actions that ahuman user would do.These tests require Python 2.0 or later.  [ For more general information on Subversion's testing system,    please read the README in subversion/tests/. ]How To Run The Tests====================To run a test script over ra_local, invoke it from THIS DIRECTORY.   $ cd subversion/tests/cmdline/Invoke the script with no arguments to run all the tests in thatscript:   $ ./basic_tests.pyInvoke with one or more numeric arguments to run those particular tests:   $ ./basic_tests.py 7 13 17And invoke with the "--list" option to list information about some orall tests available in that script:   $ ./basic_tests.py --list 2 3 4   $ ./basic_tests.py --listNote: if you are building Subversion in a directory other than the sourcedirectory (q.v. INSTALL), you will have to invoke the tests from withinthe build directory:   $ cd obj/subversion/tests/cmdline   $ ../../../../svn/subversion/tests/cmdline/basic_tests.pyRunning over ra_dav-------------------Running a script over ra_dav is basically the same, but you have toset up httpd 2.0 first (on the same machine, since the tests createrepositories on the fly), and pass a URL argument to the test scripts.Assuming you have httpd 2.0 installed in /usr/local/apache2, just addtwo Location directives to /usr/local/apache2/conf/httpd.conf, withpaths adjusted appropriately:   <Location /svn-test-work/repositories>     DAV svn     SVNParentPath /home/yourusernamehere/projects/svn/subversion/tests/cmdline/svn-test-work/repositories     AuthzSVNAccessFile /home/yourusernamehere/projects/svn/subversion/tests/cmdline/svn-test-work/authz     AuthType Basic     AuthName "Subversion Repository"     AuthUserFile /usr/local/apache2/conf/users     Require valid-user   </Location>        <Location /svn-test-work/local_tmp/repos>     DAV svn     SVNPath /home/yourusernamehere/projects/svn/subversion/tests/cmdline/svn-test-work/local_tmp/repos     AuthzSVNAccessFile /home/yourusernamehere/projects/svn/subversion/tests/cmdline/svn-test-work/authz     AuthType Basic     AuthName "Subversion Repository"     AuthUserFile /usr/local/apache2/conf/users     Require valid-user   </Location>Httpd should be running on port 80.  You may also need to ensure thatit's running as you, so it has read/write access to the repositoriesthat are probably living in your Subversion working copy.  To do this,set the User and Group directives in httpd.conf, something like this:   User yourusernamehere   Group usersYou need to run the tests over ra_dav with authentication enabled, sojust drop the following 2-line snippet into the/usr/local/apache2/conf/users file [1]:----------------------------jrandom:xCGl35kV9oWCYjconstant:xCGl35kV9oWCY----------------------------Now, (re)start Apache and run the tests over ra_dav.You can run a test script over ra_dav:   $ ./basic_tests.py --url http://localhost   $ ./basic_tests.py --url http://localhost 3or    $ ./basic_tests.py --url=http://localhost   $ ./basic_tests.py --url=http://localhost 3If you run httpd on a port other than 80, you can specify the port inthe URL: "http://localhost:15835" for example.To run all tests over ra_dav, pass BASE_URL when running 'make check'from the top of the build dir:   $ make check BASE_URL=http://localhostBASE_URL=URL can also be used when running individual tests:   $ ./basic_tests.py BASE_URL=http://localhost   $ ./basic_tests.py BASE_URL=http://localhost 3Note [1]: It would be quite too much to expect those password entries          to work on Windows... Apache httpd on Windows doesn't          understand crypted passwords, but it does understand          MD5-hashed passwords.  The correct password entries for          Windows are:          ----------------------------          jrandom:$apr1$3p1.....$FQW6RceW5QhJ2blWDQgKn0          jconstant:$apr1$jp1.....$Usrqji1c9H6AbOxOGAzzb0          ----------------------------Running over ra_svn-------------------It's also easy to run the tests against a local svnserve:$ subversion/svnserve/svnserve -d -r `pwd`/subversion/tests/cmdline$ make check BASE_URL=svn://localhostor, to run individual tests,$ ./basic_tests.py --url=svn://localhost 3Directory Contents==================   *.py                  The tests themselves.   svntest/              Python package, provides test suite framework          /main.py:         Global vars, utility routines; exports                            run_tests(), the main test routine.          /tree.py:         Infrastructure for SVNTreeNode class.                              - tree constructors, tree comparison routines.                              - routines to parse subcommand output into                                specific kinds of trees.                              - routines to parse a working copy and                                entries files into specific kinds of trees.          /wc.py:           Functions for interacting with a working                            copy, and converting to/from trees.          /actions.py:      Main API for driving subversion client and                            using trees to verify results.           /entry.py:        Parse an `entries' file (### not used yet)What the Python Tests are Doing===============================I.  Theory  A. Types of Verification   The point of this test system is that it's *automated*: that is,   each test can algorithmically verify the results and indicate "PASS"   or "FAIL".   We've identified two broad classes of verification:   1.  Verifying svn subcommand output.      Most important subcommands (co, up, ci, im, st) print results to      stdout as a list of paths.  Even though the paths may be printed      out in an unpredictable order, we still want to make sure this      list is exactly the *set* of lines we expect to get.   2.  Verifying the working copy itself.      Every time a subcommand could potentially change something on      disk, we need to inspect the working copy.  Specifically, this      means we need to make sure the working copy has exactly the      tree-structure we expect, and each file has exactly the contents      and properties we expect.II.  Practice:  Trees  Sam TH <sam@uchicago.edu> proposed and began work on a solution  whereby all important, inspectable information is parsed into a  general, in-memory tree representation.  By comparing actual  vs. expected tree structures, we get automated verification.  A.  Tree node structure      Each "tree node" in a tree has these fields:      - name :  the name of the node      - children:  list of child nodes (if the node is a dir)      - contents:  textual contents (if the node is a file)      - properties:  a hash to hold subversion props      - atts:        a hash of meta-information about tree nodes themselves  B.  Parsing subcommand output into a tree      Special parsers examine lines printed by subcommands, and      convert them into a tree of tree-nodes.  The 'contents' and      'properties' fields are empty; but prepending on the subcommand,      specific attributes in the 'atts' field are set in tree-nodes:       - svn co/up:        a 'status' attribute is set to a two-character                           value from the set (A, D, G, U, C, _, ' ') or                           a 'verb' attribute is set to ('Restored')       - svn status:       a 'status' attribute (as above), plus 'wc_rev'                           and 'repos_rev' attributes to hold the wc                           and repos revision numbers.       - svn ci/im:        a 'verb' attribute is set to one of                           (Adding, Sending, Deleting)  C.  Parsing a working copy into a tree     We also have a routines that walks a regular working copy and     returns a tree representing disk contents and props.  In this     case the 'atts' hash in each node is empty, but the 'contents'     and 'props' fields are filled in.How to Write New Tests======================If you'd like to write a new python test, first decide which file itmight fit into; test scripts each contain collections of tests groupedby rough categories.  (Is it testing a new subcommand?  Newenhancement?  Tricky use-case?  Regression test?)Next, read the long documentation comment at the top ofsvntest/tree.py.  It will explain the general API that most tests use.Finally, try copying-and-pasting a simple test and then edit fromthere.  Don't forget to add your test to the 'test_list' variable atthe bottom of the file.

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -