The London Perl and Raku Workshop takes place on 26th Oct 2024. If your company depends on Perl, please consider sponsoring and/or attending.

NAME

Fedora::Bugzilla::Bug - Bug class

SYNOPSIS

    use Fedora::Bugzilla;

    my $bz = Fedora::Bugzilla->new(...);

    # fetch a bug
    my $bug1 = $bz->get_bug('123456');
    my $bug2 = $bz->get_bug('perl-Moose');

    # etc

DESCRIPTION

This is a class representing a bug in the Bugzilla system. You can get bug information, set info, attach files, add comments, etc...

INTERFACE

"Release Early, Release Often"

I've tried to get at least the methods I use in here. I know I'm missing some, and I bet there are others I don't even know about... I'll try not to, but I won't guarantee that I won't change the api in some incompatable way. If you'd like to see something here, please either drop me a line (see AUTHOR) or better yet, open a trac ticket with a patch ;)

BUG CREATION, SEARCHING AND RETRIEVAL

For bug creation, please see Fedora::Bugzilla for the creation methods, and Fedora::Bugzilla::NewBug for the required attributes.

Fedora::Bugzilla also contains the methods to search for and retrieve bugs.

METHODS

new()

Really, you should never call this. Let your $bz instance handle this.

ACCESSORS

For the accessors/attributes listed below marked as [r/w], you can set a new value and update the bug when ready by calling update().

id

The bug id. This class also stringifies to this value.

alias [r/w]

The alias of this bug, if any.

summary [r/w]

The bug summary (short_desc).

creation_time
last_change_time
reporter

Email::Address of the person / account that filed the bug.

reporter_id

Internal Bugzilla id of the reporter (Int).

bug_status [r/w]
status [r/w]

Alias for bug_status().

resolution [r/w]
bug_file_loc [r/w]
url [r/w]

Alias for bug_file_loc().

version [r/w]
assigned_to [r/w]

Email::Address of the assignee.

qa_contact [r/w]

Email::Address of the qa_contact for this bug.

full_status

"NEW", "ASSIGNED", "CLOSED/NEXTRELEASE", etc.

ASSIGNMENT

Accessors

Methods

STATUS

Accessors

Methods

close
close_nextrelease([Str])
close_notabug([Str])
close_dupe( ... )
set_status( ... )

COMMENTS

See also Fedora::Bugzilla::Bug::Comment; comments are ordered as one would expect.

Accessors

comments

Returns an array of Fedora::Bugzilla::Bug::Comment objects representing the bug's comments.

comment_count

Returns the number of comments.

get_comment([Int])

Return the comment; e.g. $bug->get_comment(5) would get comment #5.

first_comment

Fetch the first comment.

last_comment

Fetch the last comment.

Methods

add_comment([Str])

Adds a comment to the bug. (This calls the XML-RPC method directly; it is not necessary to call update().)

has_comments

True if we've already generated our list of comments from the bug. Note this should not be used to determine if the bug has any comments; use comment_count() for that.

clear_comments

Clear our comments data and force it to be rebuilt the next time we need it.

BUGS WE DEPEND ON

Accessors

Methods

BLOCKED BUGS

Accessors

Methods

FLAGS

See also Fedora::Bugzilla::Bug::Flag. Flag data is currently parsed out of the XML representation of the bug returned by the web UI.

Accessors

flags

Returns an array of Fedora::Bugzilla::Bug::Flag objects, representing all the flags this bug has set.

get_flag([flag name (Str)])

Return the named flag, if it exists for this bug.

flag_count

Returns the number of flags this bug has.

has_flag([flag name (Str)])

Returns true if this bug has the named flag.

flag_names

Returns an array of all flag names this bug has.

flag_pairs

FIXME

Methods

set_flags(flag_name => 'value', [...])

Set one or more flags. Note that the only valid values for a flag are '+', '-', '?', or undef (unset entirely).

set_flag(flag_name => 'value')

An alias for set_flags().

has_flags

True if this bug has any flags (any value).

clear_flags

Clear our flags data and force it to be rebuilt the next time we need it.

ATTACHMENTS

These allow us to manipulate the attachments of this bug. See also Fedora::Bugzilla::Bug::Attachment.

Accessors

attachments
has_attachments
attachment_count
get_attachment([Int])
first_attachment
last_attachment

Methods

add_attachment(...)

Adds an attachment to the bug; see Fedora::Bugzilla::Bug::NewAttachment for the required paramaters.

Note you can also pass a pre-built Fedora::Bugzilla::Bug::NewAttachment as the only argument.

URIS

These are convienence methods for searching for and finding all URIs contained within the body of the bug. See also URI.

Accessors

uri_count

Return the number of URIs found.

grep_uris([CodeRef])

This operates much the way you'd expect the grep() function to: given a coderef, iterate over each uri and see if it matches. e.g., to find all URIs that match koji.fedoraproject.org:

    @uris = $bug->grep_uris(sub { /koji.fedoraproject.org/ });
map_uris([CodeRef])

As with grep_uris(), take a code ref and map() over all URIs with it.

Methods

has_uris

True if we've already generated our list of URIs from the bug. Note this should not be used to determine if any URIs are present in the bug; use uri_count() for that.

clear_uris

Clear the list of URIs and force it to be rebuilt the next time we need it.

OTHER ATTRIBUTES

Generally, these reflect this interface rather than anything on bugzilla.

bz

Our parent Fedora::Bugzilla object.

data

A hashref of the raw bug data provided by bugzilla. Note that changes here are not reflected in bugzilla proper; you must use the accessors and call update() for that to happen.

has_data

True if the data has been fetched.

clear_data

Clears data(); also triggers a cascade clear of the bulk of the object (except bz() and id()).

dirty

Boolean. Indicates if any attributes have been updated, but not written back to bugzilla yet.

xml

The raw XML representation of this bug, as fetched from the Bugzilla web UI.

has_xml

True if the XML representation has been pulled.

clear_xml

Clears xml() as well as anything that depends on it (twig, comments, etc).

twig

An XML::Twig object built from xml().

has_twig

True if the twig has been built out from xml().

clear_twig

Discard the twig and force it to be rebuilt the next time we access it.

DIAGNOSTICS

Error message here, perhaps with %s placeholders

[Description of error here]

Another error message here

[Description of error here]

[Et cetera, et cetera]

BUGS AND LIMITATIONS

There are still many common attributes we do not handle getting/setting yet. If you'd like to see something specific in here, please make a feature request.

Please report any bugs or feature requests to bug-fedora-bugzilla@rt.cpan.org, or through the web interface at http://rt.cpan.org.

TODO

Set support for...

CC list, depends, blocks.

SEE ALSO

Fedora::Bugzilla, http://www.bugzilla.org, http://bugzilla.redhat.com, http://python-bugzilla.fedorahosted.org, WWW::Bugzilla3.

AUTHOR

Chris Weyl <cweyl@alumni.drew.edu>

LICENCE AND COPYRIGHT

Copyright (c) 2008, Chris Weyl <cweyl@alumni.drew.edu>.

This library is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License as published by the Free Software Foundation; either version 2.1 of the License, or (at your option) any later version.

This library is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS OR A PARTICULAR PURPOSE.

See the GNU Lesser General Public License for more details.

You should have received a copy of the GNU Lesser General Public License along with this library; if not, write to the

    Free Software Foundation, Inc., 
    59 Temple Place, Suite 330, 
    Boston, MA  02111-1307 USA