aboutsummaryrefslogtreecommitdiff
path: root/test/bun.js/os.test.js
diff options
context:
space:
mode:
authorGravatar Hyro <generalkubo@gmail.com> 2022-08-26 04:38:28 +0200
committerGravatar GitHub <noreply@github.com> 2022-08-25 19:38:28 -0700
commit7a734e0a28d8782de404de13362f0b822ea91c11 (patch)
treec56944346223fe9996c4144ab3ae6b85433909a1 /test/bun.js/os.test.js
parente0b35b3086b00fb27f950a72a082b360a3dad891 (diff)
downloadbun-7a734e0a28d8782de404de13362f0b822ea91c11.tar.gz
bun-7a734e0a28d8782de404de13362f0b822ea91c11.tar.zst
bun-7a734e0a28d8782de404de13362f0b822ea91c11.zip
feat: implement native os module (#1115)
* feat: implement os module * revert(bun-error): package-lock.json * feat: implement EOL * feat: implement EOL * feat: implement arch function * feat: implement homedir function * add comptime to homedir if * feat: add platform function * feat: implement type function * feat: add hostname (not sure iff works on all platforms) * chore: make requested changes * fix: change toValueGC into toValue in arch function * add EOL, devNull constant variables * fix: store only string * feat: add tests * feat: add endianness * ususe toValue for devNull & EOL * feat: implement endianness & fix release * revert javascript.zig fix * feat: implement tmpdir * feat: implement totalmem, freemem, uptime * feat: loadavg * feat: implement version * feat: add userInfo * feat: implement totalmem for macos * feat: add getPriority (not finished, waiting for dc response) * feat: finish userInfo implementation * feat: implement cpus, not done * feat: finish getPriority implementation & stats cpus() * feat: implement setPriority * reemove test.c * feat: implement constants.dlope.xn, constants.priority.x, constants.UV_UDP_REUSEADDR * feat: implement signals, errno * updated cpus function, stilldoesnt work * increase object length * feat: add t more ests * feat: add cpus() * remov some files * fix: handle empty array * started working on interface addresses (in C) ill use C++ after it work * fix interface_addresses * Improved getCpuInfo code, decreased ram usage, increased speed * getCpuTime optimizations * started working on networkInterfaces * feat: networkInterfaces implementation * delete unnecessary files * add benchs & fix code * add tests * add missing benchs * Increased buffer of getCpuInfo to 2048, it should skip few iterations * remove hardcoded constants * feat: implement errno constants * fix getWindowsErrorConstant * feat: add signal constants * feat: implement priority constants * remove duplications * fix: change value to ?i16 * fix(__defineConstant): make some parameters comptime, change value to ?i32 * fix: add E to ERRNO constants, add SIG to SIG constants * feat: add dlopen constants * change functions to private * feat: add UV_UDP_REUSEADDR * fix typo * simplify functions * rename functions in bindings * feat: implement loadavg for darwin * feat: implement system uptime * feat: implement get free memory for darwin * fix system memory bindings * feat: implement network interfaces for darwin * code cleanup * feat: support for macos version & release * some fixes * MacOS support for CpuInfo * Fixed minor mistake in getCpuInfo_B * Delete test.zig * Update c_cpp_properties.json * Update tasks.json * feat: implement scopeid * feat: implement cidr 🚀 * remove unnecesarry changes * remove unnecesarry changes * chore: requested changes Co-authored-by: Jarred Sumner <jarred@jarredsumner.com> * chore: requested changes Co-authored-by: Jarred Sumner <jarred@jarredsumner.com> * chore: requested changes Co-authored-by: Jarred Sumner <jarred@jarredsumner.com> * chore: requested changes Co-authored-by: Jarred Sumner <jarred@jarredsumner.com> * chore: requested changes Co-authored-by: Jarred Sumner <jarred@jarredsumner.com> * chore: requested changes Co-authored-by: Jarred Sumner <jarred@jarredsumner.com> * chore: requested changes Co-authored-by: Jarred Sumner <jarred@jarredsumner.com> * fix: import string * fix: change IPV6 to IPv6 * fix some things * chore: make requested changes * revert: launch.json * fix test * Fixed few memory leaks * testing * again * added len * another test * improved parsing * added small check * Bonk * FINISH 🚀🚀🚀🚀🚀🚀 * Update tasks.json * NetworkInterface test * FINISH 🚀🚀🚀 Co-authored-by: Fire-The-Fox <gajdos.jan77@gmail.com> Co-authored-by: Jarred Sumner <jarred@jarredsumner.com>
Diffstat (limited to 'test/bun.js/os.test.js')
-rw-r--r--test/bun.js/os.test.js126
1 files changed, 126 insertions, 0 deletions
diff --git a/test/bun.js/os.test.js b/test/bun.js/os.test.js
new file mode 100644
index 000000000..1ba1c89f3
--- /dev/null
+++ b/test/bun.js/os.test.js
@@ -0,0 +1,126 @@
+import { it, expect } from "bun:test";
+import * as os from "node:os";
+
+it("arch", () => {
+ expect(["x64", "x86", "arm64"].some(arch => os.arch() === arch)).toBe(true);
+});
+
+it("endianness", () => {
+ expect(/[BL]E/.test(os.endianness())).toBe(true);
+});
+
+it("freemem", () => {
+ expect(os.freemem() > 0).toBe(true);
+});
+
+it("totalmem", () => {
+ expect(os.totalmem() > 0).toBe(true);
+});
+
+it("getPriority", () => {
+ expect(os.getPriority()).toBe(0);
+ expect(os.getPriority(0)).toBe(0);
+});
+
+it("setPriority", () => {
+ expect(os.setPriority(0, 2)).toBe(undefined);
+ expect(os.getPriority()).toBe(2);
+ expect(os.setPriority(5)).toBe(undefined);
+ expect(os.getPriority()).toBe(5);
+});
+
+it("loadavg", () => {
+ expect(os.loadavg().length === 3).toBe(true);
+});
+
+it("homedir", () => {
+ expect(os.homedir() !== "unknown").toBe(true);
+});
+
+it("tmpdir", () => {
+ if (process.platform === 'win32') {
+ expect(os.tmpdir()).toBe((process.env.TEMP || process.env.TMP));
+ expect(os.tmpdir()).toBe(`${(process.env.SystemRoot || process.env.windir)}\\temp`);
+ } else {
+ expect(os.tmpdir()).toBe((process.env.TMPDIR || process.env.TMP || process.env.TEMP || "/tmp"));
+ }
+});
+
+it("hostname", () => {
+ expect(os.hostname() !== "unknown").toBe(true);
+});
+
+it("platform", () => {
+ expect(["win32", "darwin", "linux", "wasm"].some(platform => os.platform() === platform)).toBe(true);
+});
+
+it("release", () => {
+ expect(os.release().length > 1).toBe(true);
+});
+
+it("type", () => {
+ expect(["Windows_NT", "Darwin", "Linux"].some(type => os.type() === type)).toBe(true);
+});
+
+it("uptime", () => {
+ expect(os.uptime() > 0).toBe(true);
+});
+
+it("version", () => {
+ expect(typeof os.version() === "string").toBe(true);
+});
+
+it("userInfo", () => {
+ const info = os.userInfo();
+
+ if (process.platform !== 'win32') {
+ expect(info.username).toBe(process.env.USER);
+ expect(info.shell).toBe(process.env.SHELL);
+ expect(info.uid >= 0).toBe(true);
+ expect(info.gid >= 0).toBe(true);
+ } else {
+ expect(info.username).toBe(process.env.USERNAME);
+ expect(info.shell).toBe(null);
+ expect(info.uid).toBe(-1);
+ expect(info.gid).toBe(-1);
+ }
+});
+
+it("cpus", () => {
+ const cpus = os.cpus();
+
+ for (const cpu of cpus) {
+ expect(typeof cpu.model === 'string').toBe(true);
+ expect(typeof cpu.speed === 'number').toBe(true);
+ expect(typeof cpu.times.idle === 'number').toBe(true);
+ expect(typeof cpu.times.irq === 'number').toBe(true);
+ expect(typeof cpu.times.nice === 'number').toBe(true);
+ expect(typeof cpu.times.sys === 'number').toBe(true);
+ expect(typeof cpu.times.user === 'number').toBe(true);
+ }
+})
+
+it("networkInterfaces", () => {
+ const networkInterfaces = os.networkInterfaces();
+
+ for (const networkInterface of Object.values(networkInterfaces)) {
+ for (const nI of networkInterface) {
+ expect(typeof nI.address === 'string').toBe(true);
+ expect(typeof nI.netmask === 'string').toBe(true);
+ expect(typeof nI.family === 'string').toBe(true);
+ expect(typeof nI.mac === 'string').toBe(true);
+ expect(typeof nI.internal === 'boolean').toBe(true);
+ expect(nI.cidr === null).toBe(true);
+ }
+ }
+})
+
+it("EOL", () => {
+ if (process.platform === 'win32') expect(os.EOL).toBe("\\r\\n");
+ else expect(os.EOL).toBe("\\n");
+});
+
+it("devNull", () => {
+ if (process.platform === 'win32') expect(os.devNull).toBe("\\\\.\\nul");
+ else expect(os.devNull).toBe("/dev/null");
+}); \ No newline at end of file