/** * Tests the "URL@HEAD" format in the SVN URL */ @Test public void headRevisionCheckout() throws Exception { File testRepo = new CopyExisting(getClass().getResource("two-revisions.zip")).allocate(); SubversionSCM scm = new SubversionSCM("file://" + testRepo.toURI().toURL().getPath() + "@HEAD"); FreeStyleProject p = r.createFreeStyleProject(); p.setScm(scm); FreeStyleBuild b = p.scheduleBuild2(0, new Cause.UserIdCause()).get(); System.out.println(b.getLog(LOG_LIMIT)); r.assertLogContains("At revision 2", b); r.assertBuildStatus(Result.SUCCESS,b); }
@Test public void customCacheLocationFromSlave() throws Exception { FreeStyleProject p = j.createFreeStyleProject(); p.setScm(new MercurialSCM(CACHING_INSTALLATION, repo.getPath(), null, null, null, null, false)); p.setAssignedNode(j.createOnlineSlave()); m.hg(repo, "init"); m.touchAndCommit(repo, "a"); String log = m.buildAndCheck(p, "a"); Pattern pattern = Pattern.compile("hg clone .*custom-cache-dir"); Assert.assertTrue(pattern.matcher(log).find()); }
/** * Manufactures commits including metadata * @return */ private void createWorkingCopy(SubversionSCM scm) throws Exception { FreeStyleProject forCommit = r.createFreeStyleProject(); forCommit.setScm(scm); forCommit.setAssignedLabel(r.jenkins.getSelfLabel()); FreeStyleBuild b = r.assertBuildStatusSuccess(forCommit.scheduleBuild2(0).get()); workingcopy = b.getWorkspace(); }
@Test public void emptyDirectoryAllowEmptyResult() throws Exception { JUnitResultArchiver a = new JUnitResultArchiver("TEST-*.xml"); a.setAllowEmptyResults(true); FreeStyleProject freeStyleProject = j.createFreeStyleProject(); freeStyleProject.getPublishersList().add(a); j.assertBuildStatus(Result.SUCCESS, freeStyleProject.scheduleBuild2(0).get()); }
/** * Tests {@link GerritTriggerParameters#setOrCreateParameters(com.sonymobile.tools.gerrit.gerritevents.dto.events.GerritTriggeredEvent, hudson.model.Job, List)}. * The {@link GerritTriggerParameters#GERRIT_CHANGE_URL} should contain the base url from the event provider. * * @throws Exception if so */ @Test public void setOrCreateParametersProviderUrl() throws Exception { PatchsetCreated created = Setup.createPatchsetCreated(); AbstractProject project = j.createFreeStyleProject(); LinkedList<ParameterValue> parameters = new LinkedList<ParameterValue>(); GerritTriggerParameters.setOrCreateParameters(created, project, parameters); StringParameterValue param = findParameter(GerritTriggerParameters.GERRIT_CHANGE_URL, parameters); assertNotNull(param); assertTrue(param.value.startsWith(created.getProvider().getUrl())); }
private FreeStyleBuild configureTestBuild(String projectName) throws Exception { FreeStyleProject p = projectName == null ? rule.createFreeStyleProject() : rule.createFreeStyleProject(projectName); p.getBuildersList().add(new TestBuilder() { public boolean perform(AbstractBuild<?, ?> build, Launcher launcher, BuildListener listener) throws InterruptedException, IOException { build.getWorkspace().child("junit.xml").copyFrom( getClass().getResource("junit-report-20090516.xml")); return true; } }); p.getPublishersList().add(new JUnitResultArchiver("*.xml")); return rule.assertBuildStatus(Result.UNSTABLE, p.scheduleBuild2(0).get()); }
private FreeStyleProject createPostCommitTriggerJob() throws Exception { // Disable crumbs because HTMLUnit refuses to mix request bodies with // request parameters r.jenkins.setCrumbIssuer(null); FreeStyleProject p = r.createFreeStyleProject(); String url = "https://svn.jenkins-ci.org/trunk/hudson/test-projects/trivial-ant"; SCMTrigger trigger = new SCMTrigger("0 */6 * * *"); p.setScm(new SubversionSCM(url)); p.addTrigger(trigger); trigger.start(p, true); return p; }
@Bug(11460) @Test public void trailingUrlWhitespace() throws Exception { FreeStyleProject p = j.createFreeStyleProject(); p.setScm(new MercurialSCM(hgInstallation(), repo.getPath() + " ", null, null, null, null, false)); m.hg(repo, "init"); m.touchAndCommit(repo, "dir1/f1"); AbstractBuild<?, ?> b = p.scheduleBuild2(0).get(); assertEquals(Result.SUCCESS, b.getResult()); }
@Issue("JENKINS-7944") @Test public void configRoundtrip2() throws Exception { FreeStyleProject p = r.createFreeStyleProject(); SubversionSCM scm = new SubversionSCM( Arrays.asList( new ModuleLocation("https://svn.jenkins-ci.org/trunk/hudson/test-projects/testSubversionExclusion", "")), new UpdateUpdater(),null,null,null,null,null,null); p.setScm(scm); r.configRoundtrip((Item)p); verify(scm,(SubversionSCM)p.getScm()); }
@Test public void emptyDirectory() throws Exception { JUnitResultArchiver a = new JUnitResultArchiver("TEST-*.xml"); a.setAllowEmptyResults(false); FreeStyleProject freeStyleProject = j.createFreeStyleProject(); freeStyleProject.getPublishersList().add(a); j.assertBuildStatus(Result.FAILURE, freeStyleProject.scheduleBuild2(0).get()); }
/** * Tests {@link GerritTriggerParameters#setOrCreateParameters(com.sonymobile.tools.gerrit.gerritevents.dto.events.GerritTriggeredEvent, hudson.model.Job, List)}. * The {@link GerritTriggerParameters#GERRIT_CHANGE_URL} should contain the base url from the project trigger. * * @throws Exception if so */ @Test public void setOrCreateParametersUrlNoProvider() throws Exception { PatchsetCreated created = Setup.createPatchsetCreated(); created.setProvider(null); AbstractProject project = j.createFreeStyleProject(); GerritTrigger trigger = Setup.createDefaultTrigger(project); LinkedList<ParameterValue> parameters = new LinkedList<ParameterValue>(); GerritTriggerParameters.setOrCreateParameters(created, project, parameters); StringParameterValue param = findParameter(GerritTriggerParameters.GERRIT_CHANGE_URL, parameters); assertNotNull(param); assertTrue(param.value.startsWith(config.getGerritFrontEndUrl())); }
/** * Manufactures commits by adding files in the given names. */ private void createCommit(SubversionSCM scm, String... paths) throws Exception { FreeStyleProject forCommit = r.createFreeStyleProject(); forCommit.setScm(scm); forCommit.setAssignedLabel(r.jenkins.getSelfLabel()); FreeStyleBuild b = r.assertBuildStatusSuccess(forCommit.scheduleBuild2(0).get()); SvnClientManager svnm = SubversionSCM.createClientManager((AbstractProject)null); List<File> added = new ArrayList<>(); for (String path : paths) { FilePath newFile = b.getWorkspace().child(path); added.add(new File(newFile.getRemote())); if (!newFile.exists()) { newFile.touch(System.currentTimeMillis()); svnm.getWCClient().doAdd(new File(newFile.getRemote()),false,false,false, SVNDepth.INFINITY, false,false); } else newFile.write("random content","UTF-8"); } SVNCommitClient cc = svnm.getCommitClient(); cc.doCommit(added.toArray(new File[added.size()]),false,"added",null,null,false,false,SVNDepth.EMPTY); }
/** * Creates a freestyle project & build with UNSTABLE status * containing a test report from: /hudson/tasks/junit/junit-report-20090516.xml */ private FreeStyleBuild configureTestBuild(String projectName) throws Exception { FreeStyleProject p = j.createFreeStyleProject(projectName); p.getBuildersList().add(new TestBuilder() { @Override @SuppressWarnings("null") public boolean perform(AbstractBuild<?, ?> build, Launcher launcher, BuildListener listener) throws InterruptedException, IOException { build.getWorkspace().child("junit.xml").copyFrom( getClass().getResource("/hudson/tasks/junit/junit-report-20090516.xml")); return true; } }); p.getPublishersList().add(new JUnitResultArchiver("*.xml")); return j.assertBuildStatus(Result.UNSTABLE, p.scheduleBuild2(0).get()); } }
private FreeStyleProject createPostCommitTriggerJobMultipleSvnLocations() throws Exception { // Disable crumbs because HTMLUnit refuses to mix request bodies with // request parameters r.jenkins.setCrumbIssuer(null); FreeStyleProject p = r.createFreeStyleProject(); String[] urls = new String[] {"https://svn.jenkins-ci.org/trunk/hudson/test-projects/trivial-ant", "https://svn.jenkins-ci.org/trunk/hudson/test-projects/trivial-maven/"}; p.setScm(new SubversionSCM(urls, new String[] {"", ""})); SCMTrigger trigger = new SCMTrigger("0 */6 * * *"); p.addTrigger(trigger); trigger.start(p, true); return p; }
/** * Used for experimenting the memory leak problem. * This test by itself doesn't detect that, but I'm leaving it in anyway. */ @Issue("JENKINS-8061") @Test public void pollingLeak() throws Exception { Proc p = runSvnServe(getClass().getResource("small.zip")); try { FreeStyleProject b = r.createFreeStyleProject(); b.setScm(new SubversionSCM("svn://localhost/")); b.setAssignedNode(r.createSlave()); r.assertBuildStatusSuccess(b.scheduleBuild2(0)); b.poll(new StreamTaskListener(System.out,Charset.defaultCharset())); } finally { p.kill(); } }
@Bug(20186) @Test public void configureBrowser() throws Exception { FreeStyleProject p = j.createFreeStyleProject(); p.setScm(new MercurialSCM(null, "https://host/repo", null, null, null, new HgWeb("https://host/repo"), false, null)); j.configRoundtrip(p); assertEquals("https://host/repo/", ((MercurialSCM) p.getScm()).getBrowser().getUrl().toString()); }
@Test @Issue("SECURITY-521") public void testXxe() throws Exception { FileUtils.writeStringToFile(new File(userContentDir, "oob.xml"), adaptedOobFileContent); FreeStyleProject project = j.createFreeStyleProject(); DownloadBuilder builder = new DownloadBuilder(); builder.fileContent = adaptedXxeFileContent; project.getPublishersList().add(publisher); project.scheduleBuild2(0).get();
/** * Tests {@link GerritTriggerParameters#setOrCreateParameters(com.sonymobile.tools.gerrit.gerritevents.dto.events.GerritTriggeredEvent, hudson.model.Job, List)}. * The {@link GerritTriggerParameters#GERRIT_CHANGE_URL} should contain the base url from the first server. * * @throws Exception if so */ @Test public void setOrCreateParametersUrlNoProviderAnyServer() throws Exception { PatchsetCreated created = Setup.createPatchsetCreated(); created.setProvider(null); AbstractProject project = j.createFreeStyleProject(); GerritTrigger trigger = Setup.createDefaultTrigger(project); trigger.setServerName(GerritServer.ANY_SERVER); LinkedList<ParameterValue> parameters = new LinkedList<ParameterValue>(); GerritTriggerParameters.setOrCreateParameters(created, project, parameters); StringParameterValue param = findParameter(GerritTriggerParameters.GERRIT_CHANGE_URL, parameters); assertNotNull(param); assertTrue(param.value.startsWith(config.getGerritFrontEndUrl())); }
private void invokeTestPollingExternalsForFile() throws Exception { // trunk has svn:externals="^/vendor/target.txt target.txt" File repo = new CopyExisting(getClass().getResource("JENKINS-20165.zip")).allocate(); String path = "file://" + repo.toURI().toURL().getPath(); SubversionSCM scm = new SubversionSCM(path + "trunk"); // first checkout FreeStyleProject p = r.createFreeStyleProject(); p.setScm(scm); p.setAssignedLabel(r.createSlave().getSelfLabel()); r.assertBuildStatusSuccess(p.scheduleBuild2(0).get()); // update target.txt in vendor SubversionSCM vendor = new SubversionSCM(path + "vendor"); createWorkingCopy(vendor); changeFiles("target.txt"); commitWorkingCopy("update"); // should detect change assertTrue(p.poll(StreamTaskListener.fromStdout()).hasChanges()); } }
public void testSwitchingFromSharedToCached() throws Exception { FreeStyleProject p = j.createFreeStyleProject(); p.setScm(new MercurialSCM(sharingInstallation, repo.getPath(), null, null, null, null, false)); m.hg(repo, "init"); m.touchAndCommit(repo, "a"); m.buildAndCheck(p, "a"); assertTrue(p.getSomeWorkspace().child(".hg").child("sharedpath") .exists()); p.setScm(new MercurialSCM(cachingInstallation, repo.getPath(), null, null, null, null, false)); m.touchAndCommit(repo, "b"); m.buildAndCheck(p, "b"); assertFalse(p.getSomeWorkspace().child(".hg").child("sharedpath") .exists()); } }