Skip to content
GitLab
Explore
Sign in
Register
Primary navigation
Search or go to…
Project
B
brew
Manage
Activity
Members
Labels
Plan
Issues
Issue boards
Milestones
Wiki
Requirements
Code
Merge requests
Repository
Branches
Commits
Tags
Repository graph
Compare revisions
Snippets
Locked files
Build
Pipelines
Jobs
Pipeline schedules
Test cases
Artifacts
Deploy
Releases
Package registry
Container Registry
Model registry
Operate
Environments
Terraform modules
Monitor
Incidents
Service Desk
Analyze
Value stream analytics
Contributor analytics
CI/CD analytics
Repository analytics
Code review analytics
Issue analytics
Insights
Model experiments
Help
Help
Support
GitLab documentation
Compare GitLab plans
Community forum
Contribute to JiHu GitLab
Provide feedback
Keyboard shortcuts
?
Snippets
Groups
Projects
Show more breadcrumbs
KMSCAKKSCFKA AKFACAMADCAS
brew
Commits
7079a00a
Commit
7079a00a
authored
9 years ago
by
Vlad Shablinsky
Committed by
Mike McQuaid
9 years ago
Browse files
Options
Downloads
Patches
Plain Diff
add test/test_migrator
parent
abf6b6f6
No related branches found
Branches containing commit
No related tags found
Tags containing commit
No related merge requests found
Changes
1
Hide whitespace changes
Inline
Side-by-side
Showing
1 changed file
Library/Homebrew/test/test_migrator.rb
+268
-0
268 additions, 0 deletions
Library/Homebrew/test/test_migrator.rb
with
268 additions
and
0 deletions
Library/Homebrew/test/test_migrator.rb
0 → 100644
+
268
−
0
View file @
7079a00a
require
"testing_env"
require
"migrator"
require
"testball"
require
"tab"
require
"keg"
class
Formula
def
set_oldname
oldname
@oldname
=
oldname
end
end
class
MigratorErrorsTests
<
Homebrew
::
TestCase
def
setup
@new_f
=
Testball
.
new
(
"newname"
)
@new_f
.
set_oldname
"oldname"
@old_f
=
Testball
.
new
(
"oldname"
)
end
def
test_no_oldname
assert_raises
(
Migrator
::
MigratorNoOldnameError
)
{
Migrator
.
new
(
@old_f
)
}
end
def
test_no_oldpath
assert_raises
(
Migrator
::
MigratorNoOldpathError
)
{
Migrator
.
new
(
@new_f
)
}
end
def
test_different_taps
keg
=
HOMEBREW_CELLAR
/
"oldname/0.1"
keg
.
mkpath
tab
=
Tab
.
empty
tab
.
tabfile
=
HOMEBREW_CELLAR
/
"oldname/0.1/INSTALL_RECEIPT.json"
tab
.
source
[
"tap"
]
=
"Homebrew/homebrew"
tab
.
write
assert_raises
(
Migrator
::
MigratorDifferentTapsError
)
{
Migrator
.
new
(
@new_f
)
}
ensure
keg
.
parent
.
rmtree
end
end
class
MigratorTests
<
Homebrew
::
TestCase
include
FileUtils
def
setup
@new_f
=
Testball
.
new
(
"newname"
)
@new_f
.
set_oldname
"oldname"
@old_f
=
Testball
.
new
(
"oldname"
)
@old_keg_record
=
HOMEBREW_CELLAR
/
"oldname/0.1"
@old_keg_record
.
join
(
"bin"
).
mkpath
@new_keg_record
=
HOMEBREW_CELLAR
/
"newname/0.1"
%w[inside bindir]
.
each
{
|
file
|
touch
@old_keg_record
.
join
(
"bin"
,
file
)
}
@old_tab
=
Tab
.
empty
@old_tab
.
tabfile
=
HOMEBREW_CELLAR
/
"oldname/0.1/INSTALL_RECEIPT.json"
@old_tab
.
source
[
"path"
]
=
"/oldname"
@old_tab
.
write
@keg
=
Keg
.
new
(
@old_keg_record
)
@keg
.
link
@keg
.
optlink
@old_pin
=
HOMEBREW_LIBRARY
/
"PinnedKegs/oldname"
@old_pin
.
make_relative_symlink
@old_keg_record
@migrator
=
Migrator
.
new
(
@new_f
)
mkpath
HOMEBREW_PREFIX
/
"bin"
end
def
teardown
@old_pin
.
unlink
if
@old_pin
.
symlink?
if
@old_keg_record
.
parent
.
symlink?
@old_keg_record
.
parent
.
unlink
elsif
@old_keg_record
.
directory?
@keg
.
unlink
@keg
.
uninstall
end
if
@new_keg_record
.
directory?
new_keg
=
Keg
.
new
(
@new_keg_record
)
new_keg
.
unlink
new_keg
.
uninstall
end
@old_keg_record
.
parent
.
rmtree
if
@old_keg_record
.
parent
.
directory?
@new_keg_record
.
parent
.
rmtree
if
@new_keg_record
.
parent
.
directory?
rmtree
HOMEBREW_PREFIX
/
"bin"
rmtree
HOMEBREW_PREFIX
/
"opt"
if
(
HOMEBREW_PREFIX
/
"opt"
).
directory?
# What to do with pin?
@new_f
.
unpin
end
def
test_move_cellar
@keg
.
unlink
shutup
{
@migrator
.
move_to_new_directory
}
assert_predicate
@new_keg_record
,
:directory?
assert_predicate
@new_keg_record
/
"bin"
,
:directory?
assert_predicate
@new_keg_record
/
"bin/inside"
,
:file?
assert_predicate
@new_keg_record
/
"bin/bindir"
,
:file?
refute_predicate
@old_keg_record
,
:directory?
end
def
test_backup_cellar
@old_keg_record
.
parent
.
rmtree
@new_keg_record
.
join
(
"bin"
).
mkpath
@migrator
.
backup_oldname_cellar
assert_predicate
@old_keg_record
,
:directory?
assert_predicate
@old_keg_record
/
"bin"
,
:directory?
end
def
test_oldkeg_linked
assert_predicate
@migrator
,
:oldkeg_linked?
end
def
test_repin
@new_keg_record
.
join
(
"bin"
).
mkpath
expected_relative
=
@new_keg_record
.
relative_path_from
HOMEBREW_LIBRARY
/
"PinnedKegs"
@migrator
.
repin
assert_predicate
@migrator
.
new_pin_record
,
:symlink?
assert_equal
expected_relative
,
@migrator
.
new_pin_record
.
readlink
refute_predicate
@migrator
.
old_pin_record
,
:exist?
end
def
test_unlink_oldname
assert_equal
1
,
HOMEBREW_LIBRARY
.
join
(
"LinkedKegs"
).
children
.
size
assert_equal
1
,
HOMEBREW_PREFIX
.
join
(
"opt"
).
children
.
size
shutup
{
@migrator
.
unlink_oldname
}
refute_predicate
HOMEBREW_LIBRARY
/
"LinkedKegs"
,
:exist?
refute_predicate
HOMEBREW_LIBRARY
.
join
(
"bin"
),
:exist?
end
def
test_link_newname
@keg
.
unlink
@keg
.
uninstall
@new_keg_record
.
join
(
"bin"
).
mkpath
%w[inside bindir]
.
each
{
|
file
|
touch
@new_keg_record
.
join
(
"bin"
,
file
)
}
shutup
{
@migrator
.
link_newname
}
assert_equal
1
,
HOMEBREW_LIBRARY
.
join
(
"LinkedKegs"
).
children
.
size
assert_equal
1
,
HOMEBREW_PREFIX
.
join
(
"opt"
).
children
.
size
end
def
test_link_oldname_opt
@new_keg_record
.
mkpath
@migrator
.
link_oldname_opt
assert_equal
@new_keg_record
.
realpath
,
(
HOMEBREW_PREFIX
/
"opt/oldname"
).
realpath
end
def
test_link_oldname_cellar
@new_keg_record
.
join
(
"bin"
).
mkpath
@keg
.
unlink
@keg
.
uninstall
@migrator
.
link_oldname_cellar
assert_equal
@new_keg_record
.
parent
.
realpath
,
(
HOMEBREW_CELLAR
/
"oldname"
).
realpath
end
def
test_update_tabs
@new_keg_record
.
join
(
"bin"
).
mkpath
tab
=
Tab
.
empty
tab
.
tabfile
=
HOMEBREW_CELLAR
/
"newname/0.1/INSTALL_RECEIPT.json"
tab
.
source
[
"path"
]
=
"/path/that/must/be/changed/by/update_tabs"
tab
.
write
@migrator
.
update_tabs
assert_equal
@new_f
.
path
.
to_s
,
Tab
.
for_keg
(
@new_keg_record
).
source
[
"path"
]
end
def
test_migrate
tab
=
Tab
.
empty
tab
.
tabfile
=
HOMEBREW_CELLAR
/
"oldname/0.1/INSTALL_RECEIPT.json"
tab
.
source
[
"path"
]
=
@old_f
.
path
.
to_s
tab
.
write
shutup
{
@migrator
.
migrate
}
assert_predicate
@new_keg_record
,
:exist?
assert_predicate
@old_keg_record
.
parent
,
:symlink?
refute_predicate
(
HOMEBREW_LIBRARY
/
"LinkedKegs/oldname"
),
:exist?
assert_equal
@new_keg_record
.
realpath
,
(
HOMEBREW_LIBRARY
/
"LinkedKegs/newname"
).
realpath
assert_equal
@new_keg_record
.
realpath
,
@old_keg_record
.
realpath
assert_equal
@new_keg_record
.
realpath
,
(
HOMEBREW_PREFIX
/
"opt/oldname"
).
realpath
assert_equal
@new_keg_record
.
parent
.
realpath
,
(
HOMEBREW_CELLAR
/
"oldname"
).
realpath
assert_equal
@new_keg_record
.
realpath
,
(
HOMEBREW_LIBRARY
/
"PinnedKegs/newname"
).
realpath
assert_equal
@new_f
.
path
.
to_s
,
Tab
.
for_keg
(
@new_keg_record
).
source
[
"path"
]
end
def
test_unlinik_oldname_opt
@new_keg_record
.
mkpath
old_opt_record
=
HOMEBREW_PREFIX
/
"opt/oldname"
old_opt_record
.
unlink
if
old_opt_record
.
symlink?
old_opt_record
.
make_relative_symlink
(
@new_keg_record
)
@migrator
.
unlink_oldname_opt
refute_predicate
old_opt_record
,
:symlink?
end
def
test_unlink_oldname_cellar
@new_keg_record
.
mkpath
@keg
.
unlink
@keg
.
uninstall
@old_keg_record
.
parent
.
make_relative_symlink
(
@new_keg_record
.
parent
)
@migrator
.
unlink_oldname_cellar
refute_predicate
@old_keg_record
.
parent
,
:symlink?
end
def
test_backup_oldname_cellar
@new_keg_record
.
join
(
"bin"
).
mkpath
@keg
.
unlink
@keg
.
uninstall
@migrator
.
backup_oldname_cellar
refute_predicate
@old_keg_record
.
subdirs
,
:empty?
end
def
test_backup_old_tabs
tab
=
Tab
.
empty
tab
.
tabfile
=
HOMEBREW_CELLAR
/
"oldname/0.1/INSTALL_RECEIPT.json"
tab
.
source
[
"path"
]
=
"/should/be/the/same"
tab
.
write
migrator
=
Migrator
.
new
(
@new_f
)
tab
.
tabfile
.
delete
migrator
.
backup_old_tabs
assert_equal
"/should/be/the/same"
,
Tab
.
for_keg
(
@old_keg_record
).
source
[
"path"
]
end
# Backup tests are divided into three groups: when oldname Cellar is deleted
# and when it still exists and when it's a symlink
def
check_after_backup
assert_predicate
@old_keg_record
.
parent
,
:directory?
refute_predicate
@old_keg_record
.
parent
.
subdirs
,
:empty?
assert_predicate
HOMEBREW_LIBRARY
/
"LinkedKegs/oldname"
,
:exist?
assert_predicate
HOMEBREW_PREFIX
/
"opt/oldname"
,
:exist?
assert_predicate
HOMEBREW_LIBRARY
/
"PinnedKegs/oldname"
,
:symlink?
assert_predicate
@keg
,
:linked?
end
def
test_backup_cellar_exist
@migrator
.
backup_oldname
check_after_backup
end
def
test_backup_cellar_removed
@new_keg_record
.
join
(
"bin"
).
mkpath
@keg
.
unlink
@keg
.
uninstall
@migrator
.
backup_oldname
check_after_backup
end
def
test_backup_cellar_linked
@new_keg_record
.
join
(
"bin"
).
mkpath
@keg
.
unlink
@keg
.
uninstall
@old_keg_record
.
parent
.
make_relative_symlink
(
@new_keg_record
.
parent
)
@migrator
.
backup_oldname
check_after_backup
end
end
This diff is collapsed.
Click to expand it.
Preview
0%
Loading
Try again
or
attach a new file
.
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Save comment
Cancel
Please
register
or
sign in
to comment