kvm 0.0.1.pre

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
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