Back to Long Tests report for BioC 3.22 |
This page was generated on 2025-10-18 23:55 -0400 (Sat, 18 Oct 2025).
Hostname | OS | Arch (*) | R version | Installed pkgs |
---|---|---|---|---|
nebbiolo2 | Linux (Ubuntu 24.04.3 LTS) | x86_64 | 4.5.1 Patched (2025-08-23 r88802) -- "Great Square Root" | 4887 |
lconway | macOS 12.7.6 Monterey | x86_64 | 4.5.1 Patched (2025-09-10 r88807) -- "Great Square Root" | 4677 |
Click on any hostname to see more info about the system (e.g. compilers) (*) as reported by 'uname -p', except on Windows and Mac OS X |
Package 17/31 | Hostname | OS / Arch | CHECK | |||||||
DOtools 0.99.11 (landing page) Mariano Ruz Jurado
| nebbiolo2 | Linux (Ubuntu 24.04.3 LTS) / x86_64 | ERROR | |||||||
lconway | macOS 12.7.6 Monterey / x86_64 | ERROR | ||||||||
To the developers/maintainers of the DOtools package: - Use the following Renviron settings to reproduce errors and warnings. - If 'R CMD check' started to fail recently on the Linux builder(s) over a missing dependency, add the missing dependency to 'Suggests:' in your DESCRIPTION file. See Renviron.bioc for more information. |
Package: DOtools |
Version: 0.99.11 |
Command: /home/biocbuild/bbs-3.22-bioc/R/bin/R CMD check --test-dir=longtests --no-stop-on-test-error --no-codoc --no-examples --no-manual --ignore-vignettes --check-subdirs=no DOtools_0.99.11.tar.gz |
StartedAt: 2025-10-18 16:08:39 -0400 (Sat, 18 Oct 2025) |
EndedAt: 2025-10-18 16:17:14 -0400 (Sat, 18 Oct 2025) |
EllapsedTime: 515.1 seconds |
RetCode: 1 |
Status: ERROR |
CheckDir: DOtools.Rcheck |
Warnings: NA |
DOtools.Rcheck/tests/test-DO.BarplotWilcox.Rout.fail
R version 4.5.1 Patched (2025-08-23 r88802) -- "Great Square Root" Copyright (C) 2025 The R Foundation for Statistical Computing Platform: x86_64-pc-linux-gnu R is free software and comes with ABSOLUTELY NO WARRANTY. You are welcome to redistribute it under certain conditions. Type 'license()' or 'licence()' for distribution details. R is a collaborative project with many contributors. Type 'contributors()' for more information and 'citation()' on how to cite R or R packages in publications. Type 'demo()' for some demos, 'help()' for on-line help, or 'help.start()' for an HTML browser interface to help. Type 'q()' to quit R. > library(testthat) > library(Seurat) Loading required package: SeuratObject Loading required package: sp Attaching package: 'SeuratObject' The following objects are masked from 'package:base': intersect, t > library(ggplot2) > library(SingleCellExperiment) Loading required package: SummarizedExperiment Loading required package: MatrixGenerics Loading required package: matrixStats Attaching package: 'MatrixGenerics' The following objects are masked from 'package:matrixStats': colAlls, colAnyNAs, colAnys, colAvgsPerRowSet, colCollapse, colCounts, colCummaxs, colCummins, colCumprods, colCumsums, colDiffs, colIQRDiffs, colIQRs, colLogSumExps, colMadDiffs, colMads, colMaxs, colMeans2, colMedians, colMins, colOrderStats, colProds, colQuantiles, colRanges, colRanks, colSdDiffs, colSds, colSums2, colTabulates, colVarDiffs, colVars, colWeightedMads, colWeightedMeans, colWeightedMedians, colWeightedSds, colWeightedVars, rowAlls, rowAnyNAs, rowAnys, rowAvgsPerColSet, rowCollapse, rowCounts, rowCummaxs, rowCummins, rowCumprods, rowCumsums, rowDiffs, rowIQRDiffs, rowIQRs, rowLogSumExps, rowMadDiffs, rowMads, rowMaxs, rowMeans2, rowMedians, rowMins, rowOrderStats, rowProds, rowQuantiles, rowRanges, rowRanks, rowSdDiffs, rowSds, rowSums2, rowTabulates, rowVarDiffs, rowVars, rowWeightedMads, rowWeightedMeans, rowWeightedMedians, rowWeightedSds, rowWeightedVars Loading required package: GenomicRanges Loading required package: stats4 Loading required package: BiocGenerics Loading required package: generics Attaching package: 'generics' The following objects are masked from 'package:base': as.difftime, as.factor, as.ordered, intersect, is.element, setdiff, setequal, union Attaching package: 'BiocGenerics' The following objects are masked from 'package:stats': IQR, mad, sd, var, xtabs The following objects are masked from 'package:base': Filter, Find, Map, Position, Reduce, anyDuplicated, aperm, append, as.data.frame, basename, cbind, colnames, dirname, do.call, duplicated, eval, evalq, get, grep, grepl, is.unsorted, lapply, mapply, match, mget, order, paste, pmax, pmax.int, pmin, pmin.int, rank, rbind, rownames, sapply, saveRDS, table, tapply, unique, unsplit, which.max, which.min Loading required package: S4Vectors Attaching package: 'S4Vectors' The following object is masked from 'package:utils': findMatches The following objects are masked from 'package:base': I, expand.grid, unname Loading required package: IRanges Attaching package: 'IRanges' The following object is masked from 'package:sp': %over% Loading required package: Seqinfo Loading required package: Biobase Welcome to Bioconductor Vignettes contain introductory material; view with 'browseVignettes()'. To cite Bioconductor, see 'citation("Biobase")', and for packages 'citation("pkgname")'. Attaching package: 'Biobase' The following object is masked from 'package:MatrixGenerics': rowMedians The following objects are masked from 'package:matrixStats': anyMissing, rowMedians Attaching package: 'SummarizedExperiment' The following object is masked from 'package:Seurat': Assays The following object is masked from 'package:SeuratObject': Assays > > # Helper function to create test Seurat object > create_test_seurat <- function() { + set.seed(42) + + # Toy counts matrix: 10 genes x 12 cells + mat <- matrix(rpois(120, lambda = 5), nrow = 10) + rownames(mat) <- paste0("gene", 1:10) + colnames(mat) <- paste0("cell", 1:12) + + # Metadata: four conditions, three cells each + meta <- data.frame( + orig.ident = rep(c("sample1", "sample2", "sample3", "sample4"), each = 3), + condition = rep(c("A", "B", "C", "D"), each = 3), + cluster = rep(c("cluster1", "cluster2"), times = 6) + ) + rownames(meta) <- colnames(mat) + + # Create Seurat object - convert matrix to dgCMatrix to avoid warnings + mat_sparse <- as(mat, "dgCMatrix") + seurat_obj <- CreateSeuratObject(counts = mat_sparse, meta.data = meta) + seurat_obj <- NormalizeData(seurat_obj) + + # Add a metadata feature + seurat_obj$metadata_feature <- rnorm(ncol(seurat_obj)) + + return(seurat_obj) + } > > # Helper function to create test SCE object > create_test_sce <- function() { + set.seed(42) + + # Toy counts matrix: 10 genes x 12 cells + mat <- matrix(rpois(120, lambda = 5), nrow = 10) + rownames(mat) <- paste0("gene", 1:10) + colnames(mat) <- paste0("cell", 1:12) + + # Create SingleCellExperiment + sce <- SingleCellExperiment( + assays = list(counts = mat, logcounts = log1p(mat)), + colData = data.frame( + orig.ident = rep(c("sample1", "sample2", "sample3", "sample4"), each = 3), + condition = rep(c("A", "B", "C", "D"), each = 3), + cluster = rep(c("cluster1", "cluster2"), times = 6) + ) + ) + + return(sce) + } > > test_that("DO.BarplotWilcox returns ggplot and list correctly", { + skip_if_not_installed("Seurat") + skip_if_not_installed("ggplot2") + skip_if_not_installed("rstatix") + + seurat_obj <- create_test_seurat() + + # Test 1: Default parameters (ggplot) + p <- DO.BarplotWilcox( + sce_object = seurat_obj, + Feature = "gene1", + ListTest = list(c("A","B")), + returnValues = FALSE, + ctrl.condition = "A", + group.by = "condition" + ) + expect_s3_class(p, "ggplot") + + # Test 2: returnValues = TRUE (list with components) + res <- DO.BarplotWilcox( + sce_object = seurat_obj, + Feature = "gene1", + ListTest = list(c("A","B")), + returnValues = TRUE, + ctrl.condition = "A", + group.by = "condition" + ) + expect_type(res, "list") + expect_named(res, c("plot", "df.melt", "df.melt.orig", "df.melt.sum", "stat.test")) + expect_s3_class(res$plot, "ggplot") + expect_true(is.data.frame(res$df.melt)) + expect_true(is.data.frame(res$df.melt.orig)) + expect_true(is.data.frame(res$df.melt.sum)) + }) Performing log-normalization 0% 10 20 30 40 50 60 70 80 90 100% [----|----|----|----|----|----|----|----|----|----| **************************************************| ── Error: DO.BarplotWilcox returns ggplot and list correctly ─────────────────── Error in `DO.BarplotWilcox(sce_object = seurat_obj, Feature = "gene1", ListTest = list(c("A", "B")), returnValues = FALSE, ctrl.condition = "A", group.by = "condition")`: could not find function "DO.BarplotWilcox" Error: ! Test failed Backtrace: ▆ 1. ├─testthat::test_that(...) 2. │ └─withr (local) `<fn>`() 3. └─reporter$stop_if_needed() 4. └─rlang::abort("Test failed", call = NULL) Execution halted
DOtools.Rcheck/tests/test-DO.Dotplot.Rout
R version 4.5.1 Patched (2025-08-23 r88802) -- "Great Square Root" Copyright (C) 2025 The R Foundation for Statistical Computing Platform: x86_64-pc-linux-gnu R is free software and comes with ABSOLUTELY NO WARRANTY. You are welcome to redistribute it under certain conditions. Type 'license()' or 'licence()' for distribution details. R is a collaborative project with many contributors. Type 'contributors()' for more information and 'citation()' on how to cite R or R packages in publications. Type 'demo()' for some demos, 'help()' for on-line help, or 'help.start()' for an HTML browser interface to help. Type 'q()' to quit R. > # tests/testthat/test-DO.Dotplot-full.R > library(testthat) > library(Seurat) Loading required package: SeuratObject Loading required package: sp Attaching package: 'SeuratObject' The following objects are masked from 'package:base': intersect, t > library(SingleCellExperiment) Loading required package: SummarizedExperiment Loading required package: MatrixGenerics Loading required package: matrixStats Attaching package: 'MatrixGenerics' The following objects are masked from 'package:matrixStats': colAlls, colAnyNAs, colAnys, colAvgsPerRowSet, colCollapse, colCounts, colCummaxs, colCummins, colCumprods, colCumsums, colDiffs, colIQRDiffs, colIQRs, colLogSumExps, colMadDiffs, colMads, colMaxs, colMeans2, colMedians, colMins, colOrderStats, colProds, colQuantiles, colRanges, colRanks, colSdDiffs, colSds, colSums2, colTabulates, colVarDiffs, colVars, colWeightedMads, colWeightedMeans, colWeightedMedians, colWeightedSds, colWeightedVars, rowAlls, rowAnyNAs, rowAnys, rowAvgsPerColSet, rowCollapse, rowCounts, rowCummaxs, rowCummins, rowCumprods, rowCumsums, rowDiffs, rowIQRDiffs, rowIQRs, rowLogSumExps, rowMadDiffs, rowMads, rowMaxs, rowMeans2, rowMedians, rowMins, rowOrderStats, rowProds, rowQuantiles, rowRanges, rowRanks, rowSdDiffs, rowSds, rowSums2, rowTabulates, rowVarDiffs, rowVars, rowWeightedMads, rowWeightedMeans, rowWeightedMedians, rowWeightedSds, rowWeightedVars Loading required package: GenomicRanges Loading required package: stats4 Loading required package: BiocGenerics Loading required package: generics Attaching package: 'generics' The following objects are masked from 'package:base': as.difftime, as.factor, as.ordered, intersect, is.element, setdiff, setequal, union Attaching package: 'BiocGenerics' The following objects are masked from 'package:stats': IQR, mad, sd, var, xtabs The following objects are masked from 'package:base': Filter, Find, Map, Position, Reduce, anyDuplicated, aperm, append, as.data.frame, basename, cbind, colnames, dirname, do.call, duplicated, eval, evalq, get, grep, grepl, is.unsorted, lapply, mapply, match, mget, order, paste, pmax, pmax.int, pmin, pmin.int, rank, rbind, rownames, sapply, saveRDS, table, tapply, unique, unsplit, which.max, which.min Loading required package: S4Vectors Attaching package: 'S4Vectors' The following object is masked from 'package:utils': findMatches The following objects are masked from 'package:base': I, expand.grid, unname Loading required package: IRanges Attaching package: 'IRanges' The following object is masked from 'package:sp': %over% Loading required package: Seqinfo Loading required package: Biobase Welcome to Bioconductor Vignettes contain introductory material; view with 'browseVignettes()'. To cite Bioconductor, see 'citation("Biobase")', and for packages 'citation("pkgname")'. Attaching package: 'Biobase' The following object is masked from 'package:MatrixGenerics': rowMedians The following objects are masked from 'package:matrixStats': anyMissing, rowMedians Attaching package: 'SummarizedExperiment' The following object is masked from 'package:Seurat': Assays The following object is masked from 'package:SeuratObject': Assays > library(DOtools) > library(Matrix) Attaching package: 'Matrix' The following object is masked from 'package:S4Vectors': expand > library(ggplot2) > > safe_dotplot <- function(...) suppressWarnings(suppressMessages(DO.Dotplot(...))) > > # Helper function to create consistent test data > create_test_seurat <- function() { + set.seed(1234) + n_genes <- 200 + n_cells <- 60 + synthetic_genes <- paste0("SGENE", seq_len(n_genes)) + + # Create matrix with correct dimensions: n_genes x n_cells + counts_matrix <- matrix( + rpois(n_genes * n_cells, lambda = 1), + nrow = n_genes, + ncol = n_cells, + dimnames = list(synthetic_genes, paste0("Cell", seq_len(n_cells))) + ) + + # Convert to dgCMatrix + counts <- as(counts_matrix, "dgCMatrix") + + clusters <- c(rep("C1", 30), rep("C2", 30)) + conditions <- c(rep(c("healthy","disease"), each = 15), rep(c("healthy","disease"), each = 15)) + origidents <- rep(c("sample1","sample2","sample3","sample4"), length.out = n_cells) + + # Create some expression patterns + counts["SGENE10", clusters == "C1" & conditions == "healthy"] <- rpois(15, 80) + counts["SGENE10", clusters == "C1" & conditions == "disease"] <- rpois(15, 2) + counts["SGENE20", clusters == "C2" & conditions == "disease"] <- rpois(15, 70) + counts["SGENE20", clusters == "C2" & conditions == "healthy"] <- rpois(15, 1) + counts["SGENE30",] <- rpois(n_cells, 5) # Low expression gene + counts["SGENE40",] <- 0 # Zero expression gene + + suppressWarnings({ + seu <- CreateSeuratObject(counts = counts, assay = "RNA") + }) + seu$cluster <- clusters + seu$condition <- conditions + seu$orig.ident <- origidents + seu <- NormalizeData(seu, verbose = FALSE) + return(seu) + } > > # Define PercentAbove function > PercentAbove <- function(x, threshold = 0) { + if (length(x) == 0) return(0) # Handle empty vector case + return(length(x = x[x > threshold]) / length(x = x)) + } > > # ---- Tests for branches ---- > > test_that("SingleCellExperiment conversion works", { + seu <- create_test_seurat() + + # Convert to SCE and test - suppress the scale.data warning + suppressWarnings({ + sce <- as.SingleCellExperiment(seu) + }) + p <- safe_dotplot(sce, Feature = c("SGENE10", "SGENE20"), group.by.x = "condition") + expect_s3_class(p, "ggplot") + }) Test passed 🥳 > > test_that("error handling for invalid Feature types", { + seu <- create_test_seurat() + + # Test non-vector, non-dataframe input + expect_error(DO.Dotplot(seu, Feature = list("SGENE10", "SGENE20"), group.by.x = "condition")) + }) Test passed 🥳 > > test_that("cluster name detection in data frame works with various column names", { + seu <- create_test_seurat() + + # Test different cluster column names + features_df_cluster <- data.frame( + gene = c("SGENE10", "SGENE20"), + cluster = c("C1", "C2"), + stringsAsFactors = FALSE + ) + p1 <- safe_dotplot(seu, Feature = features_df_cluster, group.by.x = "condition") + expect_s3_class(p1, "ggplot") + + + }) Test passed 🥳 > > test_that("gene name detection in data frame works with various column names", { + seu <- create_test_seurat() + + # Test gene column named "feature" + features_df_feature <- data.frame( + feature = c("SGENE10", "SGENE20"), + cluster = c("C1", "C2"), + stringsAsFactors = FALSE + ) + p <- safe_dotplot(seu, Feature = features_df_feature, group.by.x = "condition") + expect_s3_class(p, "ggplot") + }) Test passed 🥳 > > test_that("error handling for invalid data frame columns", { + seu <- create_test_seurat() + + features_df_invalid <- data.frame( + invalid_col1 = c("SGENE10", "SGENE20"), + invalid_col2 = c("C1", "C2"), + stringsAsFactors = FALSE + ) + expect_error(safe_dotplot(seu, Feature = features_df_invalid, group.by.x = "condition")) + }) Test passed 🥳 > > test_that("group.by.x only case with identical id and xaxis", { + seu <- create_test_seurat() + + # Test case where id and xaxis become identical + features_df <- data.frame( + gene = c("SGENE10", "SGENE20", "SGENE30"), + cluster = c("C1", "C2", "C1"), + stringsAsFactors = FALSE + ) + + p <- safe_dotplot(seu, Feature = features_df, group.by.x = "condition") + expect_s3_class(p, "ggplot") + }) Test passed 🥳 > > test_that("hide_zero functionality with complete cases", { + seu <- create_test_seurat() + + # Test hide_zero = FALSE keeps zeros + df_show <- safe_dotplot(seu, Feature = "SGENE40", group.by.x = "condition", + hide_zero = FALSE, returnValue = TRUE) + # Should have entries even for zero expression + expect_true(nrow(df_show) > 0) + }) Test passed 🥳 > > test_that("pseudobulk functionality with edge cases", { + seu <- create_test_seurat() + + # Test pseudobulk with single group + p1 <- safe_dotplot(seu, Feature = c("SGENE10", "SGENE20"), + group.by.x = "condition", across.group.by.x = TRUE) + expect_s3_class(p1, "ggplot") + + # Test pseudobulk with group.by.y but no group.by.y2 + p2 <- safe_dotplot(seu, Feature = c("SGENE10", "SGENE20"), + group.by.x = "condition", group.by.y = "cluster", + across.group.by.y = TRUE) + expect_s3_class(p2, "ggplot") + }) Test passed 😀 > > test_that("expression scaling and transformation combinations", { + seu <- create_test_seurat() + + # Test all combinations of scale_gene and log1p_nUMI + combinations <- list( + c(FALSE, FALSE), + c(FALSE, TRUE), + c(TRUE, FALSE), + c(TRUE, TRUE) + ) + + for (combo in combinations) { + scale_gene <- combo[1] + log1p_nUMI <- combo[2] + + p <- safe_dotplot(seu, Feature = c("SGENE10", "SGENE20"), + group.by.x = "condition", + scale_gene = scale_gene, + log1p_nUMI = log1p_nUMI) + expect_s3_class(p, "ggplot") + } + }) Test passed 🥳 > > test_that("aesthetic mapping selection logic", { + seu <- create_test_seurat() + + # Test case where id and xaxis are identical with vector Feature + p1 <- safe_dotplot(seu, Feature = c("SGENE10", "SGENE20"), group.by.x = "condition") + expect_s3_class(p1, "ggplot") + + # Test case where id and xaxis are identical with dataframe Feature + features_df <- data.frame( + gene = c("SGENE10", "SGENE20"), + cluster = c("C1", "C2"), + stringsAsFactors = FALSE + ) + p2 <- safe_dotplot(seu, Feature = features_df, group.by.x = "condition") + expect_s3_class(p2, "ggplot") + + # Test case with group.by.y (different id and xaxis) + p3 <- safe_dotplot(seu, Feature = c("SGENE10", "SGENE20"), + group.by.x = "condition", group.by.y = "cluster") + expect_s3_class(p3, "ggplot") + }) Test passed 😀 > > test_that("color scale branches", { + seu <- create_test_seurat() + + # Test the main branch with 2 colors (default) + p1 <- safe_dotplot(seu, Feature = c("SGENE10", "SGENE20"), group.by.x = "condition") + expect_s3_class(p1, "ggplot") + }) Test passed 🥳 > > test_that("facetting and plot type branches", { + seu <- create_test_seurat() + + # Test across.group.by.x branch + p1 <- safe_dotplot(seu, Feature = c("SGENE10", "SGENE20"), + group.by.x = "condition", across.group.by.x = TRUE) + expect_s3_class(p1, "ggplot") + + # Test across.group.by.y branch + p2 <- safe_dotplot(seu, Feature = c("SGENE10", "SGENE20"), + group.by.x = "condition", group.by.y = "cluster", + across.group.by.y = TRUE) + expect_s3_class(p2, "ggplot") + + # Test identical id/xaxis branch with dataframe + features_df <- data.frame( + gene = c("SGENE10", "SGENE20"), + cluster = c("C1", "C2"), + stringsAsFactors = FALSE + ) + p3 <- safe_dotplot(seu, Feature = features_df, group.by.x = "condition") + expect_s3_class(p3, "ggplot") + + # Test default branch (group.by.y case) + p4 <- safe_dotplot(seu, Feature = c("SGENE10", "SGENE20"), + group.by.x = "condition", group.by.y = "cluster") + expect_s3_class(p4, "ggplot") + }) Test passed 😀 > > test_that("annotation_x with coord_flip scenario", { + seu <- create_test_seurat() + + features_df <- data.frame( + gene = c("SGENE10", "SGENE20"), + cluster = c("C1", "C2"), + stringsAsFactors = FALSE + ) + + # Test without expecting warning + p <- safe_dotplot(seu, Feature = features_df, group.by.x = "condition", + annotation_x = TRUE, coord_flip = TRUE) + expect_s3_class(p, "ggplot") + }) Test passed 🥳 > > test_that("statistical significance star plotting", { + seu <- create_test_seurat() + + # Test with stats_x = TRUE + p1 <- safe_dotplot(seu, Feature = c("SGENE10", "SGENE20"), + group.by.x = "condition", group.by.y = "cluster", + stats_x = TRUE) + expect_s3_class(p1, "ggplot") + + # Test with stats_y = TRUE + p2 <- safe_dotplot(seu, Feature = c("SGENE10", "SGENE20"), + group.by.x = "condition", group.by.y = "cluster", + stats_y = TRUE) + expect_s3_class(p2, "ggplot") + + # Test with both stats TRUE + p3 <- safe_dotplot(seu, Feature = c("SGENE10", "SGENE20"), + group.by.x = "condition", group.by.y = "cluster", + stats_x = TRUE, stats_y = TRUE) + expect_s3_class(p3, "ggplot") + }) Test passed 😀 > > test_that("scale_size_continuous with different scenarios", { + seu <- create_test_seurat() + + # Test with normal data + p1 <- safe_dotplot(seu, Feature = c("SGENE10", "SGENE20"), group.by.x = "condition") + expect_s3_class(p1, "ggplot") + + # Test with single group (different size scaling branch) + features_df <- data.frame( + gene = c("SGENE10", "SGENE20"), + cluster = c("C1", "C2"), + stringsAsFactors = FALSE + ) + p2 <- safe_dotplot(seu, Feature = features_df, group.by.x = "condition") + expect_s3_class(p2, "ggplot") + }) Test passed 🥳 > > test_that("statistical tests with genes that have results", { + seu <- create_test_seurat() + + # Use genes that definitely have expression and will produce statistical results + p <- safe_dotplot(seu, Feature = c("SGENE10", "SGENE20"), + group.by.x = "condition", group.by.y = "cluster", + stats_x = TRUE) + expect_s3_class(p, "ggplot") + }) Test passed 😀 > > test_that("factor level ordering with sort_x", { + seu <- create_test_seurat() + + # Test sort_x with group.by.y + p1 <- safe_dotplot(seu, Feature = c("SGENE10", "SGENE20"), + group.by.x = "condition", group.by.y = "cluster", + sort_x = c("disease", "healthy")) + expect_s3_class(p1, "ggplot") + + # Test sort_x without group.by.y + p2 <- safe_dotplot(seu, Feature = c("SGENE10", "SGENE20"), + group.by.x = "condition", sort_x = c("SGENE20", "SGENE10")) + expect_s3_class(p2, "ggplot") + }) Test passed 😀 > > test_that("pseudobulk level ordering", { + seu <- create_test_seurat() + + # Test pseudobulk level ordering for x-axis + p1 <- safe_dotplot(seu, Feature = c("SGENE10", "SGENE20"), + group.by.x = "condition", across.group.by.x = TRUE) + expect_s3_class(p1, "ggplot") + + # Test pseudobulk level ordering for y-axis without group.by.y2 + p2 <- safe_dotplot(seu, Feature = c("SGENE10", "SGENE20"), + group.by.x = "condition", group.by.y = "cluster", + across.group.by.y = TRUE) + expect_s3_class(p2, "ggplot") + + # Test pseudobulk level ordering for y-axis with group.by.y2 + p3 <- safe_dotplot(seu, Feature = c("SGENE10", "SGENE20"), + group.by.x = "condition", group.by.y = "cluster", + group.by.y2 = "orig.ident", across.group.by.y = TRUE) + expect_s3_class(p3, "ggplot") + }) Test passed 😀 > > test_that("edge cases with proper data preparation", { + # Test with very small dataset + set.seed(123) + tiny_counts <- matrix(rpois(5 * 10, lambda = 1), nrow = 5, ncol = 10, + dimnames = list(paste0("G", 1:5), paste0("C", 1:10))) + + # Convert to dgCMatrix to avoid warning + tiny_counts <- as(tiny_counts, "dgCMatrix") + + suppressWarnings({ + tiny_seu <- CreateSeuratObject(counts = tiny_counts) + }) + tiny_seu$group <- rep(c("A", "B"), each = 5) + tiny_seu <- NormalizeData(tiny_seu, verbose = FALSE) # Add normalization + + p <- safe_dotplot(tiny_seu, Feature = c("G1", "G2"), group.by.x = "group") + expect_s3_class(p, "ggplot") + }) Test passed 🌈 > > test_that("error conditions for statistical tests", { + seu <- create_test_seurat() + + # Test that no error occurs with valid inputs + expect_silent(safe_dotplot(seu, Feature = c("SGENE10", "SGENE20"), + group.by.x = "condition", stats_x = FALSE, stats_y = FALSE)) + }) Test passed 🥳 > > test_that("guide customization layers", { + seu <- create_test_seurat() + + # Test that guide layers are properly applied + p <- safe_dotplot(seu, Feature = c("SGENE10", "SGENE20"), group.by.x = "condition") + + # Check that the plot has guides + expect_s3_class(p, "ggplot") + }) Test passed 🥳 > > test_that("PercentAbove function edge cases", { + # Test PercentAbove with various inputs + expect_equal(PercentAbove(c(0, 0, 0), threshold = 0), 0) + expect_equal(PercentAbove(c(1, 2, 3), threshold = 0), 1) + expect_equal(PercentAbove(c(1, 2, 3), threshold = 2), 1/3) + expect_equal(PercentAbove(numeric(0), threshold = 0), 0) # Handle empty vector + }) Test passed 😸 > > test_that("data frame manipulation with dplyr functions", { + seu <- create_test_seurat() + + # Test that the dplyr manipulations work correctly + df <- safe_dotplot(seu, Feature = c("SGENE10", "SGENE20"), + group.by.x = "condition", group.by.y = "cluster", + across.group.by.y = TRUE, returnValue = TRUE) + + expect_true(is.data.frame(df)) + expect_true(all(c("gene", "id", "xaxis", "avg.exp", "pct.exp") %in% colnames(df))) + }) Test passed 😀 > > test_that("conditional factor level setting", { + seu <- create_test_seurat() + + # Test with annotation_x_rev = TRUE + features_df <- data.frame( + gene = c("SGENE10", "SGENE20", "SGENE30"), + cluster = c("C1", "C2", "C1"), + stringsAsFactors = FALSE + ) + + p <- safe_dotplot(seu, Feature = features_df, group.by.x = "condition", + annotation_x = TRUE, annotation_x_rev = TRUE) + expect_s3_class(p, "ggplot") + }) Test passed 🥳 > > # ---- Integration tests with complex scenarios ---- > > test_that("complex multi-parameter scenarios without conflicting options", { + seu <- create_test_seurat() + + features_df <- data.frame( + gene = c("SGENE10", "SGENE20", "SGENE30"), + cluster = c("C1", "C2", "C1"), + stringsAsFactors = FALSE + ) + + # Test complex scenario but don't set both pseudobulk options + p1 <- safe_dotplot(seu, Feature = features_df, + group.by.x = "condition", + group.by.y = "cluster", + across.group.by.y = TRUE, # Only one pseudobulk option + scale_gene = TRUE, + log1p_nUMI = FALSE, + stats_x = TRUE, + stats_y = TRUE, + annotation_x = TRUE, + coord_flip = TRUE, + hide_zero = FALSE, + dot.size = c(2, 8), + point_stroke = 0.5, + limits_colorscale = c(0, 10), + sig_size = 8, + nudge_x = 0.5, + nudge_y = 0.5) + expect_s3_class(p1, "ggplot") + + # Test another complex scenario with the other pseudobulk option + p2 <- safe_dotplot(seu, Feature = features_df, + group.by.x = "condition", + group.by.y = "cluster", + across.group.by.x = TRUE, # Only one pseudobulk option + scale_gene = FALSE, + log1p_nUMI = TRUE, + stats_x = FALSE, # Disable stats to avoid subset issues + stats_y = FALSE, # Disable stats to avoid subset issues + annotation_x = FALSE, + coord_flip = FALSE, + hide_zero = TRUE, + dot.size = c(1, 6), + point_stroke = 0.2) + expect_s3_class(p2, "ggplot") + }) Test passed 😀 > > test_that("complex scenario with group.by.y2 but careful statistical testing", { + seu <- create_test_seurat() + + features_df <- data.frame( + gene = c("SGENE10", "SGENE20"), + cluster = c("C1", "C2"), + stringsAsFactors = FALSE + ) + + # Use group.by.y2 but avoid statistical tests that cause subset issues + p <- safe_dotplot(seu, Feature = features_df, + group.by.x = "condition", + group.by.y = "cluster", + group.by.y2 = "orig.ident", + across.group.by.y = TRUE, + stats_x = FALSE, # Disable to avoid "No cells found" error + stats_y = FALSE, # Disable to avoid "No cells found" error + scale_gene = TRUE, + log1p_nUMI = TRUE) + expect_s3_class(p, "ggplot") + }) Test passed 🥳 > > # ---- Additional edge case tests ---- > > test_that("empty gene list handling", { + seu <- create_test_seurat() + + # Test with empty gene list (should error) + expect_error(safe_dotplot(seu, Feature = character(0), group.by.x = "condition")) + }) Test passed 🥳 > > test_that("single cell edge cases", { + seu <- create_test_seurat() + + # Test with single gene, single group + p <- safe_dotplot(seu, Feature = "SGENE10", group.by.x = "condition") + expect_s3_class(p, "ggplot") + }) Test passed 🥳 > > test_that("metadata column edge cases", { + seu <- create_test_seurat() + + # Test with numeric metadata + seu$numeric_meta <- as.numeric(factor(seu$condition)) + p <- safe_dotplot(seu, Feature = c("SGENE10", "SGENE20"), group.by.x = "numeric_meta") + expect_s3_class(p, "ggplot") + }) Test passed 🥳 > > test_that("plot margin and theme parameters", { + seu <- create_test_seurat() + + # Test different margin settings + p <- safe_dotplot(seu, Feature = c("SGENE10", "SGENE20"), + group.by.x = "condition", plot.margin = c(0.5, 0.5, 0.5, 0.5)) + expect_s3_class(p, "ggplot") + }) Test passed 🥳 > > test_that("various parameter combinations that should work", { + seu <- create_test_seurat() + + # Test different combinations of parameters that are less likely to cause errors + test_combinations <- list( + list(group.by.x = "condition", dot.size = c(1, 3)), + list(group.by.x = "condition", point_stroke = 0.1), + list(group.by.x = "condition", midpoint = 0.8), + list(group.by.x = "condition", limits_colorscale = c(0, 2)), + list(group.by.x = "condition", sig_size = 4, nudge_x = 0.1, nudge_y = 0.1) + ) + + for (params in test_combinations) { + p <- do.call(safe_dotplot, c(list(sce_object = seu, Feature = c("SGENE10", "SGENE20")), params)) + expect_s3_class(p, "ggplot") + } + }) Test passed 🥳 > > test_that("data frame return structure verification", { + seu <- create_test_seurat() + + # Test various returnValue scenarios + df1 <- safe_dotplot(seu, Feature = c("SGENE10", "SGENE20"), + group.by.x = "condition", returnValue = TRUE) + expect_true(is.data.frame(df1)) + expect_true(nrow(df1) > 0) + + df2 <- safe_dotplot(seu, Feature = c("SGENE10", "SGENE20"), + group.by.x = "condition", group.by.y = "cluster", + returnValue = TRUE) + expect_true(is.data.frame(df2)) + expect_true(nrow(df2) > 0) + }) Test passed 😀 > > > proc.time() user system elapsed 49.946 1.214 51.152
DOtools.Rcheck/tests/test-DO.MultiDGE.Rout
R version 4.5.1 Patched (2025-08-23 r88802) -- "Great Square Root" Copyright (C) 2025 The R Foundation for Statistical Computing Platform: x86_64-pc-linux-gnu R is free software and comes with ABSOLUTELY NO WARRANTY. You are welcome to redistribute it under certain conditions. Type 'license()' or 'licence()' for distribution details. R is a collaborative project with many contributors. Type 'contributors()' for more information and 'citation()' on how to cite R or R packages in publications. Type 'demo()' for some demos, 'help()' for on-line help, or 'help.start()' for an HTML browser interface to help. Type 'q()' to quit R. > library(testthat) > library(DOtools) > library(Seurat) Loading required package: SeuratObject Loading required package: sp Attaching package: 'SeuratObject' The following objects are masked from 'package:base': intersect, t > library(SingleCellExperiment) Loading required package: SummarizedExperiment Loading required package: MatrixGenerics Loading required package: matrixStats Attaching package: 'MatrixGenerics' The following objects are masked from 'package:matrixStats': colAlls, colAnyNAs, colAnys, colAvgsPerRowSet, colCollapse, colCounts, colCummaxs, colCummins, colCumprods, colCumsums, colDiffs, colIQRDiffs, colIQRs, colLogSumExps, colMadDiffs, colMads, colMaxs, colMeans2, colMedians, colMins, colOrderStats, colProds, colQuantiles, colRanges, colRanks, colSdDiffs, colSds, colSums2, colTabulates, colVarDiffs, colVars, colWeightedMads, colWeightedMeans, colWeightedMedians, colWeightedSds, colWeightedVars, rowAlls, rowAnyNAs, rowAnys, rowAvgsPerColSet, rowCollapse, rowCounts, rowCummaxs, rowCummins, rowCumprods, rowCumsums, rowDiffs, rowIQRDiffs, rowIQRs, rowLogSumExps, rowMadDiffs, rowMads, rowMaxs, rowMeans2, rowMedians, rowMins, rowOrderStats, rowProds, rowQuantiles, rowRanges, rowRanks, rowSdDiffs, rowSds, rowSums2, rowTabulates, rowVarDiffs, rowVars, rowWeightedMads, rowWeightedMeans, rowWeightedMedians, rowWeightedSds, rowWeightedVars Loading required package: GenomicRanges Loading required package: stats4 Loading required package: BiocGenerics Loading required package: generics Attaching package: 'generics' The following objects are masked from 'package:base': as.difftime, as.factor, as.ordered, intersect, is.element, setdiff, setequal, union Attaching package: 'BiocGenerics' The following objects are masked from 'package:stats': IQR, mad, sd, var, xtabs The following objects are masked from 'package:base': Filter, Find, Map, Position, Reduce, anyDuplicated, aperm, append, as.data.frame, basename, cbind, colnames, dirname, do.call, duplicated, eval, evalq, get, grep, grepl, is.unsorted, lapply, mapply, match, mget, order, paste, pmax, pmax.int, pmin, pmin.int, rank, rbind, rownames, sapply, saveRDS, table, tapply, unique, unsplit, which.max, which.min Loading required package: S4Vectors Attaching package: 'S4Vectors' The following object is masked from 'package:utils': findMatches The following objects are masked from 'package:base': I, expand.grid, unname Loading required package: IRanges Attaching package: 'IRanges' The following object is masked from 'package:sp': %over% Loading required package: Seqinfo Loading required package: Biobase Welcome to Bioconductor Vignettes contain introductory material; view with 'browseVignettes()'. To cite Bioconductor, see 'citation("Biobase")', and for packages 'citation("pkgname")'. Attaching package: 'Biobase' The following object is masked from 'package:MatrixGenerics': rowMedians The following objects are masked from 'package:matrixStats': anyMissing, rowMedians Attaching package: 'SummarizedExperiment' The following object is masked from 'package:Seurat': Assays The following object is masked from 'package:SeuratObject': Assays > > test_that("DO.MultiDGE returns merged dataframe with SC and PB results", { + sce_data <- readRDS(system.file("extdata", "sce_data.rds", package = "DOtools")) + + result <- DO.MultiDGE( + sce_object = sce_data, + sample_col = "orig.ident", + method_sc = "wilcox", + annotation_col = "annotation", + ident_ctrl = "healthy" + ) + + expect_true(all(c("gene", "celltype", "condition") %in% colnames(result))) + expect_true(any(grepl("SC_wilcox", colnames(result)))) + }) | | | 0% | |====== | 9% | |============= | 18% | |=================== | 27% | |========================= | 36% | |================================ | 45% | |====================================== | 55% | |============================================= | 64% | |=================================================== | 73% | |========================================================= | 82% | |================================================================ | 91% | |======================================================================| 100% | | | 0% | |======================================================================| 100% Test passed 😀 > > test_that("DO.MultiDGE works with SingleCellExperiment input", { + sce_data <- readRDS(system.file("extdata", "sce_data.rds", package = "DOtools")) + + result <- DO.MultiDGE( + sce_object = sce_data, + sample_col = "orig.ident", + method_sc = "wilcox", + annotation_col = "annotation", + ident_ctrl = "healthy" + ) + + expect_true(all(c("gene", "celltype", "condition") %in% colnames(result))) + }) | | | 0% | |====== | 9% | |============= | 18% | |=================== | 27% | |========================= | 36% | |================================ | 45% | |====================================== | 55% | |============================================= | 64% | |=================================================== | 73% | |========================================================= | 82% | |================================================================ | 91% | |======================================================================| 100% | | | 0% | |======================================================================| 100% Test passed 😀 > > test_that("DO.MultiDGE stops when ident_ctrl not found", { + sce_data <- readRDS(system.file("extdata", "sce_data.rds", package = "DOtools")) + + expect_error( + DO.MultiDGE( + sce_object = sce_data, + sample_col = "orig.ident", + method_sc = "wilcox", + annotation_col = "annotation", + ident_ctrl = "nonexistent_condition" + ), + "was not found in meta data" + ) + }) ── Warning: DO.MultiDGE stops when ident_ctrl not found ──────────────────────── 2 arguments not used by format '%s was not found in meta data under the specified ' Backtrace: ▆ 1. ├─testthat::expect_error(...) 2. │ └─testthat:::quasi_capture(...) 3. │ ├─testthat (local) .capture(...) 4. │ │ └─base::withCallingHandlers(...) 5. │ └─rlang::eval_bare(quo_get_expr(.quo), quo_get_env(.quo)) 6. └─DOtools::DO.MultiDGE(...) 7. ├─base::stop(...) 8. └─base::sprintf(...) > > test_that("DO.MultiDGE works with different method_sc", { + sce_data <- readRDS(system.file("extdata", "sce_data.rds", package = "DOtools")) + + # Test with different methods + methods_to_test <- c("wilcox", "t") + + for(method in methods_to_test) { + result <- DO.MultiDGE( + sce_object = sce_data, + sample_col = "orig.ident", + method_sc = method, + annotation_col = "annotation", + ident_ctrl = "healthy" + ) + + expect_true(any(grepl(paste0("SC_", method), colnames(result)))) + } + }) | | | 0% | |====== | 9% | |============= | 18% | |=================== | 27% | |========================= | 36% | |================================ | 45% | |====================================== | 55% | |============================================= | 64% | |=================================================== | 73% | |========================================================= | 82% | |================================================================ | 91% | |======================================================================| 100% | | | 0% | |======================================================================| 100% | | | 0% | |====== | 9% | |============= | 18% | |=================== | 27% | |========================= | 36% | |================================ | 45% | |====================================== | 55% | |============================================= | 64% | |=================================================== | 73% | |========================================================= | 82% | |================================================================ | 91% | |======================================================================| 100% | | | 0% | |======================================================================| 100% Test passed 😀 > > test_that("DO.MultiDGE handles min_pct and logfc_threshold parameters", { + sce_data <- readRDS(system.file("extdata", "sce_data.rds", package = "DOtools")) + + result <- DO.MultiDGE( + sce_object = sce_data, + sample_col = "orig.ident", + method_sc = "wilcox", + annotation_col = "annotation", + ident_ctrl = "healthy", + min_pct = 0.1, + logfc_threshold = 0.25 + ) + + expect_true(all(c("gene", "celltype", "condition") %in% colnames(result))) + }) | | | 0% | |====== | 9% | |============= | 18% | |=================== | 27% | |========================= | 36% | |================================ | 45% | |====================================== | 55% | |============================================= | 64% | |=================================================== | 73% | |========================================================= | 82% | |================================================================ | 91% | |======================================================================| 100% | | | 0% | |======================================================================| 100% Test passed 😀 > > test_that("DO.MultiDGE works with only_pos = TRUE", { + sce_data <- readRDS(system.file("extdata", "sce_data.rds", package = "DOtools")) + + result <- DO.MultiDGE( + sce_object = sce_data, + sample_col = "orig.ident", + method_sc = "wilcox", + annotation_col = "annotation", + ident_ctrl = "healthy", + only_pos = TRUE + ) + + expect_true(all(c("gene", "celltype", "condition") %in% colnames(result))) + }) | | | 0% | |====== | 9% | |============= | 18% | |=================== | 27% | |========================= | 36% | |================================ | 45% | |====================================== | 55% | |============================================= | 64% | |=================================================== | 73% | |========================================================= | 82% | |================================================================ | 91% | |======================================================================| 100% | | | 0% | |======================================================================| 100% Test passed 😀 > > test_that("DO.MultiDGE handles cell count filtering", { + sce_data <- readRDS(system.file("extdata", "sce_data.rds", package = "DOtools")) + + result <- DO.MultiDGE( + sce_object = sce_data, + sample_col = "orig.ident", + method_sc = "wilcox", + annotation_col = "annotation", + ident_ctrl = "healthy", + min_cells_group = 5 + ) + + expect_s3_class(result, "data.frame") + }) | | | 0% | |====== | 9% | |============= | 18% | |=================== | 27% | |========================= | 36% | |================================ | 45% | |====================================== | 55% | |============================================= | 64% | |=================================================== | 73% | |========================================================= | 82% | |================================================================ | 91% | |======================================================================| 100% | | | 0% | |======================================================================| 100% Test passed 😀 > > test_that("DO.MultiDGE works with different assays", { + sce_data <- readRDS(system.file("extdata", "sce_data.rds", package = "DOtools")) + + seurat_obj <- as.Seurat(sce_data) + + result <- DO.MultiDGE( + sce_object = seurat_obj, + assay = "RNA", + sample_col = "orig.ident", + method_sc = "wilcox", + annotation_col = "annotation", + ident_ctrl = "healthy" + ) + + expect_true(all(c("gene", "celltype", "condition") %in% colnames(result))) + }) | | | 0% | |====== | 9% | |============= | 18% | |=================== | 27% | |========================= | 36% | |================================ | 45% | |====================================== | 55% | |============================================= | 64% | |=================================================== | 73% | |========================================================= | 82% | |================================================================ | 91% | |======================================================================| 100% | | | 0% | |======================================================================| 100% Test passed 😀 > > test_that("DO.MultiDGE returns proper column structure", { + sce_data <- readRDS(system.file("extdata", "sce_data.rds", package = "DOtools")) + + result <- DO.MultiDGE( + sce_object = sce_data, + sample_col = "orig.ident", + method_sc = "wilcox", + annotation_col = "annotation", + ident_ctrl = "healthy" + ) + + expected_base_cols <- c("gene", "pct.1", "pct.2", "celltype", "condition") + expect_true(all(expected_base_cols %in% colnames(result))) + expect_true(any(grepl("SC_wilcox", colnames(result)))) + }) | | | 0% | |====== | 9% | |============= | 18% | |=================== | 27% | |========================= | 36% | |================================ | 45% | |====================================== | 55% | |============================================= | 64% | |=================================================== | 73% | |========================================================= | 82% | |================================================================ | 91% | |======================================================================| 100% | | | 0% | |======================================================================| 100% Test passed 😀 > > test_that("DO.MultiDGE works with additional FindMarkers parameters", { + sce_data <- readRDS(system.file("extdata", "sce_data.rds", package = "DOtools")) + + result <- DO.MultiDGE( + sce_object = sce_data, + sample_col = "orig.ident", + method_sc = "wilcox", + annotation_col = "annotation", + ident_ctrl = "healthy", + min.cells.feature = 3, + verbose = FALSE + ) + + expect_s3_class(result, "data.frame") + }) | | | 0% | |====== | 9% | |============= | 18% | |=================== | 27% | |========================= | 36% | |================================ | 45% | |====================================== | 55% | |============================================= | 64% | |=================================================== | 73% | |========================================================= | 82% | |================================================================ | 91% | |======================================================================| 100% | | | 0% | |======================================================================| 100% Test passed 😀 > > test_that("DO.MultiDGE handles different group_by columns", { + sce_data <- readRDS(system.file("extdata", "sce_data.rds", package = "DOtools")) + + if ("condition" %in% colnames(sce_data@colData)) { + result <- DO.MultiDGE( + sce_object = sce_data, + group_by = "condition", + sample_col = "orig.ident", + method_sc = "wilcox", + annotation_col = "annotation", + ident_ctrl = "healthy" + ) + + expect_s3_class(result, "data.frame") + } + }) | | | 0% | |====== | 9% | |============= | 18% | |=================== | 27% | |========================= | 36% | |================================ | 45% | |====================================== | 55% | |============================================= | 64% | |=================================================== | 73% | |========================================================= | 82% | |================================================================ | 91% | |======================================================================| 100% | | | 0% | |======================================================================| 100% Test passed 😀 > > > test_that("DO.MultiDGE handles the internal .suppressDeprecationWarnings", { + sce_data <- readRDS(system.file("extdata", "sce_data.rds", package = "DOtools")) + + result <- DO.MultiDGE( + sce_object = sce_data, + sample_col = "orig.ident", + method_sc = "wilcox", + annotation_col = "annotation", + ident_ctrl = "healthy" + ) + + expect_s3_class(result, "data.frame") + }) | | | 0% | |====== | 9% | |============= | 18% | |=================== | 27% | |========================= | 36% | |================================ | 45% | |====================================== | 55% | |============================================= | 64% | |=================================================== | 73% | |========================================================= | 82% | |================================================================ | 91% | |======================================================================| 100% | | | 0% | |======================================================================| 100% Test passed 😀 > > test_that("DO.MultiDGE handles the PB_ident creation and usage", { + sce_data <- readRDS(system.file("extdata", "sce_data.rds", package = "DOtools")) + + result <- DO.MultiDGE( + sce_object = sce_data, + sample_col = "orig.ident", + method_sc = "wilcox", + annotation_col = "annotation", + ident_ctrl = "healthy" + ) + + expect_s3_class(result, "data.frame") + }) | | | 0% | |====== | 9% | |============= | 18% | |=================== | 27% | |========================= | 36% | |================================ | 45% | |====================================== | 55% | |============================================= | 64% | |=================================================== | 73% | |========================================================= | 82% | |================================================================ | 91% | |======================================================================| 100% | | | 0% | |======================================================================| 100% Test passed 😀 > > test_that("DO.MultiDGE column renaming works correctly", { + sce_data <- readRDS(system.file("extdata", "sce_data.rds", package = "DOtools")) + + result <- DO.MultiDGE( + sce_object = sce_data, + sample_col = "orig.ident", + method_sc = "wilcox", + annotation_col = "annotation", + ident_ctrl = "healthy" + ) + + sc_cols <- grep("SC_", colnames(result), value = TRUE) + expect_true(length(sc_cols) > 0) + expect_true(all(c("gene", "celltype", "condition") %in% colnames(result))) + }) | | | 0% | |====== | 9% | |============= | 18% | |=================== | 27% | |========================= | 36% | |================================ | 45% | |====================================== | 55% | |============================================= | 64% | |=================================================== | 73% | |========================================================= | 82% | |================================================================ | 91% | |======================================================================| 100% | | | 0% | |======================================================================| 100% Test passed 😀 > > test_that("DO.MultiDGE handles the left join operation correctly", { + sce_data <- readRDS(system.file("extdata", "sce_data.rds", package = "DOtools")) + + result <- DO.MultiDGE( + sce_object = sce_data, + sample_col = "orig.ident", + method_sc = "wilcox", + annotation_col = "annotation", + ident_ctrl = "healthy" + ) + + expect_s3_class(result, "data.frame") + + if (nrow(result) > 0) { + expect_false(any(is.na(result$gene))) + expect_false(any(is.na(result$celltype))) + expect_false(any(is.na(result$condition))) + } + }) | | | 0% | |====== | 9% | |============= | 18% | |=================== | 27% | |========================= | 36% | |================================ | 45% | |====================================== | 55% | |============================================= | 64% | |=================================================== | 73% | |========================================================= | 82% | |================================================================ | 91% | |======================================================================| 100% | | | 0% | |======================================================================| 100% Test passed 😀 > > test_that("DO.MultiDGE logging doesn't interfere with execution", { + sce_data <- readRDS(system.file("extdata", "sce_data.rds", package = "DOtools")) + + result <- DO.MultiDGE( + sce_object = sce_data, + sample_col = "orig.ident", + method_sc = "wilcox", + annotation_col = "annotation", + ident_ctrl = "healthy" + ) + + expect_s3_class(result, "data.frame") + }) | | | 0% | |====== | 9% | |============= | 18% | |=================== | 27% | |========================= | 36% | |================================ | 45% | |====================================== | 55% | |============================================= | 64% | |=================================================== | 73% | |========================================================= | 82% | |================================================================ | 91% | |======================================================================| 100% | | | 0% | |======================================================================| 100% Test passed 😀 > > test_that("DO.MultiDGE works with minimal parameters", { + sce_data <- readRDS(system.file("extdata", "sce_data.rds", package = "DOtools")) + + result <- DO.MultiDGE( + sce_object = sce_data, + annotation_col = "annotation", + ident_ctrl = "healthy" + ) + + expect_s3_class(result, "data.frame") + }) | | | 0% | |====== | 9% | |============= | 18% | |=================== | 27% | |========================= | 36% | |================================ | 45% | |====================================== | 55% | |============================================= | 64% | |=================================================== | 73% | |========================================================= | 82% | |================================================================ | 91% | |======================================================================| 100% | | | 0% | |======================================================================| 100% Test passed 😀 > > test_that("DO.MultiDGE pseudo-bulk aggregation works", { + sce_data <- readRDS(system.file("extdata", "sce_data.rds", package = "DOtools")) + + result <- DO.MultiDGE( + sce_object = sce_data, + sample_col = "orig.ident", + method_sc = "wilcox", + annotation_col = "annotation", + ident_ctrl = "healthy" + ) + + expect_s3_class(result, "data.frame") + }) | | | 0% | |====== | 9% | |============= | 18% | |=================== | 27% | |========================= | 36% | |================================ | 45% | |====================================== | 55% | |============================================= | 64% | |=================================================== | 73% | |========================================================= | 82% | |================================================================ | 91% | |======================================================================| 100% | | | 0% | |======================================================================| 100% Test passed 😀 > > # TESTS FOR SPECIFIC FUNCTIONAL PATHS THAT ARE SAFE > > test_that("DO.MultiDGE handles the AggregateExpression pathway", { + sce_data <- readRDS(system.file("extdata", "sce_data.rds", package = "DOtools")) + + # This tests the pseudo-bulk creation without triggering empty results + result <- DO.MultiDGE( + sce_object = sce_data, + sample_col = "orig.ident", # This is critical for aggregation + method_sc = "wilcox", + annotation_col = "annotation", + ident_ctrl = "healthy" + ) + + expect_s3_class(result, "data.frame") + }) | | | 0% | |====== | 9% | |============= | 18% | |=================== | 27% | |========================= | 36% | |================================ | 45% | |====================================== | 55% | |============================================= | 64% | |=================================================== | 73% | |========================================================= | 82% | |================================================================ | 91% | |======================================================================| 100% | | | 0% | |======================================================================| 100% Test passed 😀 > > test_that("DO.MultiDGE handles annotation name consistency check", { + sce_data <- readRDS(system.file("extdata", "sce_data.rds", package = "DOtools")) + + # This tests the annotation name consistency logic + result <- DO.MultiDGE( + sce_object = sce_data, + sample_col = "orig.ident", + method_sc = "wilcox", + annotation_col = "annotation", # Use standard annotation column + ident_ctrl = "healthy" + ) + + expect_s3_class(result, "data.frame") + }) | | | 0% | |====== | 9% | |============= | 18% | |=================== | 27% | |========================= | 36% | |================================ | 45% | |====================================== | 55% | |============================================= | 64% | |=================================================== | 73% | |========================================================= | 82% | |================================================================ | 91% | |======================================================================| 100% | | | 0% | |======================================================================| 100% Test passed 😀 > > test_that("DO.MultiDGE handles the comparison loop structure", { + sce_data <- readRDS(system.file("extdata", "sce_data.rds", package = "DOtools")) + + # Test with a control condition that exists + result <- DO.MultiDGE( + sce_object = sce_data, + sample_col = "orig.ident", + method_sc = "wilcox", + annotation_col = "annotation", + ident_ctrl = "healthy" + ) + + # handle the comparison loops without error + expect_s3_class(result, "data.frame") + }) | | | 0% | |====== | 9% | |============= | 18% | |=================== | 27% | |========================= | 36% | |================================ | 45% | |====================================== | 55% | |============================================= | 64% | |=================================================== | 73% | |========================================================= | 82% | |================================================================ | 91% | |======================================================================| 100% | | | 0% | |======================================================================| 100% Test passed 😀 > > test_that("DO.MultiDGE handles the cell count validation", { + sce_data <- readRDS(system.file("extdata", "sce_data.rds", package = "DOtools")) + + # Test with reasonable min_cells_group + result <- DO.MultiDGE( + sce_object = sce_data, + sample_col = "orig.ident", + method_sc = "wilcox", + annotation_col = "annotation", + ident_ctrl = "healthy", + min_cells_group = 3 # Default value + ) + + expect_s3_class(result, "data.frame") + }) | | | 0% | |====== | 9% | |============= | 18% | |=================== | 27% | |========================= | 36% | |================================ | 45% | |====================================== | 55% | |============================================= | 64% | |=================================================== | 73% | |========================================================= | 82% | |================================================================ | 91% | |======================================================================| 100% | | | 0% | |======================================================================| 100% Test passed 😀 > > test_that("DO.MultiDGE handles the result collection and merging", { + sce_data <- readRDS(system.file("extdata", "sce_data.rds", package = "DOtools")) + + result <- DO.MultiDGE( + sce_object = sce_data, + sample_col = "orig.ident", + method_sc = "wilcox", + annotation_col = "annotation", + ident_ctrl = "healthy" + ) + + # Test the final merged result structure + expect_s3_class(result, "data.frame") + if (nrow(result) > 0) { + # key columns for the merge + expect_true(all(c("gene", "celltype", "condition") %in% colnames(result))) + } + }) | | | 0% | |====== | 9% | |============= | 18% | |=================== | 27% | |========================= | 36% | |================================ | 45% | |====================================== | 55% | |============================================= | 64% | |=================================================== | 73% | |========================================================= | 82% | |================================================================ | 91% | |======================================================================| 100% | | | 0% | |======================================================================| 100% Test passed 😀 > > # TEST FOR THE DESeq2 PSEUDO-BULK PATHWAY > test_that("DO.MultiDGE DESeq2 pseudo-bulk analysis completes", { + sce_data <- readRDS(system.file("extdata", "sce_data.rds", package = "DOtools")) + + result <- DO.MultiDGE( + sce_object = sce_data, + sample_col = "orig.ident", # Required for pseudo-bulk + method_sc = "wilcox", + annotation_col = "annotation", + ident_ctrl = "healthy" + ) + + # should complete the DESeq2 pseudo-bulk pathway + expect_s3_class(result, "data.frame") + }) | | | 0% | |====== | 9% | |============= | 18% | |=================== | 27% | |========================= | 36% | |================================ | 45% | |====================================== | 55% | |============================================= | 64% | |=================================================== | 73% | |========================================================= | 82% | |================================================================ | 91% | |======================================================================| 100% | | | 0% | |======================================================================| 100% Test passed 😀 > > # TEST FOR THE SINGLE-CELL ANALYSIS PATHWAY > test_that("DO.MultiDGE single-cell analysis completes", { + sce_data <- readRDS(system.file("extdata", "sce_data.rds", package = "DOtools")) + + result <- DO.MultiDGE( + sce_object = sce_data, + sample_col = "orig.ident", + method_sc = "wilcox", + annotation_col = "annotation", + ident_ctrl = "healthy" + ) + + # Should complete single-cell analysis pathway + expect_s3_class(result, "data.frame") + expect_true(any(grepl("SC_wilcox", colnames(result)))) + }) | | | 0% | |====== | 9% | |============= | 18% | |=================== | 27% | |========================= | 36% | |================================ | 45% | |====================================== | 55% | |============================================= | 64% | |=================================================== | 73% | |========================================================= | 82% | |================================================================ | 91% | |======================================================================| 100% | | | 0% | |======================================================================| 100% Test passed 😀 > > # COMPREHENSIVE TEST COVERING MULTIPLE PARAMETERS > test_that("DO.MultiDGE comprehensive parameter test", { + sce_data <- readRDS(system.file("extdata", "sce_data.rds", package = "DOtools")) + + # Test multiple parameter combinations that are known to work + test_combinations <- list( + list(method_sc = "wilcox", only_pos = FALSE), + list(method_sc = "wilcox", only_pos = TRUE), + list(method_sc = "t", only_pos = FALSE) + ) + + for (params in test_combinations) { + result <- DO.MultiDGE( + sce_object = sce_data, + sample_col = "orig.ident", + method_sc = params$method_sc, + annotation_col = "annotation", + ident_ctrl = "healthy", + only_pos = params$only_pos + ) + + expect_s3_class(result, "data.frame") + if (nrow(result) > 0) { + expect_true(any(grepl(paste0("SC_", params$method_sc), colnames(result)))) + } + } + }) | | | 0% | |====== | 9% | |============= | 18% | |=================== | 27% | |========================= | 36% | |================================ | 45% | |====================================== | 55% | |============================================= | 64% | |=================================================== | 73% | |========================================================= | 82% | |================================================================ | 91% | |======================================================================| 100% | | | 0% | |======================================================================| 100% | | | 0% | |====== | 9% | |============= | 18% | |=================== | 27% | |========================= | 36% | |================================ | 45% | |====================================== | 55% | |============================================= | 64% | |=================================================== | 73% | |========================================================= | 82% | |================================================================ | 91% | |======================================================================| 100% | | | 0% | |======================================================================| 100% | | | 0% | |====== | 9% | |============= | 18% | |=================== | 27% | |========================= | 36% | |================================ | 45% | |====================================== | 55% | |============================================= | 64% | |=================================================== | 73% | |========================================================= | 82% | |================================================================ | 91% | |======================================================================| 100% | | | 0% | |======================================================================| 100% Test passed 😀 > > proc.time() user system elapsed 173.613 1.561 175.166
DOtools.Rcheck/tests/test-DO.scVI.Rout.fail
R version 4.5.1 Patched (2025-08-23 r88802) -- "Great Square Root" Copyright (C) 2025 The R Foundation for Statistical Computing Platform: x86_64-pc-linux-gnu R is free software and comes with ABSOLUTELY NO WARRANTY. You are welcome to redistribute it under certain conditions. Type 'license()' or 'licence()' for distribution details. R is a collaborative project with many contributors. Type 'contributors()' for more information and 'citation()' on how to cite R or R packages in publications. Type 'demo()' for some demos, 'help()' for on-line help, or 'help.start()' for an HTML browser interface to help. Type 'q()' to quit R. > library(testthat) > library(mockery) > library(Seurat) Loading required package: SeuratObject Loading required package: sp Attaching package: 'SeuratObject' The following objects are masked from 'package:base': intersect, t > library(SingleCellExperiment) Loading required package: SummarizedExperiment Loading required package: MatrixGenerics Loading required package: matrixStats Attaching package: 'MatrixGenerics' The following objects are masked from 'package:matrixStats': colAlls, colAnyNAs, colAnys, colAvgsPerRowSet, colCollapse, colCounts, colCummaxs, colCummins, colCumprods, colCumsums, colDiffs, colIQRDiffs, colIQRs, colLogSumExps, colMadDiffs, colMads, colMaxs, colMeans2, colMedians, colMins, colOrderStats, colProds, colQuantiles, colRanges, colRanks, colSdDiffs, colSds, colSums2, colTabulates, colVarDiffs, colVars, colWeightedMads, colWeightedMeans, colWeightedMedians, colWeightedSds, colWeightedVars, rowAlls, rowAnyNAs, rowAnys, rowAvgsPerColSet, rowCollapse, rowCounts, rowCummaxs, rowCummins, rowCumprods, rowCumsums, rowDiffs, rowIQRDiffs, rowIQRs, rowLogSumExps, rowMadDiffs, rowMads, rowMaxs, rowMeans2, rowMedians, rowMins, rowOrderStats, rowProds, rowQuantiles, rowRanges, rowRanks, rowSdDiffs, rowSds, rowSums2, rowTabulates, rowVarDiffs, rowVars, rowWeightedMads, rowWeightedMeans, rowWeightedMedians, rowWeightedSds, rowWeightedVars Loading required package: GenomicRanges Loading required package: stats4 Loading required package: BiocGenerics Loading required package: generics Attaching package: 'generics' The following objects are masked from 'package:base': as.difftime, as.factor, as.ordered, intersect, is.element, setdiff, setequal, union Attaching package: 'BiocGenerics' The following objects are masked from 'package:stats': IQR, mad, sd, var, xtabs The following objects are masked from 'package:base': Filter, Find, Map, Position, Reduce, anyDuplicated, aperm, append, as.data.frame, basename, cbind, colnames, dirname, do.call, duplicated, eval, evalq, get, grep, grepl, is.unsorted, lapply, mapply, match, mget, order, paste, pmax, pmax.int, pmin, pmin.int, rank, rbind, rownames, sapply, saveRDS, table, tapply, unique, unsplit, which.max, which.min Loading required package: S4Vectors Attaching package: 'S4Vectors' The following object is masked from 'package:utils': findMatches The following objects are masked from 'package:base': I, expand.grid, unname Loading required package: IRanges Attaching package: 'IRanges' The following object is masked from 'package:sp': %over% Loading required package: Seqinfo Loading required package: Biobase Welcome to Bioconductor Vignettes contain introductory material; view with 'browseVignettes()'. To cite Bioconductor, see 'citation("Biobase")', and for packages 'citation("pkgname")'. Attaching package: 'Biobase' The following object is masked from 'package:MatrixGenerics': rowMedians The following objects are masked from 'package:matrixStats': anyMissing, rowMedians Attaching package: 'SummarizedExperiment' The following object is masked from 'package:Seurat': Assays The following object is masked from 'package:SeuratObject': Assays > library(Matrix) Attaching package: 'Matrix' The following object is masked from 'package:S4Vectors': expand > > SCE_obj <- readRDS( + system.file("extdata", + "sce_data.rds", + package = "DOtools") + ) > > # ------------------------------ > # Improved Helper functions for test objects > # ------------------------------ > setup_minimal_seurat <- function() { + set.seed(42) + counts_matrix <- as( + matrix(rpois(20*10, lambda = 10), nrow = 20, ncol = 10), "dgCMatrix" + ) + rownames(counts_matrix) <- paste0("Gene", 1:20) + colnames(counts_matrix) <- paste0("Cell", 1:10) + + seurat_obj <- CreateSeuratObject(counts = counts_matrix) + seurat_obj <- NormalizeData(seurat_obj, verbose = FALSE) + seurat_obj <- ScaleData(seurat_obj, verbose = FALSE) + + seurat_obj$orig.ident <- rep(c("A", "B"), each = 5) + VariableFeatures(seurat_obj) <- rownames(seurat_obj)[1:10] + seurat_obj + } > > setup_minimal_sce <- function() { + set.seed(42) + counts_matrix <- as( + matrix(rpois(20*10, lambda = 10), nrow = 20, ncol = 10), "dgCMatrix" + ) + rownames(counts_matrix) <- paste0("Gene", 1:20) + colnames(counts_matrix) <- paste0("Cell", 1:10) + + sce <- SingleCellExperiment( + assays = list( + counts = counts_matrix, + logcounts = log1p(counts_matrix) + ) + ) + colData(sce)$orig.ident <- rep(c("A", "B"), each = 5) + sce + } > > # Global mock for basiliskRun to avoid Python execution > mock_basilisk_run <- function(env, fun, args) { + # Return a simple matrix as the scVI embedding + embedding <- matrix( + runif(ncol(args$sce_object) * 5), nrow = ncol(args$sce_object), ncol = 5 + ) + rownames(embedding) <- colnames(args$sce_object) + embedding + } > > # ------------------------------ > # Enhanced Tests with Real Data > # ------------------------------ > > test_that("DO.scVI works with real SCE data", { + skip_if_not(exists("SCE_obj"), "Real SCE data not available") + + # Ensure the object has the required structure + expect_s4_class(SCE_obj, "SingleCellExperiment") + expect_true("counts" %in% assayNames(SCE_obj)) + + # Add batch information if not present + if (!"orig.ident" %in% colnames(colData(SCE_obj))) { + colData(SCE_obj)$orig.ident <- rep(c("A", "B"), length.out = ncol(SCE_obj)) + } + + mock_as_seurat <- function(x) { + # Create a minimal Seurat object that mimics conversion from real SCE + counts_matrix <- assay(x, "counts") + seurat_obj <- CreateSeuratObject(counts = counts_matrix) + seurat_obj <- NormalizeData(seurat_obj, verbose = FALSE) + VariableFeatures(seurat_obj) <- + rownames(seurat_obj)[1:min(2000, nrow(seurat_obj))] + seurat_obj$orig.ident <- colData(x)$orig.ident + seurat_obj + } + + testthat::with_mocked_bindings( + basiliskRun = mock_basilisk_run, + code = { + mockery::stub(DO.scVI, "as.Seurat", mock_as_seurat) + result <- DO.scVI(SCE_obj, batch_key = "orig.ident") + }, + .package = "basilisk" + ) + + expect_s4_class(result, "SingleCellExperiment") + expect_true("scVI" %in% reducedDimNames(result)) + }) ── Error: DO.scVI works with real SCE data ───────────────────────────────────── Error in `eval(code, test_env)`: object 'DO.scVI' not found Backtrace: ▆ 1. ├─testthat::with_mocked_bindings(...) 2. └─mockery::stub(DO.scVI, "as.Seurat", mock_as_seurat) 3. └─mockery:::build_function_tree(test_env, where, where_name, depth) Error: ! Test failed Backtrace: ▆ 1. ├─testthat::test_that(...) 2. │ └─withr (local) `<fn>`() 3. └─reporter$stop_if_needed() 4. └─rlang::abort("Test failed", call = NULL) Execution halted
DOtools.Rcheck/tests/test-DO.SplitBarGSEA.Rout.fail
R version 4.5.1 Patched (2025-08-23 r88802) -- "Great Square Root" Copyright (C) 2025 The R Foundation for Statistical Computing Platform: x86_64-pc-linux-gnu R is free software and comes with ABSOLUTELY NO WARRANTY. You are welcome to redistribute it under certain conditions. Type 'license()' or 'licence()' for distribution details. R is a collaborative project with many contributors. Type 'contributors()' for more information and 'citation()' on how to cite R or R packages in publications. Type 'demo()' for some demos, 'help()' for on-line help, or 'help.start()' for an HTML browser interface to help. Type 'q()' to quit R. > library(testthat) > library(DOtools) > > test_that("DO.SplitBarGSEA executes successfully on mock GSEA data", { + set.seed(123) + + # Create a mock GSEA data frame with proper structure + df_GSEA <- data.frame( + Term = paste0("GO_Term_", 1:20), + Combined.Score = runif(20, 1, 10), + State = rep(c("enriched", "depleted"), 10), + celltype = rep(c("CT1", "CT2"), each = 10), + stringsAsFactors = FALSE + ) + + # Test that the function runs without errors + expect_error( + suppressMessages({ + DO.SplitBarGSEA( + df_GSEA = df_GSEA, + term_col = "Term", + col_split = "Combined.Score", + cond_col = "State", + pos_cond = "enriched", + cutoff = 30, + log10_transform = FALSE, + figsize = c(8,6), + topN = 5, + colors_pairs = c("red", "blue"), + alpha_colors = 0.5, + path = NULL, + spacing = 5, + txt_size = 10, + filename = "test.svg", + title = "Test Split Bar Plot", + showP = FALSE, + celltype = "all" + ) + }), + NA # Expect no error + ) + }) ── Failure: DO.SplitBarGSEA executes successfully on mock GSEA data ──────────── `suppressMessages(...)` threw an error. Message: Cannot open lock file: Permission denied Class: simpleError/error/condition Backtrace: ▆ 1. ├─testthat::expect_error(...) 2. │ └─testthat:::quasi_capture(...) 3. │ ├─testthat (local) .capture(...) 4. │ │ └─base::withCallingHandlers(...) 5. │ └─rlang::eval_bare(quo_get_expr(.quo), quo_get_env(.quo)) 6. ├─base::suppressMessages(...) 7. │ └─base::withCallingHandlers(...) 8. └─DOtools::DO.SplitBarGSEA(...) 9. └─basilisk::basiliskRun(...) 10. └─basilisk::basiliskStart(...) 11. └─basilisk::obtainEnvironmentPath(env) 12. └─dir.expiry::lockDirectory(envdir, exclusive = !file.exists(envpath)) 13. └─filelock::lock(plock, exclusive = FALSE) Error: ! Test failed Backtrace: ▆ 1. ├─testthat::test_that(...) 2. │ └─withr (local) `<fn>`() 3. └─reporter$stop_if_needed() 4. └─rlang::abort("Test failed", call = NULL) Execution halted
############################################################################## ############################################################################## ### ### Running command: ### ### /home/biocbuild/bbs-3.22-bioc/R/bin/R CMD check --test-dir=longtests --no-stop-on-test-error --no-codoc --no-examples --no-manual --ignore-vignettes --check-subdirs=no DOtools_0.99.11.tar.gz ### ############################################################################## ############################################################################## * using log directory ‘/home/biocbuild/bbs-3.22-bioc-longtests/meat/DOtools.Rcheck’ * using R version 4.5.1 Patched (2025-08-23 r88802) * using platform: x86_64-pc-linux-gnu * R was compiled by gcc (Ubuntu 13.3.0-6ubuntu2~24.04) 13.3.0 GNU Fortran (Ubuntu 13.3.0-6ubuntu2~24.04) 13.3.0 * running under: Ubuntu 24.04.3 LTS * using session charset: UTF-8 * using options ‘--no-codoc --no-examples --no-manual --ignore-vignettes --no-stop-on-test-error’ * checking for file ‘DOtools/DESCRIPTION’ ... OK * this is package ‘DOtools’ version ‘0.99.11’ * package encoding: UTF-8 * checking package namespace information ... OK * checking package dependencies ... INFO Imports includes 35 non-default packages. Importing from so many packages makes the package vulnerable to any of them becoming unavailable. Move as many as possible to Suggests and use conditionally. * checking if this is a source package ... OK * checking if there is a namespace ... OK * checking for hidden files and directories ... NOTE Found the following hidden files and directories: .BBSoptions These were most likely included in error. See section ‘Package structure’ in the ‘Writing R Extensions’ manual. * checking for portable file names ... WARNING Found the following files with non-portable file names: vignettes/DOtools_files/figure-html/Clustering and UMAP-1.png vignettes/DOtools_files/figure-html/Clustering and UMAP-2.png vignettes/DOtools_files/figure-html/Manual annotation-1.png vignettes/DOtools_files/figure-html/Manual annotation-2.png vignettes/DOtools_files/figure-html/cell populations-1.png These are not fully portable file names. See section ‘Package structure’ in the ‘Writing R Extensions’ manual. * checking for sufficient/correct file permissions ... OK * checking whether package ‘DOtools’ can be installed ... OK * checking installed package size ... OK * checking package directory ... OK * checking DESCRIPTION meta-information ... OK * checking top-level files ... OK * checking for left-over files ... OK * checking index information ... OK * checking package subdirectories ... OK * checking code files for non-ASCII characters ... OK * checking R files for syntax errors ... OK * checking whether the package can be loaded ... OK * checking whether the package can be loaded with stated dependencies ... OK * checking whether the package can be unloaded cleanly ... OK * checking whether the namespace can be loaded with stated dependencies ... OK * checking whether the namespace can be unloaded cleanly ... OK * checking loading without being on the library search path ... OK * checking whether startup messages can be suppressed ... OK * checking dependencies in R code ... OK * checking S3 generic/method consistency ... OK * checking replacement functions ... OK * checking foreign function calls ... OK * checking R code for possible problems ... OK * checking Rd files ... OK * checking Rd metadata ... OK * checking Rd cross-references ... OK * checking for missing documentation entries ... OK * checking for code/documentation mismatches ... SKIPPED * checking Rd \usage sections ... OK * checking Rd contents ... OK * checking for unstated dependencies in examples ... OK * checking line endings in shell scripts ... OK * checking files in ‘vignettes’ ... SKIPPED * checking examples ... SKIPPED * checking for unstated dependencies in ‘longtests’ ... OK * checking tests in ‘longtests’ ... Running ‘test-DO.BarplotWilcox.R’ Running ‘test-DO.Dotplot.R’ Running ‘test-DO.MultiDGE.R’ Running ‘test-DO.SplitBarGSEA.R’ Running ‘test-DO.scVI.R’ ERROR Running the tests in ‘longtests/test-DO.BarplotWilcox.R’ failed. Last 13 lines of output: **************************************************| ── Error: DO.BarplotWilcox returns ggplot and list correctly ─────────────────── Error in `DO.BarplotWilcox(sce_object = seurat_obj, Feature = "gene1", ListTest = list(c("A", "B")), returnValues = FALSE, ctrl.condition = "A", group.by = "condition")`: could not find function "DO.BarplotWilcox" Error: ! Test failed Backtrace: ▆ 1. ├─testthat::test_that(...) 2. │ └─withr (local) `<fn>`() 3. └─reporter$stop_if_needed() 4. └─rlang::abort("Test failed", call = NULL) Execution halted Running the tests in ‘longtests/test-DO.SplitBarGSEA.R’ failed. Last 13 lines of output: 9. └─basilisk::basiliskRun(...) 10. └─basilisk::basiliskStart(...) 11. └─basilisk::obtainEnvironmentPath(env) 12. └─dir.expiry::lockDirectory(envdir, exclusive = !file.exists(envpath)) 13. └─filelock::lock(plock, exclusive = FALSE) Error: ! Test failed Backtrace: ▆ 1. ├─testthat::test_that(...) 2. │ └─withr (local) `<fn>`() 3. └─reporter$stop_if_needed() 4. └─rlang::abort("Test failed", call = NULL) Execution halted Running the tests in ‘longtests/test-DO.scVI.R’ failed. Last 13 lines of output: Backtrace: ▆ 1. ├─testthat::with_mocked_bindings(...) 2. └─mockery::stub(DO.scVI, "as.Seurat", mock_as_seurat) 3. └─mockery:::build_function_tree(test_env, where, where_name, depth) Error: ! Test failed Backtrace: ▆ 1. ├─testthat::test_that(...) 2. │ └─withr (local) `<fn>`() 3. └─reporter$stop_if_needed() 4. └─rlang::abort("Test failed", call = NULL) Execution halted * DONE Status: 1 ERROR, 1 WARNING, 1 NOTE See ‘/home/biocbuild/bbs-3.22-bioc-longtests/meat/DOtools.Rcheck/00check.log’ for details.
DOtools.Rcheck/00install.out
* installing *source* package ‘DOtools’ ... ** this is package ‘DOtools’ version ‘0.99.11’ ** using staged installation ** R ** inst ** byte-compile and prepare package for lazy loading ** help *** installing help indices *** copying figures ** building package indices ** installing vignettes ** testing if installed package can be loaded from temporary location ** testing if installed package can be loaded from final location ** testing if installed package keeps a record of temporary installation path * DONE (DOtools)