diff options
author | GitLab Bot <gitlab-bot@gitlab.com> | 2021-06-13 00:10:04 +0000 |
---|---|---|
committer | GitLab Bot <gitlab-bot@gitlab.com> | 2021-06-13 00:10:04 +0000 |
commit | fb41d98732c08850ff68aebaae47867bbf400e4d (patch) | |
tree | a292866eb9396bc71f6309c408724efa00b840e1 | |
parent | 3df342dd2f9f7d56e6a8d22be6c8320e047fa89d (diff) | |
download | gitlab-ce-fb41d98732c08850ff68aebaae47867bbf400e4d.tar.gz |
Add latest changes from gitlab-org/gitlab@master
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(); }); }); }); |