diff --git a/.github/ISSUE_TEMPLATE/bug_report.md b/.github/ISSUE_TEMPLATE/bug_report.md new file mode 100644 index 0000000..ea56e21 --- /dev/null +++ b/.github/ISSUE_TEMPLATE/bug_report.md @@ -0,0 +1,17 @@ +--- +name: Bug Report +about: Create a report to help us improve +--- + + + + +```r +# replace this with your reproducible example +``` + +
Session Info +```r +# replace this by with the output from sessioninfo::session_info() or sessionInfo() +``` +
diff --git a/.github/ISSUE_TEMPLATE/feature_request.md b/.github/ISSUE_TEMPLATE/feature_request.md new file mode 100644 index 0000000..76d3db0 --- /dev/null +++ b/.github/ISSUE_TEMPLATE/feature_request.md @@ -0,0 +1,20 @@ +--- +name: Feature Request +about: Suggest an idea for this project +--- + + + + +```r +# a silly feature request, fails under the current implementation +b <- 1 + 1 +stopifnot(all.equal(b == 3)) +``` + +```r +# testthat version of the silly feature request +expect_equal(1 + 1, 3) +``` diff --git a/.github/issue_template.md b/.github/issue_template.md deleted file mode 100644 index 836f284..0000000 --- a/.github/issue_template.md +++ /dev/null @@ -1,10 +0,0 @@ - - - - -
Session Info - -```r - -``` -
diff --git a/DESCRIPTION b/DESCRIPTION index f51146a..d75d4c9 100644 --- a/DESCRIPTION +++ b/DESCRIPTION @@ -1,6 +1,6 @@ Package: git2rdata Title: Store and Retrieve Data.frames in a Git Repository -Version: 0.1 +Version: 0.1.0.9000 Authors@R: c( person( "Thierry", "Onkelinx", role = c("aut", "cre"), diff --git a/NEWS.md b/NEWS.md index c9b0325..72ad52a 100644 --- a/NEWS.md +++ b/NEWS.md @@ -1,3 +1,16 @@ +git2rdata 0.1.0.9000 (2019-08-13) +================================= + +### BREAKING FEATURES + + * `write_vc()` and `read_vc()` fail when `file` is a location outside of `root` (#50). + +### NEW FEATURES + + * Only require `upgrade_data()` for data written with versions prior to 0.0.5 (#44). + * Improve warnings() and error(). + * Use vector version of logo. + git2rdata 0.1 (2019-06-04) ============================ diff --git a/R/clean_data_path.R b/R/clean_data_path.R index 9d54957..2f83d6e 100644 --- a/R/clean_data_path.R +++ b/R/clean_data_path.R @@ -11,6 +11,10 @@ clean_data_path <- function(root, file, normalize = TRUE) { assert_that(is.flag(normalize), noNA(normalize)) dir_name <- dirname(file) + if (length(grep("\\.\\.", dir_name))) { + stop("file should not contain '..'") + } + file <- gsub("\\..*$", "", basename(file)) if (dir_name == ".") { path <- file.path(root, file) diff --git a/R/is_git2rdata.R b/R/is_git2rdata.R index 2cacef7..0aeaa87 100644 --- a/R/is_git2rdata.R +++ b/R/is_git2rdata.R @@ -17,7 +17,7 @@ is_git2rdata <- function(file, root = ".", #' @export is_git2rdata.default <- function(file, root, message) { - stop("a 'root' of class ", class(root), " is not supported") + stop("a 'root' of class ", class(root), " is not supported", call. = FALSE) } #' @export @@ -38,7 +38,8 @@ is_git2rdata.character <- function(file, root = ".", if (!file.exists(file["raw_file"])) { msg <- "Data file missing." - switch(message, error = stop(msg), warning = warning(msg)) + switch(message, error = stop(msg, call. = FALSE), + warning = warning(msg, call. = FALSE)) return(FALSE) } @@ -50,13 +51,15 @@ is_git2rdata.character <- function(file, root = ".", header <- readLines(file["raw_file"], n = 1, encoding = "UTF-8") if (correct != header) { msg <- paste("Corrupt data, incorrect header. Expecting:", correct) - switch(message, error = stop(msg), warning = warning(msg)) + switch(message, error = stop(msg, call. = FALSE), + warning = warning(msg, call. = FALSE)) return(FALSE) } if (meta_data[["..generic"]][["data_hash"]] != hashfile(file[["raw_file"]])) { msg <- "Corrupt data, mismatching data hash." - switch(message, error = stop(msg), warning = warning(msg)) + switch(message, error = stop(msg, call. = FALSE), + warning = warning(msg, call. = FALSE)) return(FALSE) } diff --git a/R/is_git2rmeta.R b/R/is_git2rmeta.R index a1c5f3f..e01a103 100644 --- a/R/is_git2rmeta.R +++ b/R/is_git2rmeta.R @@ -23,7 +23,7 @@ is_git2rmeta <- function(file, root = ".", #' @export is_git2rmeta.default <- function(file, root, message = c("none", "warning", "error")) { - stop("a 'root' of class ", class(root), " is not supported") + stop("a 'root' of class ", class(root), " is not supported", call. = FALSE) } #' @export @@ -39,7 +39,8 @@ is_git2rmeta.character <- function(file, root = ".", if (!file.exists(file["meta_file"])) { msg <- "Metadata file missing." - switch(message, error = stop(msg), warning = warning(msg)) + switch(message, error = stop(msg, call. = FALSE), + warning = warning(msg, call. = FALSE)) return(FALSE) } @@ -47,36 +48,42 @@ is_git2rmeta.character <- function(file, root = ".", meta_data <- read_yaml(file["meta_file"]) if (!has_name(meta_data, "..generic")) { msg <- "No '..generic' element." - switch(message, error = stop(msg), warning = warning(msg)) + switch(message, error = stop(msg, call. = FALSE), + warning = warning(msg, call. = FALSE)) return(FALSE) } if (!has_name(meta_data[["..generic"]], "hash")) { msg <- "Corrupt metadata, no hash found." - switch(message, error = stop(msg), warning = warning(msg)) + switch(message, error = stop(msg, call. = FALSE), + warning = warning(msg, call. = FALSE)) return(FALSE) } if (!has_name(meta_data[["..generic"]], "git2rdata")) { msg <- "Data stored using an older version of `git2rdata`. See `?upgrade_data()`." - switch(message, error = stop(msg), warning = warning(msg)) + switch(message, error = stop(msg, call. = FALSE), + warning = warning(msg, call. = FALSE)) return(FALSE) } if (package_version(meta_data[["..generic"]][["git2rdata"]]) < - packageVersion("git2rdata")) { + package_version("0.0.5")) { msg <- "Data stored using an older version of `git2rdata`. See `?upgrade_data()`." - switch(message, error = stop(msg), warning = warning(msg)) + switch(message, error = stop(msg, call. = FALSE), + warning = warning(msg, call. = FALSE)) return(FALSE) } if (!has_name(meta_data[["..generic"]], "data_hash")) { msg <- "Corrupt metadata, no data hash found." - switch(message, error = stop(msg), warning = warning(msg)) + switch(message, error = stop(msg, call. = FALSE), + warning = warning(msg, call. = FALSE)) return(FALSE) } current_hash <- meta_data[["..generic"]][["hash"]] if (current_hash != metadata_hash(meta_data)) { msg <- "Corrupt metadata, mismatching hash." - switch(message, error = stop(msg), warning = warning(msg)) + switch(message, error = stop(msg, call. = FALSE), + warning = warning(msg, call. = FALSE)) return(FALSE) } diff --git a/R/list_data.R b/R/list_data.R index bbb8c76..2a45602 100644 --- a/R/list_data.R +++ b/R/list_data.R @@ -40,7 +40,7 @@ list_data.character <- function(root = ".", path = ".", recursive = TRUE) { FUN.VALUE = NA, root = root, message = "none") if (any(!check)) { warning("Invalid metadata files found. See ?is_git2rmeta():\n", - paste(meta_files_base[!check], collapse = "\n")) + paste(meta_files_base[!check], collapse = "\n"), call. = FALSE) } meta_files <- meta_files[check] data_files <- data_files[data_files %in% meta_files] diff --git a/R/meta.R b/R/meta.R index 86173bd..da9be6d 100644 --- a/R/meta.R +++ b/R/meta.R @@ -205,7 +205,7 @@ meta.data.frame <- function(x, optimize = TRUE, na = "NA", sorting, ...) { # apply sorting if (missing(sorting) || is.null(sorting) || !length(sorting)) { - warning("No sorting applied. + warning(call. = FALSE, "No sorting applied. Sorting is strongly recommended in combination with version control.") } else { assert_that(is.character(sorting)) @@ -218,7 +218,7 @@ Sorting is strongly recommended in combination with version control.") sorted <- paste(sprintf("'%s'", sorting), collapse = ", ") sorted <- sprintf("Sorting on %s results in ties. Add extra sorting variables to ensure small diffs.", sorted) - warning(sorted) + warning(sorted, call. = FALSE) } } generic <- c(generic, sorting = list(sorting)) diff --git a/R/prune.R b/R/prune.R index 88836ad..b9708d3 100644 --- a/R/prune.R +++ b/R/prune.R @@ -30,7 +30,7 @@ rm_data <- function( rm_data.default <- function( root, path = NULL, recursive = TRUE, ... ){ - stop("a 'root' of class ", class(root), " is not supported") + stop("a 'root' of class ", class(root), " is not supported", call. = FALSE) } #' @export @@ -124,7 +124,7 @@ prune_meta <- function( prune_meta.default <- function( root, path = NULL, recursive = TRUE, ... ){ - stop("a 'root' of class ", class(root), " is not supported") + stop("a 'root' of class ", class(root), " is not supported", call. = FALSE) } #' @export @@ -153,7 +153,7 @@ prune_meta.character <- function( FUN.VALUE = NA, root = root, message = "none") if (any(!check)) { warning("Invalid metadata files found. See ?is_git2rmeta():\n", - paste(to_do_base[!check], collapse = "\n")) + paste(to_do_base[!check], collapse = "\n"), call. = FALSE) } to_do <- to_do[check] @@ -207,6 +207,7 @@ prune_meta.git_repository <- function( changed <- gsub("\\.tsv$", ".yml", file.path(root_wd, changed, fsep = "/")) if (any(to_do %in% changed)) { stop( + call. = FALSE, "cannot remove and stage metadata in combination with removed but unstaged data" ) } @@ -216,7 +217,8 @@ prune_meta.git_repository <- function( )) changed <- gsub("\\.tsv$", ".yml", file.path(root_wd, changed, fsep = "/")) if (any(to_do %in% changed)) { - warning("data removed and staged, metadata removed but unstaged") + warning("data removed and staged, metadata removed but unstaged", + call. = FALSE) } } file.remove(to_do) diff --git a/R/read_vc.R b/R/read_vc.R index f888823..fb01999 100644 --- a/R/read_vc.R +++ b/R/read_vc.R @@ -22,7 +22,7 @@ read_vc <- function(file, root = ".") { #' @export read_vc.default <- function(file, root) { - stop("a 'root' of class ", class(root), " is not supported") + stop("a 'root' of class ", class(root), " is not supported", call. = FALSE) } #' @export @@ -41,9 +41,10 @@ read_vc.character <- function(file, root = ".") { root = root, message = "error"), error = function(e) { if (e$message == "Corrupt data, mismatching data hash.") { - warning("Mismatching data hash. Data altered outside of git2rdata.") + warning("Mismatching data hash. Data altered outside of git2rdata.", + call. = FALSE) } else { - stop(e$message) + stop(e$message, call. = FALSE) } } ) diff --git a/R/recent_commit.R b/R/recent_commit.R index 792bea6..d2c392a 100644 --- a/R/recent_commit.R +++ b/R/recent_commit.R @@ -102,7 +102,7 @@ recent_commit.git_repository <- function(file, root, data = FALSE) { blobs <- blobs[blobs$when == max(blobs$when), c("commit", "author", "when")] blobs <- unique(blobs) if (nrow(blobs) > 1) { - warning("More than one commit within the same second") + warning("More than one commit within the same second", call. = FALSE) } rownames(blobs) <- NULL blobs diff --git a/R/relabel.R b/R/relabel.R index 5c65b93..334f758 100644 --- a/R/relabel.R +++ b/R/relabel.R @@ -69,7 +69,8 @@ relabel <- function(file, root = ".", change) { #' @export relabel.default <- function(file, root, change) { - stop("a 'change' of class ", class(change), " is not supported") + stop("a 'change' of class ", class(change), " is not supported", + call. = FALSE) } #' @export @@ -94,7 +95,7 @@ relabel.list <- function(file, root = ".", change) { optimize <- meta_data[["..generic"]][["optimize"]] if (!optimize) { stop("relabelling factors on verbose data leads to large diffs. -Use write_vc() instead.") +Use write_vc() instead.", call. = FALSE) } assert_that( all(names(change) %in% names(meta_data)), diff --git a/R/upgrade_data.R b/R/upgrade_data.R index ec99d71..a10744e 100644 --- a/R/upgrade_data.R +++ b/R/upgrade_data.R @@ -72,8 +72,8 @@ upgrade_data.character <- function( msg = paste(target, "has corrupt metadata, no hash found.") ) if (has_name(meta_data[["..generic"]], "git2rdata")) { - if (package_version(meta_data[["..generic"]][["git2rdata"]]) == - packageVersion("git2rdata") + if (package_version(meta_data[["..generic"]][["git2rdata"]]) >= + package_version("0.0.5") ) { if (verbose) { message(target, " already up to date") diff --git a/R/write_vc.R b/R/write_vc.R index ab7a9bc..67b11a9 100644 --- a/R/write_vc.R +++ b/R/write_vc.R @@ -7,6 +7,7 @@ #' @param file the name of the git2rdata object. Git2rdata objects cannot #' have dots in their name. The name may include a relative path. `file` is a #' path relative to the `root`. +#' Note that `file` must point to a location within `root`. #' @param root The root of a project. Can be a file path or a `git-repository`. #' Defaults to the current working directory (`"."`). #' @param sorting an optional vector of column names defining which columns to @@ -27,7 +28,7 @@ #' @export #' @family storage #' @template example-io -#' @note `..generic` is a reserved name for the metadata and cannot be used as +#' @note `..generic` is a reserved name for the metadata and is a forbidden #' column name in a `data.frame`. write_vc <- function( x, file, root = ".", sorting, strict = TRUE, optimize = TRUE, na = "NA", @@ -67,7 +68,8 @@ write_vc.character <- function( is_git2rmeta(file = remove_root(file = file["meta_file"], root = root), root = root, message = "error"), error = function(e) { - stop(paste("Existing metadata file is invalid.", e$message, sep = "\n")) + stop(paste("Existing metadata file is invalid.", e$message, sep = "\n"), + call. = FALSE) } ) old <- read_yaml(file["meta_file"]) @@ -76,14 +78,18 @@ write_vc.character <- function( old = old) problems <- compare_meta(attr(raw_data, "meta"), old) if (length(problems)) { - if (strict) { - problems <- c( - "The data was not overwritten because of the issues below.", + problems <- c( "See vignette('version_control', package = 'git2rdata') for more information.", "", problems) + if (strict) { + problems <- c( + "The data was not overwritten because of the issues below.", problems) stop(paste(problems, collapse = "\n"), call. = FALSE) } - warning(paste(problems, collapse = "\n")) + problems <- c( + "Changes in the metadata may lead to unnecessarily large diffs.", + problems) + warning(paste(problems, collapse = "\n"), call. = FALSE) if (missing(sorting) && !is.null(old[["..generic"]][["sorting"]])) { sorting <- old[["..generic"]][["sorting"]] } @@ -97,6 +103,9 @@ write_vc.character <- function( col.names = TRUE, fileEncoding = "UTF-8" ) meta_data <- attr(raw_data, "meta") + meta_data[["..generic"]][["git2rdata"]] <- as.character( + packageVersion("git2rdata") + ) meta_data[["..generic"]][["data_hash"]] <- hashfile(file["raw_file"]) write_yaml(meta_data, file["meta_file"], fileEncoding = "UTF-8") diff --git a/README.md b/README.md index eff3d9b..ace6377 100644 --- a/README.md +++ b/README.md @@ -1,5 +1,4 @@ -# The `git2rdata` package - +# The `git2rdata` package gitr2data logo [![CRAN status](https://www.r-pkg.org/badges/version/git2rdata)](https://cran.r-project.org/package=git2rdata) diff --git a/codemeta.json b/codemeta.json index 2b4c034..3f33af0 100644 --- a/codemeta.json +++ b/codemeta.json @@ -14,7 +14,7 @@ ], "issueTracker": "https://github.com/ropensci/git2rdata/issues", "license": "https://spdx.org/licenses/GPL-3.0", - "version": "0.1", + "version": "0.1.0.9000", "programmingLanguage": { "@type": "ComputerLanguage", "name": "R", @@ -196,7 +196,7 @@ ], "releaseNotes": "https://github.com/ropensci/git2rdata/blob/master/NEWS.md", "readme": "https://github.com/ropensci/git2rdata/blob/master/README.md", - "fileSize": "363.637KB", + "fileSize": "338.973KB", "contIntegration": [ "https://travis-ci.org/inbo/git2rdata", "https://ci.appveyor.com/project/ThierryO/git2rdata/branch/master", diff --git a/man/figures/logo.png b/man/figures/logo.png deleted file mode 100644 index 92550c2..0000000 Binary files a/man/figures/logo.png and /dev/null differ diff --git a/man/figures/logo.svg b/man/figures/logo.svg new file mode 100644 index 0000000..8c5cedc --- /dev/null +++ b/man/figures/logo.svg @@ -0,0 +1,266 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + image/svg+xml + + + + + + + + + + git2rdata + + + + + + + + + + + + + + + diff --git a/man/git2rdata-package.Rd b/man/git2rdata-package.Rd index d17b9fd..149b804 100644 --- a/man/git2rdata-package.Rd +++ b/man/git2rdata-package.Rd @@ -6,8 +6,6 @@ \alias{git2rdata-package} \title{git2rdata: Store and Retrieve Data.frames in a Git Repository} \description{ -\if{html}{\figure{logo.png}{options: align='right'}} - Make versioning of data.frame easy and efficient using git repositories. } \seealso{ diff --git a/man/is_git2rdata.Rd b/man/is_git2rdata.Rd index d75e415..df01b44 100644 --- a/man/is_git2rdata.Rd +++ b/man/is_git2rdata.Rd @@ -9,7 +9,8 @@ is_git2rdata(file, root = ".", message = c("none", "warning", "error")) \arguments{ \item{file}{the name of the git2rdata object. Git2rdata objects cannot have dots in their name. The name may include a relative path. \code{file} is a -path relative to the \code{root}.} +path relative to the \code{root}. +Note that \code{file} must point to a location within \code{root}.} \item{root}{The root of a project. Can be a file path or a \code{git-repository}. Defaults to the current working directory (\code{"."}).} diff --git a/man/is_git2rmeta.Rd b/man/is_git2rmeta.Rd index 74222e2..b86ab4a 100644 --- a/man/is_git2rmeta.Rd +++ b/man/is_git2rmeta.Rd @@ -9,7 +9,8 @@ is_git2rmeta(file, root = ".", message = c("none", "warning", "error")) \arguments{ \item{file}{the name of the git2rdata object. Git2rdata objects cannot have dots in their name. The name may include a relative path. \code{file} is a -path relative to the \code{root}.} +path relative to the \code{root}. +Note that \code{file} must point to a location within \code{root}.} \item{root}{The root of a project. Can be a file path or a \code{git-repository}. Defaults to the current working directory (\code{"."}).} diff --git a/man/read_vc.Rd b/man/read_vc.Rd index f23ae09..5241730 100644 --- a/man/read_vc.Rd +++ b/man/read_vc.Rd @@ -9,7 +9,8 @@ read_vc(file, root = ".") \arguments{ \item{file}{the name of the git2rdata object. Git2rdata objects cannot have dots in their name. The name may include a relative path. \code{file} is a -path relative to the \code{root}.} +path relative to the \code{root}. +Note that \code{file} must point to a location within \code{root}.} \item{root}{The root of a project. Can be a file path or a \code{git-repository}. Defaults to the current working directory (\code{"."}).} diff --git a/man/recent_commit.Rd b/man/recent_commit.Rd index 8e193d5..4f2ba37 100644 --- a/man/recent_commit.Rd +++ b/man/recent_commit.Rd @@ -9,7 +9,8 @@ recent_commit(file, root, data = FALSE) \arguments{ \item{file}{the name of the git2rdata object. Git2rdata objects cannot have dots in their name. The name may include a relative path. \code{file} is a -path relative to the \code{root}.} +path relative to the \code{root}. +Note that \code{file} must point to a location within \code{root}.} \item{root}{The root of a project. Can be a file path or a \code{git-repository}.} diff --git a/man/relabel.Rd b/man/relabel.Rd index 2728291..03dc544 100644 --- a/man/relabel.Rd +++ b/man/relabel.Rd @@ -9,7 +9,8 @@ relabel(file, root = ".", change) \arguments{ \item{file}{the name of the git2rdata object. Git2rdata objects cannot have dots in their name. The name may include a relative path. \code{file} is a -path relative to the \code{root}.} +path relative to the \code{root}. +Note that \code{file} must point to a location within \code{root}.} \item{root}{The root of a project. Can be a file path or a \code{git-repository}. Defaults to the current working directory (\code{"."}).} diff --git a/man/upgrade_data.Rd b/man/upgrade_data.Rd index 17674cc..1d34204 100644 --- a/man/upgrade_data.Rd +++ b/man/upgrade_data.Rd @@ -13,7 +13,8 @@ upgrade_data(file, root = ".", verbose, ..., path) \arguments{ \item{file}{the name of the git2rdata object. Git2rdata objects cannot have dots in their name. The name may include a relative path. \code{file} is a -path relative to the \code{root}.} +path relative to the \code{root}. +Note that \code{file} must point to a location within \code{root}.} \item{root}{The root of a project. Can be a file path or a \code{git-repository}. Defaults to the current working directory (\code{"."}).} diff --git a/man/write_vc.Rd b/man/write_vc.Rd index ce43ad8..8bfa62c 100644 --- a/man/write_vc.Rd +++ b/man/write_vc.Rd @@ -16,7 +16,8 @@ write_vc(x, file, root = ".", sorting, strict = TRUE, \item{file}{the name of the git2rdata object. Git2rdata objects cannot have dots in their name. The name may include a relative path. \code{file} is a -path relative to the \code{root}.} +path relative to the \code{root}. +Note that \code{file} must point to a location within \code{root}.} \item{root}{The root of a project. Can be a file path or a \code{git-repository}. Defaults to the current working directory (\code{"."}).} @@ -55,7 +56,7 @@ data as a plain text tab separated file. The \code{".yml"} contains the metadata on the columns in plain text YAML format. See \code{vignette("plain text", package = "git2rdata")} for more details on the implementation. } \note{ -\code{..generic} is a reserved name for the metadata and cannot be used as +\code{..generic} is a reserved name for the metadata and is a forbidden column name in a \code{data.frame}. } \examples{ diff --git a/pkgdown/favicon/apple-touch-icon-120x120.png b/pkgdown/favicon/apple-touch-icon-120x120.png index b0c6ee1..f87b943 100644 Binary files a/pkgdown/favicon/apple-touch-icon-120x120.png and b/pkgdown/favicon/apple-touch-icon-120x120.png differ diff --git a/pkgdown/favicon/apple-touch-icon-152x152.png b/pkgdown/favicon/apple-touch-icon-152x152.png index 23a3f0c..9da15c0 100644 Binary files a/pkgdown/favicon/apple-touch-icon-152x152.png and b/pkgdown/favicon/apple-touch-icon-152x152.png differ diff --git a/pkgdown/favicon/apple-touch-icon-180x180.png b/pkgdown/favicon/apple-touch-icon-180x180.png index bc7c5b7..0eb9a6b 100644 Binary files a/pkgdown/favicon/apple-touch-icon-180x180.png and b/pkgdown/favicon/apple-touch-icon-180x180.png differ diff --git a/pkgdown/favicon/apple-touch-icon-60x60.png b/pkgdown/favicon/apple-touch-icon-60x60.png index c166029..9b2c876 100644 Binary files a/pkgdown/favicon/apple-touch-icon-60x60.png and b/pkgdown/favicon/apple-touch-icon-60x60.png differ diff --git a/pkgdown/favicon/apple-touch-icon-76x76.png b/pkgdown/favicon/apple-touch-icon-76x76.png index 680a148..4207b4a 100644 Binary files a/pkgdown/favicon/apple-touch-icon-76x76.png and b/pkgdown/favicon/apple-touch-icon-76x76.png differ diff --git a/pkgdown/favicon/apple-touch-icon.png b/pkgdown/favicon/apple-touch-icon.png index bc7c5b7..0eb9a6b 100644 Binary files a/pkgdown/favicon/apple-touch-icon.png and b/pkgdown/favicon/apple-touch-icon.png differ diff --git a/pkgdown/favicon/favicon-16x16.png b/pkgdown/favicon/favicon-16x16.png index 3031fcd..e186462 100644 Binary files a/pkgdown/favicon/favicon-16x16.png and b/pkgdown/favicon/favicon-16x16.png differ diff --git a/pkgdown/favicon/favicon-32x32.png b/pkgdown/favicon/favicon-32x32.png index eb55084..b021c0f 100644 Binary files a/pkgdown/favicon/favicon-32x32.png and b/pkgdown/favicon/favicon-32x32.png differ diff --git a/pkgdown/favicon/favicon.ico b/pkgdown/favicon/favicon.ico index 6c4da87..98786ca 100644 Binary files a/pkgdown/favicon/favicon.ico and b/pkgdown/favicon/favicon.ico differ diff --git a/tests/testthat/test_a_basics.R b/tests/testthat/test_a_basics.R index ea9715d..af138b3 100644 --- a/tests/testthat/test_a_basics.R +++ b/tests/testthat/test_a_basics.R @@ -12,6 +12,14 @@ expect_error(read_vc(root = 1), "a 'root' of class numeric is not supported") root <- tempfile(pattern = "git2rdata-basic") dir.create(root) expect_false(any(file.exists(git2rdata:::clean_data_path(root, "test")))) +expect_error( + git2rdata:::clean_data_path(root, "../wrong_location"), + "file should not contain '..'" +) +expect_error( + git2rdata:::clean_data_path(root, "./../wrong_location"), + "file should not contain '..'" +) expect_is( output <- write_vc( x = test_data, file = "test.txt", root = root, sorting = "test_Date"