From 5a2f2c666575d82ffdef66be751a1dc9e39b325f Mon Sep 17 00:00:00 2001 From: Argel Ramirez Reyes Date: Thu, 10 Apr 2025 10:47:11 +0000 Subject: [PATCH 1/2] Add test for conflicting import error #96 --- tests/test_import/test_from.R | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/tests/test_import/test_from.R b/tests/test_import/test_from.R index 31a9370..4b3c9bb 100644 --- a/tests/test_import/test_from.R +++ b/tests/test_import/test_from.R @@ -36,6 +36,14 @@ test_that("Imports from modules work", { cleanup_environment() }) +test_that("Conflicting imports throw error containing conflicting name", { + expect_error ( fun1() ) + expect_silent( import::from(module_base.R, fun1) ) + expect_error( import::from(module_hidden_objects.R, fun1) ) + expect_error( import::from(module_hidden_objects.R, fun1), ".*fun1.*" ) + cleanup_environment() +}) + test_that("Subsequent imports from modules work", { expect_error ( fun1() ) expect_error ( fun7() ) From db4d9f93ce814a64f18b62f107e1dc9fef23bea1 Mon Sep 17 00:00:00 2001 From: Argel Ramirez Reyes Date: Thu, 10 Apr 2025 10:54:34 +0000 Subject: [PATCH 2/2] added conflicting name in error message #96 --- R/safe_assign.R | 3 ++- tests/test_import/test_from.R | 4 ++-- 2 files changed, 4 insertions(+), 3 deletions(-) diff --git a/R/safe_assign.R b/R/safe_assign.R index b67a950..1e4cbaa 100644 --- a/R/safe_assign.R +++ b/R/safe_assign.R @@ -16,7 +16,8 @@ safe_assign <- function(x, value, pos = -1, envir = as.environment(pos), inherit { if (x %in% ls(envir, all.names = TRUE) && !identical(environment(envir[[x]]), environment(value))) - stop("Cannot assign name to different value in the given environment. Name already in use.", + stop(sprintf("Cannot assign name `%s` to different value in the given environment. Name already in use.", + x), call. = FALSE) assign(x, value, pos, envir, inherits) diff --git a/tests/test_import/test_from.R b/tests/test_import/test_from.R index 4b3c9bb..d13b7d6 100644 --- a/tests/test_import/test_from.R +++ b/tests/test_import/test_from.R @@ -39,8 +39,8 @@ test_that("Imports from modules work", { test_that("Conflicting imports throw error containing conflicting name", { expect_error ( fun1() ) expect_silent( import::from(module_base.R, fun1) ) - expect_error( import::from(module_hidden_objects.R, fun1) ) - expect_error( import::from(module_hidden_objects.R, fun1), ".*fun1.*" ) + expect_error ( import::from(module_hidden_objects.R, fun1) ) + expect_error ( import::from(module_hidden_objects.R, fun1), ".*fun1.*" ) cleanup_environment() })