/** * Makes sure the symbolic link is checked out correctly. There seems to be */ @Issue("JENKINS-3904") @Test public void symbolicLinkCheckout() throws Exception { // Only perform if symlink behavior is enabled if (!"true".equals(System.getProperty("svnkit.symlinks"))) { return; } FreeStyleProject p = r.createFreeStyleProject(); p.setScm(new SubversionSCM("https://svn.jenkins-ci.org/trunk/hudson/test-projects/issue-3904")); FreeStyleBuild b = p.scheduleBuild2(0, new Cause.UserIdCause()).get(); File source = new File(b.getWorkspace().getRemote() + "/readme.txt"); File linked = new File(b.getWorkspace().getRemote() + "/linked.txt"); assertEquals("Files '" + source + "' and '" + linked + "' are not identical from user view.", readFileAsString(source), readFileAsString(linked)); }
@Test public void testNoCommentConfigured() throws Exception { FreeStyleBuild build = getBuild(); RemoteFileFetcher fetcher = new RemoteFileFetcher( build.getWorkspace(), logger, "", "1000" ); assertNull(fetcher.getRemoteFile()); fetcher = new RemoteFileFetcher( build.getWorkspace(), logger, "non-existent", "1000" ); assertNull(fetcher.getRemoteFile()); }
public String buildAndCheck(FreeStyleProject p, String name, Action... actions) throws Exception { FreeStyleBuild b = j.assertBuildStatusSuccess(p.scheduleBuild2(0, null, actions).get()); // for (String line : b.getLog(Integer.MAX_VALUE)) { // System.err.println(">> " + line); // } if (!b.getWorkspace().child(name).exists()) { Set<String> children = new TreeSet<>(); for (FilePath child : b.getWorkspace().list()) { children.add(child.getName()); } fail("Could not find " + name + " among " + children); } assertNotNull(b.getAction(MercurialTagAction.class)); @SuppressWarnings("deprecation") String log = b.getLog(); return log; }
private void testWithContent(String content, String len) throws Exception { final String fileName = "just-a-test.txt"; project.getBuildersList().add(echoBuilder(fileName, content)); FreeStyleBuild build = getBuild(); RemoteFileFetcher fetcher = new RemoteFileFetcher( build.getWorkspace(), logger, fileName, len ); assertEquals(content, fetcher.getRemoteFile()); fetcher = new RemoteFileFetcher( build.getWorkspace(), logger, "*.txt", len ); assertEquals(content, fetcher.getRemoteFile()); }
/** * 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(); }
/** * Makes sure that Subversion doesn't check out workspace in 1.6 */ @Email("http://www.nabble.com/SVN-1.6-td24081571.html") @Test public void workspaceVersion() throws Exception { FreeStyleProject p = r.createFreeStyleProject(); p.setScm(loadSvnRepo()); FreeStyleBuild b = p.scheduleBuild2(0).get(); SvnClientManager wc = SubversionSCM.createClientManager((AbstractProject)null); SVNStatus st = wc.getStatusClient().doStatus(new File(b.getWorkspace().getRemote()+"/a"), false); int wcf = st.getWorkingCopyFormat(); System.out.println(wcf); assertEquals(SVNAdminAreaFactory.WC_FORMAT_14,wcf); }
@Test public void clean() throws Exception { FreeStyleProject p = j.createFreeStyleProject(); p.setScm(new MercurialSCM(hgInstallation(), repo.getPath(), null, null, null, null, true)); m.hg(repo, "init"); m.touchAndCommit(repo, "f1"); m.buildAndCheck(p, "f1"); FilePath ws = p.getLastBuild().getWorkspace(); ws.child("junk1").write("junk", null); ws.child("junk2").write("junk", null); // from Hg 1.3 changelog: "update: don't unlink added files when -C/--clean is specified" m.hg(new File(ws.getRemote()), "add", "junk2"); m.touchAndCommit(repo, "f2"); m.buildAndCheck(p, "f2"); Set<String> kids = new TreeSet<String>(); for (FilePath kid : ws.list()) { kids.add(kid.getName()); } assertEquals("[.hg, f1, f2]", kids.toString()); }
private BuildResultProcessor runProcessLintViolationsTest(String lintFileContent, ConduitAPIClient conduitAPIClient) throws Exception { final String fileName = ".phabricator-lint"; project.getBuildersList().add(echoBuilder(fileName, lintFileContent)); FreeStyleBuild build = getBuild(); BuildResultProcessor processor = new BuildResultProcessor( TestUtils.getDefaultLogger(), build, build.getWorkspace(), mock(Differential.class), new DifferentialClient(null, conduitAPIClient), TestUtils.TEST_PHID, mock(CodeCoverageMetrics.class), TestUtils.TEST_BASE_URL, true, new CoverageCheckSettings(true, 0.0, 100.0) ); processor.processLintResults(fileName, "1000"); processor.processHarbormaster(); return processor; }
/** * Subversion externals to a file. Requires 1.6 workspace. */ @Issue("JENKINS-7539") @Test public void externalsToFile() throws Exception { Proc server = runSvnServe(getClass().getResource("HUDSON-7539.zip")); try { // enable 1.6 mode HtmlForm f = r.createWebClient().goTo("configure").getFormByName("config"); f.getSelectByName("svn.workspaceFormat").setSelectedAttribute("10",true); r.submit(f); FreeStyleProject p = r.createFreeStyleProject(); p.setScm(new SubversionSCM("svn://localhost/dir1")); FreeStyleBuild b = r.assertBuildStatusSuccess(p.scheduleBuild2(0)); assertTrue(b.getWorkspace().child("2").exists()); assertTrue(b.getWorkspace().child("3").exists()); assertTrue(b.getWorkspace().child("test.x").exists()); r.assertBuildStatusSuccess(p.scheduleBuild2(0)); } finally { server.kill(); } }
@Issue("JENKINS-777") @Test public void ignoreExternals() throws Exception { Proc p = runSvnServe(getClass().getResource("JENKINS-777.zip")); try { FreeStyleProject b = r.createFreeStyleProject(); ModuleLocation[] locations = { new ModuleLocation("svn://localhost/jenkins-777/proja", "no_externals", "infinity", true), new ModuleLocation("svn://localhost/jenkins-777/proja", "with_externals", "infinity", false) }; b.setScm(new SubversionSCM(Arrays.asList(locations), new CheckoutUpdater(), null, null, null, null, null, null)); FreeStyleBuild build = r.assertBuildStatusSuccess(b.scheduleBuild2(0)); FilePath ws = build.getWorkspace(); // Check that the external exists assertTrue(ws.child("with_externals").child("externals").child("projb").exists()); // Check that the external doesn't exist assertTrue(!(ws.child("no_externals").child("externals").child("projb").exists())); } finally { p.kill(); } }
@Email("http://jenkins.361315.n4.nabble.com/Hudson-1-266-and-1-267-Subversion-authentication-broken-td375737.html") @Test @Ignore("TODO use docker-fixtures for a reproducible test case") public void httpsCheckOut() throws Exception { FreeStyleProject p = r.createFreeStyleProject(); p.setScm(new SubversionSCM("https://svn.jenkins-ci.org/trunk/hudson/test-projects/trivial-ant/")); FreeStyleBuild b = r.assertBuildStatusSuccess(p.scheduleBuild2(0, new Cause.UserIdCause()).get()); assertTrue(b.getWorkspace().child("build.xml").exists()); }
@Email("http://jenkins.361315.n4.nabble.com/Hudson-1-266-and-1-267-Subversion-authentication-broken-td375737.html") @Test @Ignore("TODO use docker-fixtures for a reproducible test case") public void httpCheckOut() throws Exception { FreeStyleProject p = r.createFreeStyleProject(); p.setScm(new SubversionSCM("https://svn.jenkins-ci.org/trunk/hudson/test-projects/trivial-maven/src/test/java/test/")); FreeStyleBuild b = r.assertBuildStatusSuccess(p.scheduleBuild2(0, new Cause.UserIdCause()).get()); assertTrue(b.getWorkspace().child("AppTest.java").exists()); }
@Bug(5723) @Test public void customConfiguration() throws Exception { File repo = tmp.getRoot(); // TODO switch to MercurialContainer m.hg(repo, "init"); m.touchAndCommit(repo, "f"); r.jenkins.getDescriptorByType(MercurialInstallation.DescriptorImpl.class).setInstallations(new MercurialInstallation("test", "", "hg", false, false, false, "[format]\nusestore = false", null)); FreeStyleProject p = r.createFreeStyleProject(); MercurialSCM scm = new MercurialSCM(repo.getPath()); scm.setInstallation("test"); scm.setRevisionType(MercurialSCM.RevisionType.BRANCH); scm.setDisableChangeLog(false); p.setScm(scm); FreeStyleBuild b = r.assertBuildStatusSuccess(p.scheduleBuild2(0)); FilePath ws = b.getWorkspace(); assertNotNull(ws); String requires = ws.child(".hg/requires").readToString(); assertFalse(requires, requires.contains("store")); }
@Test @Ignore("TODO use docker-fixtures for a reproducible test case") public void urlWithVariable() throws Exception { FreeStyleProject p = r.createFreeStyleProject(); // --- 1st case: URL with a variable --- String repo = "https://svn.jenkins-ci.org"; String path = "/trunk/hudson/test-projects/trivial-maven/src/test/java/test"; p.setScm(new SubversionSCM("$REPO" + path)); FreeStyleBuild b = p.scheduleBuild2(0, new Cause.UserIdCause(), new ParametersAction(new StringParameterValue("REPO", repo))).get(); System.out.println(b.getLog(LOG_LIMIT)); r.assertBuildStatus(Result.SUCCESS,b); assertTrue(b.getWorkspace().child("AppTest.java").exists()); // --- 2nd case: URL with an empty variable --- p.setScm(new SubversionSCM(repo + path + "$EMPTY_VAR")); b = p.scheduleBuild2(0, new Cause.UserIdCause(), new ParametersAction(new StringParameterValue("EMPTY_VAR", ""))).get(); r.assertBuildStatus(Result.SUCCESS,b); assertTrue(b.getWorkspace().child("AppTest.java").exists()); }
@Url("http://hudson.pastebin.com/m3ea34eea") @Test @Ignore("TODO use docker-fixtures for a reproducible test case") public void remoteCheckOut() throws Exception { DumbSlave s = r.createSlave(); FreeStyleProject p = r.createFreeStyleProject(); p.setAssignedLabel(s.getSelfLabel()); p.setScm(new SubversionSCM("https://svn.jenkins-ci.org/trunk/hudson/test-projects/trivial-ant/")); FreeStyleBuild b = r.assertBuildStatusSuccess(p.scheduleBuild2(0, new Cause.UserIdCause()).get()); assertTrue(b.getWorkspace().child("build.xml").exists()); r.assertBuildStatusSuccess(p.scheduleBuild2(0).get()); }
@Test @Ignore("TODO use docker-fixtures for a reproducible test case") public void recursiveEnvironmentVariables() throws Exception { EnvironmentContributor.all().add(new EnvironmentContributor() { @Override public void buildEnvironmentFor(Run run, EnvVars ev, TaskListener tl) throws IOException, InterruptedException { ev.put("TOOL", "ant"); ev.put("ROOT", "https://svn.jenkins-ci.org/trunk/hudson/test-projects/trivial-${TOOL}"); } }); FreeStyleProject p = r.createFreeStyleProject("job-with-envs"); p.setScm(new SubversionSCM("$ROOT")); CaptureEnvironmentBuilder builder = new CaptureEnvironmentBuilder(); p.getBuildersList().add(builder); r.assertBuildStatusSuccess(p.scheduleBuild2(0)); assertTrue(p.getLastBuild().getWorkspace().child("build.xml").exists()); assertEquals("https://svn.jenkins-ci.org/trunk/hudson/test-projects/trivial-ant", builder.getEnvVars().get("SVN_URL")); assertEquals(getActualRevision(p.getLastBuild(), "https://svn.jenkins-ci.org/trunk/hudson/test-projects/trivial-ant").toString(), builder.getEnvVars().get("SVN_REVISION")); assertEquals("https://svn.jenkins-ci.org/trunk/hudson/test-projects/trivial-ant", builder.getEnvVars().get("SVN_URL_1")); assertEquals(getActualRevision(p.getLastBuild(), "https://svn.jenkins-ci.org/trunk/hudson/test-projects/trivial-ant").toString(), builder.getEnvVars().get("SVN_REVISION_1")); }
@Bug(5396) @Test public void tags() throws Exception { m.hg(repo, "init"); m.touchAndCommit(repo, "f1"); m.touchAndCommit(repo, "f2"); m.hg(repo, "tag", "release"); m.touchAndCommit(repo, "f3"); FreeStyleProject p = j.createFreeStyleProject(); p.setScm(new MercurialSCM(hgInstallation(), repo.getPath(), MercurialSCM.RevisionType.TAG, "release", null, null, null, false, null)); FreeStyleBuild b = j.assertBuildStatusSuccess(p.scheduleBuild2(0)); FilePath ws = b.getWorkspace(); assertTrue(ws.child("f1").exists()); assertTrue(ws.child("f2").exists()); assertFalse(ws.child("f3").exists()); m.hg(repo, "tag", "--force", "release"); b = j.assertBuildStatusSuccess(p.scheduleBuild2(0)); assertTrue(JenkinsRule.getLog(b), ws.child("f3").exists()); }
@Issue("JENKINS-22568") @Test @Ignore("TODO use docker-fixtures for a reproducible test case") public void pollingWithDefaultParametersWithCurlyBraces() throws Exception { FreeStyleProject p = r.createFreeStyleProject(); String repo = "https://svn.jenkins-ci.org/"; String path = "trunk/hudson/test-projects/trivial-ant/"; p.setScm(new SubversionSCM("${REPO}" + path)); ParametersDefinitionProperty property = new ParametersDefinitionProperty(new StringParameterDefinition("REPO", repo)); p.addProperty(property); FreeStyleBuild b = p.scheduleBuild2(0, new Cause.UserIdCause(), new ParametersAction(new StringParameterValue("REPO", repo))).get(); r.assertBuildStatus(Result.SUCCESS,b); assertTrue(b.getWorkspace().child("build.xml").exists()); // as a baseline, this shouldn't detect any change TaskListener listener = r.createTaskListener(); PollingResult poll = p.poll(listener); assertFalse("Polling shouldn't have any changes.", poll.hasChanges()); }
@Issue("JENKINS-22568") @Test @Ignore("TODO use docker-fixtures for a reproducible test case") public void pollingWithChoiceParametersWithOutCurlyBraces() throws Exception { FreeStyleProject p = r.createFreeStyleProject(); String repo = "https://svn.jenkins-ci.org/"; String path = "trunk/hudson/test-projects/trivial-maven/src/test/java/test"; p.setScm(new SubversionSCM("${REPO}" + path)); ParametersDefinitionProperty property = new ParametersDefinitionProperty(new ChoiceParameterDefinition("REPO", new String[] {repo, "test"}, "")); p.addProperty(property); FreeStyleBuild b = p.scheduleBuild2(0, new Cause.UserIdCause(), new ParametersAction(new StringParameterValue("REPO", repo))).get(); r.assertBuildStatus(Result.SUCCESS,b); assertTrue(b.getWorkspace().child("AppTest.java").exists()); // as a baseline, this shouldn't detect any change TaskListener listener = r.createTaskListener(); PollingResult poll = p.poll(listener); assertFalse("Polling shouldn't have any changes.", poll.hasChanges()); }
@Issue("JENKINS-22568") @Test @Ignore("TODO use docker-fixtures for a reproducible test case") public void pollingWithDefaultParametersWithOutCurlyBraces() throws Exception { FreeStyleProject p = r.createFreeStyleProject(); String repo = "https://svn.jenkins-ci.org"; String path = "/trunk/hudson/test-projects/trivial-ant/"; p.setScm(new SubversionSCM("$REPO" + path)); ParametersDefinitionProperty property = new ParametersDefinitionProperty(new StringParameterDefinition("REPO", repo)); p.addProperty(property); FreeStyleBuild b = p.scheduleBuild2(0, new Cause.UserIdCause(), new ParametersAction(new StringParameterValue("REPO", repo))).get(); r.assertBuildStatus(Result.SUCCESS,b); assertTrue(b.getWorkspace().child("build.xml").exists()); // as a baseline, this shouldn't detect any change TaskListener listener = r.createTaskListener(); PollingResult poll = p.poll(listener); assertFalse("Polling shouldn't have any changes.", poll.hasChanges()); }