2dfe103687
* Ensure example git repos are valid It was reported in #1817 that the `lotr_migration.git` repository we use in `test/test_migrate.rb` is not a valid git repository on when clone, causing the test suite to fail when run locally. The reason is because there is no `.git/refs` directory, meaning it's not really a valid git repository at all. I noticed that the `empty.git` example repository has the same problem. This commit simply ensures that the directory structure of these example repositories are persisted in git. * Run `test_migrate` tests on CI Now that we've resolved the issue with the invalid git repository in the parent commit, we can run all of the tests in our CI environment.
85 lines
2.2 KiB
Ruby
85 lines
2.2 KiB
Ruby
# ~*~ encoding: utf-8 ~*~
|
|
require File.expand_path(File.join(File.dirname(__FILE__), 'helper'))
|
|
|
|
def load_script(**args)
|
|
settings = {
|
|
:run_silent => true,
|
|
:no_dry_run => true,
|
|
:prefer_relative => true,
|
|
:hyphenate => false,
|
|
:page_file_dir => nil,
|
|
}.merge(args)
|
|
|
|
settings.each do |setting, val|
|
|
variable_name = :"@@#{setting.to_s}"
|
|
|
|
unless Object.class_variable_defined?(variable_name) && Object.class_variable_get(variable_name) == val
|
|
Object.class_variable_set(variable_name, val)
|
|
end
|
|
end
|
|
|
|
script_path = File.expand_path(File.join(File.dirname(__FILE__), '../', 'bin', 'gollum-migrate-tags'))
|
|
|
|
Dir.chdir(@path) do
|
|
load script_path
|
|
end
|
|
end
|
|
|
|
context '4.x -> 5.x tag migrator' do
|
|
include Rack::Test::Methods
|
|
|
|
setup do
|
|
@path = cloned_testpath("examples/lotr_migration.git")
|
|
end
|
|
|
|
test 'repair broken links' do
|
|
# The original contents of Subdir/Foo.md:
|
|
#
|
|
# waa
|
|
# [[Samwi]]
|
|
# [[samwise gamgee.mediaWiki]]
|
|
# [[Samwise Gamgee.mediawiki]]
|
|
# [[Samwise Gamgee]]
|
|
# [[Test|Samwise Gamgee#Anchor]]
|
|
# [[Waaa|Test]]
|
|
# [[Zaa]]
|
|
#
|
|
# The contents will be updated after running the migration script.
|
|
load_script
|
|
|
|
file = ::File.new(::File.join(@path, 'Subdir/Foo.md'), 'r')
|
|
assert_equal <<~FILE_CONTENTS, file.read
|
|
waa
|
|
[[Samwi]]
|
|
[[/Samwise Gamgee.mediawiki]]
|
|
[[/Samwise Gamgee.mediawiki]]
|
|
[[/Samwise Gamgee.md]]
|
|
[[Test|/Samwise Gamgee.md#Anchor]]
|
|
[[Waaa|/Bar/Test.md]]
|
|
[[Subsub/Zaa.md]]
|
|
FILE_CONTENTS
|
|
end
|
|
|
|
test 'change spaced filenames to hyphenated filenames' do
|
|
load_script(hyphenate: true)
|
|
|
|
f = ::File.new(::File.join(@path, 'Home.textile'), 'r')
|
|
output = f.read
|
|
assert_equal true, output.include?('[[Bilbo-Baggins.md]]')
|
|
assert_equal true, output.include?('[[evil|Mordor/Eye-Of-Sauron.md]]')
|
|
end
|
|
|
|
test 'migration with page file dir' do
|
|
load_script(page_file_dir: 'Subdir')
|
|
|
|
f = ::File.new(::File.join(@path, 'Subdir/Foo.md'), 'r')
|
|
output = f.read
|
|
assert_equal true, output.include?('[[Subsub/Zaa.md]]')
|
|
assert_equal true, output.include?('[[Samwi]]')
|
|
end
|
|
|
|
teardown do
|
|
FileUtils.rm_rf(@path)
|
|
end
|
|
end
|