Files
bun.sh/test/js/bun/shell/commands/seq.test.ts
2024-09-03 21:32:52 -07:00

96 lines
3.2 KiB
TypeScript

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");
});