import { describe } from "bun:test"; import { createTestBuilder } from "../test_builder"; const TestBuilder = createTestBuilder(import.meta.path); describe("seq", async () => { TestBuilder.command`seq` .exitCode(1) .stdout("") .stderr("usage: seq [-w] [-f format] [-s string] [-t string] [first [incr]] last\n") .runAsTest("prints usage"); TestBuilder.command`seq -s` .exitCode(1) .stdout("") .stderr("seq: option requires an argument -- s\n") .runAsTest("tests -s"); TestBuilder.command`seq -t` .exitCode(1) .stdout("") .stderr("seq: option requires an argument -- t\n") .runAsTest("tests -s"); TestBuilder.command`seq 0 5`.exitCode(0).stdout("0\n1\n2\n3\n4\n5\n").stderr("").runAsTest("works basic up"); TestBuilder.command`seq 5 0`.exitCode(0).stdout("5\n4\n3\n2\n1\n0\n").stderr("").runAsTest("works basic down"); TestBuilder.command`seq -s, 0 5`.exitCode(0).stdout("0,1,2,3,4,5,").stderr("").runAsTest("-s works inline"); TestBuilder.command`seq -s , 0 5`.exitCode(0).stdout("0,1,2,3,4,5,").stderr("").runAsTest("-s works separate"); TestBuilder.command`seq --separator , 0 5` .exitCode(0) .stdout("0,1,2,3,4,5,") .stderr("") .runAsTest("--separator works"); TestBuilder.command`seq -t, 0 5`.exitCode(0).stdout("0\n1\n2\n3\n4\n5\n,").stderr("").runAsTest("-t works inline"); TestBuilder.command`seq -t , 0 5`.exitCode(0).stdout("0\n1\n2\n3\n4\n5\n,").stderr("").runAsTest("-t works separate"); TestBuilder.command`seq --terminator , 0 5` .exitCode(0) .stdout("0\n1\n2\n3\n4\n5\n,") .stderr("") .runAsTest("--terminator works"); TestBuilder.command`seq -s. -t, 0 5` .exitCode(0) .stdout("0.1.2.3.4.5.,") .stderr("") .runAsTest("-s and -t work together"); TestBuilder.command`seq 0`.exitCode(0).stdout("1\n0\n").stderr("").runAsTest("seq 0"); TestBuilder.command`seq 1`.exitCode(0).stdout("1\n").stderr("").runAsTest("seq 1"); TestBuilder.command`seq 2`.exitCode(0).stdout("1\n2\n").stderr("").runAsTest("seq 2"); TestBuilder.command`seq 8 8`.exitCode(0).stdout("8\n").stderr("").runAsTest("same start and end"); TestBuilder.command`seq ab`.exitCode(1).stdout("").stderr("seq: invalid argument\n").runAsTest("invalid arg 1"); TestBuilder.command`seq 4 ab`.exitCode(1).stdout("").stderr("seq: invalid argument\n").runAsTest("invalid arg 2"); TestBuilder.command`seq 4 7 ba`.exitCode(1).stdout("").stderr("seq: invalid argument\n").runAsTest("invalid arg 3"); TestBuilder.command`seq 4 0 7`.exitCode(1).stdout("").stderr("seq: zero increment\n").runAsTest("zero increment"); TestBuilder.command`seq 4 -2 7` .exitCode(1) .stdout("") .stderr("seq: needs positive increment\n") .runAsTest("needs positive increment"); TestBuilder.command`seq 7 2 4` .exitCode(1) .stdout("") .stderr("seq: needs negative decrement\n") .runAsTest("needs negative decrement"); }); describe("seq without stdout", async () => { TestBuilder.command`echo $(seq 0 5)` .exitCode(0) .stdout("0 1 2 3 4 5\n") .stderr("") .runAsTest("works basic up without stdout"); TestBuilder.command`echo $(seq 5 0)` .exitCode(0) .stdout("5 4 3 2 1 0\n") .stderr("") .runAsTest("works basic down without stdout"); });