feat(init): use jsr specifier for @std/assert (#23073)

This commit changes "deno init" subcommand to use "jsr:" specifier for
standard library "assert" module. It is unversioned, but we will change
it to `@^1` once `@std/assert` release version 1.0.

This allows us to start decoupling `deno` and `deno_std` release. The
release scripts have been updated to take that into account.
This commit is contained in:
Bartek Iwańczuk 2024-03-27 17:51:52 +00:00 committed by GitHub
parent 624e3a04e7
commit 0e4d1cb5f9
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
12 changed files with 53 additions and 36 deletions

View File

@ -1,5 +0,0 @@
// Copyright 2018-2024 the Deno authors. All rights reserved. MIT license.
// WARNING: Ensure this is the only deno_std version reference as this
// is automatically updated by the version bump workflow.
pub const CURRENT_STD_URL_STR: &str = "https://deno.land/std@0.220.0/";

View File

@ -4,7 +4,6 @@ mod args;
mod auth_tokens;
mod cache;
mod cdp;
mod deno_std;
mod emit;
mod errors;
mod factory;

View File

@ -2,7 +2,6 @@
use crate::args::InitFlags;
use crate::colors;
use crate::deno_std;
use deno_core::anyhow::Context;
use deno_core::error::AnyError;
use log::info;
@ -46,9 +45,11 @@ pub fn init_project(init_flags: InitFlags) -> Result<(), AnyError> {
let main_ts = include_str!("./templates/main.ts");
create_file(&dir, "main.ts", main_ts)?;
let main_test_ts = include_str!("./templates/main_test.ts")
.replace("{CURRENT_STD_URL}", deno_std::CURRENT_STD_URL_STR);
create_file(&dir, "main_test.ts", &main_test_ts)?;
create_file(
&dir,
"main_test.ts",
include_str!("./templates/main_test.ts"),
)?;
create_file(&dir, "deno.json", include_str!("./templates/deno.json"))?;
info!("✅ {}", colors::green("Project initialized"));

View File

@ -1,4 +1,4 @@
import { assertEquals } from "{CURRENT_STD_URL}assert/mod.ts";
import { assertEquals } from "jsr:@std/assert";
import { add } from "./main.ts";
Deno.test(function addTest() {

View File

@ -6,7 +6,7 @@ use util::TestContextBuilder;
#[test]
fn init_subcommand_without_dir() {
let context = TestContextBuilder::new().use_temp_cwd().build();
let context = TestContextBuilder::for_jsr().use_temp_cwd().build();
let cwd = context.temp_dir().path();
let output = context.new_command().args("init").split_output().run();
@ -46,7 +46,7 @@ fn init_subcommand_without_dir() {
#[test]
fn init_subcommand_with_dir_arg() {
let context = TestContextBuilder::new().use_temp_cwd().build();
let context = TestContextBuilder::for_jsr().use_temp_cwd().build();
let cwd = context.temp_dir().path();
let output = context
@ -92,7 +92,7 @@ fn init_subcommand_with_dir_arg() {
#[test]
fn init_subcommand_with_quiet_arg() {
let context = TestContextBuilder::new().use_temp_cwd().build();
let context = TestContextBuilder::for_jsr().use_temp_cwd().build();
let cwd = context.temp_dir().path();
let output = context

View File

@ -0,0 +1,9 @@
// deno-lint-ignore-file
export function assertEquals<T>(
actual: T,
expected: T,
msg?: string,
options: { formatter?: (value: unknown) => string } = {},
) {
return true;
}

View File

@ -0,0 +1,20 @@
// Copyright 2018-2024 the Deno authors. All rights reserved. MIT license.
/** A library of assertion functions.
* If the assertion is false an `AssertionError` will be thrown which will
* result in pretty-printed diff of failing assertion.
*
* This module is browser compatible, but do not rely on good formatting of
* values for AssertionError messages in browsers.
*
* ```ts
* import { assert } from "@std/assert/assert";
*
* assert("I am truthy"); // Doesn't throw
* assert(false); // Throws `AssertionError`
* ```
*
* @module
*/
export * from "./assert_equals.ts";

View File

@ -0,0 +1,6 @@
{
"exports": {
".": "./mod.ts",
"./assert_equals": "./assert_equals.ts"
}
}

View File

@ -0,0 +1,8 @@
{
"scope": "std",
"name": "assert",
"latest": "0.220.1",
"versions": {
"0.220.1": {}
}
}

View File

@ -26,10 +26,6 @@ for (const crate of workspace.getCliDependencyCrates()) {
await crate.increment("minor");
}
// update the std version used in the code
$.logStep("Updating std version...");
await updateStdVersion();
// update the lock file
await workspace.getCliCrate().cargoUpdate("--workspace");
@ -98,21 +94,6 @@ async function getGitLog() {
}
}
async function updateStdVersion() {
const compatFilePath = cliCrate.folderPath.join("deno_std.rs");
const text = await compatFilePath.readText();
const versionRe = /std@([0-9]+\.[0-9]+\.[0-9]+)/;
const stdVersionText = versionRe.exec(text)?.[1];
if (stdVersionText == null) {
throw new Error(`Could not find the deno_std version in ${compatFilePath}`);
}
const stdVersion = semver.parse(stdVersionText)!;
const newStdVersion = stdVersion.increment("minor");
await compatFilePath.writeText(
text.replace(versionRe, `std@${newStdVersion}`),
);
}
async function bumpCiCacheVersion() {
const generateScript = workspace.repo.folderPath.join(
".github/workflows/ci.generate.ts",

View File

@ -36,7 +36,6 @@ function getPrBody() {
`Please ensure:\n` +
`- [ ] Target branch is correct (\`vX.XX\` if a patch release, \`main\` if minor)\n` +
`- [ ] Crate versions are bumped correctly\n` +
`- [ ] deno_std version is incremented in the code (see \`cli/deno_std.rs\`)\n` +
`- [ ] Releases.md is updated correctly (think relevancy and remove reverts)\n\n` +
`To make edits to this PR:\n` +
"```shell\n" +

View File

@ -101,8 +101,7 @@ verify on GitHub that everything looks correct.
1. Checkout the branch the release is being made on.
2. Manually run `./tools/release/01_bump_crate_versions.ts`
1. Ensure the crate versions were bumped correctly
2. Ensure deno_std version was updated correctly in `cli/deno_std.rs`
3. Ensure `Releases.md` was updated correctly
2. Ensure `Releases.md` was updated correctly
3. Open a PR with the changes and continue with the steps below.
</details>