mirror of
https://github.com/denoland/deno.git
synced 2025-01-21 04:52:26 -05:00
Compare commits
7 commits
787ee8340c
...
5137cdfc20
Author | SHA1 | Date | |
---|---|---|---|
|
5137cdfc20 | ||
|
e4a16e91fa | ||
|
e250b23b73 | ||
|
27adf4c797 | ||
|
485877eaeb | ||
|
8d195e4d97 | ||
|
a75cd2a9d6 |
10 changed files with 92 additions and 6 deletions
|
@ -6,8 +6,8 @@
|
|||
|
||||
<img align="right" src="https://deno.land/logo.svg" height="150px" alt="the deno mascot dinosaur standing in the rain">
|
||||
|
||||
[Deno](https://www.deno.com)
|
||||
([/ˈdiːnoʊ/](http://ipa-reader.xyz/?text=%CB%88di%CB%90no%CA%8A), pronounced
|
||||
[Deno](https://deno.com)
|
||||
([/ˈdiːnoʊ/](https://ipa-reader.com/?text=%CB%88di%CB%90no%CA%8A), pronounced
|
||||
`dee-no`) is a JavaScript, TypeScript, and WebAssembly runtime with secure
|
||||
defaults and a great developer experience. It's built on [V8](https://v8.dev/),
|
||||
[Rust](https://www.rust-lang.org/), and [Tokio](https://tokio.rs/).
|
||||
|
|
|
@ -5,6 +5,7 @@
|
|||
|
||||
import { CallbackWithError } from "ext:deno_node/_fs/_fs_common.ts";
|
||||
import { FsFile } from "ext:deno_fs/30_fs.js";
|
||||
import { promisify } from "ext:deno_node/internal/util.mjs";
|
||||
|
||||
export function fdatasync(
|
||||
fd: number,
|
||||
|
@ -19,3 +20,7 @@ export function fdatasync(
|
|||
export function fdatasyncSync(fd: number) {
|
||||
new FsFile(fd, Symbol.for("Deno.internal.FsFile")).syncDataSync();
|
||||
}
|
||||
|
||||
export const fdatasyncPromise = promisify(fdatasync) as (
|
||||
fd: number,
|
||||
) => Promise<void>;
|
||||
|
|
|
@ -5,6 +5,7 @@
|
|||
|
||||
import { CallbackWithError } from "ext:deno_node/_fs/_fs_common.ts";
|
||||
import { FsFile } from "ext:deno_fs/30_fs.js";
|
||||
import { promisify } from "ext:deno_node/internal/util.mjs";
|
||||
|
||||
export function fsync(
|
||||
fd: number,
|
||||
|
@ -19,3 +20,5 @@ export function fsync(
|
|||
export function fsyncSync(fd: number) {
|
||||
new FsFile(fd, Symbol.for("Deno.internal.FsFile")).syncSync();
|
||||
}
|
||||
|
||||
export const fsyncPromise = promisify(fsync) as (fd: number) => Promise<void>;
|
||||
|
|
|
@ -16,6 +16,8 @@ import {
|
|||
import { ftruncatePromise } from "ext:deno_node/_fs/_fs_ftruncate.ts";
|
||||
export type { BigIntStats, Stats } from "ext:deno_node/_fs/_fs_stat.ts";
|
||||
import { writevPromise, WriteVResult } from "ext:deno_node/_fs/_fs_writev.ts";
|
||||
import { fdatasyncPromise } from "ext:deno_node/_fs/_fs_fdatasync.ts";
|
||||
import { fsyncPromise } from "ext:deno_node/_fs/_fs_fsync.ts";
|
||||
|
||||
interface WriteResult {
|
||||
bytesWritten: number;
|
||||
|
@ -158,6 +160,14 @@ export class FileHandle extends EventEmitter {
|
|||
return promises.chmod(this.#path, mode);
|
||||
}
|
||||
|
||||
datasync(): Promise<void> {
|
||||
return fsCall(fdatasyncPromise, this);
|
||||
}
|
||||
|
||||
sync(): Promise<void> {
|
||||
return fsCall(fsyncPromise, this);
|
||||
}
|
||||
|
||||
utimes(
|
||||
atime: number | string | Date,
|
||||
mtime: number | string | Date,
|
||||
|
|
|
@ -2,6 +2,7 @@
|
|||
"ignore": {
|
||||
"common": ["index.js", "internet.js"],
|
||||
"fixtures": [
|
||||
"baz.js",
|
||||
"child-process-spawn-node.js",
|
||||
"echo.js",
|
||||
"elipses.txt",
|
||||
|
@ -480,6 +481,7 @@
|
|||
"test-fs-opendir.js",
|
||||
"test-fs-promises-exists.js",
|
||||
"test-fs-promises-file-handle-stat.js",
|
||||
"test-fs-promises-file-handle-sync.js",
|
||||
"test-fs-promises-file-handle-write.js",
|
||||
"test-fs-promises-readfile-empty.js",
|
||||
"test-fs-promises-readfile-with-fd.js",
|
||||
|
|
|
@ -1,7 +1,7 @@
|
|||
<!-- deno-fmt-ignore-file -->
|
||||
# Remaining Node Tests
|
||||
|
||||
1152 tests out of 3681 have been ported from Node 20.11.1 (31.30% ported, 69.22% remaining).
|
||||
1154 tests out of 3681 have been ported from Node 20.11.1 (31.35% ported, 69.19% remaining).
|
||||
|
||||
NOTE: This file should not be manually edited. Please edit `tests/node_compat/config.json` and run `deno task setup` in `tests/node_compat/runner` dir instead.
|
||||
|
||||
|
@ -673,7 +673,6 @@ NOTE: This file should not be manually edited. Please edit `tests/node_compat/co
|
|||
- [parallel/test-fs-promises-file-handle-read.js](https://github.com/nodejs/node/tree/v20.11.1/test/parallel/test-fs-promises-file-handle-read.js)
|
||||
- [parallel/test-fs-promises-file-handle-readFile.js](https://github.com/nodejs/node/tree/v20.11.1/test/parallel/test-fs-promises-file-handle-readFile.js)
|
||||
- [parallel/test-fs-promises-file-handle-stream.js](https://github.com/nodejs/node/tree/v20.11.1/test/parallel/test-fs-promises-file-handle-stream.js)
|
||||
- [parallel/test-fs-promises-file-handle-sync.js](https://github.com/nodejs/node/tree/v20.11.1/test/parallel/test-fs-promises-file-handle-sync.js)
|
||||
- [parallel/test-fs-promises-file-handle-truncate.js](https://github.com/nodejs/node/tree/v20.11.1/test/parallel/test-fs-promises-file-handle-truncate.js)
|
||||
- [parallel/test-fs-promises-file-handle-writeFile.js](https://github.com/nodejs/node/tree/v20.11.1/test/parallel/test-fs-promises-file-handle-writeFile.js)
|
||||
- [parallel/test-fs-promises-readfile.js](https://github.com/nodejs/node/tree/v20.11.1/test/parallel/test-fs-promises-readfile.js)
|
||||
|
|
8
tests/node_compat/test/fixtures/baz.js
vendored
Normal file
8
tests/node_compat/test/fixtures/baz.js
vendored
Normal file
|
@ -0,0 +1,8 @@
|
|||
// deno-fmt-ignore-file
|
||||
// deno-lint-ignore-file
|
||||
|
||||
// Copyright Joyent and Node contributors. All rights reserved. MIT license.
|
||||
// Taken from Node 20.11.1
|
||||
// This file is automatically generated by `tests/node_compat/runner/setup.ts`. Do not modify this file manually.
|
||||
|
||||
module.exports = 'perhaps I work';
|
|
@ -0,0 +1,42 @@
|
|||
// deno-fmt-ignore-file
|
||||
// deno-lint-ignore-file
|
||||
|
||||
// Copyright Joyent and Node contributors. All rights reserved. MIT license.
|
||||
// Taken from Node 20.11.1
|
||||
// This file is automatically generated by `tests/node_compat/runner/setup.ts`. Do not modify this file manually.
|
||||
|
||||
'use strict';
|
||||
require('../common');
|
||||
const assert = require('assert');
|
||||
const fixtures = require('../common/fixtures');
|
||||
const tmpdir = require('../common/tmpdir');
|
||||
|
||||
const { access, copyFile, open } = require('fs').promises;
|
||||
|
||||
async function validate() {
|
||||
tmpdir.refresh();
|
||||
const dest = tmpdir.resolve('baz.js');
|
||||
await assert.rejects(
|
||||
copyFile(fixtures.path('baz.js'), dest, 'r'),
|
||||
{
|
||||
code: 'ERR_INVALID_ARG_TYPE',
|
||||
}
|
||||
);
|
||||
await copyFile(fixtures.path('baz.js'), dest);
|
||||
await assert.rejects(
|
||||
access(dest, 'r'),
|
||||
{ code: 'ERR_INVALID_ARG_TYPE', message: /mode/ }
|
||||
);
|
||||
await access(dest);
|
||||
const handle = await open(dest, 'r+');
|
||||
await handle.datasync();
|
||||
await handle.sync();
|
||||
const buf = Buffer.from('hello world');
|
||||
await handle.write(buf);
|
||||
const ret = await handle.read(Buffer.alloc(11), 0, 11, 0);
|
||||
assert.strictEqual(ret.bytesRead, 11);
|
||||
assert.deepStrictEqual(ret.buffer, buf);
|
||||
await handle.close();
|
||||
}
|
||||
|
||||
validate();
|
|
@ -300,3 +300,20 @@ Deno.test({
|
|||
await fileHandle.close();
|
||||
},
|
||||
});
|
||||
|
||||
Deno.test({
|
||||
name:
|
||||
"[node/fs filehandle.sync] Request that all data for the open file descriptor is flushed to the storage device",
|
||||
async fn() {
|
||||
const fileHandle = await fs.open(testData, "r+");
|
||||
|
||||
await fileHandle.datasync();
|
||||
await fileHandle.sync();
|
||||
const buf = Buffer.from("hello world");
|
||||
await fileHandle.write(buf);
|
||||
const ret = await fileHandle.read(Buffer.alloc(11), 0, 11, 0);
|
||||
assertEquals(ret.bytesRead, 11);
|
||||
assertEquals(ret.buffer, buf);
|
||||
await fileHandle.close();
|
||||
},
|
||||
});
|
||||
|
|
|
@ -48,8 +48,8 @@ const packages: Package[] = [{
|
|||
|
||||
const markdownText = `# Deno
|
||||
|
||||
[Deno](https://www.deno.com)
|
||||
([/ˈdiːnoʊ/](http://ipa-reader.xyz/?text=%CB%88di%CB%90no%CA%8A), pronounced
|
||||
[Deno](https://deno.com)
|
||||
([/ˈdiːnoʊ/](https://ipa-reader.com/?text=%CB%88di%CB%90no%CA%8A), pronounced
|
||||
\`dee-no\`) is a JavaScript, TypeScript, and WebAssembly runtime with secure
|
||||
defaults and a great developer experience. It's built on [V8](https://v8.dev/),
|
||||
[Rust](https://www.rust-lang.org/), and [Tokio](https://tokio.rs/).
|
||||
|
|
Loading…
Add table
Reference in a new issue