From 2bb7b5ca975c31cdbabe19016c758748cd4bf3f2 Mon Sep 17 00:00:00 2001 From: Seth Wenchel Date: Mon, 16 May 2016 12:21:05 -0400 Subject: [PATCH 1/2] Closes #1706, library(data.table) fails if "Packaged" field is not present in DESCRIPTION --- NEWS.md | 2 ++ R/onAttach.R | 25 +++++++++++++++---------- 2 files changed, 17 insertions(+), 10 deletions(-) diff --git a/NEWS.md b/NEWS.md index f973a9c12c..84d6e683ef 100644 --- a/NEWS.md +++ b/NEWS.md @@ -203,6 +203,8 @@ 59. 55. Added `+.IDate` method so that IDate + integer doesn't revert to `Date`, [#1528](https://github.com/Rdatatable/data.table/issues/1528); thanks @MichaelChirico for FR&PR. + 60. Fixed test in `onAttach()` for when `Packaged` field is missing from `DESCRIPTION`, [#1706](https://github.com/Rdatatable/data.table/issues/1706); thanks @restonslacker for BR&PR. + #### NOTES 1. Updated error message on invalid joins to reflect the new `on=` syntax, [#1368](https://github.com/Rdatatable/data.table/issues/1368). Thanks @MichaelChirico. diff --git a/R/onAttach.R b/R/onAttach.R index fd15a48d8c..87f9fdf0de 100644 --- a/R/onAttach.R +++ b/R/onAttach.R @@ -1,13 +1,18 @@ .onAttach <- function(libname, pkgname) { - # Runs when attached to search() path such as by library() or require() - if (interactive()) { - v = packageVersion("data.table") - d = read.dcf(system.file("DESCRIPTION", package="data.table"))[,"Packaged"] - dev = as.integer(v[1,3])%%2 == 1 # version number odd - packageStartupMessage("data.table ", v, if(dev) paste0(" IN DEVELOPMENT built ", d)) - if (dev && (Sys.Date() - as.Date(d))>28) packageStartupMessage("**********\nThis development version of data.table was built more than 4 weeks ago. Please update.\n**********") - packageStartupMessage('For help type ?data.table or https://github.com/Rdatatable/data.table/wiki') - packageStartupMessage('The fastest way to learn (by data.table authors): https://www.datacamp.com/courses/data-analysis-the-data-table-way') + # Runs when attached to search() path such as by library() or require() + if (interactive()) { + v = packageVersion("data.table") + d = try(read.dcf(system.file("DESCRIPTION", package="data.table"))[,"Packaged"]) + if(inherits(d, "try-error")){ + d = try(strsplit(read.dcf(system.file("DESCRIPTION", package="data.table"))[,"Built"], split="; ")$Built[3]) + if(inherits(d, "try-error")){ + return() + } } + dev = as.integer(v[1,3])%%2 == 1 # version number odd + packageStartupMessage("data.table ", v, if(dev) paste0(" IN DEVELOPMENT built ", d)) + if (dev && (Sys.Date() - as.Date(d))>28) packageStartupMessage("**********\nThis development version of data.table was built more than 4 weeks ago. Please update.\n**********") + packageStartupMessage('For help type ?data.table or https://github.com/Rdatatable/data.table/wiki') + packageStartupMessage('The fastest way to learn (by data.table authors): https://www.datacamp.com/courses/data-analysis-the-data-table-way') + } } - From 159a4b569b26f65802515041fe87e66465dd32a9 Mon Sep 17 00:00:00 2001 From: Seth Wenchel Date: Mon, 16 May 2016 14:01:46 -0400 Subject: [PATCH 2/2] Closes #1706 library(data.table) fails if "Packaged" field is not present in DESCRIPTION alternate approach to this issue which avoids call to try() --- R/onAttach.R | 14 +++++++++----- 1 file changed, 9 insertions(+), 5 deletions(-) diff --git a/R/onAttach.R b/R/onAttach.R index 87f9fdf0de..dd2ff732d1 100644 --- a/R/onAttach.R +++ b/R/onAttach.R @@ -2,13 +2,17 @@ # Runs when attached to search() path such as by library() or require() if (interactive()) { v = packageVersion("data.table") - d = try(read.dcf(system.file("DESCRIPTION", package="data.table"))[,"Packaged"]) - if(inherits(d, "try-error")){ - d = try(strsplit(read.dcf(system.file("DESCRIPTION", package="data.table"))[,"Built"], split="; ")$Built[3]) - if(inherits(d, "try-error")){ - return() + d = read.dcf(system.file("DESCRIPTION", package="data.table"), fields = c("Packaged", "Built")) + if(is.na(d[1])){ + if(is.na(d[2])){ + return() #neither field exists + } else{ + d = unlist(strsplit(d[2], split="; "))[3] } + } else { + d = d[1] } + dev = as.integer(v[1,3])%%2 == 1 # version number odd packageStartupMessage("data.table ", v, if(dev) paste0(" IN DEVELOPMENT built ", d)) if (dev && (Sys.Date() - as.Date(d))>28) packageStartupMessage("**********\nThis development version of data.table was built more than 4 weeks ago. Please update.\n**********")