Add latest changes from gitlab-org/gitlab@master

This commit is contained in:
GitLab Bot 2022-10-17 06:10:33 +00:00
parent b24742b7ed
commit 7118851f02
26 changed files with 554 additions and 591 deletions

View File

@ -194,7 +194,6 @@ gem 'rouge', '~> 3.30.0'
gem 'truncato', '~> 0.7.12'
gem 'bootstrap_form', '~> 4.2.0'
gem 'nokogiri', '~> 1.13.8'
gem 'escape_utils', '~> 1.1'
# Calendar rendering
gem 'icalendar'

View File

@ -1601,7 +1601,6 @@ DEPENDENCIES
email_reply_trimmer (~> 0.1)
email_spec (~> 2.2.0)
error_tracking_open_api!
escape_utils (~> 1.1)
factory_bot_rails (~> 6.2.0)
faraday (~> 1.0)
faraday_middleware-aws-sigv4 (~> 0.3.0)

View File

@ -8,6 +8,7 @@ import { __ } from '~/locale';
import {
FILTERED_SEARCH_TERM,
FILTER_ANY,
TOKEN_TYPE_HEALTH,
} from '~/vue_shared/components/filtered_search_bar/constants';
import FilteredSearch from '~/vue_shared/components/filtered_search_bar/filtered_search_bar_root.vue';
import { AssigneeFilterType } from '~/boards/constants';
@ -55,6 +56,7 @@ export default {
myReactionEmoji,
releaseTag,
confidential,
healthStatus,
} = this.filterParams;
const filteredSearchValue = [];
@ -154,6 +156,13 @@ export default {
});
}
if (healthStatus) {
filteredSearchValue.push({
type: TOKEN_TYPE_HEALTH,
value: { data: healthStatus, operator: '=' },
});
}
if (this.filterParams['not[authorUsername]']) {
filteredSearchValue.push({
type: 'author',
@ -248,6 +257,7 @@ export default {
iterationCadenceId,
releaseTag,
confidential,
healthStatus,
} = this.filterParams;
let iteration = iterationId;
let cadence = iterationCadenceId;
@ -292,6 +302,7 @@ export default {
my_reaction_emoji: myReactionEmoji,
release_tag: releaseTag,
confidential,
[TOKEN_TYPE_HEALTH]: healthStatus,
},
(value) => {
if (value || value === false) {
@ -390,6 +401,9 @@ export default {
case 'filtered-search-term':
if (filter.value.data) plainText.push(filter.value.data);
break;
case TOKEN_TYPE_HEALTH:
filterParams.healthStatus = filter.value.data;
break;
default:
break;
}

View File

@ -86,6 +86,7 @@ function mountBoardApp(el) {
milestoneListsAvailable: parseBoolean(el.dataset.milestoneListsAvailable),
assigneeListsAvailable: parseBoolean(el.dataset.assigneeListsAvailable),
iterationListsAvailable: parseBoolean(el.dataset.iterationListsAvailable),
healthStatusFeatureAvailable: parseBoolean(el.dataset.healthStatusFeatureAvailable),
allowScopedLabels: parseBoolean(el.dataset.scopedLabels),
swimlanesFeatureAvailable: gon.licensed_features?.swimlanes,
multipleIssueBoardsAvailable: parseBoolean(el.dataset.multipleBoardsAvailable),

View File

@ -7,6 +7,7 @@ import {
FILTER_UPCOMING,
OPERATOR_IS,
OPERATOR_IS_NOT,
TOKEN_TYPE_HEALTH,
} from '~/vue_shared/components/filtered_search_bar/constants';
import {
WORK_ITEM_TYPE_ENUM_INCIDENT,
@ -148,7 +149,6 @@ export const TOKEN_TYPE_EPIC = 'epic_id';
export const TOKEN_TYPE_WEIGHT = 'weight';
export const TOKEN_TYPE_CONTACT = 'crm_contact';
export const TOKEN_TYPE_ORGANIZATION = 'crm_organization';
export const TOKEN_TYPE_HEALTH = 'health_status';
export const TYPE_TOKEN_TASK_OPTION = { icon: 'issue-type-task', title: 'task', value: 'task' };

View File

@ -56,3 +56,9 @@ export const TOKEN_TITLE_MY_REACTION = __('My-Reaction');
export const TOKEN_TITLE_ORGANIZATION = s__('Crm|Organization');
export const TOKEN_TITLE_RELEASE = __('Release');
export const TOKEN_TITLE_TYPE = __('Type');
// As health status gets reused between issue lists and boards
// this is in the shared constants. Until we have not decoupled the EE filtered search bar
// from the CE component, we need to keep this in the CE code.
// https://gitlab.com/gitlab-org/gitlab/-/issues/377838
export const TOKEN_TYPE_HEALTH = 'health_status';

View File

@ -3,14 +3,33 @@ require 'uri'
module Integrations
class Harbor < Integration
prop_accessor :url, :project_name, :username, :password
validates :url, public_url: true, presence: true, addressable_url: { allow_localhost: false, allow_local_network: false }, if: :activated?
validates :project_name, presence: true, if: :activated?
validates :username, presence: true, if: :activated?
validates :password, format: { with: ::Ci::Maskable::REGEX }, if: :activated?
before_validation :reset_username_and_password
field :url,
title: -> { s_('HarborIntegration|Harbor URL') },
placeholder: 'https://demo.goharbor.io',
help: -> { s_('HarborIntegration|Base URL of the Harbor instance.') },
exposes_secrets: true,
required: true
field :project_name,
title: -> { s_('HarborIntegration|Harbor project name') },
help: -> { s_('HarborIntegration|The name of the project in Harbor.') }
field :username,
title: -> { s_('HarborIntegration|Harbor username') },
required: true
field :password,
type: 'password',
title: -> { s_('HarborIntegration|Harbor password') },
help: -> { s_('HarborIntegration|Password for your Harbor username.') },
non_empty_password_title: -> { s_('HarborIntegration|Enter new Harbor password') },
non_empty_password_help: -> { s_('HarborIntegration|Leave blank to use your current password.') },
required: true
def title
'Harbor'
@ -46,40 +65,6 @@ module Integrations
client.ping
end
def fields
[
{
type: 'text',
name: 'url',
title: s_('HarborIntegration|Harbor URL'),
placeholder: 'https://demo.goharbor.io',
help: s_('HarborIntegration|Base URL of the Harbor instance.'),
required: true
},
{
type: 'text',
name: 'project_name',
title: s_('HarborIntegration|Harbor project name'),
help: s_('HarborIntegration|The name of the project in Harbor.')
},
{
type: 'text',
name: 'username',
title: s_('HarborIntegration|Harbor username'),
required: true
},
{
type: 'password',
name: 'password',
title: s_('HarborIntegration|Harbor password'),
help: s_('HarborIntegration|Password for your Harbor username.'),
non_empty_password_title: s_('HarborIntegration|Enter new Harbor password'),
non_empty_password_help: s_('HarborIntegration|Leave blank to use your current password.'),
required: true
}
]
end
def ci_variables
return [] unless activated?
@ -100,15 +85,5 @@ module Integrations
def client
@client ||= ::Gitlab::Harbor::Client.new(self)
end
def reset_username_and_password
if url_changed? && !password_touched?
self.password = nil
end
if url_changed? && !username_touched?
self.username = nil
end
end
end
end

View File

@ -624,8 +624,9 @@ by authorized users.
Use [`when: delayed`](../yaml/index.md#when) to execute scripts after a waiting period, or if you want to avoid
jobs immediately entering the `pending` state.
You can set the period with `start_in` keyword. The value of `start_in` is an elapsed time in seconds, unless a unit is
provided. `start_in` must be less than or equal to one week. Examples of valid values include:
You can set the period with `start_in` keyword. The value of `start_in` is an elapsed time
in seconds, unless a unit is provided. The minimum is one second, and the maximum is one week.
Examples of valid values include:
- `'5'` (a value with no unit must be surrounded by single quotes)
- `5 seconds`

View File

@ -27,42 +27,59 @@ GitLab Dedicated enables you to offload the operational overhead of managing the
- Upgrades:
- Monthly upgrades tracking one release behind the latest (n-1), with the latest security release.
- Out of band security patches provided for high severity releases.
- Backups: regular backups taken and tested.
- Choice of cloud region: upon onboarding, choose the cloud region where you want to deploy your instance. Some AWS regions have limited features and as a result, we are not able to deploy production instances to those regions. See below for the [full list of regions](#aws-regions-not-supported) not currently supported.
- Backups: Regular backups taken and tested.
- Choice of cloud region: Upon onboarding, choose the cloud region where you want to deploy your instance. Some AWS regions have limited features and as a result, we are not able to deploy production instances to those regions. See below for the [full list of regions](#aws-regions-not-supported) not currently supported.
- Security: Data encrypted at rest and in transit using latest encryption standards.
- Application: Self-managed [Ultimate feature set](https://about.gitlab.com/pricing/self-managed/feature-comparison/) with the exception of the unsupported features [listed below](#features-not-available-at-launch).
- Application: Self-managed [Ultimate feature set](https://about.gitlab.com/pricing/self-managed/feature-comparison/) with the exception of the unsupported features [listed below](#features-that-are-not-available).
## Features not available at launch
## Features that are not available
Features that are not available but we plan to support in the future:
### GitLab application features
- LDAP, Smartcard, Kerberos authentication
- Custom domain
The following GitLab application features are not available:
- LDAP, Smartcard, or Kerberos authentication
- Multiple login providers
- Advanced Search
- Pages
- GitLab-managed runners
- FortiAuthenticator/FortiToken 2FA
- GitLab Pages
- FortiAuthenticator, or FortiToken 2FA
- Reply-by email
- Service Desk
- Any feature not listed [above](#available-features) which needs to be configured outside of the web interface.
- GitLab-managed runners
- Any feature [not listed above](#available-features) which must be configured outside of the GitLab user interface.
Features that we do not plan to offer at all:
The following features will not be supported:
- Mattermost
- Server-side Git Hooks
- Server-side Git hooks
### Dedicated service features
The following operational features are not available:
- Custom domains
- Bring Your Own Key (BYOK) encryption
- Multiple Geo secondaries (Geo replicas) beyond the secondary site included by default
- Self-serve purchasing and configuration
- Multiple login providers
- Non-AWS cloud providers, such as GCP or Azure
### AWS regions not supported
The following AWS regions are not available at launch:
The following AWS regions are not available:
- Jakarta (ap-southeast-3)
- Bahrain (me-south-1)
- Hong Kong (ap-east-1)
- Cape Town (af-south-1)
- Milan (eu-south-1)
- Paris (eu-west-3)
- Jakarta (`ap-southeast-3`)
- Bahrain (`me-south-1`)
- Hong Kong (`ap-east-1`)
- Cape Town (`af-south-1`)
- Milan (`eu-south-1`)
- Paris (`eu-west-3`)
- GovCloud
## Planned features
Learn more about the planned improvements to Dedicated on the public [direction page](https://about.gitlab.com/direction/saas-platforms/dedicated/).
## Contact us
Fill in the following form to contact us and learn more about this offering.

View File

@ -2012,75 +2012,75 @@
06_15_00__inlines__textual_content__003:
spec_txt_example_position: 673
source_specification: commonmark
07_01_00__gitlab_specific_markdown__footnotes__001:
07_01_00__gitlab_official_specification_markdown__footnotes__001:
spec_txt_example_position: 674
source_specification: gitlab
07_02_00__gitlab_specific_markdown__task_list_items__001:
07_02_00__gitlab_official_specification_markdown__task_list_items__001:
spec_txt_example_position: 675
source_specification: gitlab
07_02_00__gitlab_specific_markdown__task_list_items__002:
07_02_00__gitlab_official_specification_markdown__task_list_items__002:
spec_txt_example_position: 676
source_specification: gitlab
07_02_00__gitlab_specific_markdown__task_list_items__003:
07_02_00__gitlab_official_specification_markdown__task_list_items__003:
spec_txt_example_position: 677
source_specification: gitlab
07_02_00__gitlab_specific_markdown__task_list_items__004:
07_02_00__gitlab_official_specification_markdown__task_list_items__004:
spec_txt_example_position: 678
source_specification: gitlab
07_03_00__gitlab_specific_markdown__front_matter__001:
07_03_00__gitlab_official_specification_markdown__front_matter__001:
spec_txt_example_position: 679
source_specification: gitlab
07_03_00__gitlab_specific_markdown__front_matter__002:
07_03_00__gitlab_official_specification_markdown__front_matter__002:
spec_txt_example_position: 680
source_specification: gitlab
07_03_00__gitlab_specific_markdown__front_matter__003:
07_03_00__gitlab_official_specification_markdown__front_matter__003:
spec_txt_example_position: 681
source_specification: gitlab
07_03_00__gitlab_specific_markdown__front_matter__004:
07_03_00__gitlab_official_specification_markdown__front_matter__004:
spec_txt_example_position: 682
source_specification: gitlab
07_03_00__gitlab_specific_markdown__front_matter__005:
07_03_00__gitlab_official_specification_markdown__front_matter__005:
spec_txt_example_position: 683
source_specification: gitlab
07_04_00__gitlab_specific_markdown__audio__001:
07_04_00__gitlab_official_specification_markdown__table_of_contents__001:
spec_txt_example_position: 684
source_specification: gitlab
07_04_00__gitlab_specific_markdown__audio__002:
07_04_00__gitlab_official_specification_markdown__table_of_contents__002:
spec_txt_example_position: 685
source_specification: gitlab
07_05_00__gitlab_specific_markdown__video__001:
07_04_00__gitlab_official_specification_markdown__table_of_contents__003:
spec_txt_example_position: 686
source_specification: gitlab
07_05_00__gitlab_specific_markdown__video__002:
07_04_00__gitlab_official_specification_markdown__table_of_contents__004:
spec_txt_example_position: 687
source_specification: gitlab
07_06_00__gitlab_specific_markdown__table_of_contents__001:
08_01_00__gitlab_internal_extension_markdown__audio__001:
spec_txt_example_position: 688
source_specification: gitlab
07_06_00__gitlab_specific_markdown__table_of_contents__002:
08_01_00__gitlab_internal_extension_markdown__audio__002:
spec_txt_example_position: 689
source_specification: gitlab
07_06_00__gitlab_specific_markdown__table_of_contents__003:
08_02_00__gitlab_internal_extension_markdown__video__001:
spec_txt_example_position: 690
source_specification: gitlab
07_06_00__gitlab_specific_markdown__table_of_contents__004:
08_02_00__gitlab_internal_extension_markdown__video__002:
spec_txt_example_position: 691
source_specification: gitlab
08_01_00__examples_using_internal_extensions__markdown_preview_api_request_overrides__001:
08_03_00__gitlab_internal_extension_markdown__markdown_preview_api_request_overrides__001:
spec_txt_example_position: 692
source_specification: gitlab
08_01_00__examples_using_internal_extensions__markdown_preview_api_request_overrides__002:
08_03_00__gitlab_internal_extension_markdown__markdown_preview_api_request_overrides__002:
spec_txt_example_position: 693
source_specification: gitlab
08_01_00__examples_using_internal_extensions__markdown_preview_api_request_overrides__003:
08_03_00__gitlab_internal_extension_markdown__markdown_preview_api_request_overrides__003:
spec_txt_example_position: 694
source_specification: gitlab
08_01_00__examples_using_internal_extensions__markdown_preview_api_request_overrides__004:
08_03_00__gitlab_internal_extension_markdown__markdown_preview_api_request_overrides__004:
spec_txt_example_position: 695
source_specification: gitlab
08_01_00__examples_using_internal_extensions__markdown_preview_api_request_overrides__005:
08_03_00__gitlab_internal_extension_markdown__markdown_preview_api_request_overrides__005:
spec_txt_example_position: 696
source_specification: gitlab
08_01_00__examples_using_internal_extensions__markdown_preview_api_request_overrides__006:
08_03_00__gitlab_internal_extension_markdown__markdown_preview_api_request_overrides__006:
spec_txt_example_position: 697
source_specification: gitlab

View File

@ -7638,7 +7638,7 @@
<p data-sourcepos="1:1-1:19" dir="auto">Multiple spaces</p>
wysiwyg: |-
<p>Multiple spaces</p>
07_01_00__gitlab_specific_markdown__footnotes__001:
07_01_00__gitlab_official_specification_markdown__footnotes__001:
canonical: |
<p>
footnote reference tag
@ -7671,7 +7671,7 @@
wysiwyg: |-
<p>footnote reference tag <sup identifier="fortytwo">fortytwo</sup></p>
<div node="footnoteDefinition(paragraph(&quot;footnote text&quot;))" htmlattributes="[object Object]"><p>footnote text</p></div>
07_02_00__gitlab_specific_markdown__task_list_items__001:
07_02_00__gitlab_official_specification_markdown__task_list_items__001:
canonical: |
<ul>
<li>
@ -7687,7 +7687,7 @@
</ul>
wysiwyg: |-
<ul start="1" parens="false" data-type="taskList"><li data-checked="false" data-type="taskItem"><label><input type="checkbox"><span></span></label><div><p>incomplete</p></div></li></ul>
07_02_00__gitlab_specific_markdown__task_list_items__002:
07_02_00__gitlab_official_specification_markdown__task_list_items__002:
canonical: |
<ul>
<li>
@ -7703,7 +7703,7 @@
</ul>
wysiwyg: |-
<ul start="1" parens="false" data-type="taskList"><li data-checked="true" data-type="taskItem"><label><input type="checkbox" checked="checked"><span></span></label><div><p>completed</p></div></li></ul>
07_02_00__gitlab_specific_markdown__task_list_items__003:
07_02_00__gitlab_official_specification_markdown__task_list_items__003:
canonical: |
<ul>
<li>
@ -7720,9 +7720,7 @@
<task-button></task-button><input type="checkbox" class="task-list-item-checkbox" data-inapplicable disabled> <s>inapplicable</s>
</li>
</ul>
wysiwyg: |-
<ul bullet="*"><li><p>[~] inapplicable</p></li></ul>
07_02_00__gitlab_specific_markdown__task_list_items__004:
07_02_00__gitlab_official_specification_markdown__task_list_items__004:
canonical: |
<ul>
<li>
@ -7745,9 +7743,7 @@
<p data-sourcepos="3:3-3:20">text in loose list</p>
</li>
</ul>
wysiwyg: |-
Inapplicable task list items not yet implemented for WYSYWIG
07_03_00__gitlab_specific_markdown__front_matter__001:
07_03_00__gitlab_official_specification_markdown__front_matter__001:
canonical: |
<pre>
<code>
@ -7761,7 +7757,7 @@
</div>
wysiwyg: |-
<pre language="yaml" class="content-editor-code-block undefined code highlight" isfrontmatter="true"><code>title: YAML front matter</code></pre>
07_03_00__gitlab_specific_markdown__front_matter__002:
07_03_00__gitlab_official_specification_markdown__front_matter__002:
canonical: |
<pre>
<code>
@ -7775,7 +7771,7 @@
</div>
wysiwyg: |-
<pre language="toml" class="content-editor-code-block undefined code highlight" isfrontmatter="true"><code>title: TOML front matter</code></pre>
07_03_00__gitlab_specific_markdown__front_matter__003:
07_03_00__gitlab_official_specification_markdown__front_matter__003:
canonical: |
<pre>
<code>
@ -7795,7 +7791,7 @@
<pre language="json" class="content-editor-code-block undefined code highlight" isfrontmatter="true"><code>{
"title": "JSON front matter"
}</code></pre>
07_03_00__gitlab_specific_markdown__front_matter__004:
07_03_00__gitlab_official_specification_markdown__front_matter__004:
canonical: |
<p>text</p>
<hr>
@ -7809,7 +7805,7 @@
<p>text</p>
<hr>
<h2>title: YAML front matter</h2>
07_03_00__gitlab_specific_markdown__front_matter__005:
07_03_00__gitlab_official_specification_markdown__front_matter__005:
canonical: |
<hr>
<h2>title: YAML front matter</h2>
@ -7820,37 +7816,7 @@
wysiwyg: |-
<hr>
<h2>title: YAML front matter</h2>
07_04_00__gitlab_specific_markdown__audio__001:
canonical: |
<p><audio src="audio.oga" title="audio title"></audio></p>
static: |-
<p data-sourcepos="1:1-1:33" dir="auto"><span class="media-container audio-container"><audio src="audio.oga" controls="true" data-setup="{}" data-title="audio title"></audio><a href="audio.oga" target="_blank" rel="noopener noreferrer" title="Download 'audio title'">audio title</a></span></p>
wysiwyg: |-
<p><span class="media-container audio-container"><audio src="audio.oga" controls="true" data-setup="{}" data-title="audio"></audio><a href="audio.oga">audio</a></span></p>
07_04_00__gitlab_specific_markdown__audio__002:
canonical: |
<p><audio src="audio.oga" title="audio title"></audio></p>
static: |-
<p data-sourcepos="3:1-3:15" dir="auto"><span class="media-container audio-container"><audio src="audio.oga" controls="true" data-setup="{}" data-title="audio title"></audio><a href="audio.oga" target="_blank" rel="noopener noreferrer" title="Download 'audio title'">audio title</a></span></p>
wysiwyg: |-
<pre>[audio]: audio.oga "audio title"</pre>
<p><span class="media-container audio-container"><audio src="audio.oga" controls="true" data-setup="{}" data-title="audio"></audio><a href="audio.oga">audio</a></span></p>
07_05_00__gitlab_specific_markdown__video__001:
canonical: |
<p><video src="video.m4v" title="video title"></video></p>
static: |-
<p data-sourcepos="1:1-1:33" dir="auto"><span class="media-container video-container"><video src="video.m4v" controls="true" data-setup="{}" data-title="video title" width="400" preload="metadata"></video><a href="video.m4v" target="_blank" rel="noopener noreferrer" title="Download 'video title'">video title</a></span></p>
wysiwyg: |-
<p><span class="media-container video-container"><video src="video.m4v" controls="true" data-setup="{}" data-title="video"></video><a href="video.m4v">video</a></span></p>
07_05_00__gitlab_specific_markdown__video__002:
canonical: |
<p><video src="video.mov" title="video title"></video></p>
static: |-
<p data-sourcepos="3:1-3:15" dir="auto"><span class="media-container video-container"><video src="video.mov" controls="true" data-setup="{}" data-title="video title" width="400" preload="metadata"></video><a href="video.mov" target="_blank" rel="noopener noreferrer" title="Download 'video title'">video title</a></span></p>
wysiwyg: |-
<pre>[video]: video.mov "video title"</pre>
<p><span class="media-container video-container"><video src="video.mov" controls="true" data-setup="{}" data-title="video"></video><a href="video.mov">video</a></span></p>
07_06_00__gitlab_specific_markdown__table_of_contents__001:
07_04_00__gitlab_official_specification_markdown__table_of_contents__001:
canonical: |
<nav>
<ul>
@ -7874,7 +7840,7 @@
<div class="table-of-contents gl-border-1 gl-border-solid gl-text-center gl-border-gray-100 gl-mb-5">Table of contents</div>
<h1>Heading 1</h1>
<h2>Heading 2</h2>
07_06_00__gitlab_specific_markdown__table_of_contents__002:
07_04_00__gitlab_official_specification_markdown__table_of_contents__002:
canonical: |
<nav>
<ul>
@ -7898,7 +7864,7 @@
<div class="table-of-contents gl-border-1 gl-border-solid gl-text-center gl-border-gray-100 gl-mb-5">Table of contents</div>
<h1>Heading 1</h1>
<h2>Heading 2</h2>
07_06_00__gitlab_specific_markdown__table_of_contents__003:
07_04_00__gitlab_official_specification_markdown__table_of_contents__003:
canonical: |
<p>[[<em>TOC</em>]]text</p>
<p>text[TOC]</p>
@ -7912,7 +7878,7 @@
text</p>
<p>text
[TOC]</p>
07_06_00__gitlab_specific_markdown__table_of_contents__004:
07_04_00__gitlab_official_specification_markdown__table_of_contents__004:
canonical: |
<nav>
<ul>
@ -7927,45 +7893,63 @@
wysiwyg: |-
<div class="table-of-contents gl-border-1 gl-border-solid gl-text-center gl-border-gray-100 gl-mb-5">Table of contents</div>
<h1>Heading 1</h1>
08_01_00__examples_using_internal_extensions__markdown_preview_api_request_overrides__001:
08_01_00__gitlab_internal_extension_markdown__audio__001:
canonical: |
<p><audio src="audio.oga" title="audio title"></audio></p>
static: |-
<p data-sourcepos="1:1-1:33" dir="auto"><span class="media-container audio-container"><audio src="audio.oga" controls="true" data-setup="{}" data-title="audio title"></audio><a href="audio.oga" target="_blank" rel="noopener noreferrer" title="Download 'audio title'">audio title</a></span></p>
wysiwyg: |-
<p><span class="media-container audio-container"><audio src="audio.oga" controls="true" data-setup="{}" data-title="audio"></audio><a href="audio.oga">audio</a></span></p>
08_01_00__gitlab_internal_extension_markdown__audio__002:
canonical: |
<p><audio src="audio.oga" title="audio title"></audio></p>
static: |-
<p data-sourcepos="3:1-3:15" dir="auto"><span class="media-container audio-container"><audio src="audio.oga" controls="true" data-setup="{}" data-title="audio title"></audio><a href="audio.oga" target="_blank" rel="noopener noreferrer" title="Download 'audio title'">audio title</a></span></p>
wysiwyg: |-
<pre>[audio]: audio.oga "audio title"</pre>
<p><span class="media-container audio-container"><audio src="audio.oga" controls="true" data-setup="{}" data-title="audio"></audio><a href="audio.oga">audio</a></span></p>
08_02_00__gitlab_internal_extension_markdown__video__001:
canonical: |
<p><video src="video.m4v" title="video title"></video></p>
static: |-
<p data-sourcepos="1:1-1:33" dir="auto"><span class="media-container video-container"><video src="video.m4v" controls="true" data-setup="{}" data-title="video title" width="400" preload="metadata"></video><a href="video.m4v" target="_blank" rel="noopener noreferrer" title="Download 'video title'">video title</a></span></p>
wysiwyg: |-
<p><span class="media-container video-container"><video src="video.m4v" controls="true" data-setup="{}" data-title="video"></video><a href="video.m4v">video</a></span></p>
08_02_00__gitlab_internal_extension_markdown__video__002:
canonical: |
<p><video src="video.mov" title="video title"></video></p>
static: |-
<p data-sourcepos="3:1-3:15" dir="auto"><span class="media-container video-container"><video src="video.mov" controls="true" data-setup="{}" data-title="video title" width="400" preload="metadata"></video><a href="video.mov" target="_blank" rel="noopener noreferrer" title="Download 'video title'">video title</a></span></p>
wysiwyg: |-
<pre>[video]: video.mov "video title"</pre>
<p><span class="media-container video-container"><video src="video.mov" controls="true" data-setup="{}" data-title="video"></video><a href="video.mov">video</a></span></p>
08_03_00__gitlab_internal_extension_markdown__markdown_preview_api_request_overrides__001:
canonical: |
<p><a href="groups-test-file">groups-test-file</a></p>
static: |-
<p data-sourcepos="1:1-1:45" dir="auto"><a href="/groups/glfm_group/-/uploads/groups-test-file" data-canonical-src="/uploads/groups-test-file" data-link="true" class="gfm">groups-test-file</a></p>
wysiwyg: |-
Not yet implemented. See https://gitlab.com/gitlab-org/gitlab/-/merge_requests/92507#note_1068159236
08_01_00__examples_using_internal_extensions__markdown_preview_api_request_overrides__002:
08_03_00__gitlab_internal_extension_markdown__markdown_preview_api_request_overrides__002:
canonical: |
<p><a href="projects-test-file">projects-test-file</a></p>
static: |-
<p data-sourcepos="1:1-1:40" dir="auto"><a href="/glfm_group/glfm_project/-/blob/master/projects-test-file">projects-test-file</a></p>
wysiwyg: |-
Not yet implemented. See https://gitlab.com/gitlab-org/gitlab/-/merge_requests/92507#note_1068159236
08_01_00__examples_using_internal_extensions__markdown_preview_api_request_overrides__003:
08_03_00__gitlab_internal_extension_markdown__markdown_preview_api_request_overrides__003:
canonical: |
<p>This project snippet ID reference IS filtered: $88888</p>
static: |-
<p data-sourcepos="1:1-1:53" dir="auto">This project snippet ID reference IS filtered: <a href="/glfm_group/glfm_project/-/snippets/88888" data-reference-type="snippet" data-original="$88888" data-link="false" data-link-reference="false" data-project="77777" data-snippet="88888" data-container="body" data-placement="top" title="glfm_project_snippet" class="gfm gfm-snippet has-tooltip">$88888</a></p>
wysiwyg: |-
Not yet implemented. See https://gitlab.com/gitlab-org/gitlab/-/merge_requests/92507#note_1068159236
08_01_00__examples_using_internal_extensions__markdown_preview_api_request_overrides__004:
08_03_00__gitlab_internal_extension_markdown__markdown_preview_api_request_overrides__004:
canonical: |
<p>This personal snippet ID reference is not filtered: $99999</p>
static: |-
<p data-sourcepos="1:1-1:58" dir="auto">This personal snippet ID reference is not filtered: $99999</p>
wysiwyg: |-
Not yet implemented. See https://gitlab.com/gitlab-org/gitlab/-/merge_requests/92507#note_1068159236
08_01_00__examples_using_internal_extensions__markdown_preview_api_request_overrides__005:
08_03_00__gitlab_internal_extension_markdown__markdown_preview_api_request_overrides__005:
canonical: |
<p><a href="project-wikis-test-file">project-wikis-test-file</a></p>
static: |-
<p data-sourcepos="1:1-1:50" dir="auto"><a href="/glfm_group/glfm_project/-/wikis/project-wikis-test-file" data-canonical-src="project-wikis-test-file">project-wikis-test-file</a></p>
wysiwyg: |-
Not yet implemented. See https://gitlab.com/gitlab-org/gitlab/-/merge_requests/92507#note_1068159236
08_01_00__examples_using_internal_extensions__markdown_preview_api_request_overrides__006:
08_03_00__gitlab_internal_extension_markdown__markdown_preview_api_request_overrides__006:
canonical: |
<p><a href="group-wikis-test-file">group-wikis-test-file</a></p>
static: |-
<p data-sourcepos="1:1-1:46" dir="auto"><a href="/groups/glfm_group/-/wikis/group-wikis-test-file" data-canonical-src="group-wikis-test-file">group-wikis-test-file</a></p>
wysiwyg: |-
Not yet implemented. See https://gitlab.com/gitlab-org/gitlab/-/merge_requests/92507#note_1068159236

View File

@ -2189,87 +2189,87 @@
Foo χρῆν
06_15_00__inlines__textual_content__003: |
Multiple spaces
07_01_00__gitlab_specific_markdown__footnotes__001: |
07_01_00__gitlab_official_specification_markdown__footnotes__001: |
footnote reference tag [^fortytwo]
[^fortytwo]: footnote text
07_02_00__gitlab_specific_markdown__task_list_items__001: |
07_02_00__gitlab_official_specification_markdown__task_list_items__001: |
- [ ] incomplete
07_02_00__gitlab_specific_markdown__task_list_items__002: |
07_02_00__gitlab_official_specification_markdown__task_list_items__002: |
- [x] completed
07_02_00__gitlab_specific_markdown__task_list_items__003: |
07_02_00__gitlab_official_specification_markdown__task_list_items__003: |
- [~] inapplicable
07_02_00__gitlab_specific_markdown__task_list_items__004: |
07_02_00__gitlab_official_specification_markdown__task_list_items__004: |
- [~] inapplicable
text in loose list
07_03_00__gitlab_specific_markdown__front_matter__001: |
07_03_00__gitlab_official_specification_markdown__front_matter__001: |
---
title: YAML front matter
---
07_03_00__gitlab_specific_markdown__front_matter__002: |
07_03_00__gitlab_official_specification_markdown__front_matter__002: |
+++
title: TOML front matter
+++
07_03_00__gitlab_specific_markdown__front_matter__003: |
07_03_00__gitlab_official_specification_markdown__front_matter__003: |
;;;
{
"title": "JSON front matter"
}
;;;
07_03_00__gitlab_specific_markdown__front_matter__004: |
07_03_00__gitlab_official_specification_markdown__front_matter__004: |
text
---
title: YAML front matter
---
07_03_00__gitlab_specific_markdown__front_matter__005: |2
07_03_00__gitlab_official_specification_markdown__front_matter__005: |2
---
title: YAML front matter
---
07_04_00__gitlab_specific_markdown__audio__001: |
![audio](audio.oga "audio title")
07_04_00__gitlab_specific_markdown__audio__002: |
[audio]: audio.oga "audio title"
![audio][audio]
07_05_00__gitlab_specific_markdown__video__001: |
![video](video.m4v "video title")
07_05_00__gitlab_specific_markdown__video__002: |
[video]: video.mov "video title"
![video][video]
07_06_00__gitlab_specific_markdown__table_of_contents__001: |
07_04_00__gitlab_official_specification_markdown__table_of_contents__001: |
[TOC]
# Heading 1
## Heading 2
07_06_00__gitlab_specific_markdown__table_of_contents__002: |
07_04_00__gitlab_official_specification_markdown__table_of_contents__002: |
[[_TOC_]]
# Heading 1
## Heading 2
07_06_00__gitlab_specific_markdown__table_of_contents__003: |
07_04_00__gitlab_official_specification_markdown__table_of_contents__003: |
[[_TOC_]]
text
text
[TOC]
07_06_00__gitlab_specific_markdown__table_of_contents__004: |2
07_04_00__gitlab_official_specification_markdown__table_of_contents__004: |2
[[_TOC_]]
# Heading 1
08_01_00__examples_using_internal_extensions__markdown_preview_api_request_overrides__001: |
08_01_00__gitlab_internal_extension_markdown__audio__001: |
![audio](audio.oga "audio title")
08_01_00__gitlab_internal_extension_markdown__audio__002: |
[audio]: audio.oga "audio title"
![audio][audio]
08_02_00__gitlab_internal_extension_markdown__video__001: |
![video](video.m4v "video title")
08_02_00__gitlab_internal_extension_markdown__video__002: |
[video]: video.mov "video title"
![video][video]
08_03_00__gitlab_internal_extension_markdown__markdown_preview_api_request_overrides__001: |
[groups-test-file](/uploads/groups-test-file)
08_01_00__examples_using_internal_extensions__markdown_preview_api_request_overrides__002: |
08_03_00__gitlab_internal_extension_markdown__markdown_preview_api_request_overrides__002: |
[projects-test-file](projects-test-file)
08_01_00__examples_using_internal_extensions__markdown_preview_api_request_overrides__003: |
08_03_00__gitlab_internal_extension_markdown__markdown_preview_api_request_overrides__003: |
This project snippet ID reference IS filtered: $88888
08_01_00__examples_using_internal_extensions__markdown_preview_api_request_overrides__004: |
08_03_00__gitlab_internal_extension_markdown__markdown_preview_api_request_overrides__004: |
This personal snippet ID reference is not filtered: $99999
08_01_00__examples_using_internal_extensions__markdown_preview_api_request_overrides__005: |
08_03_00__gitlab_internal_extension_markdown__markdown_preview_api_request_overrides__005: |
[project-wikis-test-file](project-wikis-test-file)
08_01_00__examples_using_internal_extensions__markdown_preview_api_request_overrides__006: |
08_03_00__gitlab_internal_extension_markdown__markdown_preview_api_request_overrides__006: |
[group-wikis-test-file](group-wikis-test-file)

View File

@ -20561,7 +20561,7 @@
}
]
}
07_01_00__gitlab_specific_markdown__footnotes__001: |-
07_01_00__gitlab_official_specification_markdown__footnotes__001: |-
{
"type": "doc",
"content": [
@ -20601,7 +20601,7 @@
}
]
}
07_02_00__gitlab_specific_markdown__task_list_items__001: |-
07_02_00__gitlab_official_specification_markdown__task_list_items__001: |-
{
"type": "doc",
"content": [
@ -20634,7 +20634,7 @@
}
]
}
07_02_00__gitlab_specific_markdown__task_list_items__002: |-
07_02_00__gitlab_official_specification_markdown__task_list_items__002: |-
{
"type": "doc",
"content": [
@ -20667,11 +20667,7 @@
}
]
}
07_02_00__gitlab_specific_markdown__task_list_items__003: |-
Inapplicable task list items not yet implemented for WYSYWIG
07_02_00__gitlab_specific_markdown__task_list_items__004: |-
Inapplicable task list items not yet implemented for WYSYWIG
07_03_00__gitlab_specific_markdown__front_matter__001: |-
07_03_00__gitlab_official_specification_markdown__front_matter__001: |-
{
"type": "doc",
"content": [
@ -20691,7 +20687,7 @@
}
]
}
07_03_00__gitlab_specific_markdown__front_matter__002: |-
07_03_00__gitlab_official_specification_markdown__front_matter__002: |-
{
"type": "doc",
"content": [
@ -20711,7 +20707,7 @@
}
]
}
07_03_00__gitlab_specific_markdown__front_matter__003: |-
07_03_00__gitlab_official_specification_markdown__front_matter__003: |-
{
"type": "doc",
"content": [
@ -20731,7 +20727,7 @@
}
]
}
07_03_00__gitlab_specific_markdown__front_matter__004: |-
07_03_00__gitlab_official_specification_markdown__front_matter__004: |-
{
"type": "doc",
"content": [
@ -20761,7 +20757,7 @@
}
]
}
07_03_00__gitlab_specific_markdown__front_matter__005: |-
07_03_00__gitlab_official_specification_markdown__front_matter__005: |-
{
"type": "doc",
"content": [
@ -20782,115 +20778,7 @@
}
]
}
07_04_00__gitlab_specific_markdown__audio__001: |-
{
"type": "doc",
"content": [
{
"type": "paragraph",
"content": [
{
"type": "audio",
"attrs": {
"uploading": false,
"src": "audio.oga",
"canonicalSrc": "audio.oga",
"alt": "audio"
}
}
]
}
]
}
07_04_00__gitlab_specific_markdown__audio__002: |-
{
"type": "doc",
"content": [
{
"type": "referenceDefinition",
"attrs": {
"identifier": "audio",
"url": "audio.oga",
"title": "audio title"
},
"content": [
{
"type": "text",
"text": "[audio]: audio.oga \"audio title\""
}
]
},
{
"type": "paragraph",
"content": [
{
"type": "audio",
"attrs": {
"uploading": false,
"src": "audio.oga",
"canonicalSrc": "audio",
"alt": "audio"
}
}
]
}
]
}
07_05_00__gitlab_specific_markdown__video__001: |-
{
"type": "doc",
"content": [
{
"type": "paragraph",
"content": [
{
"type": "video",
"attrs": {
"uploading": false,
"src": "video.m4v",
"canonicalSrc": "video.m4v",
"alt": "video"
}
}
]
}
]
}
07_05_00__gitlab_specific_markdown__video__002: |-
{
"type": "doc",
"content": [
{
"type": "referenceDefinition",
"attrs": {
"identifier": "video",
"url": "video.mov",
"title": "video title"
},
"content": [
{
"type": "text",
"text": "[video]: video.mov \"video title\""
}
]
},
{
"type": "paragraph",
"content": [
{
"type": "video",
"attrs": {
"uploading": false,
"src": "video.mov",
"canonicalSrc": "video",
"alt": "video"
}
}
]
}
]
}
07_06_00__gitlab_specific_markdown__table_of_contents__001: |-
07_04_00__gitlab_official_specification_markdown__table_of_contents__001: |-
{
"type": "doc",
"content": [
@ -20923,7 +20811,7 @@
}
]
}
07_06_00__gitlab_specific_markdown__table_of_contents__002: |-
07_04_00__gitlab_official_specification_markdown__table_of_contents__002: |-
{
"type": "doc",
"content": [
@ -20956,7 +20844,7 @@
}
]
}
07_06_00__gitlab_specific_markdown__table_of_contents__003: |-
07_04_00__gitlab_official_specification_markdown__table_of_contents__003: |-
{
"type": "doc",
"content": [
@ -20993,7 +20881,7 @@
}
]
}
07_06_00__gitlab_specific_markdown__table_of_contents__004: |-
07_04_00__gitlab_official_specification_markdown__table_of_contents__004: |-
{
"type": "doc",
"content": [
@ -21014,15 +20902,111 @@
}
]
}
08_01_00__examples_using_internal_extensions__markdown_preview_api_request_overrides__001: |-
Not yet implemented. See https://gitlab.com/gitlab-org/gitlab/-/merge_requests/92507#note_1068159236
08_01_00__examples_using_internal_extensions__markdown_preview_api_request_overrides__002: |-
Not yet implemented. See https://gitlab.com/gitlab-org/gitlab/-/merge_requests/92507#note_1068159236
08_01_00__examples_using_internal_extensions__markdown_preview_api_request_overrides__003: |-
Not yet implemented. See https://gitlab.com/gitlab-org/gitlab/-/merge_requests/92507#note_1068159236
08_01_00__examples_using_internal_extensions__markdown_preview_api_request_overrides__004: |-
Not yet implemented. See https://gitlab.com/gitlab-org/gitlab/-/merge_requests/92507#note_1068159236
08_01_00__examples_using_internal_extensions__markdown_preview_api_request_overrides__005: |-
Not yet implemented. See https://gitlab.com/gitlab-org/gitlab/-/merge_requests/92507#note_1068159236
08_01_00__examples_using_internal_extensions__markdown_preview_api_request_overrides__006: |-
Not yet implemented. See https://gitlab.com/gitlab-org/gitlab/-/merge_requests/92507#note_1068159236
08_01_00__gitlab_internal_extension_markdown__audio__001: |-
{
"type": "doc",
"content": [
{
"type": "paragraph",
"content": [
{
"type": "audio",
"attrs": {
"uploading": false,
"src": "audio.oga",
"canonicalSrc": "audio.oga",
"alt": "audio"
}
}
]
}
]
}
08_01_00__gitlab_internal_extension_markdown__audio__002: |-
{
"type": "doc",
"content": [
{
"type": "referenceDefinition",
"attrs": {
"identifier": "audio",
"url": "audio.oga",
"title": "audio title"
},
"content": [
{
"type": "text",
"text": "[audio]: audio.oga \"audio title\""
}
]
},
{
"type": "paragraph",
"content": [
{
"type": "audio",
"attrs": {
"uploading": false,
"src": "audio.oga",
"canonicalSrc": "audio",
"alt": "audio"
}
}
]
}
]
}
08_02_00__gitlab_internal_extension_markdown__video__001: |-
{
"type": "doc",
"content": [
{
"type": "paragraph",
"content": [
{
"type": "video",
"attrs": {
"uploading": false,
"src": "video.m4v",
"canonicalSrc": "video.m4v",
"alt": "video"
}
}
]
}
]
}
08_02_00__gitlab_internal_extension_markdown__video__002: |-
{
"type": "doc",
"content": [
{
"type": "referenceDefinition",
"attrs": {
"identifier": "video",
"url": "video.mov",
"title": "video title"
},
"content": [
{
"type": "text",
"text": "[video]: video.mov \"video title\""
}
]
},
{
"type": "paragraph",
"content": [
{
"type": "video",
"attrs": {
"uploading": false,
"src": "video.mov",
"canonicalSrc": "video",
"alt": "video"
}
}
]
}
]
}

View File

@ -1,14 +1,14 @@
---
08_01_00__examples_using_internal_extensions__markdown_preview_api_request_overrides__001:
08_03_00__gitlab_internal_extension_markdown__markdown_preview_api_request_overrides__001:
api_request_override_path: /groups/glfm_group/preview_markdown
08_01_00__examples_using_internal_extensions__markdown_preview_api_request_overrides__002:
08_03_00__gitlab_internal_extension_markdown__markdown_preview_api_request_overrides__002:
api_request_override_path: /glfm_group/glfm_project/preview_markdown
08_01_00__examples_using_internal_extensions__markdown_preview_api_request_overrides__003:
08_03_00__gitlab_internal_extension_markdown__markdown_preview_api_request_overrides__003:
api_request_override_path: /glfm_group/glfm_project/preview_markdown
08_01_00__examples_using_internal_extensions__markdown_preview_api_request_overrides__004:
08_03_00__gitlab_internal_extension_markdown__markdown_preview_api_request_overrides__004:
api_request_override_path: /-/snippets/preview_markdown
08_01_00__examples_using_internal_extensions__markdown_preview_api_request_overrides__005:
08_03_00__gitlab_internal_extension_markdown__markdown_preview_api_request_overrides__005:
api_request_override_path: /glfm_group/glfm_project/-/wikis/new_page/preview_markdown
08_01_00__examples_using_internal_extensions__markdown_preview_api_request_overrides__006:
08_03_00__gitlab_internal_extension_markdown__markdown_preview_api_request_overrides__006:
ee: true
api_request_override_path: /groups/glfm_group/-/wikis/new_page/preview_markdown

View File

@ -12,49 +12,49 @@
skip_running_snapshot_static_html_tests: false # NOT YET SUPPORTED
skip_running_snapshot_wysiwyg_html_tests: false
skip_running_snapshot_prosemirror_json_tests: false
07_02_00__gitlab_specific_markdown__task_list_items__003:
07_02_00__gitlab_official_specification_markdown__task_list_items__003:
skip_update_example_snapshot_html_wysiwyg: Inapplicable task list items not yet implemented for WYSYWIG
skip_update_example_snapshot_prosemirror_json: Inapplicable task list items not yet implemented for WYSYWIG
skip_running_conformance_wysiwyg_tests: Inapplicable task list items not yet implemented for WYSYWIG
skip_running_snapshot_wysiwyg_html_tests: Inapplicable task list items not yet implemented for WYSYWIG
skip_running_snapshot_prosemirror_json_tests: Inapplicable task list items not yet implemented for WYSYWIG
07_02_00__gitlab_specific_markdown__task_list_items__004:
07_02_00__gitlab_official_specification_markdown__task_list_items__004:
skip_update_example_snapshot_html_wysiwyg: Inapplicable task list items not yet implemented for WYSYWIG
skip_update_example_snapshot_prosemirror_json: Inapplicable task list items not yet implemented for WYSYWIG
skip_running_conformance_wysiwyg_tests: Inapplicable task list items not yet implemented for WYSYWIG
skip_running_snapshot_wysiwyg_html_tests: Inapplicable task list items not yet implemented for WYSYWIG
skip_running_snapshot_prosemirror_json_tests: Inapplicable task list items not yet implemented for WYSYWIG
08_01_00__examples_using_internal_extensions__markdown_preview_api_request_overrides__001:
08_03_00__gitlab_internal_extension_markdown__markdown_preview_api_request_overrides__001:
skip_update_example_snapshot_html_wysiwyg: Not yet implemented. See https://gitlab.com/gitlab-org/gitlab/-/merge_requests/92507#note_1068159236
skip_update_example_snapshot_prosemirror_json: Not yet implemented. See https://gitlab.com/gitlab-org/gitlab/-/merge_requests/92507#note_1068159236
skip_running_conformance_wysiwyg_tests: Not yet implemented. See https://gitlab.com/gitlab-org/gitlab/-/merge_requests/92507#note_1068159236
skip_running_snapshot_wysiwyg_html_tests: Not yet implemented. See https://gitlab.com/gitlab-org/gitlab/-/merge_requests/92507#note_1068159236
skip_running_snapshot_prosemirror_json_tests: Not yet implemented. See https://gitlab.com/gitlab-org/gitlab/-/merge_requests/92507#note_1068159236
08_01_00__examples_using_internal_extensions__markdown_preview_api_request_overrides__002:
08_03_00__gitlab_internal_extension_markdown__markdown_preview_api_request_overrides__002:
skip_update_example_snapshot_html_wysiwyg: Not yet implemented. See https://gitlab.com/gitlab-org/gitlab/-/merge_requests/92507#note_1068159236
skip_update_example_snapshot_prosemirror_json: Not yet implemented. See https://gitlab.com/gitlab-org/gitlab/-/merge_requests/92507#note_1068159236
skip_running_conformance_wysiwyg_tests: Not yet implemented. See https://gitlab.com/gitlab-org/gitlab/-/merge_requests/92507#note_1068159236
skip_running_snapshot_wysiwyg_html_tests: Not yet implemented. See https://gitlab.com/gitlab-org/gitlab/-/merge_requests/92507#note_1068159236
skip_running_snapshot_prosemirror_json_tests: Not yet implemented. See https://gitlab.com/gitlab-org/gitlab/-/merge_requests/92507#note_1068159236
08_01_00__examples_using_internal_extensions__markdown_preview_api_request_overrides__003:
08_03_00__gitlab_internal_extension_markdown__markdown_preview_api_request_overrides__003:
skip_update_example_snapshot_html_wysiwyg: Not yet implemented. See https://gitlab.com/gitlab-org/gitlab/-/merge_requests/92507#note_1068159236
skip_update_example_snapshot_prosemirror_json: Not yet implemented. See https://gitlab.com/gitlab-org/gitlab/-/merge_requests/92507#note_1068159236
skip_running_conformance_wysiwyg_tests: Not yet implemented. See https://gitlab.com/gitlab-org/gitlab/-/merge_requests/92507#note_1068159236
skip_running_snapshot_wysiwyg_html_tests: Not yet implemented. See https://gitlab.com/gitlab-org/gitlab/-/merge_requests/92507#note_1068159236
skip_running_snapshot_prosemirror_json_tests: Not yet implemented. See https://gitlab.com/gitlab-org/gitlab/-/merge_requests/92507#note_1068159236
08_01_00__examples_using_internal_extensions__markdown_preview_api_request_overrides__004:
08_03_00__gitlab_internal_extension_markdown__markdown_preview_api_request_overrides__004:
skip_update_example_snapshot_html_wysiwyg: Not yet implemented. See https://gitlab.com/gitlab-org/gitlab/-/merge_requests/92507#note_1068159236
skip_update_example_snapshot_prosemirror_json: Not yet implemented. See https://gitlab.com/gitlab-org/gitlab/-/merge_requests/92507#note_1068159236
skip_running_conformance_wysiwyg_tests: Not yet implemented. See https://gitlab.com/gitlab-org/gitlab/-/merge_requests/92507#note_1068159236
skip_running_snapshot_wysiwyg_html_tests: Not yet implemented. See https://gitlab.com/gitlab-org/gitlab/-/merge_requests/92507#note_1068159236
skip_running_snapshot_prosemirror_json_tests: Not yet implemented. See https://gitlab.com/gitlab-org/gitlab/-/merge_requests/92507#note_1068159236
08_01_00__examples_using_internal_extensions__markdown_preview_api_request_overrides__005:
08_03_00__gitlab_internal_extension_markdown__markdown_preview_api_request_overrides__005:
skip_update_example_snapshot_html_wysiwyg: Not yet implemented. See https://gitlab.com/gitlab-org/gitlab/-/merge_requests/92507#note_1068159236
skip_update_example_snapshot_prosemirror_json: Not yet implemented. See https://gitlab.com/gitlab-org/gitlab/-/merge_requests/92507#note_1068159236
skip_running_conformance_wysiwyg_tests: Not yet implemented. See https://gitlab.com/gitlab-org/gitlab/-/merge_requests/92507#note_1068159236
skip_running_snapshot_wysiwyg_html_tests: Not yet implemented. See https://gitlab.com/gitlab-org/gitlab/-/merge_requests/92507#note_1068159236
skip_running_snapshot_prosemirror_json_tests: Not yet implemented. See https://gitlab.com/gitlab-org/gitlab/-/merge_requests/92507#note_1068159236
08_01_00__examples_using_internal_extensions__markdown_preview_api_request_overrides__006:
08_03_00__gitlab_internal_extension_markdown__markdown_preview_api_request_overrides__006:
skip_update_example_snapshot_html_wysiwyg: Not yet implemented. See https://gitlab.com/gitlab-org/gitlab/-/merge_requests/92507#note_1068159236
skip_update_example_snapshot_prosemirror_json: Not yet implemented. See https://gitlab.com/gitlab-org/gitlab/-/merge_requests/92507#note_1068159236
skip_running_conformance_wysiwyg_tests: Not yet implemented. See https://gitlab.com/gitlab-org/gitlab/-/merge_requests/92507#note_1068159236

