jj/cli/tests/test_generate_md_cli_help.rs
Ilya Grigoriev 16ec185795 docs, CLI reference: use include-markdown instead of a symlink
The main goal is to avoid having a symlink in our source tree. Currently, there
is no good way to work with the `jj` repo with `jj` on Windows.  Currently `jj`
just crashes with symlinks. This is being worked on, see e.g. #2939, but it will
always depend on whether Developer Mode is enabled in Windows or whether
symlinks are materialized as text files with symlinks. Finally, MkDocs has
trouble following symlinks on Windows, so building docs wouldn't work there.

Another advantage is that, previously, we were lucky that MkDocs treats `insta`
header in `cli-reference@.md.snap` as a Markdown header and follows symlinks at
all. Now, we no longer depend on that.
2024-02-12 10:28:09 -08:00

45 lines
1.8 KiB
Rust

// Copyright 2024 The Jujutsu Authors
//
// Licensed under the Apache License, Version 2.0 (the "License");
// you may not use this file except in compliance with the License.
// You may obtain a copy of the License at
//
// https://www.apache.org/licenses/LICENSE-2.0
//
// Unless required by applicable law or agreed to in writing, software
// distributed under the License is distributed on an "AS IS" BASIS,
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
// See the License for the specific language governing permissions and
// limitations under the License.
use insta::assert_snapshot;
use crate::common::TestEnvironment;
const PREAMBLE: &str = r#"
<!-- BEGIN MARKDOWN-->
"#;
#[test]
fn test_generate_markdown_docs_in_docs_dir() {
let test_env = TestEnvironment::default();
let mut markdown_help = PREAMBLE.to_string();
markdown_help
.push_str(&test_env.jj_cmd_success(test_env.env_root(), &["util", "markdown-help"]));
// Validate partial snapshot, redacting any lines nested 2+ indent levels.
insta::with_settings!({
snapshot_path => ".",
snapshot_suffix => ".md",
prepend_module_to_snapshot => false,
omit_expression => true,
description => "AUTO-GENERATED FILE, DO NOT EDIT. This cli reference is generated as an \
`insta` snapshot. MkDocs follows they symlink from docs/cli-reference.md \
to the snap. Unfortunately, `insta` unavoidably creates this header. Luckily, \
MkDocs ignores the header since it has the same format as Markdown headers. \
TODO: MkDocs may fail on Windows if symlinks are not enabled in the OS \
settings",
},
{ assert_snapshot!("cli-reference", markdown_help) });
}