pkgsrc-Changes-HG archive

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index][Old Index]

[pkgsrc/trunk]: pkgsrc/pkgtools/R2pkg/files pkgtools/R2pkg: refactoring, tests



details:   https://anonhg.NetBSD.org/pkgsrc/rev/a3a6b0506a0a
branches:  trunk
changeset: 402957:a3a6b0506a0a
user:      rillig <rillig%pkgsrc.org@localhost>
date:      Sat Oct 19 11:04:46 2019 +0000

description:
pkgtools/R2pkg: refactoring, tests

diffstat:

 pkgtools/R2pkg/files/R2pkg.R      |  122 ++++++++++------------------------
 pkgtools/R2pkg/files/R2pkg_test.R |  132 +++++++++++++++++++++++++++----------
 2 files changed, 134 insertions(+), 120 deletions(-)

diffs (truncated from 394 to 300 lines):

diff -r 6a698b4d11a8 -r a3a6b0506a0a pkgtools/R2pkg/files/R2pkg.R
--- a/pkgtools/R2pkg/files/R2pkg.R      Sat Oct 19 11:01:38 2019 +0000
+++ b/pkgtools/R2pkg/files/R2pkg.R      Sat Oct 19 11:04:46 2019 +0000
@@ -1,4 +1,4 @@
-# $NetBSD: R2pkg.R,v 1.14 2019/10/18 22:10:46 rillig Exp $
+# $NetBSD: R2pkg.R,v 1.15 2019/10/19 11:04:46 rillig Exp $
 #
 # Copyright (c) 2014,2015,2016,2017,2018,2019
 #      Brook Milligan.  All rights reserved.
@@ -747,7 +747,6 @@
   df
 }
 
-license.marked.todo <- function(todo) { todo != '' }
 license.in.pkgsrc <- function(license) { license %in% sapply(licenses,'[',1) }
 
 make.license <- function(df)
@@ -757,7 +756,10 @@
   old_todo <- element(df,'LICENSE','old_todo')
   new_license <- element(df,'LICENSE','new_value')
 
-  if (license.in.pkgsrc(old_license) && license.in.pkgsrc(new_license))
+  old_known <- license.in.pkgsrc(old_license)
+  new_known <- license.in.pkgsrc(new_license)
+
+  if (old_known && new_known)
     {
       if (case.insensitive.equals(old_license,new_license))
         {
@@ -770,17 +772,17 @@
           todo <- old_todo
         }
     }
-  else if (license.in.pkgsrc(old_license) && !license.in.pkgsrc(new_license))
+  else if (old_known && !new_known)
     {
       license <- paste0(old_license,'\t# [R2pkg] updated to: ',new_license)
       todo <- '# TODO: '
     }
-  else if (!license.in.pkgsrc(old_license) && license.in.pkgsrc(new_license))
+  else if (!old_known && new_known)
     {
       license <- paste0(new_license,'\t# [R2pkg] previously: ',old_license)
       todo <- ''
     }
-  else if (!license.in.pkgsrc(old_license) && !license.in.pkgsrc(new_license))
+  else
     {
       license <- paste0(new_license,'\t# [R2pkg] previously: ',old_license)
       todo <- '# TODO: '
@@ -803,11 +805,11 @@
   value
 }
 
-update.Makefile.with.metadata <- function(df,metadata)
+mklines.update_with_metadata <- function(df, metadata)
 {
   df$new_value <- NA
 
-  df <- make.new_license(df,metadata$License)
+  df <- make.new_license(df, metadata$License)
 
   df$new_value[df$key == 'CATEGORIES'] <- categories()
   df$new_value[df$key == 'MAINTAINER'] <- arg.maintainer_email
@@ -816,9 +818,8 @@
   df
 }
 
-update.Makefile.with.new.values <- function(df)
+mklines.update_value <- function(df)
 {
-  # message('===> update.Makefile.with.new.values():')
   df$value <- NA
   df$todo <- ''
   df <- make.license(df)
@@ -826,88 +827,41 @@
   df$value[df$key == 'MAINTAINER'] <- make.maintainer(df)
   df$value[df$key == 'COMMENT'] <- make.comment(df)
   df$value[df$key == 'R_PKGVER'] <- make.r_pkgver(df)
-
-  # str(df)
-  # print(df)
   df
 }
 
