Some time ago the R core team requested help with bugs in bugzilla. Some time later on a thank you post they reported bugs closed over time. Which pointed out that we, users, package developer might not be helping enough. This packages tries to lower the barrier to improve R by finding bugs, testing and checking they are reproducible.
To do so this package is to support ease the interaction with bugzilla for a user who wants to:
see what happened/what’s happening.
submit/validate/comment on existing issues.
To do so it uses the Bugzilla API1 and sometimes the accessible xml files.
We can check if there has been an update recently with:
check_last_audit()
#> [1] "2021-11-01 18:57:55 UTC"
To get information about which issues exists you can call get_bug()
:
bugs <- get_bug(1:100)
head(bugs)
#> depends_on cc keywords
#> 1 15763, 15764, 15862 simon.urbanek NA
#> 2 NA NA NA
#> 3 NA NA NA
#> 4 NA NA NA
#> 5 NA NA NA
#> 6 NA manish0731582008 NA
#> summary
#> 1 Test bug report - summary
#> 2 [Prof Brian Ripley <ripley@stats.ox.ac.uk>] ... matching (still a bug)
#> 3 aov(y ~ 0) should work {g}lm(....) does
#> 4 row.names<- is incompatible with S
#> 5 plot() hangs on DU 4.0
#> 6 PRIVATE: `improvement' in summary.lm is broken
#> resolution cc_detail is_creator_accessible
#> 1 FIXED Simon Urbanek, 5, simon.urbanek TRUE
#> 2 FIXED NA TRUE
#> 3 FIXED NA TRUE
#> 4 FIXED NA TRUE
#> 5 FIXED NA TRUE
#> 6 FIXED manish0731582008, 1505, Manish Singh TRUE
#> creator id flags component classification
#> 1 admin 1 NA Misc Unclassified
#> 2 jitterbug-import 3 NA Language Unclassified
#> 3 jitterbug-import 4 NA Models Unclassified
#> 4 jitterbug-import 5 NA Language Unclassified
#> 5 jitterbug-import 7 NA System-specific Unclassified
#> 6 jitterbug-import 8 NA Models Unclassified
#> assigned_to_detail whiteboard
#> 1 admin, 1, Simon Urbanek
#> 2 Jitterbug compatibility account, 2, jitterbug-import
#> 3 Jitterbug compatibility account, jitterbug-import, 2
#> 4 Jitterbug compatibility account, 2, jitterbug-import
#> 5 jitterbug-import, 2, Jitterbug compatibility account
#> 6 Jitterbug compatibility account, 2, jitterbug-import
#> assigned_to priority op_sys last_change_time see_also is_open
#> 1 admin P5 Mac OS X v10.4 2018-01-16 16:21:14 NA FALSE
#> 2 jitterbug-import P5 All 1998-08-10 02:50:29 NA FALSE
#> 3 jitterbug-import P5 Solaris 1998-08-10 20:23:26 NA FALSE
#> 4 jitterbug-import P5 Solaris 1998-08-18 02:44:49 NA FALSE
#> 5 jitterbug-import P5 Other 1998-08-17 20:58:15 NA FALSE
#> 6 jitterbug-import P5 Other 2013-12-10 08:40:58 NA FALSE
#> alias groups product platform status blocks
#> 1 NA NA R PowerPC CLOSED NA
#> 2 NA NA R All CLOSED NA
#> 3 NA NA R All CLOSED NA
#> 4 NA NA R All CLOSED NA
#> 5 NA NA R All CLOSED NA
#> 6 NA NA R All CLOSED NA
#> creator_detail url
#> 1 admin, 1, Simon Urbanek http://url.com/
#> 2 2, jitterbug-import, Jitterbug compatibility account
#> 3 Jitterbug compatibility account, jitterbug-import, 2
#> 4 Jitterbug compatibility account, jitterbug-import, 2
#> 5 Jitterbug compatibility account, 2, jitterbug-import
#> 6 2, jitterbug-import, Jitterbug compatibility account
#> qa_contact deadline version is_cc_accessible creation_time is_confirmed
#> 1 NA R 2.y.z TRUE 2010-02-15 18:29:54 TRUE
#> 2 NA old TRUE 1998-08-08 03:25:05 TRUE
#> 3 NA old TRUE 1998-08-10 20:23:26 TRUE
#> 4 NA old TRUE 1998-08-13 14:30:36 TRUE
#> 5 NA old TRUE 1998-08-17 05:41:33 TRUE
#> 6 NA old TRUE 1998-08-17 15:57:01 TRUE
#> dupe_of target_milestone severity
#> 1 NA --- normal
#> 2 NA --- normal
#> 3 NA --- normal
#> 4 NA --- normal
#> 5 NA --- normal
#> 6 NA --- normal
plot(bugs$id, bugs$creation_time,
main = "Bug ID vs creation time", xlab = "ID",
ylab = "Creation Time")
We can see that the first issue is created in 2010 while the next issues are from before 2000. This is because the first issues is a test and next issues were ported from jitterbug.
We can also see that there are some blank spaces between bugs ids. Perhaps some reports where deleted or simply they didn’t got filled.
There’s information about who created, about what, version, resolution, priority…
If you look carefully you’ll see that the third comment on the first issue has an attachment id. We can also explore what it is:
get_attachment(issue = 1)
#> summary is_private is_patch is_obsolete content_type
#> 1 test attachment ... FALSE FALSE FALSE text/plain
#> last_change_time file_name size creation_time id flags bug_id
#> 1 2010-02-16 17:43:29 ed.c 134 2010-02-16 17:42:59 1 NA 1
#> creator
#> 1 admin
#> data
#> 1 I2luY2x1ZGUgPFJpbnRlcm5hbHMuaD4KClNFWFAgbXlFdmFsKFNFWFAgRk4sIFNFWFAgZmlyc3RfYXJnKSB7CiAgcmV0dXJuIGV2YWwoTENPTlMoRk4sIENPTlMoZmlyc3RfYXJnLCBSX05pbFZhbHVlKSksIFJfR2xvYmFsRW52KTsKfQo=
# Similar to get_comment we can also do
# get_attachment(attachment = 1)
If you want to know what changed you can with get_history()
:
get_history(issue = 1)
#> when who
#> 1 2010-02-16 17:43:29 admin@urbanek.info
#> 2 2010-03-09 18:14:23 simon.urbanek@r-project.org
#> 3 2010-03-10 16:54:39 admin@urbanek.info
#> 4 2014-04-19 11:23:06 shanghaihuinanzhen@163.com
#> 5 2014-04-19 11:25:51 shanghaihuinanzhen@163.com
#> 6 2014-07-08 07:00:35 kaushjaiswal@gmail.com
#> 7 2015-12-14 13:44:54 maechler@stat.math.ethz.ch
#> 8 2018-01-16 16:21:14 maechler@stat.math.ethz.ch
#> changes issue
#> 1 text/plain, attachments.mimetype, application/octet-stream, 1 1
#> 2 , cc, simon.urbanek@r-project.org 1
#> 3 RESOLVED, NEW, status, FIXED, resolution, 1
#> 4 depends_on, , 15763 1
#> 5 , depends_on, 15764 1
#> 6 , depends_on, 15862 1
#> 7 CLOSED, RESOLVED, status 1
#> 8 R 2.11.0, version, R 2.y.z 1
If you want to post or comment you’ll need to be authenticated. To set up an authentication you’ll need a user (You have to ask for an account to bug-report-request@r-project.org), and then create an API key.
This will ask you to save your API key to a configuration file. To check that the api key is working you have:
Probably you’ll want to validate a bug so you’ll post a comment with
If you have found a bug you can create it with.
post_bug()
Note that this will guide you asking some questions before opening a bug report.
Comments
We can now collect information about comments on issues:
Or if we know the id of the comment, of just that comment: