This file is indexed.

/usr/share/doc/junit4/api/src-html/org/junit/rules/DisableOnDebug.html is in junit4-doc 4.12-6.

This file is owned by root:root, with mode 0o644.

The actual contents of the file can be viewed below.

  1
  2
  3
  4
  5
  6
  7
  8
  9
 10
 11
 12
 13
 14
 15
 16
 17
 18
 19
 20
 21
 22
 23
 24
 25
 26
 27
 28
 29
 30
 31
 32
 33
 34
 35
 36
 37
 38
 39
 40
 41
 42
 43
 44
 45
 46
 47
 48
 49
 50
 51
 52
 53
 54
 55
 56
 57
 58
 59
 60
 61
 62
 63
 64
 65
 66
 67
 68
 69
 70
 71
 72
 73
 74
 75
 76
 77
 78
 79
 80
 81
 82
 83
 84
 85
 86
 87
 88
 89
 90
 91
 92
 93
 94
 95
 96
 97
 98
 99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html lang="en">
<head>
<title>Source code</title>
<link rel="stylesheet" type="text/css" href="../../../../stylesheet.css" title="Style">
</head>
<body>
<div class="sourceContainer">
<pre><span class="sourceLineNo">001</span>package org.junit.rules;<a name="line.1"></a>
<span class="sourceLineNo">002</span><a name="line.2"></a>
<span class="sourceLineNo">003</span>import java.lang.management.ManagementFactory;<a name="line.3"></a>
<span class="sourceLineNo">004</span>import java.lang.management.RuntimeMXBean;<a name="line.4"></a>
<span class="sourceLineNo">005</span>import java.util.List;<a name="line.5"></a>
<span class="sourceLineNo">006</span><a name="line.6"></a>
<span class="sourceLineNo">007</span>import org.junit.runner.Description;<a name="line.7"></a>
<span class="sourceLineNo">008</span>import org.junit.runners.model.Statement;<a name="line.8"></a>
<span class="sourceLineNo">009</span><a name="line.9"></a>
<span class="sourceLineNo">010</span>/**<a name="line.10"></a>
<span class="sourceLineNo">011</span> * The {@code DisableOnDebug} Rule allows you to label certain rules to be<a name="line.11"></a>
<span class="sourceLineNo">012</span> * disabled when debugging.<a name="line.12"></a>
<span class="sourceLineNo">013</span> * &lt;p&gt;<a name="line.13"></a>
<span class="sourceLineNo">014</span> * The most illustrative use case is for tests that make use of the<a name="line.14"></a>
<span class="sourceLineNo">015</span> * {@link Timeout} rule, when ran in debug mode the test may terminate on<a name="line.15"></a>
<span class="sourceLineNo">016</span> * timeout abruptly during debugging. Developers may disable the timeout, or<a name="line.16"></a>
<span class="sourceLineNo">017</span> * increase the timeout by making a code change on tests that need debugging and<a name="line.17"></a>
<span class="sourceLineNo">018</span> * remember revert the change afterwards or rules such as {@link Timeout} that<a name="line.18"></a>
<span class="sourceLineNo">019</span> * may be disabled during debugging may be wrapped in a {@code DisableOnDebug}.<a name="line.19"></a>
<span class="sourceLineNo">020</span> * &lt;p&gt;<a name="line.20"></a>
<span class="sourceLineNo">021</span> * The important benefit of this feature is that you can disable such rules<a name="line.21"></a>
<span class="sourceLineNo">022</span> * without any making any modifications to your test class to remove them during<a name="line.22"></a>
<span class="sourceLineNo">023</span> * debugging.<a name="line.23"></a>
<span class="sourceLineNo">024</span> * &lt;p&gt;<a name="line.24"></a>
<span class="sourceLineNo">025</span> * This does nothing to tackle timeouts or time sensitive code under test when<a name="line.25"></a>
<span class="sourceLineNo">026</span> * debugging and may make this less useful in such circumstances.<a name="line.26"></a>
<span class="sourceLineNo">027</span> * &lt;p&gt;<a name="line.27"></a>
<span class="sourceLineNo">028</span> * Example usage:<a name="line.28"></a>
<span class="sourceLineNo">029</span> * <a name="line.29"></a>
<span class="sourceLineNo">030</span> * &lt;pre&gt;<a name="line.30"></a>
<span class="sourceLineNo">031</span> * public static class DisableTimeoutOnDebugSampleTest {<a name="line.31"></a>
<span class="sourceLineNo">032</span> * <a name="line.32"></a>
<span class="sourceLineNo">033</span> *     &amp;#064;Rule<a name="line.33"></a>
<span class="sourceLineNo">034</span> *     public TestRule timeout = new DisableOnDebug(new Timeout(20));<a name="line.34"></a>
<span class="sourceLineNo">035</span> * <a name="line.35"></a>
<span class="sourceLineNo">036</span> *     &amp;#064;Test<a name="line.36"></a>
<span class="sourceLineNo">037</span> *     public void myTest() {<a name="line.37"></a>
<span class="sourceLineNo">038</span> *         int i = 0;<a name="line.38"></a>
<span class="sourceLineNo">039</span> *         assertEquals(0, i); // suppose you had a break point here to inspect i<a name="line.39"></a>
<span class="sourceLineNo">040</span> *     }<a name="line.40"></a>
<span class="sourceLineNo">041</span> * }<a name="line.41"></a>
<span class="sourceLineNo">042</span> * &lt;/pre&gt;<a name="line.42"></a>
<span class="sourceLineNo">043</span> * <a name="line.43"></a>
<span class="sourceLineNo">044</span> * @since 4.12<a name="line.44"></a>
<span class="sourceLineNo">045</span> */<a name="line.45"></a>
<span class="sourceLineNo">046</span>public class DisableOnDebug implements TestRule {<a name="line.46"></a>
<span class="sourceLineNo">047</span>    private final TestRule rule;<a name="line.47"></a>
<span class="sourceLineNo">048</span>    private final boolean debugging;<a name="line.48"></a>
<span class="sourceLineNo">049</span><a name="line.49"></a>
<span class="sourceLineNo">050</span>    /**<a name="line.50"></a>
<span class="sourceLineNo">051</span>     * Create a {@code DisableOnDebug} instance with the timeout specified in<a name="line.51"></a>
<span class="sourceLineNo">052</span>     * milliseconds.<a name="line.52"></a>
<span class="sourceLineNo">053</span>     * <a name="line.53"></a>
<span class="sourceLineNo">054</span>     * @param rule to disable during debugging<a name="line.54"></a>
<span class="sourceLineNo">055</span>     */<a name="line.55"></a>
<span class="sourceLineNo">056</span>    public DisableOnDebug(TestRule rule) {<a name="line.56"></a>
<span class="sourceLineNo">057</span>        this(rule, ManagementFactory.getRuntimeMXBean()<a name="line.57"></a>
<span class="sourceLineNo">058</span>                .getInputArguments());<a name="line.58"></a>
<span class="sourceLineNo">059</span>    }<a name="line.59"></a>
<span class="sourceLineNo">060</span><a name="line.60"></a>
<span class="sourceLineNo">061</span>    /**<a name="line.61"></a>
<span class="sourceLineNo">062</span>     * Visible for testing purposes only.<a name="line.62"></a>
<span class="sourceLineNo">063</span>     * <a name="line.63"></a>
<span class="sourceLineNo">064</span>     * @param rule the rule to disable during debugging<a name="line.64"></a>
<span class="sourceLineNo">065</span>     * @param inputArguments<a name="line.65"></a>
<span class="sourceLineNo">066</span>     *            arguments provided to the Java runtime<a name="line.66"></a>
<span class="sourceLineNo">067</span>     */<a name="line.67"></a>
<span class="sourceLineNo">068</span>    DisableOnDebug(TestRule rule, List&lt;String&gt; inputArguments) {<a name="line.68"></a>
<span class="sourceLineNo">069</span>        this.rule = rule;<a name="line.69"></a>
<span class="sourceLineNo">070</span>        debugging = isDebugging(inputArguments);<a name="line.70"></a>
<span class="sourceLineNo">071</span>    }<a name="line.71"></a>
<span class="sourceLineNo">072</span><a name="line.72"></a>
<span class="sourceLineNo">073</span>    /**<a name="line.73"></a>
<span class="sourceLineNo">074</span>     * @see TestRule#apply(Statement, Description)<a name="line.74"></a>
<span class="sourceLineNo">075</span>     */<a name="line.75"></a>
<span class="sourceLineNo">076</span>    public Statement apply(Statement base, Description description) {<a name="line.76"></a>
<span class="sourceLineNo">077</span>        if (debugging) {<a name="line.77"></a>
<span class="sourceLineNo">078</span>            return base;<a name="line.78"></a>
<span class="sourceLineNo">079</span>        } else {<a name="line.79"></a>
<span class="sourceLineNo">080</span>            return rule.apply(base, description);<a name="line.80"></a>
<span class="sourceLineNo">081</span>        }<a name="line.81"></a>
<span class="sourceLineNo">082</span>    }<a name="line.82"></a>
<span class="sourceLineNo">083</span><a name="line.83"></a>
<span class="sourceLineNo">084</span>    /**<a name="line.84"></a>
<span class="sourceLineNo">085</span>     * Parses arguments passed to the runtime environment for debug flags<a name="line.85"></a>
<span class="sourceLineNo">086</span>     * &lt;p&gt;<a name="line.86"></a>
<span class="sourceLineNo">087</span>     * Options specified in:<a name="line.87"></a>
<span class="sourceLineNo">088</span>     * &lt;ul&gt;<a name="line.88"></a>
<span class="sourceLineNo">089</span>     * &lt;li&gt;<a name="line.89"></a>
<span class="sourceLineNo">090</span>     * &lt;a href="http://docs.oracle.com/javase/6/docs/technotes/guides/jpda/conninv.html#Invocation"<a name="line.90"></a>
<span class="sourceLineNo">091</span>     * &gt;javase-6&lt;/a&gt;&lt;/li&gt;<a name="line.91"></a>
<span class="sourceLineNo">092</span>     * &lt;li&gt;&lt;a href="http://docs.oracle.com/javase/7/docs/technotes/guides/jpda/conninv.html#Invocation"<a name="line.92"></a>
<span class="sourceLineNo">093</span>     * &gt;javase-7&lt;/a&gt;&lt;/li&gt;<a name="line.93"></a>
<span class="sourceLineNo">094</span>     * &lt;li&gt;&lt;a href="http://docs.oracle.com/javase/8/docs/technotes/guides/jpda/conninv.html#Invocation"<a name="line.94"></a>
<span class="sourceLineNo">095</span>     * &gt;javase-8&lt;/a&gt;&lt;/li&gt;<a name="line.95"></a>
<span class="sourceLineNo">096</span>     * <a name="line.96"></a>
<span class="sourceLineNo">097</span>     * <a name="line.97"></a>
<span class="sourceLineNo">098</span>     * @param arguments<a name="line.98"></a>
<span class="sourceLineNo">099</span>     *            the arguments passed to the runtime environment, usually this<a name="line.99"></a>
<span class="sourceLineNo">100</span>     *            will be {@link RuntimeMXBean#getInputArguments()}<a name="line.100"></a>
<span class="sourceLineNo">101</span>     * @return true if the current JVM was started in debug mode, false<a name="line.101"></a>
<span class="sourceLineNo">102</span>     *         otherwise.<a name="line.102"></a>
<span class="sourceLineNo">103</span>     */<a name="line.103"></a>
<span class="sourceLineNo">104</span>    private static boolean isDebugging(List&lt;String&gt; arguments) {<a name="line.104"></a>
<span class="sourceLineNo">105</span>        for (final String argument : arguments) {<a name="line.105"></a>
<span class="sourceLineNo">106</span>            if ("-Xdebug".equals(argument)) {<a name="line.106"></a>
<span class="sourceLineNo">107</span>                return true;<a name="line.107"></a>
<span class="sourceLineNo">108</span>            } else if (argument.startsWith("-agentlib:jdwp")) {<a name="line.108"></a>
<span class="sourceLineNo">109</span>                return true;<a name="line.109"></a>
<span class="sourceLineNo">110</span>            }<a name="line.110"></a>
<span class="sourceLineNo">111</span>        }<a name="line.111"></a>
<span class="sourceLineNo">112</span>        return false;<a name="line.112"></a>
<span class="sourceLineNo">113</span>    }<a name="line.113"></a>
<span class="sourceLineNo">114</span><a name="line.114"></a>
<span class="sourceLineNo">115</span>    /**<a name="line.115"></a>
<span class="sourceLineNo">116</span>     * Returns {@code true} if the JVM is in debug mode. This method may be used<a name="line.116"></a>
<span class="sourceLineNo">117</span>     * by test classes to take additional action to disable code paths that<a name="line.117"></a>
<span class="sourceLineNo">118</span>     * interfere with debugging if required.<a name="line.118"></a>
<span class="sourceLineNo">119</span>     * <a name="line.119"></a>
<span class="sourceLineNo">120</span>     * @return {@code true} if the current JVM is in debug mode, {@code false}<a name="line.120"></a>
<span class="sourceLineNo">121</span>     *         otherwise<a name="line.121"></a>
<span class="sourceLineNo">122</span>     */<a name="line.122"></a>
<span class="sourceLineNo">123</span>    public boolean isDebugging() {<a name="line.123"></a>
<span class="sourceLineNo">124</span>        return debugging;<a name="line.124"></a>
<span class="sourceLineNo">125</span>    }<a name="line.125"></a>
<span class="sourceLineNo">126</span><a name="line.126"></a>
<span class="sourceLineNo">127</span>}<a name="line.127"></a>




























































</pre>
</div>
</body>
</html>