From bce56c8bd2d6a2239b3203a7477bd9840369fd39 Mon Sep 17 00:00:00 2001 From: Anthony Sena Date: Mon, 26 Jan 2026 14:08:23 -0500 Subject: [PATCH] Properly handle folder when performing zip operations --- R/Module-CohortDiagnostics.R | 4 +++- R/Module-CohortMethod.R | 4 +++- R/Module-SelfControlledCaseSeries.R | 4 +++- R/ShareResults.R | 2 ++ 4 files changed, 11 insertions(+), 3 deletions(-) diff --git a/R/Module-CohortDiagnostics.R b/R/Module-CohortDiagnostics.R index 4f1c526d..c2bb2c8c 100644 --- a/R/Module-CohortDiagnostics.R +++ b/R/Module-CohortDiagnostics.R @@ -90,7 +90,7 @@ CohortDiagnosticsModule <- R6::R6Class( # TODO: This is something CD does differently. # Find the results zip file in the results sub folder - resultsFolder <- private$jobContext$moduleExecutionSettings$resultsSubFolder + resultsFolder <- normalizePath(private$jobContext$moduleExecutionSettings$resultsSubFolder) zipFiles <- list.files( path = resultsFolder, pattern = "\\.zip$", @@ -101,6 +101,8 @@ CohortDiagnosticsModule <- R6::R6Class( zipFileName <- zipFiles[1] } else { # Create a zip file from the results in the directory + oldWd <- setwd(resultsFolder) + on.exit(setwd(oldWd)) DatabaseConnector::createZipFile( zipFile = "results.zip", files = list.files(resultsFolder, pattern = ".*\\.csv$"), diff --git a/R/Module-CohortMethod.R b/R/Module-CohortMethod.R index 620288de..6a671afa 100644 --- a/R/Module-CohortMethod.R +++ b/R/Module-CohortMethod.R @@ -105,7 +105,7 @@ CohortMethodModule <- R6::R6Class( # TODO: This is something CM does differently. # Find the results zip file in the results sub folder - resultsFolder <- private$jobContext$moduleExecutionSettings$resultsSubFolder + resultsFolder <- normalizePath(private$jobContext$moduleExecutionSettings$resultsSubFolder) zipFiles <- list.files( path = resultsFolder, pattern = "\\.zip$", @@ -116,6 +116,8 @@ CohortMethodModule <- R6::R6Class( zipFileName <- zipFiles[1] } else { # Create a zip file from the results in the directory + oldWd <- setwd(resultsFolder) + on.exit(setwd(oldWd)) DatabaseConnector::createZipFile( zipFile = "results.zip", files = list.files(resultsFolder, pattern = ".*\\.csv$"), diff --git a/R/Module-SelfControlledCaseSeries.R b/R/Module-SelfControlledCaseSeries.R index 0cbdd549..0445d91c 100644 --- a/R/Module-SelfControlledCaseSeries.R +++ b/R/Module-SelfControlledCaseSeries.R @@ -119,7 +119,7 @@ SelfControlledCaseSeriesModule <- R6::R6Class( # TODO: This is something SCCS does differently. # Find the results zip file in the results sub folder - resultsFolder <- private$jobContext$moduleExecutionSettings$resultsSubFolder + resultsFolder <- normalizePath(private$jobContext$moduleExecutionSettings$resultsSubFolder) zipFiles <- list.files( path = resultsFolder, pattern = "\\.zip$", @@ -130,6 +130,8 @@ SelfControlledCaseSeriesModule <- R6::R6Class( zipFileName <- zipFiles[1] } else { # Create a zip file from the results in the directory + oldWd <- setwd(resultsFolder) + on.exit(setwd(oldWd)) DatabaseConnector::createZipFile( zipFile = "results.zip", files = list.files(resultsFolder, pattern = ".*\\.csv$"), diff --git a/R/ShareResults.R b/R/ShareResults.R index fbdb4088..34268b42 100644 --- a/R/ShareResults.R +++ b/R/ShareResults.R @@ -22,6 +22,8 @@ zipResults <- function(resultsFolder, zipFile) { recursive = TRUE, full.names = TRUE ) + oldWd <- setwd(resultsFolder) + on.exit(setwd(oldWd)) DatabaseConnector::createZipFile( zipFile = zipFile, files = files,