# man > TAP::Parser::Scheduler::Job

## NAME
    [TAP::Parser::Scheduler::Job](https://www.chedong.com/phpMan.php/perldoc/TAP%3A%3AParser%3A%3AScheduler%3A%3AJob/markdown) - A single testing job.

## VERSION
    Version 3.43

## SYNOPSIS
        use [TAP::Parser::Scheduler::Job](https://www.chedong.com/phpMan.php/perldoc/TAP%3A%3AParser%3A%3AScheduler%3A%3AJob/markdown);

## DESCRIPTION
    Represents a single test 'job'.

## METHODS
### Class Methods
   "new"
        my $job = [TAP::Parser::Scheduler::Job](https://www.chedong.com/phpMan.php/perldoc/TAP%3A%3AParser%3A%3AScheduler%3A%3AJob/markdown)->new(
            $filename, $description
        );

    Given the filename and description of a test as scalars, returns a new
    [TAP::Parser::Scheduler::Job](https://www.chedong.com/phpMan.php/perldoc/TAP%3A%3AParser%3A%3AScheduler%3A%3AJob/markdown) object.

### Instance Methods
   "on_finish"
        $self->on_finish(\&method).

    Register a closure to be called when this job is destroyed. The callback will be passed the
    "[TAP::Parser::Scheduler::Job](https://www.chedong.com/phpMan.php/perldoc/TAP%3A%3AParser%3A%3AScheduler%3A%3AJob/markdown)" object as it's only argument.

   "finish"
       $self->finish;

    Called when a job is complete to unlock it. If a callback has been registered with "on_finish",
    it calls it. Otherwise, it does nothing.

### Attributes
      $self->filename;
      $self->description;
      $self->context;

    These are all "getters" which return the data set for these attributes during object
    construction.

   "filename"
   "description"
   "context"
   "as_array_ref"
    For backwards compatibility in callbacks.

   "is_spinner"
      $self->is_spinner;

    Returns false indicating that this is a real job rather than a 'spinner'. Spinners are returned
    when the scheduler still has pending jobs but can't (because of locking) return one right now.

