diff options
author | 2022-08-26 04:38:28 +0200 | |
---|---|---|
committer | 2022-08-25 19:38:28 -0700 | |
commit | 7a734e0a28d8782de404de13362f0b822ea91c11 (patch) | |
tree | c56944346223fe9996c4144ab3ae6b85433909a1 /test/bun.js/os.test.js | |
parent | e0b35b3086b00fb27f950a72a082b360a3dad891 (diff) | |
download | bun-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.js | 126 |
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 |