* Test Windows junctions before Java 7 symlink
Apparently Java 7 (and later) do not count Windows junctions as
symlinks. When you drill down into the BasicFileAttributes structure,
reparse points are only counted under isOther. So, since we already
have code that properly detects Windows Junctions, let's use that first
and then fallback to the Java 7 code.
* Add comment for change & link bug.
* Add test case
* Switch to Functions.isWindows().
* Use non-deprecated APIs for tmp file/dir mgmt
* Add better debugging.
* Allow spaces in junction name & dir name.
To do that, it was easier to use ProcessBuilder vs building up the correct
string in code to send to cmd.exe.
Also, I'll note that according to http://ss64.com/nt/syntax-internal.html,
mklink is in internal cmd.exe command. So, it must be invoked through
"cmd.exe /c" for it to work.
* Remove comment mentioning bug number.
* Remove debugging output, per Baptiste's request
* Add newline at end of file.
* Make sure that the junction was removed.
* Use assertEquals to show retcode of Process.waitFor.
* Fix compilation errors by importing functions
* [JENKINS-37332] - Improve diagnostics of non-closed streams during reading of the manifests in PluginManager
* [JENKINS-37332] - Leakless processing of JarUrlConnection during Manifest parsing
* [JENKINS-37332] - Also implement leak-safe method for retrieving file modification date
* [JENKINS-37332] - Add spotcheck methods for manifest file access + Javadoc
* [JENKINS-37332] - Also test multi-line and empty attributes in the test
* [JENKINS-34854] - Migrate missing Integer and Boolean properties to SystemProperties
* [JENKINS-34854] - API methods for Long variables
* [JENKINS-34854] - Migrate Long settings to SystemProperties
* [JENKINS-34854] - Leftover change (I should use Save All)
* [JENKINS-34854] - Some fixes in Long methods Javadoc and log messages
The number of deletion attempts and the time it waits between deletes are configurable via system properties (like hudson.Util.noSymlink etc).
Util.DELETION_MAX is set by -Dhudson.Util.deletionMax. Default is 3 attempts.
Util.WAIT_BETWEEN_DELETION_RETRIES is set by -Dhudson.Util.deletionRetryWait. Defaults is 100 milliseconds.
Util.GC_AFTER_FAILED_DELETE is set by -Dhudson.Util.performGCOnFailedDelete. Default is false.
Added unit-tests for new functionality.
Accomplished by centralizing calls to System.getProperty(String) and related into new file SystemProperties.java.
There, we first check for existence of system property; if not, we look for property in context.xml
This is done for "application" properties (like hudson.DNSMultiCast.disabled) but not for java properties (like user.name)
The change adds annotations for all methods inside the class. The initial idea - enforce checks of symlink methods to prevent NPEs on Windows platforms.
Signed-off-by: Oleg Nenashev <o.v.nenashev@gmail.com>
Retrying 3 times while waiting for 100 millis between retries (at
recreating symlink after "deleting" it). Ends up throwing FAE exception
if thrown for a 4th time in a row - as not much can be done at that
point. A warning is logged in that case, prior to throwing the last FAE.
Given these <variable,value> mappings: <A,a> and <A.B,a-b>, $A.B would
evaluate to $a.B, as it currently does, and ${A.B} to a-b instead of the
current ${A.B}.
Existing ${A.B}-like references will break (not evaluate to ${A.B}) if
there actually is an A.B variable defined, which I think is very
unlikely.
Apparently the Maven 2 process factory fails to adequately insulate the Maven process from Jenkins library dependencies;
if you specify a build extension that can override dependencies used by Jenkins core classes!
A real fix would involve changing class loader delegation, since presumably similar bugs could still occur.
On Chrome (and possibly others), an inline element like span doesn't enlarge
its size to cover its content, so the 1px place holder wasn't taking effect.
To ensure the minimum height of 16px, make it an inline-block element. I'm
not entirely sure how an inline-block element with no fixed width would behave,
but with a bit of casual testing, the text inside seems to wrap OK.