\r
import com.gitblit.models.RepositoryModel;\r
import com.gitblit.models.UserModel;\r
+import com.gitblit.utils.ClientLogger;\r
import com.gitblit.utils.FileUtils;\r
import com.gitblit.utils.HttpUtils;\r
import com.gitblit.utils.StringUtils;\r
scripts.addAll(GitBlit.self().getPreReceiveScriptsInherited(repository));\r
scripts.addAll(repository.preReceiveScripts);\r
UserModel user = getUserModel(rp);\r
- runGroovy(repository, user, commands, scripts);\r
+ runGroovy(repository, user, commands, rp, scripts);\r
for (ReceiveCommand cmd : commands) {\r
if (!Result.NOT_ATTEMPTED.equals(cmd.getResult())) {\r
logger.warn(MessageFormat.format("{0} {1} because \"{2}\"", cmd.getNewId()\r
scripts.addAll(GitBlit.self().getPostReceiveScriptsInherited(repository));\r
scripts.addAll(repository.postReceiveScripts);\r
UserModel user = getUserModel(rp);\r
- runGroovy(repository, user, commands, scripts);\r
+ runGroovy(repository, user, commands, rp, scripts);\r
\r
// Experimental\r
// runNativeScript(rp, "hooks/post-receive", commands);\r
* @param scripts\r
*/\r
protected void runGroovy(RepositoryModel repository, UserModel user,\r
- Collection<ReceiveCommand> commands, Set<String> scripts) {\r
+ Collection<ReceiveCommand> commands, ReceivePack rp, Set<String> scripts) {\r
if (scripts == null || scripts.size() == 0) {\r
// no Groovy scripts to execute\r
return;\r
binding.setVariable("commands", commands);\r
binding.setVariable("url", gitblitUrl);\r
binding.setVariable("logger", logger);\r
+ binding.setVariable("clientLogger", new ClientLogger(rp));\r
for (String script : scripts) {\r
if (StringUtils.isEmpty(script)) {\r
continue;\r
import groovy.lang.Binding;\r
import groovy.util.GroovyScriptEngine;\r
\r
+import java.io.BufferedWriter;\r
import java.io.File;\r
+import java.io.FileWriter;\r
import java.text.MessageFormat;\r
import java.util.ArrayList;\r
import java.util.Arrays;\r
public void testSendMail() throws Exception {\r
MockGitblit gitblit = new MockGitblit();\r
MockLogger logger = new MockLogger();\r
+ MockClientLogger clientLogger = new MockClientLogger();\r
List<ReceiveCommand> commands = new ArrayList<ReceiveCommand>();\r
commands.add(new ReceiveCommand(ObjectId\r
.fromString("c18877690322dfc6ae3e37bb7f7085a24e94e887"), ObjectId\r
RepositoryModel repository = GitBlit.self().getRepositoryModel("helloworld.git");\r
repository.mailingLists.add("list@helloworld.git");\r
\r
- test("sendmail.groovy", gitblit, logger, commands, repository);\r
+ test("sendmail.groovy", gitblit, logger, clientLogger, commands, repository);\r
assertEquals(1, logger.messages.size());\r
assertEquals(1, gitblit.messages.size());\r
MockMail m = gitblit.messages.get(0);\r
public void testProtectRefsCreateBranch() throws Exception {\r
MockGitblit gitblit = new MockGitblit();\r
MockLogger logger = new MockLogger();\r
+ MockClientLogger clientLogger = new MockClientLogger();\r
List<ReceiveCommand> commands = new ArrayList<ReceiveCommand>();\r
commands.add(new ReceiveCommand(ObjectId.zeroId(), ObjectId\r
.fromString("3fa7c46d11b11d61f1cbadc6888be5d0eae21969"), "refs/heads/master"));\r
\r
RepositoryModel repository = new RepositoryModel("ex@mple.git", "", "admin", new Date()); \r
\r
- test("protect-refs.groovy", gitblit, logger, commands, repository);\r
+ test("protect-refs.groovy", gitblit, logger, clientLogger, commands, repository);\r
}\r
\r
@Test\r
public void testProtectRefsCreateTag() throws Exception {\r
MockGitblit gitblit = new MockGitblit();\r
MockLogger logger = new MockLogger();\r
+ MockClientLogger clientLogger = new MockClientLogger();\r
List<ReceiveCommand> commands = new ArrayList<ReceiveCommand>();\r
commands.add(new ReceiveCommand(ObjectId.zeroId(), ObjectId\r
.fromString("3fa7c46d11b11d61f1cbadc6888be5d0eae21969"), "refs/tags/v1.0"));\r
\r
RepositoryModel repository = new RepositoryModel("ex@mple.git", "", "admin", new Date()); \r
\r
- test("protect-refs.groovy", gitblit, logger, commands, repository);\r
+ test("protect-refs.groovy", gitblit, logger, clientLogger, commands, repository);\r
assertEquals(0, logger.messages.size());\r
}\r
\r
public void testProtectRefsFastForward() throws Exception {\r
MockGitblit gitblit = new MockGitblit();\r
MockLogger logger = new MockLogger();\r
+ MockClientLogger clientLogger = new MockClientLogger();\r
List<ReceiveCommand> commands = new ArrayList<ReceiveCommand>();\r
commands.add(new ReceiveCommand(ObjectId\r
.fromString("c18877690322dfc6ae3e37bb7f7085a24e94e887"), ObjectId\r
\r
RepositoryModel repository = new RepositoryModel("ex@mple.git", "", "admin", new Date()); \r
\r
- test("protect-refs.groovy", gitblit, logger, commands, repository);\r
+ test("protect-refs.groovy", gitblit, logger, clientLogger, commands, repository);\r
assertEquals(0, logger.messages.size());\r
}\r
\r
public void testProtectRefsDeleteMasterBranch() throws Exception {\r
MockGitblit gitblit = new MockGitblit();\r
MockLogger logger = new MockLogger();\r
+ MockClientLogger clientLogger = new MockClientLogger();\r
List<ReceiveCommand> commands = new ArrayList<ReceiveCommand>();\r
ReceiveCommand command = new ReceiveCommand(ObjectId\r
.fromString("3fa7c46d11b11d61f1cbadc6888be5d0eae21969"), ObjectId.zeroId(),\r
\r
RepositoryModel repository = new RepositoryModel("ex@mple.git", "", "admin", new Date()); \r
\r
- test("protect-refs.groovy", gitblit, logger, commands, repository);\r
+ test("protect-refs.groovy", gitblit, logger, clientLogger, commands, repository);\r
assertEquals(ReceiveCommand.Result.REJECTED_NODELETE, command.getResult());\r
assertEquals(0, logger.messages.size());\r
}\r
public void testProtectRefsDeleteOtherBranch() throws Exception {\r
MockGitblit gitblit = new MockGitblit();\r
MockLogger logger = new MockLogger();\r
+ MockClientLogger clientLogger = new MockClientLogger();\r
List<ReceiveCommand> commands = new ArrayList<ReceiveCommand>();\r
commands.add(new ReceiveCommand(ObjectId\r
.fromString("3fa7c46d11b11d61f1cbadc6888be5d0eae21969"), ObjectId.zeroId(),\r
\r
RepositoryModel repository = new RepositoryModel("ex@mple.git", "", "admin", new Date()); \r
\r
- test("protect-refs.groovy", gitblit, logger, commands, repository);\r
+ test("protect-refs.groovy", gitblit, logger, clientLogger, commands, repository);\r
assertEquals(0, logger.messages.size());\r
}\r
\r
public void testProtectRefsDeleteTag() throws Exception {\r
MockGitblit gitblit = new MockGitblit();\r
MockLogger logger = new MockLogger();\r
+ MockClientLogger clientLogger = new MockClientLogger();\r
List<ReceiveCommand> commands = new ArrayList<ReceiveCommand>();\r
ReceiveCommand command = new ReceiveCommand(ObjectId\r
.fromString("3fa7c46d11b11d61f1cbadc6888be5d0eae21969"), ObjectId.zeroId(),\r
\r
RepositoryModel repository = new RepositoryModel("ex@mple.git", "", "admin", new Date()); \r
\r
- test("protect-refs.groovy", gitblit, logger, commands, repository);\r
+ test("protect-refs.groovy", gitblit, logger, clientLogger, commands, repository);\r
assertEquals(ReceiveCommand.Result.REJECTED_NODELETE, command.getResult());\r
assertEquals(0, logger.messages.size());\r
}\r
public void testBlockPush() throws Exception {\r
MockGitblit gitblit = new MockGitblit();\r
MockLogger logger = new MockLogger();\r
+ MockClientLogger clientLogger = new MockClientLogger();\r
List<ReceiveCommand> commands = new ArrayList<ReceiveCommand>();\r
commands.add(new ReceiveCommand(ObjectId\r
.fromString("c18877690322dfc6ae3e37bb7f7085a24e94e887"), ObjectId\r
RepositoryModel repository = new RepositoryModel("ex@mple.git", "", "admin", new Date()); \r
\r
try {\r
- test("blockpush.groovy", gitblit, logger, commands, repository);\r
+ test("blockpush.groovy", gitblit, logger, clientLogger, commands, repository);\r
assertTrue("blockpush should have failed!", false);\r
} catch (GitBlitException e) {\r
assertTrue(e.getMessage().contains("failed"));\r
}\r
}\r
+ \r
+ @Test\r
+ public void testClientLogging() throws Exception {\r
+ MockGitblit gitblit = new MockGitblit();\r
+ MockLogger logger = new MockLogger();\r
+ MockClientLogger clientLogger = new MockClientLogger();\r
+ List<ReceiveCommand> commands = new ArrayList<ReceiveCommand>();\r
+ commands.add(new ReceiveCommand(ObjectId\r
+ .fromString("c18877690322dfc6ae3e37bb7f7085a24e94e887"), ObjectId\r
+ .fromString("3fa7c46d11b11d61f1cbadc6888be5d0eae21969"), "refs/heads/master"));\r
+ \r
+ RepositoryModel repository = new RepositoryModel("ex@mple.git", "", "admin", new Date());\r
+ \r
+ File groovyDir = GitBlit.getGroovyScriptsFolder();\r
+ File tempScript = File.createTempFile("testClientLogging", "groovy", groovyDir);\r
+ tempScript.deleteOnExit();\r
+ \r
+ BufferedWriter writer = new BufferedWriter(new FileWriter(tempScript));\r
+ \r
+ writer.write("import com.gitblit.utils.ClientLogger\n");\r
+ writer.write("clientLogger.sendMessage('this is a test message')\n");\r
+ writer.flush();\r
+ writer.close();\r
\r
- private void test(String script, MockGitblit gitblit, MockLogger logger,\r
+ test(tempScript.getName(), gitblit, logger, clientLogger, commands, repository);\r
+ assertTrue("Message Missing", clientLogger.messages.contains("this is a test message"));\r
+ }\r
+\r
+ private void test(String script, MockGitblit gitblit, MockLogger logger, MockClientLogger clientLogger,\r
List<ReceiveCommand> commands, RepositoryModel repository) throws Exception {\r
\r
UserModel user = new UserModel("mock");\r
binding.setVariable("commands", commands);\r
binding.setVariable("url", gitblitUrl);\r
binding.setVariable("logger", logger);\r
+ binding.setVariable("clientLogger", clientLogger);\r
\r
Object result = gse.run(script, binding);\r
if (result instanceof Boolean) {\r
messages.add(message);\r
}\r
}\r
+ \r
+ class MockClientLogger {\r
+ List<String> messages = new ArrayList<String>();\r
+\r
+ public void sendMessage(String message) {\r
+ messages.add(message);\r
+ }\r
+ }\r
\r
class MockMail {\r
final Collection<String> toAddresses;\r
+ message;\r
}\r
}\r
-}
\ No newline at end of file
+}\r