Commit Graph

123 Commits

Author SHA1 Message Date
benjamin wil 95d35d38da Switch from TestUnit to Minitest (#1805)
* Use `Minitest::Test`

`Test::Unit` is deprecated, and we can switch to `Minitest::Test` with
almost no side effects.

This commit does all of the work required to make Minitest tests run
with Gollum's existing test helpers.

* Change Minitest output format

- The `DefaultReporter` seems to have cleaner output than what we had
  before.
- `color: true` ensures things are colorized. It's pretty nice.

* Tweak test formatting; fix order-dependent failure

The order-dependent failure has been been commented in code.

After manually bisecting the test suite, I was able to determine that
the template cascade tests were leaving the `@@template_priority_path`
set to an overridden value in tests run afterward.

* Tweak setting initialization

I could not see a meaningful reason behind calling `forbid` so early in
the settings initialization block. But moving the `forbid` call until
later resolved this issue.

In the real world, I don't see how this would cause issues. But I found
that calling `forbid` when `wiki_options[:allow_editing]` was set to
false caused order-dependent test errors where Sprockets would end up
being badly configured and left without an initialized
`Sprockets::Environment` object, which is required by the
`sprockets-helpers` gem to resolve asset paths.

The test that would cause errors is also in this commit diff. I've
updated it to be a bit more readable.

I also took this opportunity to review and clean up the `@allow_editing`
assignment, which seemed a bit obfuscated.

* Update migration script to test run warnings

When running the entire test suite, many warnings would be output:

/Users/bw/Projects/gollum/test/test_migrate.rb:37: warning: already initialized constant HYPHENATE
/Users/bw/Projects/gollum/test/test_migrate.rb:37: warning: previous definition of HYPHENATE was here
/Users/bw/Projects/gollum/test/test_migrate.rb:37: warning: already initialized constant PAGE_FILE_DIR
/Users/bw/Projects/gollum/test/test_migrate.rb:37: warning: previous definition of PAGE_FILE_DIR was here
/Users/bw/Projects/gollum/bin/gollum-migrate-tags:91: warning: already initialized constant REPO
/Users/bw/Projects/gollum/bin/gollum-migrate-tags:91: warning: previous definition of REPO was here
/Users/bw/Projects/gollum/bin/gollum-migrate-tags:236: warning: already initialized constant TREE
/Users/bw/Projects/gollum/bin/gollum-migrate-tags:236: warning: previous definition of TREE was here
/Users/bw/Projects/gollum/test/test_migrate.rb:37: warning: already initialized constant PAGE_FILE_DIR
/Users/bw/Projects/gollum/test/test_migrate.rb:37: warning: previous definition of PAGE_FILE_DIR was here
/Users/bw/Projects/gollum/bin/gollum-migrate-tags:91: warning: already initialized constant REPO
/Users/bw/Projects/gollum/bin/gollum-migrate-tags:91: warning: previous definition of REPO was here
/Users/bw/Projects/gollum/bin/gollum-migrate-tags:236: warning: already initialized constant TREE
/Users/bw/Projects/gollum/bin/gollum-migrate-tags:236: warning: previous definition of TREE was here

While it's unlikely that end users would ever see these warnings, as
they'd only be running the migration script once, they will always be
shown in our local test runs and CI run output.

So instead of using constants in our migration script, I change the
script to use class variables instead. This should not effect the
functionality of the migration script whatsoever.

* Use `File.exist?` instead of `File.exists?`

In Ruby 3.x, `File.exists?` is deprecated and outputs a warning.

* Improve "allow editing" tests

While making changes to the test suite, I ran into some issues with
these tests failing on occasion.

I added some setup and teardown to help with this.

But one thing I did notice is that the word "Upload" appears in the
response body whether uploading is enabled or not, so I made these
assertions more specific to the HTML rather than other places the word
"Upload" might appear (which is related to Critic Markup).

* Do not attempt to modify frozen strings

Using `#gsub!` here now results in an error. I am not entirely sure why
this hasn't happened before, but the error is straightforward:

     FrozenError: can't modify frozen String: "Author %{author} is from %{location}"
        /home/runner/work/gollum/gollum/lib/gollum/views/helpers/locale_helpers.rb:45:in `gsub!'
        /home/runner/work/gollum/gollum/lib/gollum/views/helpers/locale_helpers.rb:45:in `fill_argument_content'
        /home/runner/work/gollum/gollum/lib/gollum/views/helpers/locale_helpers.rb:37:in `block in autofill'
        /home/runner/work/gollum/gollum/lib/gollum/views/helpers/locale_helpers.rb:33:in `each'
        /home/runner/work/gollum/gollum/lib/gollum/views/helpers/locale_helpers.rb:33:in `map'
        /home/runner/work/gollum/gollum/lib/gollum/views/helpers/locale_helpers.rb:33:in `autofill'
        /home/runner/work/gollum/gollum/lib/gollum/views/helpers/locale_helpers.rb:35:in `block in autofill'
        /home/runner/work/gollum/gollum/lib/gollum/views/helpers/locale_helpers.rb:33:in `each'
        /home/runner/work/gollum/gollum/lib/gollum/views/helpers/locale_helpers.rb:33:in `map'
        /home/runner/work/gollum/gollum/lib/gollum/views/helpers/locale_helpers.rb:33:in `autofill'
        /home/runner/work/gollum/gollum/lib/gollum/views/helpers/locale_helpers.rb:21:in `t'
        /home/runner/work/gollum/gollum/test/gollum/views/test_locale_helper.rb:95:in `block (4 levels) in <top (required)>'

`#gsub!` attempts to modify a string in-place, which does not work when
a string is frozen. It seems that in some Ruby environments, strings
from YAML files are frozen.

* Fix another order-dependent test failure

Very occasionally, this test fails due to `Precious::App` settings set
in previous tests. You can reproduce this failure using this seed:

    bundle exec rake TESTOPTS="--seed=42898"
2022-04-27 08:25:54 -07:00
Tevin 81c90e55a7 Add page context to template filter, resolves #1603 (#1818)
* Add a test for template filter
* Add a test for template filter with page parameter
* Passing page as a parameter to template filter
2022-04-25 09:44:19 +02:00
Nikita Ivanov 6f870501a0 Add option to show browser's local time (#1653)
* Add tests for --local-time option
* Update Readme
2022-01-13 18:19:22 +01:00
Nikita Ivanov f30058f4ee Fix broken History button when viewing historical deleted file (#1759)
* Fix broken History button when viewing historical deleted file
* Add tests
2022-01-13 18:06:13 +01:00
benjamin wil 8f7793f461 Improve presentation of page navigation and #head area on mobile devices (#1742)
* Add `.header-title` style

This style shows smaller text on mobile devices. It reverts back to the
`2em` size used in Primer for H1 tags.

* Use `.header-title` for all `#head` headings

This commit:

  1. Updates all main templates to use the new `.header-title` class,
     making these titles less disruptively large on mobile devices.
  2. Centers these titles for mobile breakpoints only, re-setting them
     back to left-aligned text for `md-` breakpoints and up.

Note that in `lib/gollum/templates/wiki_contentf.mustache`, the
`.header-title` is not a `#head .header-title`, so it doesn't inherit
all of the new styles added in this commit.

* Adjust padding and presentation of mobile menu

To give mobile page headers more structure, this commit adjusts the
padding to be more symmetrical. It also adds a `border-bottom` on mobile
only. In my opinion this improves readability by telling the reader,
"This is where the navigation menu ends and the page content begins."

* Recompile assets

* Fix failing spec

My changes to the header layout seem to changed where the spaces in
`last_response.body` are placed. So let's assert only that the content
is present, since that's all this test should actually care about.
2021-12-30 14:36:51 -08:00
benjamin wil 9c574fd760 Improve test suite and CI run performance (#1796)
* Simplify test

I came across this test because it was failing JRuby CI runs. I should
emphasize, though, that this test was only failing due do an upstream
bug in Nokogiri v1.12.5.

When I was reviewing the test, to understand why it was failing at all,
I noticed that the assertion was rather obfuscated.  Specifically, we
were post-processing the entire `response.body` and using that as an
expectation.

* Use an older version of Nokogiri in our test env

This is a temporary fix. See the commit diff for more information.

* Split JRuby CI runs from MRI CI runs

We can improve the performance of our MRI test runs by not installing
Java as part of their run. (Java is only required for JRuby.)

* Use latest Ruby patch versions during CI runs

* Simplify GitHub Action workflow steps

Judging by the output in the GitHub Actions workflow UI, the `echo`
steps were not providing much value to us.

We can get rid of them to slightly increase run performance.

I've also named the other steps to make it easier to skim the Actions
workflow output.

* Remove `twitter_cldr` development dependency

This is no longer being used.

* Change GitHub Actions workflow Ruby matrix

We can drop Ruby 2.4 from our test run matrix. It is beyond EOL.
Let's add 2.7 instead.
2021-12-30 14:21:23 -08:00
Dawa Ometto 46c22a8b87 Take account of possible https referer in upload route (#1787) 2021-12-23 12:18:30 +01:00
Dawa Ometto 4e8309d3e4 Load template page as utf-8 (#1758) 2021-08-30 11:09:29 +02:00
Dawa Ometto 355e6b1f18 Fix query ? in mathjax script path (#1706) 2021-03-27 19:40:35 +01:00
Dawa Ometto 123518b940 Don't escape page path. Resolves #1615 (#1618) 2020-09-21 15:50:58 +02:00
Peter Holloway 83abe62125 Use GET for compare methods
POST requests are blocked when running in --no-edit mode so using POST
prevents compare being available (see #1546).

Change the history view form to use "get" as the form method and change
the routing in app to accept get requests for both forms of compare. The
order of the compare routes is switched to make the more specific form
checked first to prevent all requests being handled by the less specific
form.
2020-06-10 23:27:48 +01:00
Watal M. Iwasaki ba575b886d Simulate 'git show' when a single version is posted from /history/ (#1543) 2020-04-16 12:50:45 +02:00
Dawa Ometto 676811206d Add tests for base_path (#1540) 2020-04-03 17:12:09 +02:00
Watal M. Iwasaki 0cb303f09f Check page.nil? before page.wiki (#1535) 2020-04-02 11:07:33 +02:00
Dawa Ometto 2c268a9f8c Add regression test against #1530 2020-03-31 11:56:42 +02:00
Dawa Ometto e2804d6313 Add RSS Feed (#1500) 2020-03-27 10:37:50 +01:00
Dawa Ometto a45101cfe9 Package assets (#1493)
* Package static assets
* Fixed cancel button in editor
* Fix rake compilation task
* Add asset path helper
* Serve MathJax statically
* Fix mathjax in preview
2020-03-24 15:55:28 +01:00
Dawa Ometto 54bbd1d789 Remove references to grit and stringex (#1482)
* Remove references to grit and stringex

* Fix revert tests, fix revert commit message
2020-03-16 01:59:47 +01:00
Dawa Ometto ee267f72a2 Track path changes in History. Resolves #1441 (#1443)
* Track path changes in History.
* Reactivate rename following on JRuby
2020-03-16 01:09:42 +01:00
Bart Kamphorst 8f104ec09c Add redirect support (e.g., after renames). Fixes #1023. 2019-10-05 13:32:28 +02:00
Dawa Ometto bbe609974a Fix change of format (#1419)
* Add empty language def for bibtex
2019-09-25 11:44:42 +02:00
Dawa Ometto d55a3432a2 Solve minor issue involving Preview title (#1417) 2019-09-11 15:47:41 +02:00
Bart Kamphorst a04af6c638 Remove failing base-path test because base-path functionality is implemented in Rack middleware. 2019-09-04 13:56:26 +02:00
Bart Kamphorst 1c98a787ab Reopen the tempfile before passing it to Rack::Test::UploadedFile. 2019-09-03 22:03:43 +02:00
Bart Kamphorst b6b176fdc1 Add uploading tests for mode page, with and without base-path enabled. 2019-09-03 11:33:53 +02:00
Dawa Ometto d1b1375629 Fix usericons (#1408)
* Fix and refactor user icons, add Basic tests
* Remove identicon_canvas, use identicon.js
* Use octicon by default
2019-09-01 21:45:55 +02:00
Bart Kamphorst beff52a68e Added tests for file_upload route. 2019-08-29 16:01:20 +02:00
Dawa Ometto 976f55e1b2 Pagination for history and latest changes. (#1396)
* Pagination for history and latest changes

* New footer for historical pages

* Fix pagination on history view.

* Do not directly use git adapter

* History view: allow selecting from different pages

* Use log_pagination_options to determine latest changes parameters

* Fix JS pageFullPath
2019-08-21 23:28:49 +02:00
Bart Kamphorst aa16f6ba2a Major CSS/styling overhaul with Primer.css. 2019-08-13 22:10:10 +02:00
Dawa Ometto b40a344c49 Remove page file dir from frontend. Resolves #1052 #1241 (#1369)
* Remove all references to page_file_dir. Use new method signature for Wiki#page. Refactor helpers.
* Use write_file for uploads
* Refactor /pages route
2019-05-04 01:19:59 +02:00
Bart Kamphorst e966de6922 Added tests for mathjax.config.js permissions. Fixed typo in permission regex. 2018-12-28 22:57:13 +01:00
Bart Kamphorst 59bb48340e Fix test by adding new h2 editable class to expected output. 2018-12-28 22:45:17 +01:00
Bart Kamphorst 4eb7fd211c Fix tests (do not expect redirect after edit) and add test for edit collisions. 2018-11-20 14:53:27 +01:00
Bart Kamphorst 19751ec37f Use snake_case uniformly for all routes. 2018-10-19 21:54:14 +02:00
Bart Kamphorst 454b5e94dc Unify deletion routes. Closes #1332. 2018-10-17 22:18:23 +02:00
Dawa Ometto 197a2bd57b Namespace (#1328)
* CSS to SCSS

* Use sprockets

* Use Sprockets helpers

* Fix gollum.editor.js error when changing language

* Add keybinding files required by ace and some ace ext files that are required or might be useful.

* Move app paths to /gollum namespace, add route helpers for view templates

* Use path helper for links in page view

* Use path helper methods in javascript assets

* Refactored sprockets helpers for mustache

* Remove debugging
2018-10-14 15:46:10 +02:00
Dawa Ometto f8673f565a Lockdown write access to custom.css and js 2018-10-02 23:56:46 +02:00
Dawa Ometto c85e14336e Lockdown access to custom css and js files in repo 2018-10-02 23:31:07 +02:00
Thomas KUNTZ a75b003c78 Update Mousetrap and use new 'mod' helper (#1245)
* Fix page list for files that have regexp special chars.

The page list collection logic was using the filename without any
scaping to create a regexp. This not only breaks for some names it might
even be a security problem by introducing bad regular expression as
filenames.

* Add another video to README.

* Test on Ruby 2.4

* Pass non-empty commit author details in transliteration test

Empty name or email are not allowed by libgit2 and cause a test failure
when the test suite is run against rugged_adapter.

* Solve bug when folder contain non-ascii character

When you create a file in a folder with non-ascii character, for exemple "Réseau", after creating the page, it throwed an "URI::InvalidURIError", given the fact that the url returned was "/Réseau/H%C3%A9y", only the part with the name of the file was correctly encoded.

So I propose to encode every part of the url to solve this issue
So I just

* readme: Use --document in place of deprecated options

* Release 4.1.0

* Skip tests for transliteration for adapters different than grit

* Fix date. Closes #1211

* Set bar_side for versioned pages. Closes #1226

* Update gemijione dependency. Closes #1227

* Release 4.1.1

* Update Mousetrap and use new 'mod' helper

Since version 1.4, a generic 'mod' helper can be used for cross
platform shortcuts. I updated Mousetrap to latest v1.6.1 and
used 'mod+s' instead of ['ctrl+s', 'command+s'] for the editor's
keyboard shortcut.

See https://craig.is/killing/mice#api.bind.combo
2017-08-07 00:29:08 +02:00
Dawa Ometto cabe9f353b Fix tests 2017-04-13 00:24:06 +02:00
Dawa Ometto f9b8b4e8d3 Remove ws subs (#1220)
* remove unwanted whitespace substitution
* end repression of file extensions
* see also https://github.com/gollum/gollum-lib/pull/249
2017-04-10 14:50:18 +02:00
Dawa Ometto 8aa10fe400 Yaml frontmatter (#1217)
Render YAML frontmatter

* Fix tests on 5.x

* Update README

* Refactor Page view #table

* Minor refactor

* Refactor
2017-04-09 19:26:04 +02:00
Daniele Grandini fdbde7840d mv template load in page create and added tests 2017-02-24 13:32:20 +01:00
Dawa Ometto 435a3e62ba Remove calls to Page#last_version, replace with AJAX-lookup of version info. 2016-08-07 20:09:01 +02:00
Sven Schwyn fa1bcf9608 Add support for emojione 2016-05-19 20:33:25 +02:00
Matt Hill 51b5a11a54 Fix custom.x path when page-file-dir is not set 2015-08-20 23:19:25 -04:00
GROUX Richard 3301252fb2 deps(update): twitter_cldr update to > 3.2
Changelog is
[there](https://github.com/twitter/twitter-cldr-rb/blob/master/History.txt)
2015-07-27 13:20:50 +02:00
Dawa Ometto 80854584bb Make test regex more lenient 2015-04-11 01:29:08 +02:00
Dawa Ometto 77f4aee0af Fix test related to gollum-lib TOC update 2015-01-23 00:00:01 +01:00
Nathan Lowe a650c0eab8 Sort /pages alphabetically
Previously, the 'All Pages' view was not sorted alphabetically. We need
to sort on the lowercase version of the page names so that lowercase
names do not end up at the bottom of the list and are instead mixed in
alphabetically, as they should be.

Patches test/test_latest_changes_view.rb to include changes needed to
test alphabetical sorting.
2015-01-12 19:04:07 -05:00