kvm 0.0.1.pre

Sign up to get free protection for your applications and to get access to all the features.
Files changed (148) hide show
  1. data/.gitignore +3 -0
  2. data/.rvmrc +1 -0
  3. data/AGPL-3.0 +661 -0
  4. data/Gemfile +8 -0
  5. data/Gemfile.lock +32 -0
  6. data/LICENSE +23 -0
  7. data/README.md +73 -0
  8. data/Rakefile +48 -0
  9. data/bin/kvm +6 -0
  10. data/kvm.gemspec +28 -0
  11. data/lib/kvm.rb +286 -0
  12. data/lib/kvm/archive.rb +56 -0
  13. data/lib/kvm/artifact.rb +28 -0
  14. data/lib/kvm/db/jdbc_adapter.rb +71 -0
  15. data/lib/kvm/db/oracle.rb +23 -0
  16. data/lib/kvm/db/types.rb +11 -0
  17. data/lib/kvm/impex.rb +109 -0
  18. data/lib/kvm/log.rb +7 -0
  19. data/lib/kvm/resource.rb +72 -0
  20. data/lib/kvm/rice_release.rb +79 -0
  21. data/lib/kvm/rice_release_generated_dataset.rb +68 -0
  22. data/lib/kvm/source.rb +33 -0
  23. data/lib/kvm/subversion.rb +52 -0
  24. data/lib/kvm/version.rb +3 -0
  25. data/lib/kvm/wallet.rb +64 -0
  26. data/support/ant/INSTALL +2 -0
  27. data/support/ant/KEYS +1398 -0
  28. data/support/ant/LICENSE +272 -0
  29. data/support/ant/NOTICE +6 -0
  30. data/support/ant/README +97 -0
  31. data/support/ant/WHATSNEW +5467 -0
  32. data/support/ant/bin/ant +335 -0
  33. data/support/ant/bin/ant.bat +218 -0
  34. data/support/ant/bin/ant.cmd +93 -0
  35. data/support/ant/bin/antRun +24 -0
  36. data/support/ant/bin/antRun.bat +50 -0
  37. data/support/ant/bin/antRun.pl +66 -0
  38. data/support/ant/bin/antenv.cmd +98 -0
  39. data/support/ant/bin/complete-ant-cmd.pl +114 -0
  40. data/support/ant/bin/envset.cmd +131 -0
  41. data/support/ant/bin/lcp.bat +31 -0
  42. data/support/ant/bin/runant.pl +153 -0
  43. data/support/ant/bin/runant.py +102 -0
  44. data/support/ant/bin/runrc.cmd +60 -0
  45. data/support/ant/etc/ant-bootstrap.jar +0 -0
  46. data/support/ant/etc/changelog.xsl +148 -0
  47. data/support/ant/etc/checkstyle/checkstyle-frames.xsl +299 -0
  48. data/support/ant/etc/checkstyle/checkstyle-text.xsl +34 -0
  49. data/support/ant/etc/checkstyle/checkstyle-xdoc.xsl +130 -0
  50. data/support/ant/etc/coverage-frames.xsl +489 -0
  51. data/support/ant/etc/jdepend-frames.xsl +487 -0
  52. data/support/ant/etc/jdepend.xsl +276 -0
  53. data/support/ant/etc/junit-frames-xalan1.xsl +733 -0
  54. data/support/ant/etc/junit-frames.xsl +902 -0
  55. data/support/ant/etc/junit-noframes.xsl +478 -0
  56. data/support/ant/etc/log.xsl +203 -0
  57. data/support/ant/etc/maudit-frames.xsl +503 -0
  58. data/support/ant/etc/mmetrics-frames.xsl +1026 -0
  59. data/support/ant/etc/tagdiff.xsl +179 -0
  60. data/support/ant/fetch.xml +343 -0
  61. data/support/ant/get-m2.xml +121 -0
  62. data/support/ant/lib/README +3 -0
  63. data/support/ant/lib/ant-antlr.jar +0 -0
  64. data/support/ant/lib/ant-antlr.pom +76 -0
  65. data/support/ant/lib/ant-apache-bcel.jar +0 -0
  66. data/support/ant/lib/ant-apache-bcel.pom +72 -0
  67. data/support/ant/lib/ant-apache-bsf.jar +0 -0
  68. data/support/ant/lib/ant-apache-bsf.pom +75 -0
  69. data/support/ant/lib/ant-apache-log4j.jar +0 -0
  70. data/support/ant/lib/ant-apache-log4j.pom +70 -0
  71. data/support/ant/lib/ant-apache-oro.jar +0 -0
  72. data/support/ant/lib/ant-apache-oro.pom +75 -0
  73. data/support/ant/lib/ant-apache-regexp.jar +0 -0
  74. data/support/ant/lib/ant-apache-regexp.pom +71 -0
  75. data/support/ant/lib/ant-apache-resolver.jar +0 -0
  76. data/support/ant/lib/ant-apache-resolver.pom +70 -0
  77. data/support/ant/lib/ant-apache-xalan2.jar +0 -0
  78. data/support/ant/lib/ant-apache-xalan2.pom +95 -0
  79. data/support/ant/lib/ant-commons-logging.jar +0 -0
  80. data/support/ant/lib/ant-commons-logging.pom +71 -0
  81. data/support/ant/lib/ant-commons-net.jar +0 -0
  82. data/support/ant/lib/ant-commons-net.pom +76 -0
  83. data/support/ant/lib/ant-jai.jar +0 -0
  84. data/support/ant/lib/ant-jai.pom +85 -0
  85. data/support/ant/lib/ant-javamail.jar +0 -0
  86. data/support/ant/lib/ant-javamail.pom +79 -0
  87. data/support/ant/lib/ant-jdepend.jar +0 -0
  88. data/support/ant/lib/ant-jdepend.pom +73 -0
  89. data/support/ant/lib/ant-jmf.jar +0 -0
  90. data/support/ant/lib/ant-jmf.pom +66 -0
  91. data/support/ant/lib/ant-jsch.jar +0 -0
  92. data/support/ant/lib/ant-jsch.pom +75 -0
  93. data/support/ant/lib/ant-junit.jar +0 -0
  94. data/support/ant/lib/ant-junit.pom +101 -0
  95. data/support/ant/lib/ant-junit4.jar +0 -0
  96. data/support/ant/lib/ant-junit4.pom +71 -0
  97. data/support/ant/lib/ant-launcher.jar +0 -0
  98. data/support/ant/lib/ant-launcher.pom +58 -0
  99. data/support/ant/lib/ant-netrexx.jar +0 -0
  100. data/support/ant/lib/ant-netrexx.pom +99 -0
  101. data/support/ant/lib/ant-parent.pom +120 -0
  102. data/support/ant/lib/ant-swing.jar +0 -0
  103. data/support/ant/lib/ant-swing.pom +67 -0
  104. data/support/ant/lib/ant-testutil.jar +0 -0
  105. data/support/ant/lib/ant-testutil.pom +75 -0
  106. data/support/ant/lib/ant.jar +0 -0
  107. data/support/ant/lib/ant.pom +222 -0
  108. data/support/ant/lib/libraries.properties +65 -0
  109. data/test/data/files/rice-0.0.0.0-bin.tar.gz +0 -0
  110. data/test/data/svn/README.txt +5 -0
  111. data/test/data/svn/conf/authz +32 -0
  112. data/test/data/svn/conf/passwd +8 -0
  113. data/test/data/svn/conf/svnserve.conf +47 -0
  114. data/test/data/svn/db/current +1 -0
  115. data/test/data/svn/db/format +2 -0
  116. data/test/data/svn/db/fs-type +1 -0
  117. data/test/data/svn/db/fsfs.conf +37 -0
  118. data/test/data/svn/db/min-unpacked-rev +1 -0
  119. data/test/data/svn/db/rep-cache.db +0 -0
  120. data/test/data/svn/db/revprops/0/0 +5 -0
  121. data/test/data/svn/db/revprops/0/1 +13 -0
  122. data/test/data/svn/db/revs/0/0 +11 -0
  123. data/test/data/svn/db/revs/0/1 +0 -0
  124. data/test/data/svn/db/txn-current +1 -0
  125. data/test/data/svn/db/txn-current-lock +0 -0
  126. data/test/data/svn/db/uuid +1 -0
  127. data/test/data/svn/db/write-lock +0 -0
  128. data/test/data/svn/format +1 -0
  129. data/test/data/svn/hooks/post-commit.tmpl +50 -0
  130. data/test/data/svn/hooks/post-lock.tmpl +44 -0
  131. data/test/data/svn/hooks/post-revprop-change.tmpl +56 -0
  132. data/test/data/svn/hooks/post-unlock.tmpl +42 -0
  133. data/test/data/svn/hooks/pre-commit.tmpl +81 -0
  134. data/test/data/svn/hooks/pre-lock.tmpl +71 -0
  135. data/test/data/svn/hooks/pre-revprop-change.tmpl +66 -0
  136. data/test/data/svn/hooks/pre-unlock.tmpl +63 -0
  137. data/test/data/svn/hooks/start-commit.tmpl +65 -0
  138. data/test/data/svn/locks/db-logs.lock +3 -0
  139. data/test/data/svn/locks/db.lock +3 -0
  140. data/test/helper.rb +146 -0
  141. data/test/int_test_generate_sql.rb +58 -0
  142. data/test/test_archive.rb +35 -0
  143. data/test/test_generate_sql.rb +0 -0
  144. data/test/test_rice_release.rb +61 -0
  145. data/test/test_rice_release_generated_dataset.rb +12 -0
  146. data/test/test_source.rb +31 -0
  147. data/test/test_subversion.rb +20 -0
  148. metadata +298 -0
