summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorGitLab Bot <gitlab-bot@gitlab.com>2021-06-13 00:10:04 +0000
committerGitLab Bot <gitlab-bot@gitlab.com>2021-06-13 00:10:04 +0000
commitfb41d98732c08850ff68aebaae47867bbf400e4d (patch)
treea292866eb9396bc71f6309c408724efa00b840e1
parent3df342dd2f9f7d56e6a8d22be6c8320e047fa89d (diff)
downloadgitlab-ce-fb41d98732c08850ff68aebaae47867bbf400e4d.tar.gz
Add latest changes from gitlab-org/gitlab@master
-rw-r--r--app/assets/javascripts/pipeline_editor/components/editor/text_editor.vue18
-rw-r--r--app/controllers/projects/ci/pipeline_editor_controller.rb1
-rw-r--r--spec/frontend/pipeline_editor/components/editor/text_editor_spec.js49
3 files changed, 42 insertions, 26 deletions
diff --git a/app/assets/javascripts/pipeline_editor/components/editor/text_editor.vue b/app/assets/javascripts/pipeline_editor/components/editor/text_editor.vue
index a3410d7b837..d39c67669a8 100644
--- a/app/assets/javascripts/pipeline_editor/components/editor/text_editor.vue
+++ b/app/assets/javascripts/pipeline_editor/components/editor/text_editor.vue
@@ -2,12 +2,14 @@
import { EDITOR_READY_EVENT } from '~/editor/constants';
import { CiSchemaExtension } from '~/editor/extensions/editor_ci_schema_ext';
import EditorLite from '~/vue_shared/components/editor_lite.vue';
+import glFeatureFlagMixin from '~/vue_shared/mixins/gl_feature_flags_mixin';
import getCommitSha from '../../graphql/queries/client/commit_sha.graphql';
export default {
components: {
EditorLite,
},
+ mixins: [glFeatureFlagMixin()],
inject: ['ciConfigPath', 'projectPath', 'projectNamespace'],
inheritAttrs: false,
data() {
@@ -25,14 +27,16 @@ export default {
this.$emit('updateCiConfig', content);
},
registerCiSchema() {
- const editorInstance = this.$refs.editor.getEditor();
+ if (this.glFeatures.schemaLinting) {
+ const editorInstance = this.$refs.editor.getEditor();
- editorInstance.use(new CiSchemaExtension({ instance: editorInstance }));
- editorInstance.registerCiSchema({
- projectPath: this.projectPath,
- projectNamespace: this.projectNamespace,
- ref: this.commitSha,
- });
+ editorInstance.use(new CiSchemaExtension({ instance: editorInstance }));
+ editorInstance.registerCiSchema({
+ projectPath: this.projectPath,
+ projectNamespace: this.projectNamespace,
+ ref: this.commitSha,
+ });
+ }
},
},
readyEvent: EDITOR_READY_EVENT,
diff --git a/app/controllers/projects/ci/pipeline_editor_controller.rb b/app/controllers/projects/ci/pipeline_editor_controller.rb
index 6e31816bc99..ed1d5ca9594 100644
--- a/app/controllers/projects/ci/pipeline_editor_controller.rb
+++ b/app/controllers/projects/ci/pipeline_editor_controller.rb
@@ -6,6 +6,7 @@ class Projects::Ci::PipelineEditorController < Projects::ApplicationController
push_frontend_feature_flag(:pipeline_editor_empty_state_action, @project, default_enabled: :yaml)
push_frontend_feature_flag(:pipeline_editor_branch_switcher, @project, default_enabled: :yaml)
push_frontend_feature_flag(:pipeline_editor_drawer, @project, default_enabled: :yaml)
+ push_frontend_feature_flag(:schema_linting, @project, default_enabled: :yaml)
end
feature_category :pipeline_authoring
diff --git a/spec/frontend/pipeline_editor/components/editor/text_editor_spec.js b/spec/frontend/pipeline_editor/components/editor/text_editor_spec.js
index 7a5b01fb04a..756b8dd980c 100644
--- a/spec/frontend/pipeline_editor/components/editor/text_editor_spec.js
+++ b/spec/frontend/pipeline_editor/components/editor/text_editor_spec.js
@@ -32,12 +32,13 @@ describe('Pipeline Editor | Text editor component', () => {
},
};
- const createComponent = (opts = {}, mountFn = shallowMount) => {
+ const createComponent = (glFeatures = {}, mountFn = shallowMount) => {
wrapper = mountFn(TextEditor, {
provide: {
projectPath: mockProjectPath,
projectNamespace: mockProjectNamespace,
ciConfigPath: mockCiConfigPath,
+ glFeatures,
},
attrs: {
value: mockCiYml,
@@ -54,7 +55,6 @@ describe('Pipeline Editor | Text editor component', () => {
stubs: {
EditorLite: MockEditorLite,
},
- ...opts,
});
};
@@ -66,7 +66,6 @@ describe('Pipeline Editor | Text editor component', () => {
afterEach(() => {
wrapper.destroy();
- wrapper = null;
mockUse.mockClear();
mockRegisterCiSchema.mockClear();
@@ -100,25 +99,37 @@ describe('Pipeline Editor | Text editor component', () => {
});
});
- describe('register CI schema', () => {
- beforeEach(async () => {
- createComponent();
-
- // Since the editor will have already mounted, the event will have fired.
- // To ensure we properly test this, we clear the mock and re-remit the event.
- mockRegisterCiSchema.mockClear();
- mockUse.mockClear();
+ describe('CI schema', () => {
+ describe('when `schema_linting` feature flag is on', () => {
+ beforeEach(() => {
+ createComponent({ schemaLinting: true });
+ // Since the editor will have already mounted, the event will have fired.
+ // To ensure we properly test this, we clear the mock and re-remit the event.
+ mockRegisterCiSchema.mockClear();
+ mockUse.mockClear();
+ findEditor().vm.$emit(EDITOR_READY_EVENT);
+ });
- findEditor().vm.$emit(EDITOR_READY_EVENT);
+ it('configures editor with syntax highlight', () => {
+ expect(mockUse).toHaveBeenCalledTimes(1);
+ expect(mockRegisterCiSchema).toHaveBeenCalledTimes(1);
+ expect(mockRegisterCiSchema).toHaveBeenCalledWith({
+ projectNamespace: mockProjectNamespace,
+ projectPath: mockProjectPath,
+ ref: mockCommitSha,
+ });
+ });
});
- it('configures editor with syntax highlight', async () => {
- expect(mockUse).toHaveBeenCalledTimes(1);
- expect(mockRegisterCiSchema).toHaveBeenCalledTimes(1);
- expect(mockRegisterCiSchema).toHaveBeenCalledWith({
- projectNamespace: mockProjectNamespace,
- projectPath: mockProjectPath,
- ref: mockCommitSha,
+ describe('when `schema_linting` feature flag is off', () => {
+ beforeEach(() => {
+ createComponent();
+ findEditor().vm.$emit(EDITOR_READY_EVENT);
+ });
+
+ it('does not call the register CI schema function', () => {
+ expect(mockUse).not.toHaveBeenCalled();
+ expect(mockRegisterCiSchema).not.toHaveBeenCalled();
});
});
});