All Projects → crisptrutski → Boot Cljs Test

crisptrutski / Boot Cljs Test

Boot task to run ClojureScript tests.

Programming Languages

clojure
4091 projects
clojurescript
191 projects

Projects that are alternatives of or similar to Boot Cljs Test

Aio Boot
AIO Boot is an All-in-One bootable software for USB and HDD. Is one of the best Multiboot USB Creator for Windows.
Stars: ✭ 300 (+466.04%)
Mutual labels:  boot
Ipxe
iPXE network bootloader
Stars: ✭ 574 (+983.02%)
Mutual labels:  boot
Pmbootstrap
Repository has been moved! https://postmarketos.org/move.html#/pmbootstrap 🚚 🚚 🚚
Stars: ✭ 1,010 (+1805.66%)
Mutual labels:  boot
Perun
Programmable static site generator built with Clojure and Boot (HELP NEEDED!)
Stars: ✭ 344 (+549.06%)
Mutual labels:  boot
Glim
GRUB Live ISO Multiboot
Stars: ✭ 452 (+752.83%)
Mutual labels:  boot
Arm now
arm_now is a qemu powered tool that allows instant setup of virtual machines on arm cpu, mips, powerpc, nios2, x86 and more, for reverse, exploit, fuzzing and programming purpose.
Stars: ✭ 719 (+1256.6%)
Mutual labels:  boot
Finit
Fast init for Linux systems. Cookies included
Stars: ✭ 293 (+452.83%)
Mutual labels:  boot
Multibootusb
Create multiboot live Linux on a USB disk...
Stars: ✭ 1,042 (+1866.04%)
Mutual labels:  boot
Stm32 Bootloader
Customizable Bootloader for STM32 microcontrollers. This example demonstrates how to perform in-application-programming of a firmware located on an external SD card with FAT32 file system.
Stars: ✭ 541 (+920.75%)
Mutual labels:  boot
Spring Boot
spring-boot 项目实践总结
Stars: ✭ 989 (+1766.04%)
Mutual labels:  boot
30daymakeos
《30天自制操作系统》源码中文版。自己制作一个操作系统(OSASK)的过程
Stars: ✭ 4,127 (+7686.79%)
Mutual labels:  boot
Krabs
An x86 bootloader written in Rust.
Stars: ✭ 413 (+679.25%)
Mutual labels:  boot
Floppybird
Floppy Bird (OS)
Stars: ✭ 836 (+1477.36%)
Mutual labels:  boot
Superboot
随着技术日新月异,新技术新平台不断出现,对现如今的开发人员来说选择快速高效的框架进行项目开发,既能提高产出,又能节约时间。本框架无需开发即可实现服务注册、服务发现、负载均衡、服务网关、配置中心、API管理、分布式事务、支撑平台、集成框架、数据传输加密等功能,是学习SpringCloud整体业务模式的完整示例,并且可以直接用于生产环境
Stars: ✭ 341 (+543.4%)
Mutual labels:  boot
Secure Boot
UEFI SecureBoot for ArchLinux
Stars: ✭ 48 (-9.43%)
Mutual labels:  boot
Opencore Vanilla Desktop Guide
Host for files for the OpenCore Vanilla Desktop Guide
Stars: ✭ 299 (+464.15%)
Mutual labels:  boot
Hackbgrt
Windows boot logo changer for UEFI systems
Stars: ✭ 693 (+1207.55%)
Mutual labels:  boot
Boot Figreload
Boot task providing live-reload using Fighweel client
Stars: ✭ 50 (-5.66%)
Mutual labels:  boot
Debootstick
Generate a bootable live image from any Debian/Ubuntu filesystem tree.
Stars: ✭ 48 (-9.43%)
Mutual labels:  boot
Mac Linux Usb Loader
Boot Linux on your Mac, easily
Stars: ✭ 854 (+1511.32%)
Mutual labels:  boot

boot-cljs-test

Boot task to make ClojureScript testing quick, easy, and consistent with testing Clojure.

Circle CI Clojars Project

[crisptrutski/boot-cljs-test "0.3.5-SNAPSHOT"] ;; latest release

Getting started

Add to build.boot and make sure the tests are added to the classpath.

(set-env! :dependencies '[[crisptrutski/boot-cljs-test "0.3.0" :scope "test"]])
(require '[crisptrutski.boot-cljs-test :refer [test-cljs]])
(deftask testing [] (merge-env! :source-paths #{"test"}) identity)

Run boot testing test-cljs

;; Testing your.awesome.foo-test
;; Testing your.spectacular.bar-test

Ran 1337 tests containing 9001 assertions.
0 failures, 0 errors

The task takes care of generating tedious runner namespaces for you!

You can also use our own runner namespaces - they will be picked up when by a matching id.

eg. boot testing test-cljs --ids="my/awesome/test_runner"

The heavy lifting of running and reporting errors is handled by the excellent Doo

There are a lot of options and conveniences, some of which are demo'd in this example project

Supported task options:

  -h, --help                 Print this help info.
  -j, --js-env VAL           VAL sets environment to execute within, eg. slimer, phantom, ...
  -n, --namespaces NS        Conj NS onto namespaces to run, supports regexes.
                             If omitted tries "*-test" then "*".
  -e, --exclusions NS        Conj NS onto namespaces to exclude, supports regexes.
  -i, --ids IDS              Conj IDS onto test runner ids. Generates each config if not found.
  -c, --cljs-opts OPTS       OPTS sets options to pass on to CLJS compiler.
  -O, --optimizations LEVEL  LEVEL sets optimization level for CLJS compiler, defaults to :none.
  -d, --doo-opts VAL         VAL sets options to pass on to Doo.
  -u, --update-fs?           Skip fileset rollback before running next task.
                             By default fileset is rolled back to support additional cljs suites, clean JARs, etc.
  -x, --exit?                Throw exception on error or inability to run tests.
  -k, --keep-errors?         Retain memory of test errors after rollback.
  -s, --symlink?             Use symlinks to copy resources and node dependencies into test output folder.
  -v, --verbosity VAL        VAL sets log level, from 0 to 3.
  -o, --out-file VAL         VAL sets DEPRECATED Output file for test script.

Getting fancy

To steal the Git terminology of "plumbing" vs "porcelain", the test-cljs task is the high level porcelain API.

The plumbing is also stable and open for business:

  1. prep-cljs-tests - generates boot-cljs edn files and test runner cljs files (if necessary)
  2. run-cljs-tests - executes a test runner
  3. report-errors! - throws if any errors were reported in upstream tests
  4. clear-errors - clears any error reports from upstream tests
  5. fs-snapshot - passes current snapshot state down pipeline as metadata
  6. fs-restore - rolls back to the snapshot passed down as metadata

These could also be referred to as the "simple" and "easy" APIs 😄

The test-cljs task (roughly speaking) composes these tasks in the obvious way:

fs-snapshot -> prep-cljs-tests -> run-cljs-tests -> report-errors -> fs-restore

If you need to support more exotic workflows, or carve out efficiency - just use these tasks directly!

Note that the project description data, including the texts, logos, images, and/or trademarks, for each open source project belongs to its rightful owner. If you wish to add or remove any projects, please contact us at [email protected].