View File

@ -0,0 +1,111 @@
# GitLab Internal Extension Markdown
## Audio
See
[audio](https://docs.gitlab.com/ee/user/markdown.html#audio) in the GitLab Flavored Markdown documentation.
GLFM renders image elements as an audio player as long as the resources file extension is
one of the following supported audio extensions `.mp3`, `.oga`, `.ogg`, `.spx`, and `.wav`.
Audio ignore the alternative text part of an image declaration.
```````````````````````````````` example gitlab
![audio](audio.oga "audio title")
.
<p><audio src="audio.oga" title="audio title"></audio></p>
````````````````````````````````
Reference definitions work audio as well:
```````````````````````````````` example gitlab
[audio]: audio.oga "audio title"
![audio][audio]
.
<p><audio src="audio.oga" title="audio title"></audio></p>
````````````````````````````````
## Video
See
[videos](https://docs.gitlab.com/ee/user/markdown.html#videos) in the GitLab Flavored Markdown documentation.
GLFM renders image elements as a video player as long as the resources file extension is
one of the following supported video extensions `.mp4`, `.m4v`, `.mov`, `.webm`, and `.ogv`.
Videos ignore the alternative text part of an image declaration.
```````````````````````````````` example gitlab
![video](video.m4v "video title")
.
<p><video src="video.m4v" title="video title"></video></p>
````````````````````````````````
Reference definitions work video as well:
```````````````````````````````` example gitlab
[video]: video.mov "video title"
![video][video]
.
<p><video src="video.mov" title="video title"></video></p>
````````````````````````````````
## Markdown Preview API Request Overrides
This section contains examples of all controllers which use `PreviewMarkdown` module
and use different `markdown_context_params`. They exercise the various `preview_markdown`
endpoints via `glfm_example_metadata.yml`.
`preview_markdown` exercising `groups` API endpoint and `UploadLinkFilter`:
```````````````````````````````` example gitlab
[groups-test-file](/uploads/groups-test-file)
.
<p><a href="groups-test-file">groups-test-file</a></p>
````````````````````````````````
`preview_markdown` exercising `projects` API endpoint and `RepositoryLinkFilter`:
```````````````````````````````` example gitlab
[projects-test-file](projects-test-file)
.
<p><a href="projects-test-file">projects-test-file</a></p>
````````````````````````````````
`preview_markdown` exercising `projects` API endpoint and `SnippetReferenceFilter`:
```````````````````````````````` example gitlab
This project snippet ID reference IS filtered: $88888
.
<p>This project snippet ID reference IS filtered: $88888</p>
````````````````````````````````
`preview_markdown` exercising personal (non-project) `snippets` API endpoint. This is
only used by the comment field on personal snippets. It has no unique custom markdown
extension behavior, and specifically does not render snippet references via
`SnippetReferenceFilter`, even if the ID is valid.
```````````````````````````````` example gitlab
This personal snippet ID reference is not filtered: $99999
.
<p>This personal snippet ID reference is not filtered: $99999</p>
````````````````````````````````
`preview_markdown` exercising project `wikis` API endpoint and `WikiLinkFilter`:
```````````````````````````````` example gitlab
[project-wikis-test-file](project-wikis-test-file)
.
<p><a href="project-wikis-test-file">project-wikis-test-file</a></p>
````````````````````````````````
`preview_markdown` exercising group `wikis` API endpoint and `WikiLinkFilter`. This example
also requires an EE license enabling the `group_wikis` feature:
```````````````````````````````` example gitlab
[group-wikis-test-file](group-wikis-test-file)
.
<p><a href="group-wikis-test-file">group-wikis-test-file</a></p>
````````````````````````````````

View File

@ -1,4 +1,4 @@
# GitLab-Specific Markdown
# GitLab Official Specification Markdown
Currently, only some of the GitLab-specific markdown features are
listed in this section. We will eventually add all
@ -200,57 +200,6 @@ title: YAML front matter
<h2>title: YAML front matter</h2>
````````````````````````````````
## Audio
See
[audio](https://docs.gitlab.com/ee/user/markdown.html#audio) in the GitLab Flavored Markdown documentation.
GLFM renders image elements as an audio player as long as the resources file extension is
one of the following supported audio extensions `.mp3`, `.oga`, `.ogg`, `.spx`, and `.wav`.
Audio ignore the alternative text part of an image declaration.
```````````````````````````````` example gitlab
![audio](audio.oga "audio title")
.
<p><audio src="audio.oga" title="audio title"></audio></p>
````````````````````````````````
Reference definitions work audio as well:
```````````````````````````````` example gitlab
[audio]: audio.oga "audio title"
![audio][audio]
.
<p><audio src="audio.oga" title="audio title"></audio></p>
````````````````````````````````
## Video
See
[videos](https://docs.gitlab.com/ee/user/markdown.html#videos) in the GitLab Flavored Markdown documentation.
GLFM renders image elements as a video player as long as the resources file extension is
one of the following supported video extensions `.mp4`, `.m4v`, `.mov`, `.webm`, and `.ogv`.
Videos ignore the alternative text part of an image declaration.
```````````````````````````````` example gitlab
![video](video.m4v "video title")
.
<p><video src="video.m4v" title="video title"></video></p>
````````````````````````````````
Reference definitions work video as well:
```````````````````````````````` example gitlab
[video]: video.mov "video title"
![video][video]
.
<p><video src="video.mov" title="video title"></video></p>
````````````````````````````````
## Table of contents
See
@ -326,64 +275,3 @@ A table of contents can be indented with up to three spaces.
</nav>
<h1>Heading 1</h1>
````````````````````````````````
# Examples Using Internal Extensions
## Markdown Preview API Request Overrides
This section contains examples of all controllers which use `PreviewMarkdown` module
and use different `markdown_context_params`. They exercise the various `preview_markdown`
endpoints via `glfm_example_metadata.yml`.
`preview_markdown` exercising `groups` API endpoint and `UploadLinkFilter`:
```````````````````````````````` example gitlab
[groups-test-file](/uploads/groups-test-file)
.
<p><a href="groups-test-file">groups-test-file</a></p>
````````````````````````````````
`preview_markdown` exercising `projects` API endpoint and `RepositoryLinkFilter`:
```````````````````````````````` example gitlab
[projects-test-file](projects-test-file)
.
<p><a href="projects-test-file">projects-test-file</a></p>
````````````````````````````````
`preview_markdown` exercising `projects` API endpoint and `SnippetReferenceFilter`:
```````````````````````````````` example gitlab
This project snippet ID reference IS filtered: $88888
.
<p>This project snippet ID reference IS filtered: $88888</p>
````````````````````````````````
`preview_markdown` exercising personal (non-project) `snippets` API endpoint. This is
only used by the comment field on personal snippets. It has no unique custom markdown
extension behavior, and specifically does not render snippet references via
`SnippetReferenceFilter`, even if the ID is valid.
```````````````````````````````` example gitlab
This personal snippet ID reference is not filtered: $99999
.
<p>This personal snippet ID reference is not filtered: $99999</p>
````````````````````````````````
`preview_markdown` exercising project `wikis` API endpoint and `WikiLinkFilter`:
```````````````````````````````` example gitlab
[project-wikis-test-file](project-wikis-test-file)
.
<p><a href="project-wikis-test-file">project-wikis-test-file</a></p>
````````````````````````````````
`preview_markdown` exercising group `wikis` API endpoint and `WikiLinkFilter`. This example
also requires an EE license enabling the `group_wikis` feature:
```````````````````````````````` example gitlab
[group-wikis-test-file](group-wikis-test-file)
.
<p><a href="group-wikis-test-file">group-wikis-test-file</a></p>
````````````````````````````````

View File

@ -9600,7 +9600,7 @@ Multiple spaces
````````````````````````````````
# GitLab-Specific Markdown
# GitLab Official Specification Markdown
Currently, only some of the GitLab-specific markdown features are
listed in this section. We will eventually add all
@ -9802,57 +9802,6 @@ title: YAML front matter
<h2>title: YAML front matter</h2>
````````````````````````````````
## Audio
See
[audio](https://docs.gitlab.com/ee/user/markdown.html#audio) in the GitLab Flavored Markdown documentation.
GLFM renders image elements as an audio player as long as the resources file extension is
one of the following supported audio extensions `.mp3`, `.oga`, `.ogg`, `.spx`, and `.wav`.
Audio ignore the alternative text part of an image declaration.
```````````````````````````````` example gitlab
![audio](audio.oga "audio title")
.
<p><audio src="audio.oga" title="audio title"></audio></p>
````````````````````````````````
Reference definitions work audio as well:
```````````````````````````````` example gitlab
[audio]: audio.oga "audio title"
![audio][audio]
.
<p><audio src="audio.oga" title="audio title"></audio></p>
````````````````````````````````
## Video
See
[videos](https://docs.gitlab.com/ee/user/markdown.html#videos) in the GitLab Flavored Markdown documentation.
GLFM renders image elements as a video player as long as the resources file extension is
one of the following supported video extensions `.mp4`, `.m4v`, `.mov`, `.webm`, and `.ogv`.
Videos ignore the alternative text part of an image declaration.
```````````````````````````````` example gitlab
![video](video.m4v "video title")
.
<p><video src="video.m4v" title="video title"></video></p>
````````````````````````````````
Reference definitions work video as well:
```````````````````````````````` example gitlab
[video]: video.mov "video title"
![video][video]
.
<p><video src="video.mov" title="video title"></video></p>
````````````````````````````````
## Table of contents
See
@ -9929,7 +9878,58 @@ A table of contents can be indented with up to three spaces.
<h1>Heading 1</h1>
````````````````````````````````
# Examples Using Internal Extensions
# GitLab Internal Extension Markdown
## Audio
See
[audio](https://docs.gitlab.com/ee/user/markdown.html#audio) in the GitLab Flavored Markdown documentation.
GLFM renders image elements as an audio player as long as the resources file extension is
one of the following supported audio extensions `.mp3`, `.oga`, `.ogg`, `.spx`, and `.wav`.
Audio ignore the alternative text part of an image declaration.
```````````````````````````````` example gitlab
![audio](audio.oga "audio title")
.
<p><audio src="audio.oga" title="audio title"></audio></p>
````````````````````````````````
Reference definitions work audio as well:
```````````````````````````````` example gitlab
[audio]: audio.oga "audio title"
![audio][audio]
.
<p><audio src="audio.oga" title="audio title"></audio></p>
````````````````````````````````
## Video
See
[videos](https://docs.gitlab.com/ee/user/markdown.html#videos) in the GitLab Flavored Markdown documentation.
GLFM renders image elements as a video player as long as the resources file extension is
one of the following supported video extensions `.mp4`, `.m4v`, `.mov`, `.webm`, and `.ogv`.
Videos ignore the alternative text part of an image declaration.
```````````````````````````````` example gitlab
![video](video.m4v "video title")
.
<p><video src="video.m4v" title="video title"></video></p>
````````````````````````````````
Reference definitions work video as well:
```````````````````````````````` example gitlab
[video]: video.mov "video title"
![video][video]
.
<p><video src="video.mov" title="video title"></video></p>
````````````````````````````````
## Markdown Preview API Request Overrides

View File

@ -1,5 +1,7 @@
# frozen_string_literal: true
require 'cgi/util'
# Generated HTML is transformed back to GFM by app/assets/javascripts/behaviors/markdown/nodes/table_of_contents.js
module Banzai
module Filter
@ -93,7 +95,7 @@ module Banzai
def text
return '' unless node
@text ||= EscapeUtils.escape_html(node.text)
@text ||= CGI.escapeHTML(node.text)
end
private

View File

@ -513,6 +513,9 @@ msgid_plural "%{bold_start}%{count}%{bold_end} opened merge requests"
msgstr[0] ""
msgstr[1] ""
msgid "%{chartTitle} no data series"
msgstr ""
msgid "%{code_open}Masked:%{code_close} Hidden in job logs. Must match masking requirements."
msgstr ""

View File

@ -16,7 +16,9 @@ module Glfm
# GitLab Flavored Markdown specification files
specification_input_glfm_path = specification_path.join('input/gitlab_flavored_markdown')
GLFM_INTRO_MD_PATH = specification_input_glfm_path.join('glfm_intro.md')
GLFM_EXAMPLES_TXT_PATH = specification_input_glfm_path.join('glfm_canonical_examples.txt')
GLFM_OFFICIAL_SPECIFICATION_EXAMPLES_MD_PATH =
specification_input_glfm_path.join('glfm_official_specification_examples.md')
GLFM_INTERNAL_EXTENSION_EXAMPLES_MD_PATH = specification_input_glfm_path.join('glfm_internal_extension_examples.md')
GLFM_EXAMPLE_STATUS_YML_PATH = specification_input_glfm_path.join('glfm_example_status.yml')
GLFM_EXAMPLE_METADATA_YML_PATH =
specification_input_glfm_path.join('glfm_example_metadata.yml')

View File

@ -76,7 +76,7 @@ module Glfm
glfm_spec_txt_lines = ghfm_spec_txt_lines.dup
replace_header(glfm_spec_txt_lines)
replace_intro_section(glfm_spec_txt_lines)
insert_examples_txt(glfm_spec_txt_lines)
insert_examples(glfm_spec_txt_lines)
glfm_spec_txt_lines.join('')
end
@ -103,9 +103,12 @@ module Glfm
spec_txt_lines[ghfm_intro_header_begin_index, ghfm_intro_section_length] = glfm_intro_md_lines
end
def insert_examples_txt(spec_txt_lines)
glfm_examples_txt_lines = File.open(GLFM_EXAMPLES_TXT_PATH).readlines
raise "Unable to read lines from #{GLFM_EXAMPLES_TXT_PATH}" if glfm_examples_txt_lines.empty?
def insert_examples(spec_txt_lines)
official_spec_lines = File.open(GLFM_OFFICIAL_SPECIFICATION_EXAMPLES_MD_PATH).readlines
raise "Unable to read lines from #{GLFM_OFFICIAL_SPECIFICATION_EXAMPLES_MD_PATH}" if official_spec_lines.empty?
internal_extension_lines = File.open(GLFM_INTERNAL_EXTENSION_EXAMPLES_MD_PATH).readlines
raise "Unable to read lines from #{GLFM_INTERNAL_EXTENSION_EXAMPLES_MD_PATH}" if internal_extension_lines.empty?
ghfm_end_tests_comment_index = spec_txt_lines.index do |line|
line =~ END_TESTS_COMMENT_LINE_TEXT
@ -113,7 +116,13 @@ module Glfm
raise "Unable to locate 'END TESTS' comment line in #{GHFM_SPEC_MD_PATH}" if ghfm_end_tests_comment_index.nil?
# Insert the GLFM examples before the 'END TESTS' comment line
spec_txt_lines[ghfm_end_tests_comment_index - 1] = ["\n", glfm_examples_txt_lines, "\n"].flatten
spec_txt_lines[ghfm_end_tests_comment_index - 1] = [
"\n",
official_spec_lines,
"\n",
internal_extension_lines,
"\n"
].flatten
spec_txt_lines
end

View File

@ -4,12 +4,13 @@ require 'spec_helper'
RSpec.describe 'Expand and collapse diffs', :js do
let(:branch) { 'expand-collapse-diffs' }
let(:project) { create(:project, :repository) }
let_it_be(:project) { create(:project, :repository) }
let_it_be(:admin) { create(:admin) }
before do
allow(Gitlab::CurrentSettings).to receive(:diff_max_patch_bytes).and_return(100.kilobytes)
admin = create(:admin)
sign_in(admin)
gitlab_enable_admin_mode_sign_in(admin)

View File

@ -126,6 +126,7 @@ describe('BoardFilteredSearch', () => {
{ type: 'weight', value: { data: '2', operator: '=' } },
{ type: 'iteration', value: { data: 'Any&3', operator: '=' } },
{ type: 'release', value: { data: 'v1.0.0', operator: '=' } },
{ type: 'health_status', value: { data: 'onTrack', operator: '=' } },
];
jest.spyOn(urlUtility, 'updateHistory');
findFilteredSearch().vm.$emit('onFilter', mockFilters);
@ -134,7 +135,7 @@ describe('BoardFilteredSearch', () => {
title: '',
replace: true,
url:
'http://test.host/?author_username=root&label_name[]=label&label_name[]=label%262&assignee_username=root&milestone_title=New%20Milestone&iteration_id=Any&iteration_cadence_id=3&types=INCIDENT&weight=2&release_tag=v1.0.0',
'http://test.host/?author_username=root&label_name[]=label&label_name[]=label%262&assignee_username=root&milestone_title=New%20Milestone&iteration_id=Any&iteration_cadence_id=3&types=INCIDENT&weight=2&release_tag=v1.0.0&health_status=onTrack',
});
});
@ -160,7 +161,9 @@ describe('BoardFilteredSearch', () => {
describe('when url params are already set', () => {
beforeEach(() => {
createComponent({ initialFilterParams: { authorUsername: 'root', labelName: ['label'] } });
createComponent({
initialFilterParams: { authorUsername: 'root', labelName: ['label'], healthStatus: 'Any' },
});
jest.spyOn(store, 'dispatch');
});
@ -169,6 +172,7 @@ describe('BoardFilteredSearch', () => {
expect(findFilteredSearch().props('initialFilterValue')).toEqual([
{ type: 'author', value: { data: 'root', operator: '=' } },
{ type: 'label', value: { data: 'label', operator: '=' } },
{ type: 'health_status', value: { data: 'Any', operator: '=' } },
]);
});
});

View File

@ -7,7 +7,11 @@ RSpec.describe Integrations::Harbor do
let(:project_name) { 'testproject' }
let(:username) { 'harborusername' }
let(:password) { 'harborpassword' }
let(:harbor_integration) { create(:harbor_integration) }
let(:harbor_integration) { build(:harbor_integration) }
it_behaves_like Integrations::ResetSecretFields do
let(:integration) { described_class.new }
end
describe "masked password" do
subject { build(:harbor_integration) }
@ -66,6 +70,8 @@ RSpec.describe Integrations::Harbor do
end
context 'ci variables' do
let(:harbor_integration) { create(:harbor_integration) }
it 'returns vars when harbor_integration is activated' do
ci_vars = [
{ key: 'HARBOR_URL', value: url },
@ -94,66 +100,4 @@ RSpec.describe Integrations::Harbor do
end
end
end
describe 'before_validation :reset_username_and_password' do
context 'when username/password was previously set' do
it 'resets username and password if url changed' do
harbor_integration.url = 'https://anotherharbor.com'
harbor_integration.valid?
expect(harbor_integration.password).to be_nil
expect(harbor_integration.username).to be_nil
end
it 'does not reset password if username changed' do
harbor_integration.username = 'newusername'
harbor_integration.valid?
expect(harbor_integration.password).to eq('harborpassword')
end
it 'does not reset username if password changed' do
harbor_integration.password = 'newpassword'
harbor_integration.valid?
expect(harbor_integration.username).to eq('harborusername')
end
it "does not reset password if new url is set together with password, even if it's the same password" do
harbor_integration.url = 'https://anotherharbor.com'
harbor_integration.password = 'harborpassword'
harbor_integration.valid?
expect(harbor_integration.password).to eq('harborpassword')
expect(harbor_integration.username).to be_nil
expect(harbor_integration.url).to eq('https://anotherharbor.com')
end
it "does not reset username if new url is set together with username, even if it's the same username" do
harbor_integration.url = 'https://anotherharbor.com'
harbor_integration.username = 'harborusername'
harbor_integration.valid?
expect(harbor_integration.password).to be_nil
expect(harbor_integration.username).to eq('harborusername')
expect(harbor_integration.url).to eq('https://anotherharbor.com')
end
end
it 'saves password if new url is set together with password when no password was previously set' do
harbor_integration.password = nil
harbor_integration.username = nil
harbor_integration.url = 'https://anotherharbor.com'
harbor_integration.password = 'newpassword'
harbor_integration.username = 'newusername'
harbor_integration.save!
expect(harbor_integration).to have_attributes(
url: 'https://anotherharbor.com',
password: 'newpassword',
username: 'newusername'
)
end
end
end

View File

@ -16,8 +16,10 @@ RSpec.describe Glfm::UpdateSpecification, '#process' do
let(:glfm_intro_md_path) { described_class::GLFM_INTRO_MD_PATH }
let(:glfm_intro_md_io) { StringIO.new(glfm_intro_md_contents) }
let(:glfm_examples_txt_path) { described_class::GLFM_EXAMPLES_TXT_PATH }
let(:glfm_examples_txt_io) { StringIO.new(glfm_examples_txt_contents) }
let(:glfm_official_specification_examples_md_path) { described_class::GLFM_OFFICIAL_SPECIFICATION_EXAMPLES_MD_PATH }
let(:glfm_official_specification_examples_md_io) { StringIO.new(glfm_official_specification_examples_md_contents) }
let(:glfm_internal_extension_examples_md_path) { described_class::GLFM_INTERNAL_EXTENSION_EXAMPLES_MD_PATH }
let(:glfm_internal_extension_examples_md_io) { StringIO.new(glfm_internal_extension_examples_md_contents) }
let(:glfm_spec_txt_path) { described_class::GLFM_SPEC_TXT_PATH }
let(:glfm_spec_txt_io) { StringIO.new }
@ -67,9 +69,17 @@ RSpec.describe Glfm::UpdateSpecification, '#process' do
MARKDOWN
end
let(:glfm_examples_txt_contents) do
let(:glfm_official_specification_examples_md_contents) do
<<~MARKDOWN
# GitLab-Specific Section with Examples
# Official Specification Section with Examples
Some examples.
MARKDOWN
end
let(:glfm_internal_extension_examples_md_contents) do
<<~MARKDOWN
# Internal Extension Section with Examples
Some examples.
MARKDOWN
@ -88,7 +98,12 @@ RSpec.describe Glfm::UpdateSpecification, '#process' do
end
allow(File).to receive(:open).with(ghfm_spec_md_path) { ghfm_spec_txt_local_io }
allow(File).to receive(:open).with(glfm_intro_md_path) { glfm_intro_md_io }
allow(File).to receive(:open).with(glfm_examples_txt_path) { glfm_examples_txt_io }
allow(File).to receive(:open).with(glfm_official_specification_examples_md_path) do
glfm_official_specification_examples_md_io
end
allow(File).to receive(:open).with(glfm_internal_extension_examples_md_path) do
glfm_internal_extension_examples_md_io
end
allow(File).to receive(:open).with(glfm_spec_txt_path, 'w') { glfm_spec_txt_io }
# Prevent console output when running tests
@ -179,11 +194,15 @@ RSpec.describe Glfm::UpdateSpecification, '#process' do
expect(glfm_contents).to match(/#{Regexp.escape(glfm_intro_md_contents)}/m)
end
it 'inserts the GitLab examples sections before the appendix section' do
it 'inserts the GitLab official spec and internal extension examples sections before the appendix section' do
expected = <<~MARKDOWN
End of last GitHub examples section.
# GitLab-Specific Section with Examples
# Official Specification Section with Examples
Some examples.
# Internal Extension Section with Examples
Some examples.