@Issue("JENKINS-27441")
 @Test
 public void getLogReturnsAnEmptyListWhenCalledWith0() throws Exception {
   Job j = Mockito.mock(Job.class);
   File tempBuildDir = tmp.newFolder();
   Mockito.when(j.getBuildDir()).thenReturn(tempBuildDir);
   Run<? extends Job<?, ?>, ? extends Run<?, ?>> r = new Run(j, 0) {};
   File f = r.getLogFile();
   f.getParentFile().mkdirs();
   PrintWriter w = new PrintWriter(f, "utf-8");
   w.println("dummy");
   w.close();
   List<String> logLines = r.getLog(0);
   assertTrue(logLines.isEmpty());
 }
  @Test
  public void getLogReturnsAllLines() throws Exception {
    Job j = Mockito.mock(Job.class);
    File tempBuildDir = tmp.newFolder();
    Mockito.when(j.getBuildDir()).thenReturn(tempBuildDir);
    Run<? extends Job<?, ?>, ? extends Run<?, ?>> r = new Run(j, 0) {};
    File f = r.getLogFile();
    f.getParentFile().mkdirs();
    PrintWriter w = new PrintWriter(f, "utf-8");
    w.print("a1\nb2\n\nc3");
    w.close();
    List<String> logLines = r.getLog(10);
    assertFalse(logLines.isEmpty());

    assertEquals("a1", logLines.get(0));
    assertEquals("b2", logLines.get(1));
    assertEquals("", logLines.get(2));
    assertEquals("c3", logLines.get(3));
  }
  @Test
  public void getLogReturnsAnRightOrder() throws Exception {
    Job j = Mockito.mock(Job.class);
    File tempBuildDir = tmp.newFolder();
    Mockito.when(j.getBuildDir()).thenReturn(tempBuildDir);
    Run<? extends Job<?, ?>, ? extends Run<?, ?>> r = new Run(j, 0) {};
    File f = r.getLogFile();
    f.getParentFile().mkdirs();
    PrintWriter w = new PrintWriter(f, "utf-8");
    for (int i = 0; i < 20; i++) {
      w.println("dummy" + i);
    }

    w.close();
    List<String> logLines = r.getLog(10);
    assertFalse(logLines.isEmpty());

    for (int i = 1; i < 10; i++) {
      assertEquals("dummy" + (10 + i), logLines.get(i));
    }
    assertEquals("[...truncated 68 B...]", logLines.get(0));
  }