text: # Copyright 2017 Google Inc.
  #
  # Licensed under the Apache License, Version 2.0 (the "License");
  # you may not use this file except in compliance with the License.
  # You may obtain a copy of the License at
  #
  #     http://www.apache.org/licenses/LICENSE-2.0
  #
  # Unless required by applicable law or agreed to in writing, software
  # distributed under the License is distributed on an "AS IS" BASIS,
  # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
  # See the License for the specific language governing permissions and
  # limitations under the License.
  
  import copy
  import os
  
  from mobly import utils
  
  
  class RuntimeTestInfo:
    """Container class for runtime information of a test or test stage.
  
    One object corresponds to one test. This is meant to be a read-only class.
  
    This also applies to test stages like `setup_class`, which has its own
    runtime info but is not part of any single test.
  
    Attributes:
      name: string, name of the test.
      signature: string, an identifier of the test, a combination of test
        name and begin time.
      record: TestResultRecord, the current test result record. This changes
        as the test's execution progresses.
      output_path: string, path to the test's output directory. It's created
        upon accessing.
    """
  
    def __init__(self, test_name, log_path, record):
      self._name = test_name
      self._record = record
      self._signature = '%s-%s' % (test_name, record.begin_time)
      self._output_dir_path = utils.abs_path(
          os.path.join(log_path, self._signature))
  
    @property
    def name(self):
      return self._name
  
    @property
    def signature(self):
      return self._signature
  
    @property
    def record(self):
      return copy.deepcopy(self._record)
  
    @property
    def output_path(self):
      utils.create_dir(self._output_dir_path)
      return self._output_dir_path
  