Creates a temporary copy of extracted submission.

    When executed, submission is allowed to modify it's own directory. So
    to ensure that submission does not pass any data between runs, new
    copy of the submission is made before each run. After a run temporary copy
    of submission is deleted.

    Returns:
      directory where temporary copy is located

def temp_copy_extracted_submission(self):
    """Creates a temporary copy of extracted submission.

    When executed, submission is allowed to modify it's own directory. So
    to ensure that submission does not pass any data between runs, new
    copy of the submission is made before each run. After a run temporary copy
    of submission is deleted.

    Returns:
      directory where temporary copy is located
    """
    tmp_copy_dir = os.path.join(self.submission_dir, 'tmp_copy')
    shell_call(['cp', '-R', os.path.join(self.extracted_submission_dir),
                tmp_copy_dir])
    return tmp_copy_dir