From 4e9f718e190a944c39fda2a178eb8b901e7e6ec7 Mon Sep 17 00:00:00 2001 From: GitLab Bot Date: Thu, 26 Sep 2019 15:06:18 +0000 Subject: [PATCH] Add latest changes from gitlab-org/gitlab@master --- .../issue_templates/Feature Flag Roll Out.md | 1 + CHANGELOG-EE.md | 2 +- CHANGELOG.md | 2 +- Gemfile | 2 +- .../javascripts/notes/stores/mutations.js | 7 +- app/assets/stylesheets/framework/header.scss | 1 + .../header/_current_user_dropdown.html.haml | 17 +++ app/views/layouts/header/_default.html.haml | 6 +- app/views/layouts/nav/_dashboard.html.haml | 71 +++--------- .../23400-fix-duplicate-replies.yml | 5 + .../unreleased/31329-hidden-nav-content.yml | 5 + changelogs/unreleased/9801-epic-copy-link.yml | 5 + ...k-unhandled-exception-in-health-checks.yml | 5 + .../20190911251732_sync_issuables_state_id.rb | 2 +- doc/development/ee_features.md | 101 ++---------------- .../testing_guide/frontend_testing.md | 12 +-- doc/install/installation.md | 3 + .../health_checks/simple_abstract_check.rb | 2 + spec/features/dashboard/active_tab_spec.rb | 16 --- .../javascripts/notes/stores/mutation_spec.js | 17 ++- .../health_checks/simple_check_shared.rb | 8 ++ 21 files changed, 107 insertions(+), 183 deletions(-) create mode 100644 changelogs/unreleased/23400-fix-duplicate-replies.yml create mode 100644 changelogs/unreleased/31329-hidden-nav-content.yml create mode 100644 changelogs/unreleased/9801-epic-copy-link.yml create mode 100644 changelogs/unreleased/ak-unhandled-exception-in-health-checks.yml diff --git a/.gitlab/issue_templates/Feature Flag Roll Out.md b/.gitlab/issue_templates/Feature Flag Roll Out.md index 90c56417dbc..e0de8fab4a7 100644 --- a/.gitlab/issue_templates/Feature Flag Roll Out.md +++ b/.gitlab/issue_templates/Feature Flag Roll Out.md @@ -34,6 +34,7 @@ If applicable, any groups/projects that are happy to have this feature turned on - [ ] Test on staging - [ ] Ensure that documentation has been updated - [ ] Enable on GitLab.com for individual groups/projects listed above and verify behaviour +- [ ] Coordinate a time to enable the flag with `#production` and `#g_delivery` on slack. - [ ] Announce on the issue an estimated time this will be enabled on GitLab.com - [ ] Enable on GitLab.com by running chatops command in `#production` - [ ] Cross post chatops slack command to `#support_gitlab-com` and in your team channel diff --git a/CHANGELOG-EE.md b/CHANGELOG-EE.md index f3cb9e175c2..fd4ea7af569 100644 --- a/CHANGELOG-EE.md +++ b/CHANGELOG-EE.md @@ -4215,7 +4215,7 @@ Please view this file on the master branch, on stable branches it's out of date. ## 8.14.0 (2016-11-22) - Added Backfill service for Geo. !861 -- Fix for autosuggested approvers(https://gitlab.com/gitlab-org/gitlab-ee/issues/1273). +- Fix for autosuggested approvers(https://gitlab.com/gitlab-org/gitlab/issues/1273). - Gracefully recover from previously failed rebase. - Disable retries for remote mirror update worker. !848 - Fix Approvals API documentation. diff --git a/CHANGELOG.md b/CHANGELOG.md index f1a38a2625f..eedbbb67af3 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -8367,7 +8367,7 @@ entry. - Reinstate is_admin flag in users api when authenticated user is an admin. !12211 (rickettm) - Fix edit button for deploy keys available from other projects. !12301 (Alexander Randa) - Fix passing CI_ENVIRONMENT_NAME and CI_ENVIRONMENT_SLUG for CI_ENVIRONMENT_URL. !12344 -- Disable environment list refresh due to bug https://gitlab.com/gitlab-org/gitlab-ee/issues/2677. !12347 +- Disable environment list refresh due to bug https://gitlab.com/gitlab-org/gitlab/issues/2677. !12347 - Standardize timeline note margins across different viewport sizes. !12364 - Fix Ordered Task List Items. !31483 (Jared Deckard ) - Upgrade dependency to Go 1.8.3. !31943 diff --git a/Gemfile b/Gemfile index e657b2cd611..e00b95fea3a 100644 --- a/Gemfile +++ b/Gemfile @@ -311,7 +311,7 @@ gem 'gettext', '~> 3.2.2', require: false, group: :development gem 'batch-loader', '~> 1.4.0' # Perf bar -# https://gitlab.com/gitlab-org/gitlab-ee/issues/13996 +# https://gitlab.com/gitlab-org/gitlab/issues/13996 gem 'gitlab-peek', '~> 0.0.1', require: 'peek' # Snowplow events tracking diff --git a/app/assets/javascripts/notes/stores/mutations.js b/app/assets/javascripts/notes/stores/mutations.js index fa44ef2d057..e70f0238316 100644 --- a/app/assets/javascripts/notes/stores/mutations.js +++ b/app/assets/javascripts/notes/stores/mutations.js @@ -33,10 +33,11 @@ export default { }, [types.ADD_NEW_REPLY_TO_DISCUSSION](state, note) { - const noteObj = utils.findNoteObjectById(state.discussions, note.discussion_id); + const discussion = utils.findNoteObjectById(state.discussions, note.discussion_id); + const existingNote = discussion && utils.findNoteObjectById(discussion.notes, note.id); - if (noteObj) { - noteObj.notes.push(note); + if (discussion && !existingNote) { + discussion.notes.push(note); } }, diff --git a/app/assets/stylesheets/framework/header.scss b/app/assets/stylesheets/framework/header.scss index ca737c53318..1195e467192 100644 --- a/app/assets/stylesheets/framework/header.scss +++ b/app/assets/stylesheets/framework/header.scss @@ -523,6 +523,7 @@ margin-top: 4px; color: $gl-text-color; left: auto; + max-height: $dropdown-max-height-lg; li.current-user { padding: $dropdown-item-padding-y $dropdown-item-padding-x; diff --git a/app/views/layouts/header/_current_user_dropdown.html.haml b/app/views/layouts/header/_current_user_dropdown.html.haml index 808290afcad..b636725fabf 100644 --- a/app/views/layouts/header/_current_user_dropdown.html.haml +++ b/app/views/layouts/header/_current_user_dropdown.html.haml @@ -21,6 +21,23 @@ - if current_user_menu?(:settings) %li = link_to s_("CurrentUser|Settings"), profile_path, data: { qa_selector: 'settings_link' } + + - if current_user_menu?(:help) + %li.divider.d-md-none + %li.d-md-none + = link_to _("Help"), help_path + %li.d-md-none + = link_to _("Support"), support_url + = render_if_exists "shared/learn_gitlab_menu_item" + %li.d-md-none + = link_to _("Submit feedback"), "https://about.gitlab.com/submit-feedback" + - if current_user_menu?(:help) || current_user_menu?(:settings) || current_user_menu?(:profile) + = render 'shared/user_dropdown_contributing_link' + = render_if_exists 'shared/user_dropdown_instance_review' + - if Gitlab.com? + %li.js-canary-link.d-md-none + = link_to _("Switch to GitLab Next"), "https://next.gitlab.com/" + - if current_user_menu?(:sign_out) %li.divider %li diff --git a/app/views/layouts/header/_default.html.haml b/app/views/layouts/header/_default.html.haml index 1911673b63a..d8697be7f7a 100644 --- a/app/views/layouts/header/_default.html.haml +++ b/app/views/layouts/header/_default.html.haml @@ -33,9 +33,9 @@ - if current_user = render 'layouts/header/new_dropdown' - if header_link?(:search) - %li.nav-item.d-none.d-sm-none.d-md-block.m-auto + %li.nav-item.d-none.d-lg-block.m-auto = render 'layouts/search' unless current_controller?(:search) - %li.nav-item.d-inline-block.d-sm-none.d-md-none + %li.nav-item.d-inline-block.d-lg-none = link_to search_path_url, title: _('Search'), aria: { label: _('Search') }, data: {toggle: 'tooltip', placement: 'bottom', container: 'body'} do = sprite_icon('search', size: 16) - if header_link?(:issues) @@ -58,7 +58,7 @@ = sprite_icon('todo-done', size: 16) %span.badge.badge-pill.todos-count{ class: ('hidden' if todos_pending_count.zero?) } = todos_count_format(todos_pending_count) - %li.nav-item.header-help.dropdown + %li.nav-item.header-help.dropdown.d-none.d-md-block = link_to help_path, class: 'header-help-dropdown-toggle', data: { toggle: "dropdown" } do = sprite_icon('question', size: 16) = sprite_icon('angle-down', css_class: 'caret-down') diff --git a/app/views/layouts/nav/_dashboard.html.haml b/app/views/layouts/nav/_dashboard.html.haml index 015ba13be05..b20792a4417 100644 --- a/app/views/layouts/nav/_dashboard.html.haml +++ b/app/views/layouts/nav/_dashboard.html.haml @@ -10,37 +10,26 @@ = render "layouts/nav/projects_dropdown/show" - if dashboard_nav_link?(:groups) - = nav_link(controller: ['dashboard/groups', 'explore/groups'], html_options: { id: 'nav-groups-dropdown', class: "home dropdown header-groups qa-groups-dropdown", data: { track_label: "groups_dropdown", track_event: "click_dropdown", track_value: "" } }) do + = nav_link(controller: ['dashboard/groups', 'explore/groups'], html_options: { id: 'nav-groups-dropdown', class: "d-none d-md-block home dropdown header-groups qa-groups-dropdown", data: { track_label: "groups_dropdown", track_event: "click_dropdown", track_value: "" } }) do %button.btn{ type: 'button', data: { toggle: "dropdown" } } = _('Groups') = sprite_icon('angle-down', css_class: 'caret-down') .dropdown-menu.frequent-items-dropdown-menu = render "layouts/nav/groups_dropdown/show" - - if dashboard_nav_link?(:activity) - = nav_link(path: 'dashboard#activity', html_options: { class: ["d-none d-xl-block", ("d-lg-block" unless has_extra_nav_icons?)] }) do - = link_to activity_dashboard_path, class: 'dashboard-shortcuts-activity' do - = _('Activity') - - - if dashboard_nav_link?(:milestones) - = nav_link(controller: 'dashboard/milestones', html_options: { class: ["d-none d-xl-block", ("d-lg-block" unless has_extra_nav_icons?)] }) do - = link_to dashboard_milestones_path, class: 'dashboard-shortcuts-milestones' do - = _('Milestones') - - - if dashboard_nav_link?(:snippets) - = nav_link(controller: 'dashboard/snippets', html_options: { class: ["d-none d-xl-block", ("d-lg-block" unless has_extra_nav_icons?)] }) do - = link_to dashboard_snippets_path, class: 'dashboard-shortcuts-snippets qa-snippets-link' do - = _('Snippets') - = render_if_exists 'layouts/nav/sidebar/analytics_link' - if any_dashboard_nav_link?([:groups, :milestones, :activity, :snippets]) - %li.header-more.dropdown.d-xl-none{ class: ('d-lg-none' unless has_extra_nav_icons?) } + %li.header-more.dropdown %a{ href: "#", data: { toggle: "dropdown" } } = _('More') = sprite_icon('angle-down', css_class: 'caret-down') .dropdown-menu %ul + - if dashboard_nav_link?(:groups) + %li.d-md-none + = link_to dashboard_groups_path do + = _('Groups') - if dashboard_nav_link?(:activity) = nav_link(path: 'dashboard#activity') do = link_to activity_dashboard_path do @@ -53,20 +42,20 @@ - if dashboard_nav_link?(:snippets) = nav_link(controller: 'dashboard/snippets') do - = link_to dashboard_snippets_path, class: 'dashboard-shortcuts-snippets' do + = link_to dashboard_snippets_path, class: 'dashboard-shortcuts-snippets qa-snippets-link' do = _('Snippets') = render_if_exists 'layouts/nav/sidebar/analytics_more_link' - %li.dropdown.d-lg-none + %li.dropdown = render_if_exists 'dashboard/nav_link_list' - if can?(current_user, :read_instance_statistics) - = nav_link(controller: [:conversational_development_index, :cohorts], html_options: { class: 'd-lg-none' }) do + = nav_link(controller: [:conversational_development_index, :cohorts]) do = link_to instance_statistics_root_path do = _('Instance Statistics') - if current_user.admin? = nav_link(controller: 'admin/dashboard') do - = link_to admin_root_path, class: 'd-lg-none admin-icon qa-admin-area-link' do + = link_to admin_root_path, class: 'admin-icon qa-admin-area-link d-xl-none' do = _('Admin Area') - if Feature.enabled?(:user_mode_in_session) - if header_link?(:admin_mode) @@ -79,45 +68,19 @@ = _('Enter admin mode') - if Gitlab::Sherlock.enabled? %li - = link_to sherlock_transactions_path, class: 'd-lg-none admin-icon' do + = link_to sherlock_transactions_path, class: 'admin-icon' do = _('Sherlock Transactions') + - if current_user.admin? + = nav_link(controller: 'admin/dashboard', html_options: { class: "d-none d-xl-block"}) do + = link_to admin_root_path, class: 'admin-icon qa-admin-area-link', title: _('Admin Area'), aria: { label: _('Admin Area') }, data: {toggle: 'tooltip', placement: 'bottom', container: 'body'} do + = sprite_icon('admin', size: 18) + + -# Shortcut to Dashboard > Projects - if dashboard_nav_link?(:projects) %li.hidden = link_to dashboard_projects_path, class: 'dashboard-shortcuts-projects' do = _('Projects') - - if current_controller?('ide') - %li.line-separator.d-none.d-sm-block - = nav_link(controller: 'ide') do - = link_to '#', class: 'dashboard-shortcuts-web-ide' do - = _('Web IDE') - - %li.dropdown{ class: 'd-none d-lg-block' } - = render_if_exists 'dashboard/nav_link' - - if can?(current_user, :read_instance_statistics) - = nav_link(controller: [:conversational_development_index, :cohorts], html_options: { class: "d-none d-lg-block d-xl-block"}) do - = link_to instance_statistics_root_path, title: _('Instance Statistics'), aria: { label: _('Instance Statistics') }, data: {toggle: 'tooltip', placement: 'bottom', container: 'body'} do - = sprite_icon('chart', size: 18) - - if current_user.admin? - = nav_link(controller: 'admin/dashboard', html_options: { class: "d-none d-lg-block d-xl-block"}) do - = link_to admin_root_path, class: 'admin-icon qa-admin-area-link', title: _('Admin Area'), aria: { label: _('Admin Area') }, data: {toggle: 'tooltip', placement: 'bottom', container: 'body'} do - = sprite_icon('admin', size: 18) - - - if Feature.enabled?(:user_mode_in_session) - - if header_link?(:admin_mode) - = nav_link(controller: 'admin/sessions', html_options: { class: "d-none d-lg-block d-xl-block"}) do - = link_to destroy_admin_session_path, title: _('Leave admin mode'), aria: { label: _('Leave admin mode') }, data: { toggle: 'tooltip', placement: 'bottom', container: 'body' } do - = sprite_icon('lock-open', size: 18) - - elsif current_user.admin? - = nav_link(controller: 'admin/sessions', html_options: { class: "d-none d-lg-block d-xl-block"}) do - = link_to new_admin_session_path, title: _('Enter admin mode'), aria: { label: _('Enter admin mode') }, data: { toggle: 'tooltip', placement: 'bottom', container: 'body' } do - = sprite_icon('lock', size: 18) - - - if Gitlab::Sherlock.enabled? - %li - = link_to sherlock_transactions_path, class: 'admin-icon d-none d-lg-block d-xl-block', title: _('Sherlock Transactions'), - data: {toggle: 'tooltip', placement: 'bottom', container: 'body'} do - = icon('tachometer fw') = render_if_exists 'layouts/nav/geo_primary_node_url' diff --git a/changelogs/unreleased/23400-fix-duplicate-replies.yml b/changelogs/unreleased/23400-fix-duplicate-replies.yml new file mode 100644 index 00000000000..26b24c66085 --- /dev/null +++ b/changelogs/unreleased/23400-fix-duplicate-replies.yml @@ -0,0 +1,5 @@ +--- +title: Fix new discussion replies sometimes showing up twice +merge_request: 17255 +author: +type: fixed diff --git a/changelogs/unreleased/31329-hidden-nav-content.yml b/changelogs/unreleased/31329-hidden-nav-content.yml new file mode 100644 index 00000000000..2c85c8df2e3 --- /dev/null +++ b/changelogs/unreleased/31329-hidden-nav-content.yml @@ -0,0 +1,5 @@ +--- +title: Update top nav bar to fit all content in at all screen sizes +merge_request: +author: +type: fixed diff --git a/changelogs/unreleased/9801-epic-copy-link.yml b/changelogs/unreleased/9801-epic-copy-link.yml new file mode 100644 index 00000000000..c3d24010a59 --- /dev/null +++ b/changelogs/unreleased/9801-epic-copy-link.yml @@ -0,0 +1,5 @@ +--- +title: Added 'copy link' in epic comment dropdown. +merge_request: 17224 +author: +type: added diff --git a/changelogs/unreleased/ak-unhandled-exception-in-health-checks.yml b/changelogs/unreleased/ak-unhandled-exception-in-health-checks.yml new file mode 100644 index 00000000000..a738cbb0369 --- /dev/null +++ b/changelogs/unreleased/ak-unhandled-exception-in-health-checks.yml @@ -0,0 +1,5 @@ +--- +title: Catch unhandled exceptions in health checks +merge_request: 17694 +author: +type: fixed diff --git a/db/post_migrate/20190911251732_sync_issuables_state_id.rb b/db/post_migrate/20190911251732_sync_issuables_state_id.rb index 56e764a1ae2..4865e98a75e 100644 --- a/db/post_migrate/20190911251732_sync_issuables_state_id.rb +++ b/db/post_migrate/20190911251732_sync_issuables_state_id.rb @@ -2,7 +2,7 @@ # Sync remaining records for issues/merge_requests tables where state_id # is still null. -# For more information check: https://gitlab.com/gitlab-org/gitlab-ee/issues/26823 +# For more information check: https://gitlab.com/gitlab-org/gitlab/issues/26823 # It creates a temporary index before performing the UPDATES to sync values. # # In 09-11-2019 we have the following numbers for records with state_id == nil: diff --git a/doc/development/ee_features.md b/doc/development/ee_features.md index 22dd9be073f..f89371f38ce 100644 --- a/doc/development/ee_features.md +++ b/doc/development/ee_features.md @@ -28,77 +28,13 @@ to something that evaluates as `false`. The same works for running tests ## Separation of EE code -We want a [single code base][] eventually, but before we reach the goal, -we still need to merge changes from GitLab CE to EE. To help us get there, -we should make sure that we no longer edit CE files in place in order to -implement EE features. - -Instead, all EE code should be put inside the `ee/` top-level directory. The +All EE code should be put inside the `ee/` top-level directory. The rest of the code should be as close to the CE files as possible. -[single code base]: https://gitlab.com/gitlab-org/gitlab/issues/2952#note_41016454 - -### EE-specific comments - -When complete separation can't be achieved with the `ee/` directory, you can wrap -code in EE specific comments to designate the difference from CE/EE and add -some context for someone resolving a conflict. - -```rb -# EE-specific start -stub_licensed_features(variable_environment_scope: true) -# EE specific end -``` - -```haml --# EE-specific start -= render 'ci/variables/environment_scope', form_field: form_field, variable: variable --# EE-specific end -``` - -EE-specific comments should not be backported to CE. - -**Note:** This is only meant as a workaround, we should follow up and -resolve this soon. - -### Detection of EE-only files - -For each commit (except on `master`), the `ee-files-location-check` CI job tries -to detect if there are any new files that are EE-only. If any file is detected, -the job fails with an explanation of why and what to do to make it pass. - -Basically, the fix is simple: `git mv ee/`. - -#### How to name your branches? - -For any EE branch, the job will try to detect its CE counterpart by removing any -`ee-` prefix or `-ee` suffix from the EE branch name, and matching the last -branch that contains it. - -For instance, from the EE branch `new-shiny-feature-ee` (or -`ee-new-shiny-feature`), the job would find the corresponding CE branches: - -- `new-shiny-feature` -- `ce-new-shiny-feature` -- `new-shiny-feature-ce` -- `my-super-new-shiny-feature-in-ce` - -#### Whitelist some EE-only files that cannot be moved to `ee/` - -The `ee-files-location-check` CI job provides a whitelist of files or folders -that cannot or should not be moved to `ee/`. Feel free to open an issue to -discuss adding a new file/folder to this whitelist. - -For instance, it was decided that moving EE-only files from `qa/` to `ee/qa/` -would make it difficult to build the `gitLab-{ce,ee}-qa` Docker images and it -was [not worth the complexity]. - -[not worth the complexity]: https://gitlab.com/gitlab-org/gitlab/issues/4997#note_59764702 - ### EE-only features If the feature being developed is not present in any form in CE, we don't -need to put the codes under `EE` namespace. For example, an EE model could +need to put the code under the `EE` namespace. For example, an EE model could go into: `ee/app/models/awesome.rb` using `Awesome` as the class name. This is applied not only to models. Here's a list of other examples: @@ -116,7 +52,7 @@ is applied not only to models. Here's a list of other examples: - `ee/app/views/foo.html.haml` - `ee/app/views/foo/_bar.html.haml` -This works because for every path that are present in CE's eager-load/auto-load +This works because for every path that is present in CE's eager-load/auto-load paths, we add the same `ee/`-prepended path in [`config/application.rb`]. This also applies to views. @@ -441,13 +377,10 @@ CE and EE. The advantages of this: -- Minimal code difference between CE and EE. -- Very clear hints about where we're extending EE views while reading CE codes. +- Very clear hints about where we're extending EE views while reading CE code. The disadvantage of this: -- Slightly more work while developing EE features, because now we need to - port `render_if_exists` to CE. - If we have typos in the partial name, it would be silently ignored. ##### Caveats @@ -858,7 +791,7 @@ end ### Code in `spec/` When you're testing EE-only features, avoid adding examples to the -existing CE specs. Also do no change existing CE examples, since they +existing CE specs. Also do not change existing CE examples, since they should remain working as-is when EE is running without a license. Instead place EE specs in the `ee/spec` folder. @@ -992,10 +925,8 @@ For regular JS files, the approach is similar. ## SCSS code in `assets/stylesheets` -To separate EE-specific styles in SCSS files, if a component you're adding styles for -is limited to only EE, it is better to have a separate SCSS file in appropriate directory -within `app/assets/stylesheets`. -See [backporting changes](#backporting-changes-from-ee-to-ce) for instructions on how to merge changes safely. +If a component you're adding styles for is limited to EE, it is better to have a +separate SCSS file in an appropriate directory within `app/assets/stylesheets`. In some cases, this is not entirely possible or creating dedicated SCSS file is an overkill, e.g. a text style of some component is different for EE. In such cases, @@ -1037,24 +968,6 @@ to avoid conflicts during CE to EE merge. // EE-specific end ``` -## Backporting changes from EE to CE - -Until the work completed to merge the ce and ee codebases, which is tracked on [epic &802](https://gitlab.com/groups/gitlab-org/-/epics/802), there exists times in which some changes for EE require specific changes to the CE -code base. Examples of backports include the following: - -- Features intended or originally built for EE that are later decided to move to CE -- Sometimes some code in CE may impact the EE feature - -Here is a workflow to make sure those changes end up backported safely into CE too. - -1. **Make your changes in the EE branch.** If possible, keep a separated commit (to be squashed) to help backporting and review. -1. **Open merge request to EE project.** -1. **Apply the changes you made to CE files in a branch of the CE project.** (Tip: Use `patch` with the diff from your commit in EE branch) -1. **Open merge request to CE project**, referring it's a backport of EE changes and link to MR open in EE. -1. Once EE MR is merged, the MR towards CE can be merged. **But not before**. - -**Note:** regarding SCSS, make sure the files living outside `/ee/` don't diverge between CE and EE projects. - ## GitLab-svgs Conflicts in `app/assets/images/icons.json` or `app/assets/images/icons.svg` can diff --git a/doc/development/testing_guide/frontend_testing.md b/doc/development/testing_guide/frontend_testing.md index ddb15b646cc..2d33f3102b6 100644 --- a/doc/development/testing_guide/frontend_testing.md +++ b/doc/development/testing_guide/frontend_testing.md @@ -516,11 +516,6 @@ glob otherwise your shell may split it into multiple arguments: yarn karma -f 'spec/javascripts/ide/**/file_spec.js' ``` -## RSpec feature integration tests - -Information on setting up and running RSpec integration tests with -[Capybara] can be found in the [Testing Best Practices](best_practices.md). - ## Frontend test fixtures Code that is added to HAML templates (in `app/views/`) or makes Ajax requests to the backend has tests that require HTML or JSON from the backend. @@ -598,7 +593,6 @@ end [karma]: http://karma-runner.github.io/ [vue-test]: ../fe_guide/vue.md#testing-vue-components [rspec]: https://github.com/rspec/rspec-rails#feature-specs -[capybara]: https://github.com/teamcapybara/capybara [jasmine]: https://jasmine.github.io/ ## Overview of Frontend Testing Levels @@ -955,7 +949,11 @@ graph RL In contrast to [frontend integration tests](#frontend-integration-tests), feature tests make requests against the real backend instead of using fixtures. This also implies that database queries are executed which makes this category significantly slower. -See also the [RSpec testing guidelines](../testing_guide/best_practices.md#rspec). +See also + +- The [RSpec testing guidelines](../testing_guide/best_practices.md#rspec). +- System / Feature tests in the [Testing Best Practices](best_practices.md#system--feature-tests). +- [Issue #26159](https://gitlab.com/gitlab-org/gitlab/issues/26159) which aims at combine those guidelines with this page. ```mermaid graph RL diff --git a/doc/install/installation.md b/doc/install/installation.md index 41ce6cb2f8b..25501dd7b58 100644 --- a/doc/install/installation.md +++ b/doc/install/installation.md @@ -484,6 +484,9 @@ sudo -u git -H git config --global repack.writeBitmaps true # Enable push options sudo -u git -H git config --global receive.advertisePushOptions true +# Enable fsyncObjectFiles to reduce risk of repository corruption if the server crashes +sudo -u git -H git config --global core.fsyncObjectFiles true + # Configure Redis connection settings sudo -u git -H cp config/resque.yml.example config/resque.yml diff --git a/lib/gitlab/health_checks/simple_abstract_check.rb b/lib/gitlab/health_checks/simple_abstract_check.rb index 5a1e8c2a1dd..bc02f0da98d 100644 --- a/lib/gitlab/health_checks/simple_abstract_check.rb +++ b/lib/gitlab/health_checks/simple_abstract_check.rb @@ -14,6 +14,8 @@ module Gitlab else HealthChecks::Result.new(false, "unexpected #{human_name} check result: #{check_result}") end + rescue => e + HealthChecks::Result.new(false, "unexpected #{human_name} check result: #{e}") end def metrics diff --git a/spec/features/dashboard/active_tab_spec.rb b/spec/features/dashboard/active_tab_spec.rb index 92d0c0c9260..ee85c136190 100644 --- a/spec/features/dashboard/active_tab_spec.rb +++ b/spec/features/dashboard/active_tab_spec.rb @@ -27,20 +27,4 @@ RSpec.describe 'Dashboard Active Tab', :js do subject { visit dashboard_groups_path } end end - - context 'on activity projects' do - it_behaves_like 'page has active tab', 'Activity' do - subject { visit activity_dashboard_path } - end - end - - context 'on instance statistics' do - subject { visit instance_statistics_root_path } - - it 'shows Instance Statistics` as active' do - subject - - expect(find('.navbar-sub-nav li.active')).to have_link('Instance Statistics') - end - end end diff --git a/spec/javascripts/notes/stores/mutation_spec.js b/spec/javascripts/notes/stores/mutation_spec.js index 4a640d589fb..ade4725dd68 100644 --- a/spec/javascripts/notes/stores/mutation_spec.js +++ b/spec/javascripts/notes/stores/mutation_spec.js @@ -48,9 +48,22 @@ describe('Notes Store mutations', () => { }); describe('ADD_NEW_REPLY_TO_DISCUSSION', () => { + const newReply = Object.assign({}, note, { discussion_id: discussionMock.id }); + + let state; + + beforeEach(() => { + state = { discussions: [{ ...discussionMock }] }; + }); + it('should add a reply to a specific discussion', () => { - const state = { discussions: [discussionMock] }; - const newReply = Object.assign({}, note, { discussion_id: discussionMock.id }); + mutations.ADD_NEW_REPLY_TO_DISCUSSION(state, newReply); + + expect(state.discussions[0].notes.length).toEqual(4); + }); + + it('should not add the note if it already exists in the discussion', () => { + mutations.ADD_NEW_REPLY_TO_DISCUSSION(state, newReply); mutations.ADD_NEW_REPLY_TO_DISCUSSION(state, newReply); expect(state.discussions[0].notes.length).toEqual(4); diff --git a/spec/lib/gitlab/health_checks/simple_check_shared.rb b/spec/lib/gitlab/health_checks/simple_check_shared.rb index b4a8a4e6ab6..c3d55a11909 100644 --- a/spec/lib/gitlab/health_checks/simple_check_shared.rb +++ b/spec/lib/gitlab/health_checks/simple_check_shared.rb @@ -57,5 +57,13 @@ shared_context 'simple_check' do |metrics_prefix, check_name, success_result| it { is_expected.to have_attributes(success: false, message: "#{described_class.human_name} check timed out") } end + + context 'Check is raising an unhandled exception' do + before do + allow(described_class).to receive(:check ).and_raise "unexpected error" + end + + it { is_expected.to have_attributes(success: false, message: "unexpected #{described_class.human_name} check result: unexpected error") } + end end end