code: def update(self, test_path, number):
          
          # TODO: Play nicely with absurdly narrow terminals. (OS X's won't even
          # go small enough to hurt us.)
  
          # Figure out graph:
          GRAPH_WIDTH = 14
          # min() is in case we somehow get the total test count wrong. It's tricky.
          num_filled = int(round(min(1.0, float(number) / self.max) * GRAPH_WIDTH))
          graph = ''.join([self._fill_cap(' ' * num_filled),
                           self._empty_cap(self._empty_char * (GRAPH_WIDTH - num_filled))])
  
          # Figure out the test identifier portion:
          cols_for_path = self.cols - GRAPH_WIDTH - 2  # 2 spaces between path & graph
          if len(test_path) > cols_for_path:
              test_path = test_path[len(test_path) - cols_for_path:]
          else:
              test_path += ' ' * (cols_for_path - len(test_path))
  
          # Put them together, and let simmer:
          self.last = self._term.bold(test_path) + '  ' + graph
          with self._at_last_line():
              self.stream.write(self.last)
          self.stream.flush()
docs: Draw an updated progress bar.
  
          At the moment, the graph takes a fixed width, and the test identifier
          takes the rest of the row, truncated from the left to fit.
  
          test_path -- the selector of the test being run
          number -- how many tests have been run so far, including this one