Merge branch 'update/JAL-3949_jalview_bin_Console_to_cure_sanity_even_more' into...
authorJim Procter <j.procter@dundee.ac.uk>
Sat, 12 Feb 2022 11:49:56 +0000 (11:49 +0000)
committerJim Procter <j.procter@dundee.ac.uk>
Sat, 12 Feb 2022 11:49:56 +0000 (11:49 +0000)
 Conflicts:
test/jalview/bin/CommandLineOperations.java

1  2 
test/jalview/bin/CommandLineOperations.java

@@@ -246,53 -246,18 +246,53 @@@ public class CommandLineOperation
    public void setUpForCommandLineInputOperations() throws IOException
    {
      String cmds = "-open examples/uniref50.fa -noquestionnaire -nousagestats";
 -    Worker worker = getJalviewDesktopRunner(false, cmds, SETUP_TIMEOUT);
 -    String ln = null;
 -    int count = 0;
 -    while ((ln = worker.getErrorReader().readLine()) != null)
 +    final Worker worker = getJalviewDesktopRunner(false, cmds,
 +            SETUP_TIMEOUT);
 +    
 +    
 +    // number of lines expected on STDERR when Jalview starts up normally
 +    // may need to adjust this if Jalview is excessively noisy ?
-     final int STDERR_SETUPLINES=50;
++    final int STDERR_SETUPLINES=30;
 +    
 +    // thread monitors stderr - bails after SETUP_TIMEOUT or when
 +    // STDERR_SETUPLINES have been read
 +    Thread runner = new Thread(new Runnable()
      {
 -      System.out.println(ln);
 -      successfulCMDs.add(ln);
 -      if (++count > 30)
 +      public void run()
 +      {
 +        String ln = null;
 +        int count = 0;
 +        try
 +        {
 +          while ((ln = worker.getErrorReader().readLine()) != null)
 +          {
 +            System.out.println(ln);
 +            successfulCMDs.add(ln);
 +            if (++count > STDERR_SETUPLINES)
 +            {
 +              break;
 +            }
 +          }
 +        } catch (Exception e)
 +        {
 +          System.err.println(
 +                  "Unexpected Exception reading stderr from the Jalview process");
 +          e.printStackTrace();
 +        }
 +      }
 +    });
 +    long t = System.currentTimeMillis() + SETUP_TIMEOUT;
 +    runner.start();
 +    while (!runner.isInterrupted() && System.currentTimeMillis() < t)
 +    {
 +      try
 +      {
 +        Thread.sleep(500);
 +      } catch (InterruptedException e)
        {
 -        break;
        }
      }
 +    runner.interrupt();
      if (worker != null && worker.exit == null)
      {
        worker.interrupt();