@@ -0,0 +1,81 @@
1
+ #!/bin/sh
2
+
3
+ # PRE-COMMIT HOOK
4
+ #
5
+ # The pre-commit hook is invoked before a Subversion txn is
6
+ # committed. Subversion runs this hook by invoking a program
7
+ # (script, executable, binary, etc.) named 'pre-commit' (for which
8
+ # this file is a template), with the following ordered arguments:
9
+ #
10
+ # [1] REPOS-PATH (the path to this repository)
11
+ # [2] TXN-NAME (the name of the txn about to be committed)
12
+ #
13
+ # [STDIN] LOCK-TOKENS ** the lock tokens are passed via STDIN.
14
+ #
15
+ # If STDIN contains the line "LOCK-TOKENS:\n" (the "\n" denotes a
16
+ # single newline), the lines following it are the lock tokens for
17
+ # this commit. The end of the list is marked by a line containing
18
+ # only a newline character.
19
+ #
20
+ # Each lock token line consists of a URI-escaped path, followed
21
+ # by the separator character '|', followed by the lock token string,
22
+ # followed by a newline.
23
+ #
24
+ # The default working directory for the invocation is undefined, so
25
+ # the program should set one explicitly if it cares.
26
+ #
27
+ # If the hook program exits with success, the txn is committed; but
28
+ # if it exits with failure (non-zero), the txn is aborted, no commit
29
+ # takes place, and STDERR is returned to the client. The hook
30
+ # program can use the 'svnlook' utility to help it examine the txn.
31
+ #
32
+ # On a Unix system, the normal procedure is to have 'pre-commit'
33
+ # invoke other programs to do the real work, though it may do the
34
+ # work itself too.
35
+ #
36
+ # *** NOTE: THE HOOK PROGRAM MUST NOT MODIFY THE TXN, EXCEPT ***
37
+ # *** FOR REVISION PROPERTIES (like svn:log or svn:author). ***
38
+ #
39
+ # This is why we recommend using the read-only 'svnlook' utility.
40
+ # In the future, Subversion may enforce the rule that pre-commit
41
+ # hooks should not modify the versioned data in txns, or else come
42
+ # up with a mechanism to make it safe to do so (by informing the
43
+ # committing client of the changes). However, right now neither
44
+ # mechanism is implemented, so hook writers just have to be careful.
45
+ #
46
+ # Note that 'pre-commit' must be executable by the user(s) who will
47
+ # invoke it (typically the user httpd runs as), and that user must
48
+ # have filesystem-level permission to access the repository.
49
+ #
50
+ # On a Windows system, you should name the hook program
51
+ # 'pre-commit.bat' or 'pre-commit.exe',
52
+ # but the basic idea is the same.
53
+ #
54
+ # The hook program typically does not inherit the environment of
55
+ # its parent process. For example, a common problem is for the
56
+ # PATH environment variable to not be set to its usual value, so
57
+ # that subprograms fail to launch unless invoked via absolute path.
58
+ # If you're having unexpected problems with a hook program, the
59
+ # culprit may be unusual (or missing) environment variables.
60
+ #
61
+ # Here is an example hook script, for a Unix /bin/sh interpreter.
62
+ # For more examples and pre-written hooks, see those in
63
+ # the Subversion repository at
64
+ # http://svn.apache.org/repos/asf/subversion/trunk/tools/hook-scripts/ and
65
+ # http://svn.apache.org/repos/asf/subversion/trunk/contrib/hook-scripts/
66
+
67
+
68
+ REPOS="$1"
69
+ TXN="$2"
70
+
71
+ # Make sure that the log message contains some text.
72
+ SVNLOOK=/usr/bin/svnlook
73
+ $SVNLOOK log -t "$TXN" "$REPOS" | \
74
+ grep "[a-zA-Z0-9]" > /dev/null || exit 1
75
+
76
+ # Check that the author of this commit has the rights to perform
77
+ # the commit on the files and directories being modified.
78
+ commit-access-control.pl "$REPOS" "$TXN" commit-access-control.cfg || exit 1
79
+
80
+ # All checks passed, so allow the commit.
81
+ exit 0
@@ -0,0 +1,71 @@
1
+ #!/bin/sh
2
+
3
+ # PRE-LOCK HOOK
4
+ #
5
+ # The pre-lock hook is invoked before an exclusive lock is
6
+ # created. Subversion runs this hook by invoking a program
7
+ # (script, executable, binary, etc.) named 'pre-lock' (for which
8
+ # this file is a template), with the following ordered arguments:
9
+ #
10
+ # [1] REPOS-PATH (the path to this repository)
11
+ # [2] PATH (the path in the repository about to be locked)
12
+ # [3] USER (the user creating the lock)
13
+ # [4] COMMENT (the comment of the lock)
14
+ # [5] STEAL-LOCK (1 if the user is trying to steal the lock, else 0)
15
+ #
16
+ # If the hook program outputs anything on stdout, the output string will
17
+ # be used as the lock token for this lock operation. If you choose to use
18
+ # this feature, you must guarantee the tokens generated are unique across
19
+ # the repository each time.
20
+ #
21
+ # The default working directory for the invocation is undefined, so
22
+ # the program should set one explicitly if it cares.
23
+ #
24
+ # If the hook program exits with success, the lock is created; but
25
+ # if it exits with failure (non-zero), the lock action is aborted
26
+ # and STDERR is returned to the client.
27
+
28
+ # On a Unix system, the normal procedure is to have 'pre-lock'
29
+ # invoke other programs to do the real work, though it may do the
30
+ # work itself too.
31
+ #
32
+ # Note that 'pre-lock' must be executable by the user(s) who will
33
+ # invoke it (typically the user httpd runs as), and that user must
34
+ # have filesystem-level permission to access the repository.
35
+ #
36
+ # On a Windows system, you should name the hook program
37
+ # 'pre-lock.bat' or 'pre-lock.exe',
38
+ # but the basic idea is the same.
39
+ #
40
+ # Here is an example hook script, for a Unix /bin/sh interpreter:
41
+
42
+ REPOS="$1"
43
+ PATH="$2"
44
+ USER="$3"
45
+
46
+ # If a lock exists and is owned by a different person, don't allow it
47
+ # to be stolen (e.g., with 'svn lock --force ...').
48
+
49
+ # (Maybe this script could send email to the lock owner?)
50
+ SVNLOOK=/usr/bin/svnlook
51
+ GREP=/bin/grep
52
+ SED=/bin/sed
53
+
54
+ LOCK_OWNER=`$SVNLOOK lock "$REPOS" "$PATH" | \
55
+ $GREP '^Owner: ' | $SED 's/Owner: //'`
56
+
57
+ # If we get no result from svnlook, there's no lock, allow the lock to
58
+ # happen:
59
+ if [ "$LOCK_OWNER" = "" ]; then
60
+ exit 0
61
+ fi
62
+
63
+ # If the person locking matches the lock's owner, allow the lock to
64
+ # happen:
65
+ if [ "$LOCK_OWNER" = "$USER" ]; then
66
+ exit 0
67
+ fi
68
+
69
+ # Otherwise, we've got an owner mismatch, so return failure:
70
+ echo "Error: $PATH already locked by ${LOCK_OWNER}." 1>&2
71
+ exit 1
@@ -0,0 +1,66 @@
1
+ #!/bin/sh
2
+
3
+ # PRE-REVPROP-CHANGE HOOK
4
+ #
5
+ # The pre-revprop-change hook is invoked before a revision property
6
+ # is added, modified or deleted. Subversion runs this hook by invoking
7
+ # a program (script, executable, binary, etc.) named 'pre-revprop-change'
8
+ # (for which this file is a template), with the following ordered
9
+ # arguments:
10
+ #
11
+ # [1] REPOS-PATH (the path to this repository)
12
+ # [2] REVISION (the revision being tweaked)
13
+ # [3] USER (the username of the person tweaking the property)
14
+ # [4] PROPNAME (the property being set on the revision)
15
+ # [5] ACTION (the property is being 'A'dded, 'M'odified, or 'D'eleted)
16
+ #
17
+ # [STDIN] PROPVAL ** the new property value is passed via STDIN.
18
+ #
19
+ # If the hook program exits with success, the propchange happens; but
20
+ # if it exits with failure (non-zero), the propchange doesn't happen.
21
+ # The hook program can use the 'svnlook' utility to examine the
22
+ # existing value of the revision property.
23
+ #
24
+ # WARNING: unlike other hooks, this hook MUST exist for revision
25
+ # properties to be changed. If the hook does not exist, Subversion
26
+ # will behave as if the hook were present, but failed. The reason
27
+ # for this is that revision properties are UNVERSIONED, meaning that
28
+ # a successful propchange is destructive; the old value is gone
29
+ # forever. We recommend the hook back up the old value somewhere.
30
+ #
31
+ # On a Unix system, the normal procedure is to have 'pre-revprop-change'
32
+ # invoke other programs to do the real work, though it may do the
33
+ # work itself too.
34
+ #
35
+ # Note that 'pre-revprop-change' must be executable by the user(s) who will
36
+ # invoke it (typically the user httpd runs as), and that user must
37
+ # have filesystem-level permission to access the repository.
38
+ #
39
+ # On a Windows system, you should name the hook program
40
+ # 'pre-revprop-change.bat' or 'pre-revprop-change.exe',
41
+ # but the basic idea is the same.
42
+ #
43
+ # The hook program typically does not inherit the environment of
44
+ # its parent process. For example, a common problem is for the
45
+ # PATH environment variable to not be set to its usual value, so
46
+ # that subprograms fail to launch unless invoked via absolute path.
47
+ # If you're having unexpected problems with a hook program, the
48
+ # culprit may be unusual (or missing) environment variables.
49
+ #
50
+ # Here is an example hook script, for a Unix /bin/sh interpreter.
51
+ # For more examples and pre-written hooks, see those in
52
+ # the Subversion repository at
53
+ # http://svn.apache.org/repos/asf/subversion/trunk/tools/hook-scripts/ and
54
+ # http://svn.apache.org/repos/asf/subversion/trunk/contrib/hook-scripts/
55
+
56
+
57
+ REPOS="$1"
58
+ REV="$2"
59
+ USER="$3"
60
+ PROPNAME="$4"
61
+ ACTION="$5"
62
+
63
+ if [ "$ACTION" = "M" -a "$PROPNAME" = "svn:log" ]; then exit 0; fi
64
+
65
+ echo "Changing revision properties other than svn:log is prohibited" >&2
66
+ exit 1
@@ -0,0 +1,63 @@
1
+ #!/bin/sh
2
+
3
+ # PRE-UNLOCK HOOK
4
+ #
5
+ # The pre-unlock hook is invoked before an exclusive lock is
6
+ # destroyed. Subversion runs this hook by invoking a program
7
+ # (script, executable, binary, etc.) named 'pre-unlock' (for which
8
+ # this file is a template), with the following ordered arguments:
9
+ #
10
+ # [1] REPOS-PATH (the path to this repository)
11
+ # [2] PATH (the path in the repository about to be unlocked)
12
+ # [3] USER (the user destroying the lock)
13
+ # [4] TOKEN (the lock token to be destroyed)
14
+ # [5] BREAK-UNLOCK (1 if the user is breaking the lock, else 0)
15
+ #
16
+ # The default working directory for the invocation is undefined, so
17
+ # the program should set one explicitly if it cares.
18
+ #
19
+ # If the hook program exits with success, the lock is destroyed; but
20
+ # if it exits with failure (non-zero), the unlock action is aborted
21
+ # and STDERR is returned to the client.
22
+
23
+ # On a Unix system, the normal procedure is to have 'pre-unlock'
24
+ # invoke other programs to do the real work, though it may do the
25
+ # work itself too.
26
+ #
27
+ # Note that 'pre-unlock' must be executable by the user(s) who will
28
+ # invoke it (typically the user httpd runs as), and that user must
29
+ # have filesystem-level permission to access the repository.
30
+ #
31
+ # On a Windows system, you should name the hook program
32
+ # 'pre-unlock.bat' or 'pre-unlock.exe',
33
+ # but the basic idea is the same.
34
+ #
35
+ # Here is an example hook script, for a Unix /bin/sh interpreter:
36
+
37
+ REPOS="$1"
38
+ PATH="$2"
39
+ USER="$3"
40
+
41
+ # If a lock is owned by a different person, don't allow it be broken.
42
+ # (Maybe this script could send email to the lock owner?)
43
+
44
+ SVNLOOK=/usr/bin/svnlook
45
+ GREP=/bin/grep
46
+ SED=/bin/sed
47
+
48
+ LOCK_OWNER=`$SVNLOOK lock "$REPOS" "$PATH" | \
49
+ $GREP '^Owner: ' | $SED 's/Owner: //'`
50
+
51
+ # If we get no result from svnlook, there's no lock, return success:
52
+ if [ "$LOCK_OWNER" = "" ]; then
53
+ exit 0
54
+ fi
55
+
56
+ # If the person unlocking matches the lock's owner, return success:
57
+ if [ "$LOCK_OWNER" = "$USER" ]; then
58
+ exit 0
59
+ fi
60
+
61
+ # Otherwise, we've got an owner mismatch, so return failure:
62
+ echo "Error: $PATH locked by ${LOCK_OWNER}." 1>&2
63
+ exit 1
@@ -0,0 +1,65 @@
1
+ #!/bin/sh
2
+
3
+ # START-COMMIT HOOK
4
+ #
5
+ # The start-commit hook is invoked before a Subversion txn is created
6
+ # in the process of doing a commit. Subversion runs this hook
7
+ # by invoking a program (script, executable, binary, etc.) named
8
+ # 'start-commit' (for which this file is a template)
9
+ # with the following ordered arguments:
10
+ #
11
+ # [1] REPOS-PATH (the path to this repository)
12
+ # [2] USER (the authenticated user attempting to commit)
13
+ # [3] CAPABILITIES (a colon-separated list of capabilities reported
14
+ # by the client; see note below)
15
+ #
16
+ # Note: The CAPABILITIES parameter is new in Subversion 1.5, and 1.5
17
+ # clients will typically report at least the "mergeinfo" capability.
18
+ # If there are other capabilities, then the list is colon-separated,
19
+ # e.g.: "mergeinfo:some-other-capability" (the order is undefined).
20
+ #
21
+ # The list is self-reported by the client. Therefore, you should not
22
+ # make security assumptions based on the capabilities list, nor should
23
+ # you assume that clients reliably report every capability they have.
24
+ #
25
+ # The working directory for this hook program's invocation is undefined,
26
+ # so the program should set one explicitly if it cares.
27
+ #
28
+ # If the hook program exits with success, the commit continues; but
29
+ # if it exits with failure (non-zero), the commit is stopped before
30
+ # a Subversion txn is created, and STDERR is returned to the client.
31
+ #
32
+ # On a Unix system, the normal procedure is to have 'start-commit'
33
+ # invoke other programs to do the real work, though it may do the
34
+ # work itself too.
35
+ #
36
+ # Note that 'start-commit' must be executable by the user(s) who will
37
+ # invoke it (typically the user httpd runs as), and that user must
38
+ # have filesystem-level permission to access the repository.
39
+ #
40
+ # On a Windows system, you should name the hook program
41
+ # 'start-commit.bat' or 'start-commit.exe',
42
+ # but the basic idea is the same.
43
+ #
44
+ # The hook program typically does not inherit the environment of
45
+ # its parent process. For example, a common problem is for the
46
+ # PATH environment variable to not be set to its usual value, so
47
+ # that subprograms fail to launch unless invoked via absolute path.
48
+ # If you're having unexpected problems with a hook program, the
49
+ # culprit may be unusual (or missing) environment variables.
50
+ #
51
+ # Here is an example hook script, for a Unix /bin/sh interpreter.
52
+ # For more examples and pre-written hooks, see those in
53
+ # the Subversion repository at
54
+ # http://svn.apache.org/repos/asf/subversion/trunk/tools/hook-scripts/ and
55
+ # http://svn.apache.org/repos/asf/subversion/trunk/contrib/hook-scripts/
56
+
57
+
58
+ REPOS="$1"
59
+ USER="$2"
60
+
61
+ commit-allower.pl --repository "$REPOS" --user "$USER" || exit 1
62
+ special-auth-check.py --user "$USER" --auth-level 3 || exit 1
63
+
64
+ # All checks passed, so allow the commit.
65
+ exit 0
@@ -0,0 +1,3 @@
1
+ This file is not used by Subversion 1.3.x or later.
2
+ However, its existence is required for compatibility with
3
+ Subversion 1.2.x or earlier.
@@ -0,0 +1,3 @@
1
+ This file is not used by Subversion 1.3.x or later.
2
+ However, its existence is required for compatibility with
3
+ Subversion 1.2.x or earlier.
@@ -0,0 +1,146 @@
1
+ # this file MUST be included first in order to override the KVM_DIR
2
+ # therefore dependencies are NOT required in this file
3
+ # tests should require required dependencies AFTER this inclusion
4
+ require 'test/unit'
5
+ require 'fileutils'
6
+ require 'fakeweb'
7
+
8
+ module KVM
9
+ TEST_KVM_DIR="/tmp/.kvm_test"
10
+ KVM_DIR=TEST_KVM_DIR
11
+ end
12
+
13
+ # set up test data
14
+ require 'kvm/archive'
15
+ TEST_DATA_PATH=File.expand_path('data', File.dirname(__FILE__))
16
+ TEST_FILES_PATH=File.join(TEST_DATA_PATH, 'files')
17
+ TEST_SVN_PATH=File.join(TEST_DATA_PATH, 'svn')
18
+ TEST_RICE_VERSION="rice-0.0.0.0"
19
+ TEST_ARCHIVE = KVM::Archive.new(TEST_RICE_VERSION)
20
+ # register test archive
21
+ FakeWeb.register_uri(:get, TEST_ARCHIVE.download_url, :body => File.read(File.join(TEST_FILES_PATH, TEST_ARCHIVE.filename)))
22
+
23
+ require 'kvm/source'
24
+
25
+ # override svn base
26
+ REAL_SVN_ROOT = KVM::Subversion.svn_root
27
+ p REAL_SVN_ROOT
28
+ KVM::Subversion.svn_root="file://#{TEST_SVN_PATH}/"
29
+ p KVM::Subversion.svn_root
30
+
31
+ TEST_REPO="sample-project"
32
+
33
+ module KVM
34
+ class KVMTest < Test::Unit::TestCase
35
+ ALPHAS = ('a'..'z').to_a + ('A'..'Z').to_a
36
+ NUMS = ('0'..'9').to_a
37
+ ALPHANUMS = ALPHAS + NUMS
38
+ DEFAULT_DIST_SUFFIX = '-bin'
39
+
40
+ def setup
41
+ init_test_kvm_dir
42
+ end
43
+
44
+ def default_test
45
+ # HACK. Stop TestUnit on 1.8.7 from complaining about this base class
46
+ end
47
+
48
+ def init_test_kvm_dir
49
+ clear_test_kvm_dir
50
+ FileUtils.mkdir_p(TEST_KVM_DIR)
51
+ end
52
+
53
+ def clear_test_kvm_dir
54
+ FileUtils.rm_r(TEST_KVM_DIR)
55
+ end
56
+
57
+ def touch(file)
58
+ FileUtils.mkdir_p(File.dirname(file))
59
+ FileUtils.touch(file)
60
+ end
61
+
62
+ def rand_alpha(size = 6)
63
+ rand_str(ALPHAS, size)
64
+ end
65
+
66
+ def rand_alphanum(size = 6)
67
+ rand_str(ALPHANUMS, size)
68
+ end
69
+
70
+ def rand_str(chars, size = 6)
71
+ (0...size).collect { chars[Kernel.rand(chars.length)] }.join
72
+ end
73
+
74
+ def fake_project
75
+ rand_alpha + '-' + rand_alphanum
76
+ end
77
+
78
+ def create_project
79
+ with_project do |project|
80
+ FileUtils.mkdir_p(File.join(KVM::RiceRelease::BASE_DIR, project_dir(project)))
81
+ end
82
+ end
83
+
84
+ def create_archive
85
+ with_project do |project|
86
+ touch(File.join(KVM::Archive::BASE_DIR, project_dir(project) + '.tar.gz'))
87
+ end
88
+ end
89
+
90
+ def rand_db
91
+ [ 'oracle', 'mysql' ][rand(2)]
92
+ end
93
+
94
+ def fake_generated_dataset(pr = nil, ds = nil, db = nil)
95
+ [ pr || fake_project, ds || rand_alpha, db || rand_db ]
96
+ end
97
+
98
+ def create_generated_dataset(pr = nil, ds = nil, db = nil)
99
+ with_dataset(pr, ds, db) do |project, ds_name, db_type|
100
+ path = File.join(KVM::RiceReleaseGeneratedDataset::BASE_DIR, project_dir(project), ds_name + '-dataset', db_type)
101
+ FileUtils.mkdir_p(path)
102
+ end
103
+ end
104
+
105
+ def create_src_dataset(pr = nil, ds = nil, db = nil)
106
+ with_dataset(pr, ds, db) do |project, ds_name, db_type|
107
+ path = File.join(KVM::RiceRelease::BASE_DIR, project_dir(project), 'database', ds_name + '-dataset', db_type)
108
+ FileUtils.mkdir_p(path)
109
+ end
110
+ end
111
+
112
+ def with_dataset(pr = nil, ds = nil, db = nil)
113
+ project, ds_name, db_type = fake_generated_dataset(pr, ds, db)
114
+ yield [ project, ds_name, db_type ]
115
+ [ project_dir(project), ds_name, db_type ]
116
+ end
117
+
118
+ def with_project
119
+ project = fake_project
120
+ yield project
121
+ project
122
+ end
123
+
124
+ def project_dir(project)
125
+ project + DEFAULT_DIST_SUFFIX
126
+ end
127
+
128
+ def array_contains_values(array, legit_values)
129
+ array.reduce(true) do |legit_elements, element|
130
+ legit_elements and legit_values.reduce(false) do |legit_element, legit_value|
131
+ legit_element or element =~ /#{legit_value}/
132
+ end
133
+ end
134
+ end
135
+
136
+ def do_with_svn(root)
137
+ prev_svn_root = KVM::Subversion.svn_root
138
+ begin
139
+ KVM::Subversion.svn_root=root
140
+ yield
141
+ ensure
142
+ KVM::Subversion.svn_root=prev_svn_root
143
+ end
144
+ end
145
+ end
146
+ end