-update.Makefile.with.new.line <- function(df)
+mklines.update_new_line <- function(df)
 {
-  # message('===> update.Makefile.with.new.line():')
-  df$new_line <- NA
-
-  construct_key_value <- df$key_value & !is.na(df$value)
-  df$new_line[construct_key_value] <-
-    paste0(df$todo[construct_key_value],
-           df$key[construct_key_value],
-           df$operator[construct_key_value],
-           df$delimiter[construct_key_value],
-           df$value[construct_key_value])
-
-  copy_line <- !df$key_value | !construct_key_value
-  df$new_line[copy_line] <- df$line[copy_line]
+  df$new_line <- df$line
 
-  # str(df)
-  # print(df)
-  df
-}
+  va <- df$key_value & !is.na(df$value)
+  df$new_line[va] <- paste0(
+    df$todo[va], df$key[va], df$operator[va], df$delimiter[va], df$value[va])
 
-annotate.distname.in.Makefile <- function(df)
-{
-  match <- grepl('^[[:blank:]]*DISTNAME',df$new_line)
-  line <- df$new_line[match]
-  value <- sub('^[[:blank:]]*DISTNAME[[:blank:]]*=[[:blank:]]*','',line)
-  pkgname <- sub('_.+$','',value)
-  pkgver <- sub('^.+_','',value)
-  PKGNAME <- paste0('R_PKGNAME=',pkgname)
-  PKGVER <- paste0('R_PKGVER=',pkgver)
-  comment <- paste0('\t# [R2pkg] replace this line with ',PKGNAME,' and ',PKGVER,' as first stanza')
-  df$new_line[match] <- paste0(line,comment)
   df
 }
 
-annotate.Makefile <- function(df)
-{
-  df <- annotate.distname.in.Makefile(df)
-  df
-}
-
-remove.master.sites.from.Makefile <- function(df)
+mklines.annotate_distname <- function(mklines)
 {
-  match <- grepl('^[[:blank:]]*MASTER_SITES',df$new_line)
-  df <- df[!match,]
-  df
-}
-
-remove.homepage.from.Makefile <- function(df)
-{
-  match <- grepl('^[[:blank:]]*HOMEPAGE',df$new_line)
-  df <- df[!match,]
-  df
+  match <- grepl('^[[:blank:]]*DISTNAME', mklines$new_line)
+  line <- mklines$new_line[match]
+  value <- sub('^[[:blank:]]*DISTNAME[[:blank:]]*=[[:blank:]]*', '', line)
+  comment <- sprintf(
+    '\t# [R2pkg] replace this line with %s and %s as first stanza',
+    paste0('R_PKGNAME=', sub('_.+$', '', value)),
+    paste0('R_PKGVER=', sub('^.+_', '', value)))
+  mklines$new_line[match] <- paste0(line, comment)
+  mklines
 }
 
-remove.buildlink.abi.depends.from.Makefile <- function(df)
-{
-  match <- grepl('^[[:blank:]]*BUILDLINK_ABI_DEPENDS',df$new_line)
-  df <- df[!match,]
-  df
-}
-
-remove.buildlink.api.depends.from.Makefile <- function(df)
+mklines.remove_lines_before_update <- function(mklines)
 {
-  match <- grepl('^[[:blank:]]*BUILDLINK_API_DEPENDS',df$new_line)
-  df <- df[!match,]
-  df
-}
-
-remove.lines.from.Makefile <- function(df)
-{
-  df <- remove.master.sites.from.Makefile(df)
-  df <- remove.homepage.from.Makefile(df)
-  df <- remove.buildlink.abi.depends.from.Makefile(df)
-  df <- remove.buildlink.api.depends.from.Makefile(df)
-  df
+  remove <- (
+    grepl('^[[:blank:]]*MASTER_SITES', mklines$new_line) |
+    grepl('^[[:blank:]]*HOMEPAGE', mklines$new_line) |
+    grepl('^[[:blank:]]*BUILDLINK_ABI_DEPENDS', mklines$new_line) |
+    grepl('^[[:blank:]]*BUILDLINK_API_DEPENDS', mklines$new_line))
+  mklines[!remove,]
 }
 
 reassign.order <- function(df)
@@ -1047,11 +1001,11 @@
 
   # message('===> df:')
   df <- read.Makefile.as.dataframe()
-  df <- update.Makefile.with.metadata(df,metadata)
-  df <- update.Makefile.with.new.values(df)
-  df <- update.Makefile.with.new.line(df)
-  df <- annotate.Makefile(df)
-  df <- remove.lines.from.Makefile(df)
+  df <- mklines.update_with_metadata(df,metadata)
+  df <- mklines.update_value(df)
+  df <- mklines.update_new_line(df)
+  df <- mklines.annotate_distname(df)
+  df <- mklines.remove_lines_before_update(df)
   df <- reassign.order(df)
 
   df.conflicts <- make.df.conflicts(df,metadata)
