Nothing
context("Spellchecker")
test_that("Error if not interactive", {
skip_if(interactive())
expect_error(check_spelling(rstudio = TRUE), regexp = "interactive")
})
test_that("School funding report checks out", {
expect_null(check_spelling("./SchoolFunding/SchoolFunding.tex",
known.correct = c("SRS", "SE.XPD.TOTL.GD.XS", "WDI", "SSNP", "underfunded",
"overfund[a-z]*", "NMS", "WPI", "DET", "phas", "NP",
"SATs", "ENG", "th", "stds", "RCTs", "CAGR"),
ignore.lines = 1551))
})
test_that("Check spelling of multiple input document", {
expect_error(check_spelling("./spellcheck_multi_input/spellcheck_multi_input.tex"),
regexp = "failed on above line")
})
test_that("Abbreviations", {
expect_error(check_spelling("spellcheck-abbrevs.tex"))
})
test_that("Initalisms", {
expect_null(check_spelling("./spelling/abbrev/abbrev-defd-ok.tex"))
expect_null(check_spelling("./spelling/abbrev/abbrev-defd-ok-2.tex"))
expect_equal(extract_validate_abbreviations(readLines("./spelling/abbrev/abbrev-defd-ok-stopwords.tex")),
c("QXFEoC", "AIAS"))
expect_equal(extract_validate_abbreviations(readLines("./spelling/abbrev/abbrev-plural.tex")),
c("LVR"))
})
test_that("Initialism checking doesn't fail if at start of sentence", {
expect_null(check_spelling("./spelling/abbrev/abbrev-at-line-start.tex"))
})
test_that("Add to dictionary, ignore spelling in", {
expect_error(check_spelling("./spelling/add_to_dictionary-wrong.tex"), regexp = "[Ss]pellcheck failed")
expect_error(check_spelling("./spelling/ignore_spelling_in-wrong.tex", pre_release = FALSE),
regexp = "[Ss]pellcheck failed")
expect_null(check_spelling("./spelling/add_to_dictionary-ok.tex"))
expect_null(check_spelling("./spelling/ignore_spelling_in-ok.tex", pre_release = FALSE))
expect_null(check_spelling("./spelling/ignore_spelling_in-ok-2.tex", pre_release = FALSE))
expect_error(check_spelling("./spelling/ignore_spelling_in-ok.tex"),
regexp = "pre_release = TRUE")
expect_null(check_spelling("./spelling/add_to_dictionary-ok-req-hunspell.tex",
pre_release = FALSE))
})
test_that("Ignore spelling in input", {
expect_error(check_spelling("./spelling/input/a.tex", pre_release = TRUE),
regexp = "Spellcheck failed on above line with .asofihsafioh")
expect_null(check_spelling("./spelling/input/a.tex", pre_release = FALSE))
expect_null(check_spelling("./spelling/input/b.tex", pre_release = TRUE))
})
test_that("Stop if present", {
expect_error(check_spelling("./stop_if_present/should-stop.tex"), regexp = "skillset")
expect_error(check_spelling("./stop_if_present/should-stop-2.tex"), regexp = "skillset")
expect_error(check_spelling("./stop_if_present/stop_even_if_added.tex"), regexp = "skillset")
expect_error(check_spelling("./stop_if_present_inputs/stop-if-held-in-inputs.tex"), regexp = "skillset")
expect_error(check_spelling("./stop_if_present/should-stop-3.tex"), regexp = "percent")
expect_null(check_spelling("./stop_if_present/should-not-stop.tex"))
})
test_that("Lower-case governments should error", {
expect_error(check_spelling("./spelling/Govt/NSWgovt.tex"), regexp = "uppercase G")
expect_error(check_spelling("./spelling/Govt/ACTgovt.tex"), regexp = "uppercase G")
expect_error(check_spelling("./spelling/Govt/NTgovt.tex"), regexp = "uppercase G")
expect_error(check_spelling("./spelling/Govt/Queenslandgovt.tex"), regexp = "uppercase G")
expect_error(check_spelling("./spelling/Govt/WAgovt.tex"), regexp = "uppercase G")
})
test_that("Some lower-case governments should not", {
expect_null(check_spelling("./spelling/Govt/ok-as-adj.tex"))
expect_null(check_spelling("./spelling/Govt/ok-as-adj2.tex"))
})
test_that("'percent' error should only occur in a Grattan report", {
percent_spellcheck.tex <- tempfile(fileext = ".tex")
writeLines(
text = c("\\documentclass{article}",
"\\begin{document}",
"The word percent is not invalid.",
"\\end{document}"),
con = percent_spellcheck.tex
)
expect_null(check_spelling(percent_spellcheck.tex))
})
test_that("Includepdf doesn't result in a failed include message", {
expect_null(check_spelling("./spelling/includepdf-ok.tex"))
})
test_that("Should error", {
expect_error(check_spelling("spelling/misc-error.tex"), regexp = "Spellcheck")
expect_error(check_spelling("spelling/typo-suggest.tex"), regex = "Spellcheck")
})
test_that("RStudio API", {
skip_on_cran()
skip_if_not(interactive())
expect_error(check_spelling("spelling/typo-suggest.tex", rstudio = TRUE),
regexp = "Spellcheck")
expect_false(Sys.info()['sysname'] %in% "Windows" &&
utils::readClipboard() != "Sydney")
})
test_that("Inputs should respect dict_lang at top level", {
expect_null(check_spelling("spelling/dict-lang-input/root.tex",
dict_lang = "en_US"))
})
test_that("Lonesome footcites", {
footcite.tex <- tempfile(fileext = ".tex")
writeLines(c("\\documentclass{article}",
"\\begin{document}",
"A claim.\\footnote{textcite{not-yet-cited}.}",
"\\end{document}",
""),
footcite.tex)
expect_error(check_spelling(footcite.tex), regexp = "[Ss]pellcheck")
})
test_that("Multi-ignore", {
multi.tex <- tempfile(fileext = ".tex")
writeLines(c("\\documentclass{article}",
"\\begin{document}",
"A claim.\\mymulticmd{okay}{sudifhds}{ihsodfidoshf}",
"\\end{document}",
""),
multi.tex)
expect_null(check_spelling(multi.tex, ignore_spelling_in_nth = list("mymulticmd" = 2:3)))
expect_error(check_spelling(multi.tex, ignore_spelling_in_nth = list("mymulticmd" = c(1L, 3L))),
regexp = "sudifhds")
})
test_that("Like Energy-2018-WholesaleMarketPower", {
expect_null(check_spelling("spelling/chapref/in-comments.tex",
ignore_spelling_in_nth = list(Chaprefrange = 1:2)))
})
test_that("Spellcheck verb", {
expect_null(check_spelling("spelling/verb.tex"))
})
test_that("pre-release + add to dictionary outside", {
tempfile.tex <- tempfile(fileext = ".tex")
writeLines(c("\\documentclass{article}",
"% add_to_dictionary: ok",
"\\begin{document}",
"% add_to_dictionary: notok",
"Not ok.",
"\\end{document}"),
tempfile.tex)
expect_null(check_spelling(tempfile.tex, pre_release = FALSE))
expect_error(check_spelling(tempfile.tex, pre_release = TRUE),
regexp = "When pre_release = TRUE, % add_to_dictionary: lines must not be situated outside the document preamble.",
fixed = TRUE)
})
test_that("known.correct.fixed", {
tempfile.tex <- tempfile(fileext = ".tex")
writeLines(c("\\documentclass{article}",
"% add_to_dictionary: ok",
"\\begin{document}",
"QETYY-high.",
"\\end{document}"),
tempfile.tex)
expect_null(check_spelling(tempfile.tex, pre_release = FALSE, known.correct.fixed = "QETYY"))
})
test_that("get_file_path.works", {
# Nested:
expect_equal(get_input_file_path(.path = "./nest1",
.input = "nest1/nest2/file.tex"),
"./nest1/nest2/file.tex")
# Not nested:
expect_equal(get_input_file_path(.path = "./nest1",
.input = "nest2/file.tex"),
"./nest1/nest2/file.tex")
# Not nested:
expect_equal(get_input_file_path(.path = "./nest1",
.input = "file.tex"),
"./nest1/file.tex")
})
test_that("Nested inputs", {
skip_on_cran()
temp_dir <- tempfile()
hutils::provide.dir(temp_dir)
hutils::provide.dir(file.path(temp_dir, "tex"))
hutils::provide.dir(file.path(temp_dir, "tex", "bo"))
root.tex <- file.path(temp_dir, "root.tex")
skip_if_not(file.create(root.tex))
writeLines(c("\\documentclass{article}",
"\\input{tex/preamble}",
"\\begin{document}",
"\\input{tex/a}",
"\\input{tex/b}",
"\\end{document}"),
root.tex)
writeLines(c("\\input{tex/b}",
"\\input{tex/bo/ra}",
"\\end{document}"),
file.path(temp_dir, "tex", "a.tex"))
writeLines(c("\\textbf{ok}",
"ok"),
file.path(temp_dir, "tex", "b.tex"))
writeLines(c("\\textbf{njok}",
"ok"),
file.path(temp_dir, "tex", "bo", "ra.tex"))
expect_error(check_spelling(root.tex),
regexp = "njok")
expect_null(check_spelling(root.tex, ignore_spelling_in = "textbf"))
expect_null(check_spelling(file.path(temp_dir, "tex", "a.tex"),
tex_root = temp_dir,
ignore_spelling_in = "textbf"))
})
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.