Nothing
# Disable sass cache
local_disable_cache()
assets <- normalizePath(testthat::test_path("test-assets"), mustWork = TRUE)
blue <- list(color = "blue !default")
red <- list(color = "red !default")
green <- list(color = "green !default")
core <- sass_layer(
defaults = blue,
functions = "@function my_invert($color, $amount: 100%) {
$inverse: change-color($color, $hue: hue($color) + 180);
@return mix($inverse, $color, $amount);
}",
rules = "body { background-color: $color; color: my_invert($color); }"
)
test_that("sass_layer is equivalent to sass", {
expect_equal(
sass(core),
sass(list(blue, "body { background-color: $color; color: yellow; }")),
ignore_attr = TRUE
)
})
test_that("sass layer format", {
expect_snapshot(format(core))
expect_snapshot(core)
layer1 <- sass_layer(
file_attachments = c(
file.path(assets, "a.txt")
)
)
core_extra <- sass_bundle(core, layer1)
expect_output(
print(core_extra),
"Other Sass Bundle information:"
)
})
test_that("sass_bundle() works as intended", {
red_layer <- sass_layer(red, rules = ":root{ --color: #{$color}; }")
expect_equal(
sass(list(red, core, ":root{ --color: #{$color}; }")),
sass(sass_bundle(core, red_layer)),
ignore_attr = TRUE
)
})
test_that("sass_bundle_remove() will remove all layers", {
obj <-
sass_bundle(
sass_bundle(core, red = ":root{ --color: #{$color}; }"),
green = sass_layer(green)
)
obj_slim <- sass_bundle_remove(obj, "red")
expected <- sass_bundle(core, green = sass_layer(green))
expect_identical(obj_slim, expected)
just_core <- sass_bundle_remove(obj, c("green", "red"))
only_core <- sass_bundle(core)
expect_identical(just_core, only_core)
expect_equal(
names(obj$layers),
c("", "red", "green")
)
expect_equal(
names(expected$layers),
c("", "green")
)
expect_true(is_sass_bundle(obj_slim))
expect_true(is_sass_bundle(expected))
})
test_that("additional merging features", {
layer1 <- sass_layer(
file_attachments = c(
file.path(assets, "a.txt")
)
)
layer2 <- sass_layer(
file_attachments = c(
"b/b1.txt" = file.path(assets, "b/b1.txt")
)
)
layer_merged <- as_sass_layer(sass_bundle(layer1, layer2))
expect_identical(
layer_merged$file_attachments,
c(
file.path(assets, "a.txt"),
"b/b1.txt" = file.path(assets, "b/b1.txt")
)
)
})
test_that("file attachments are written", {
layer1 <- sass_layer(
rules = "body { background-color: $body-bg; }",
file_attachments = c(
"assets/txt/a.txt" = file.path(assets, "a.txt")
)
)
input <- list(
list("body-bg" = "silver"),
layer1
)
expect_error(
sass(input, write_attachments = TRUE),
"cannot be used when output=NULL"
)
expect_warning(sass(input), NA)
tmpdir <- tempfile()
stopifnot(nzchar(tmpdir)) # Precaution because we'll `rm -rf` this later
on.exit(unlink(tmpdir, recursive = TRUE), add = TRUE)
dir.create(tmpdir)
sass(input,
output = file.path(tmpdir, "styles.css"),
write_attachments = TRUE)
expect_true(
file.exists(file.path(tmpdir, "assets/txt/a.txt"))
)
# the default for write_attachments warns if file attachments are present
expect_warning(
sass(input, output = file.path(tmpdir, "styles1.css")),
"file attachments that are being ignored"
)
# when write_attachments = FALSE, the warning is suppressed
expect_warning(
sass(input, output = file.path(tmpdir, "styles1.css"), write_attachments = FALSE),
NA
)
})
test_that("write_file_attachments edge cases", {
tmpdir <- tempfile()
stopifnot(nzchar(tmpdir)) # Precaution because we'll `rm -rf` this later
dir.create(tmpdir)
oldwd <- getwd()
setwd(tmpdir)
on.exit({
setwd(oldwd)
unlink(tmpdir, recursive = TRUE)
}, add = TRUE)
# === Failures ===========
dir.create("test0")
# Relative dest path points upward
expect_error(write_file_attachments(
c("foo/../../bar" = file.path(assets, "a.txt")),
output_path = "test0"
), "Illegal file attachment destination")
# Relative source path not allowed
expect_error(write_file_attachments(
c("test0"),
output_path = "test0"
), "must be absolute")
# File attachment must exist
expect_error(write_file_attachments(
c("a.txt" = "/weflkjwkefjeg.txt"),
output_path = "test0"
), "must exist")
# === Successes ===========
dir.create("test1")
write_file_attachments(
c(
"files/A" = file.path(assets, "a.txt"),
"files/B" = file.path(assets, "b/b1.txt"),
"C" = file.path(assets, "c")
),
"test1"
)
expect_identical(
sort(list.files("test1", all.files = TRUE, recursive = TRUE)),
c("C/c1.txt", "C/d/d1.txt", "files/A", "files/B")
)
dir.create("test2")
write_file_attachments(
c(
"a1" = file.path(assets, "a.txt"),
"a2/" = file.path(assets, "a.txt"),
file.path(assets, "b"),
"c1/" = file.path(assets, "c"),
"c2" = file.path(assets, "c"),
"c3/" = file.path(assets, "c/"),
"c4" = file.path(assets, "c/")
),
"test2"
)
expect_identical(
sort(list.files("test2", all.files = TRUE, recursive = TRUE)),
c(
"a1",
"a2/a.txt",
"b1.txt",
"c1/c1.txt", "c1/d/d1.txt",
"c2/c1.txt", "c2/d/d1.txt",
"c3/c1.txt", "c3/d/d1.txt",
"c4/c1.txt", "c4/d/d1.txt"
)
)
})
test_that("sass_layer_file() basically works", {
f <- file.path(assets, "test-layer-file.scss")
expect_snapshot(str(sass_layer_file(f)))
})
Any scripts or data that you put into this service are public.
Add the following code to your website.
For more information on customizing the embed code, read Embedding Snippets.