diff -r 6a698b4d11a8 -r a3a6b0506a0a pkgtools/R2pkg/files/R2pkg_test.R
--- a/pkgtools/R2pkg/files/R2pkg_test.R Sat Oct 19 11:01:38 2019 +0000
+++ b/pkgtools/R2pkg/files/R2pkg_test.R Sat Oct 19 11:04:46 2019 +0000
@@ -1,4 +1,4 @@
-# $NetBSD: R2pkg_test.R,v 1.9 2019/10/18 22:10:46 rillig Exp $
+# $NetBSD: R2pkg_test.R,v 1.10 2019/10/19 11:04:46 rillig Exp $
 #
 # Copyright (c) 2019
 #      Roland Illig.  All rights reserved.
@@ -36,13 +36,19 @@
 arg.recursive <- FALSE
 arg.update <- FALSE
 
-package_dir <- file.path(Sys.getenv('PKGSRCDIR'), 'pkgtools', 'R2pkg')
+pkgsrcdir <- Sys.getenv('PKGSRCDIR')
+package_dir <- file.path(pkgsrcdir, 'pkgtools', 'R2pkg')
 
 expect_printed <- function(obj, ...) {
     out <- ''
     with_output_sink(textConnection('out', 'w', local = TRUE), print(obj))
-    expect_equal(length(out), length(c(...)))
-    expect_equal(!!out, !!c(...))
+    exp <- c(...)
+    if (length(out) != length(exp) || out != exp) {
+        write(out, 'R2pkg_test.out.txt')
+        write(exp, 'R2pkg_test.exp.txt')
+    }
+    expect_equal(length(out), length(exp))
+    expect_equal(!!out, !!exp)
 }
 
 linesConnection <- function(...)
@@ -559,8 +565,9 @@
     expect_equal(include_order, NA_integer_)
 })
 
-test_that('update.Makefile.with.metadata', {
+test_that('mklines.update_with_metadata with CATEGORIES', {
     local_dir(package_dir)  # to get a realistic category
+    arg.maintainer_email <<- 'with-categories%example.org@localhost'
     df <- read.Makefile.as.dataframe(linesConnection(
         'CATEGORIES=\told categories',
         'MAINTAINER=\told_maintainer%example.org@localhost',
@@ -568,63 +575,116 @@
         'R_PKGVER=\t1.0'))
     metadata = list(Title = 'Package comment', Version = '19.3', License = 'license')
 
-    updated <- update.Makefile.with.metadata(df, metadata)
+    updated <- mklines.update_with_metadata(df, metadata)
 
     expect_printed(data.frame(key = updated$key, new_value = updated$new_value),
-        '         key       new_value',
-        '1 CATEGORIES        pkgtools',
-        '2 MAINTAINER                ',  # FIXME: Should not always be reset.
-        '3    COMMENT Package comment',
-        '4   R_PKGVER            19.3')
+        '         key                   new_value',
+        '1 CATEGORIES                    pkgtools',
+        '2 MAINTAINER with-categories%example.org@localhost',  # FIXME: Should not always be reset.
+        '3    COMMENT             Package comment',
+        '4   R_PKGVER                        19.3')
 })
 
 # If the variable has been removed from the Makefile, it is not updated.
-test_that('update.Makefile.with.metadata without CATEGORIES', {
+test_that('mklines.update_with_metadata without CATEGORIES', {
+    arg.maintainer_email <<- 'without-categories%example.org@localhost'
     df <- read.Makefile.as.dataframe(linesConnection(
         'MAINTAINER=',
         'COMMENT=',
         'R_PKGVER='))
     metadata = list(Title = 'Package comment', Version = '19.3', License = 'license')
 
-    updated <- update.Makefile.with.metadata(df, metadata)
+    updated <- mklines.update_with_metadata(df, metadata)
 
     expect_printed(updated,
         '         line order category key_value        key depends buildlink3.mk',
         '1 MAINTAINER=     1       NA      TRUE MAINTAINER   FALSE         FALSE',
         '2    COMMENT=     2       NA      TRUE    COMMENT   FALSE         FALSE',
         '3   R_PKGVER=     3       NA      TRUE   R_PKGVER   FALSE         FALSE',
-        '  operator delimiter old_value old_todo       new_value',
-        '1        =                                             ',
-        '2        =                              Package comment',
-        '3        =                                         19.3')
+        '  operator delimiter old_value old_todo                      new_value',
+        '1        =                              without-categories%example.org@localhost',
+        '2        =                                             Package comment',
+        '3        =                                                        19.3')
+})
+
+test_that('mklines.update_value', {
+    local_dir(package_dir)
+
+    mklines <- read.Makefile.as.dataframe(linesConnection(
+        'R_PKGVER=\t1.0',
+        'CATEGORIES=\told categories',



Home | Main Index | Thread Index | Old Index