2017-08-17 22:06:05 +00:00
|
|
|
struct Foo <: GenericPlugin
|
|
|
|
gitignore::Vector{AbstractString}
|
|
|
|
src::Nullable{AbstractString}
|
|
|
|
dest::AbstractString
|
2017-08-18 04:06:33 +00:00
|
|
|
badges::Vector{Badge}
|
2017-08-17 22:06:05 +00:00
|
|
|
view::Dict{String, Any}
|
2017-08-18 04:06:33 +00:00
|
|
|
Foo() = new([], @__FILE__, fake_path, [Badge("foo", "bar", "baz")], Dict{String, Any}())
|
2017-08-17 22:06:05 +00:00
|
|
|
end
|
2017-08-18 04:06:33 +00:00
|
|
|
struct Bar <: CustomPlugin end
|
|
|
|
struct Baz <: Plugin end
|
2017-08-17 22:06:05 +00:00
|
|
|
|
2017-08-14 18:13:26 +00:00
|
|
|
const git_config = Dict(
|
|
|
|
"user.name" => "Tester McTestFace",
|
|
|
|
"user.email" => "email@web.site",
|
2017-08-15 16:10:05 +00:00
|
|
|
"github.username" => "TesterMcTestFace",
|
2017-08-14 18:13:26 +00:00
|
|
|
)
|
2017-08-15 23:46:36 +00:00
|
|
|
const test_pkg = "TestPkg"
|
|
|
|
const fake_path = bin(hash("/this/file/does/not/exist"))
|
2017-08-14 22:57:49 +00:00
|
|
|
const test_file = tempname()
|
2017-08-14 18:13:26 +00:00
|
|
|
template_text = """
|
2017-08-15 02:40:04 +00:00
|
|
|
PKGNAME: {{PKGNAME}}
|
|
|
|
VERSION: {{VERSION}}}
|
2017-08-14 18:13:26 +00:00
|
|
|
{{#DOCUMENTER}}Documenter{{/DOCUMENTER}}
|
|
|
|
{{#CODECOV}}CodeCov{{/CODECOV}}
|
2017-08-17 22:06:05 +00:00
|
|
|
{{#CODECOV}}Coveralls{{/CODECOV}}
|
2017-08-14 18:13:26 +00:00
|
|
|
{{#AFTER}}After{{/AFTER}}
|
|
|
|
{{#OTHER}}Other{{/OTHER}}
|
|
|
|
"""
|
|
|
|
write(test_file, template_text)
|
|
|
|
|
|
|
|
@testset "Template creation" begin
|
2017-08-15 16:10:05 +00:00
|
|
|
t = Template(; user="invenia")
|
2017-08-16 22:58:12 +00:00
|
|
|
rm(t.temp_dir; recursive=true)
|
2017-08-15 16:10:05 +00:00
|
|
|
@test t.user == "invenia"
|
2017-08-14 18:13:26 +00:00
|
|
|
@test t.license == nothing
|
|
|
|
@test t.years == string(Dates.year(Dates.today()))
|
|
|
|
@test t.authors == LibGit2.getconfig("user.name", "")
|
2017-08-15 23:46:36 +00:00
|
|
|
@test t.dir == Pkg.dir()
|
2017-08-14 18:13:26 +00:00
|
|
|
@test t.julia_version == VERSION
|
|
|
|
@test isempty(t.git_config)
|
|
|
|
@test isempty(t.plugins)
|
|
|
|
|
2017-08-15 16:10:05 +00:00
|
|
|
t = Template(; user="invenia", license="MIT")
|
2017-08-16 22:58:12 +00:00
|
|
|
rm(t.temp_dir; recursive=true)
|
2017-08-14 18:13:26 +00:00
|
|
|
@test t.license == "MIT"
|
|
|
|
|
2017-08-15 16:10:05 +00:00
|
|
|
t = Template(; user="invenia", years=2014)
|
2017-08-16 22:58:12 +00:00
|
|
|
rm(t.temp_dir; recursive=true)
|
2017-08-14 18:13:26 +00:00
|
|
|
@test t.years == "2014"
|
2017-08-15 16:10:05 +00:00
|
|
|
t = Template(user="invenia", years="2014-2015")
|
2017-08-16 22:58:12 +00:00
|
|
|
rm(t.temp_dir; recursive=true)
|
2017-08-14 18:13:26 +00:00
|
|
|
@test t.years == "2014-2015"
|
|
|
|
|
2017-08-15 16:10:05 +00:00
|
|
|
t = Template(; user="invenia", authors="Some Guy")
|
2017-08-16 22:58:12 +00:00
|
|
|
rm(t.temp_dir; recursive=true)
|
2017-08-14 18:13:26 +00:00
|
|
|
@test t.authors == "Some Guy"
|
2017-08-16 22:58:12 +00:00
|
|
|
|
2017-08-15 16:10:05 +00:00
|
|
|
t = Template(; user="invenia", authors=["Guy", "Gal"])
|
2017-08-16 22:58:12 +00:00
|
|
|
rm(t.temp_dir; recursive=true)
|
2017-08-14 18:13:26 +00:00
|
|
|
@test t.authors == "Guy, Gal"
|
|
|
|
|
2017-08-15 23:46:36 +00:00
|
|
|
t = Template(; user="invenia", dir=test_file)
|
2017-08-16 22:58:12 +00:00
|
|
|
rm(t.temp_dir; recursive=true)
|
2017-08-15 23:46:36 +00:00
|
|
|
@test t.dir == test_file
|
2017-08-14 18:13:26 +00:00
|
|
|
|
2017-08-15 16:10:05 +00:00
|
|
|
t = Template(; user="invenia", julia_version=v"0.1.2")
|
2017-08-16 22:58:12 +00:00
|
|
|
rm(t.temp_dir; recursive=true)
|
2017-08-14 18:13:26 +00:00
|
|
|
@test t.julia_version == v"0.1.2"
|
|
|
|
|
2017-08-15 16:10:05 +00:00
|
|
|
t = Template(; user="invenia", git_config=git_config)
|
2017-08-16 22:58:12 +00:00
|
|
|
rm(t.temp_dir; recursive=true)
|
2017-08-14 19:16:04 +00:00
|
|
|
@test t.git_config == git_config
|
2017-08-14 18:13:26 +00:00
|
|
|
|
2017-08-15 16:10:05 +00:00
|
|
|
t = Template(; user="invenia", git_config=git_config)
|
2017-08-16 22:58:12 +00:00
|
|
|
rm(t.temp_dir; recursive=true)
|
2017-08-15 02:40:04 +00:00
|
|
|
@test t.authors == git_config["user.name"]
|
2017-08-14 20:58:14 +00:00
|
|
|
|
2017-08-15 16:10:05 +00:00
|
|
|
t = Template(; git_config=git_config)
|
2017-08-16 22:58:12 +00:00
|
|
|
rm(t.temp_dir; recursive=true)
|
2017-08-16 22:01:52 +00:00
|
|
|
@test t.user == git_config["github.username"]
|
|
|
|
@test t.authors == git_config["user.name"]
|
2017-08-15 16:10:05 +00:00
|
|
|
|
|
|
|
t = Template(;
|
|
|
|
user="invenia",
|
2017-08-17 22:06:05 +00:00
|
|
|
plugins = [GitHubPages(), TravisCI(), AppVeyor(), CodeCov(), Coveralls()],
|
2017-08-14 18:13:26 +00:00
|
|
|
)
|
2017-08-16 22:58:12 +00:00
|
|
|
rm(t.temp_dir; recursive=true)
|
2017-08-17 22:06:05 +00:00
|
|
|
@test Set(keys(t.plugins)) == Set(
|
|
|
|
[GitHubPages, TravisCI, AppVeyor, CodeCov, Coveralls]
|
|
|
|
)
|
|
|
|
@test Set(values(t.plugins)) == Set(
|
|
|
|
[GitHubPages(), TravisCI(), AppVeyor(), CodeCov(), Coveralls()]
|
|
|
|
)
|
2017-08-14 18:13:26 +00:00
|
|
|
|
2017-08-16 22:58:12 +00:00
|
|
|
@test_warn r".+" t = Template(;
|
2017-08-15 16:10:05 +00:00
|
|
|
user="invenia",
|
2017-08-14 19:16:04 +00:00
|
|
|
plugins=[TravisCI(), TravisCI()],
|
|
|
|
)
|
2017-08-16 22:58:12 +00:00
|
|
|
rm(t.temp_dir; recursive=true)
|
|
|
|
|
2017-08-16 22:01:52 +00:00
|
|
|
if isempty(LibGit2.getconfig("github.username", ""))
|
2017-08-17 06:57:58 +00:00
|
|
|
@test_throws ArgumentError t = Template()
|
2017-08-16 22:01:52 +00:00
|
|
|
else
|
|
|
|
t = Template()
|
2017-08-16 22:58:12 +00:00
|
|
|
rm(t.temp_dir; recursive=true)
|
2017-08-16 22:01:52 +00:00
|
|
|
@test t.user == LibGit2.getconfig("github.username", "")
|
|
|
|
end
|
2017-08-17 06:57:58 +00:00
|
|
|
@test_throws ArgumentError t = Template(; user="invenia", license="FakeLicense")
|
2017-08-14 19:16:04 +00:00
|
|
|
end
|
|
|
|
|
|
|
|
@testset "Plugin creation" begin
|
|
|
|
p = AppVeyor()
|
2017-08-17 06:57:58 +00:00
|
|
|
@test isempty(p.gitignore)
|
|
|
|
@test get(p.src) == joinpath(PkgTemplates.DEFAULTS_DIR, "appveyor.yml")
|
|
|
|
@test p.dest == ".appveyor.yml"
|
2017-08-18 04:06:33 +00:00
|
|
|
@test p.badges == [
|
|
|
|
Badge(
|
|
|
|
"Build Status",
|
|
|
|
"https://ci.appveyor.com/api/projects/status/github/{{USER}}/{{PKGNAME}}.jl?svg=true",
|
|
|
|
"https://ci.appveyor.com/project/{{USER}}/{{PKGNAME}}-jl",
|
|
|
|
),
|
|
|
|
]
|
2017-08-17 06:57:58 +00:00
|
|
|
@test isempty(p.view)
|
2017-08-14 19:16:04 +00:00
|
|
|
p = AppVeyor(; config_file=nothing)
|
2017-08-17 06:57:58 +00:00
|
|
|
@test_throws NullException get(p.src)
|
2017-08-14 19:16:04 +00:00
|
|
|
p = AppVeyor(; config_file=test_file)
|
2017-08-17 06:57:58 +00:00
|
|
|
@test get(p.src) == test_file
|
|
|
|
@test_throws ArgumentError p = AppVeyor(; config_file=fake_path)
|
2017-08-14 19:16:04 +00:00
|
|
|
|
|
|
|
p = TravisCI()
|
2017-08-17 06:57:58 +00:00
|
|
|
@test isempty(p.gitignore)
|
|
|
|
@test get(p.src) == joinpath(PkgTemplates.DEFAULTS_DIR, "travis.yml")
|
|
|
|
@test p.dest == ".travis.yml"
|
2017-08-18 04:06:33 +00:00
|
|
|
@test p.badges == [
|
|
|
|
Badge(
|
|
|
|
"Build Status",
|
|
|
|
"https://travis-ci.org/{{USER}}/{{PKGNAME}}.jl.svg?branch=master",
|
|
|
|
"https://travis-ci.org/{{USER}}/{{PKGNAME}}.jl",
|
|
|
|
),
|
|
|
|
]
|
2017-08-17 06:57:58 +00:00
|
|
|
@test isempty(p.view)
|
2017-08-14 19:16:04 +00:00
|
|
|
p = TravisCI(; config_file=nothing)
|
2017-08-17 06:57:58 +00:00
|
|
|
@test_throws NullException get(p.src)
|
2017-08-14 19:16:04 +00:00
|
|
|
p = TravisCI(; config_file=test_file)
|
2017-08-17 06:57:58 +00:00
|
|
|
@test get(p.src) == test_file
|
|
|
|
@test_throws ArgumentError p = TravisCI(; config_file=fake_path)
|
2017-08-14 18:13:26 +00:00
|
|
|
|
2017-08-14 19:16:04 +00:00
|
|
|
p = CodeCov()
|
2017-08-17 06:57:58 +00:00
|
|
|
@test p.gitignore == ["*.jl.cov", "*.jl.*.cov", "*.jl.mem"]
|
|
|
|
@test get(p.src) == joinpath(PkgTemplates.DEFAULTS_DIR, "codecov.yml")
|
|
|
|
@test p.dest == ".codecov.yml"
|
2017-08-18 04:06:33 +00:00
|
|
|
@test p.badges == [
|
|
|
|
Badge(
|
|
|
|
"CodeCov",
|
|
|
|
"https://codecov.io/gh/{{USER}}/{{PKGNAME}}.jl/branch/master/graph/badge.svg",
|
|
|
|
"https://codecov.io/gh/{{USER}}/{{PKGNAME}}.jl",
|
|
|
|
)
|
|
|
|
]
|
2017-08-17 06:57:58 +00:00
|
|
|
@test isempty(p.view)
|
2017-08-14 19:16:04 +00:00
|
|
|
p = CodeCov(; config_file=nothing)
|
2017-08-17 06:57:58 +00:00
|
|
|
@test_throws NullException get(p.src)
|
2017-08-14 19:16:04 +00:00
|
|
|
p = CodeCov(; config_file=test_file)
|
2017-08-17 06:57:58 +00:00
|
|
|
@test get(p.src) == test_file
|
|
|
|
@test_throws ArgumentError p = CodeCov(; config_file=fake_path)
|
|
|
|
|
|
|
|
p = Coveralls()
|
|
|
|
@test p.gitignore == ["*.jl.cov", "*.jl.*.cov", "*.jl.mem"]
|
|
|
|
@test_throws NullException get(p.src)
|
|
|
|
@test p.dest == ".coveralls.yml"
|
2017-08-18 04:06:33 +00:00
|
|
|
@test p.badges == [
|
|
|
|
Badge(
|
|
|
|
"Coveralls",
|
|
|
|
"https://coveralls.io/repos/github/{{USER}}/{{PKGNAME}}.jl/badge.svg?branch=master",
|
|
|
|
"https://coveralls.io/github/{{USER}}/{{PKGNAME}}.jl?branch=master",
|
|
|
|
)
|
|
|
|
]
|
2017-08-17 06:57:58 +00:00
|
|
|
@test isempty(p.view)
|
|
|
|
p = Coveralls(; config_file=nothing)
|
|
|
|
@test_throws NullException get(p.src)
|
|
|
|
p = Coveralls(; config_file=test_file)
|
|
|
|
@test get(p.src) == test_file
|
|
|
|
@test_throws ArgumentError p = Coveralls(; config_file=fake_path)
|
|
|
|
|
|
|
|
p = GitHubPages()
|
|
|
|
@test p.gitignore == ["/docs/build/", "/docs/site/"]
|
|
|
|
@test isempty(p.assets)
|
|
|
|
p = GitHubPages(; assets=[test_file])
|
|
|
|
@test p.assets == [test_file]
|
|
|
|
@test_throws ArgumentError p = GitHubPages(; assets=[fake_path])
|
|
|
|
end
|
|
|
|
|
|
|
|
@testset "Badge generation" begin
|
|
|
|
user = git_config["github.username"]
|
|
|
|
|
2017-08-18 04:06:33 +00:00
|
|
|
badge = Badge("A", "B", "C")
|
|
|
|
@test badge.hover == "A"
|
|
|
|
@test badge.image == "B"
|
|
|
|
@test badge.link == "C"
|
|
|
|
@test format(badge) == "[](C)"
|
|
|
|
|
2017-08-17 06:57:58 +00:00
|
|
|
p = AppVeyor()
|
|
|
|
@test badges(p, user, test_pkg) == ["[](https://ci.appveyor.com/project/$user/$test_pkg-jl)"]
|
|
|
|
|
|
|
|
p = TravisCI()
|
|
|
|
@test badges(p, user, test_pkg) == ["[](https://travis-ci.org/$user/$test_pkg.jl)"]
|
|
|
|
|
|
|
|
p = CodeCov()
|
|
|
|
@test badges(p, user, test_pkg) == ["[](https://codecov.io/gh/$user/$test_pkg.jl)"]
|
|
|
|
|
|
|
|
p = Coveralls()
|
|
|
|
@test badges(p, user, test_pkg) == ["[](https://coveralls.io/github/$user/$test_pkg.jl?branch=master)"]
|
|
|
|
|
|
|
|
p = GitHubPages()
|
|
|
|
@test badges(p, user, test_pkg) == [
|
|
|
|
"[](https://$user.github.io/$test_pkg.jl/stable)"
|
|
|
|
"[](https://$user.github.io/$test_pkg.jl/latest)"
|
|
|
|
]
|
2017-08-18 04:06:33 +00:00
|
|
|
|
|
|
|
p = Bar()
|
|
|
|
@test isempty(badges(p, user, test_pkg))
|
|
|
|
p = Baz()
|
|
|
|
@test isempty(badges(p, user, test_pkg))
|
2017-08-14 18:13:26 +00:00
|
|
|
end
|
2017-08-14 20:58:14 +00:00
|
|
|
|
|
|
|
@testset "File generation" begin
|
|
|
|
t = Template(;
|
2017-08-15 16:10:05 +00:00
|
|
|
user="invenia",
|
2017-08-14 20:58:14 +00:00
|
|
|
license="MPL",
|
|
|
|
git_config=git_config,
|
2017-08-17 22:06:05 +00:00
|
|
|
plugins=[Coveralls(), TravisCI(), CodeCov(), GitHubPages(), AppVeyor()],
|
2017-08-14 20:58:14 +00:00
|
|
|
)
|
2017-08-15 23:46:36 +00:00
|
|
|
pkg_dir = joinpath(t.temp_dir, test_pkg)
|
2017-08-14 20:58:14 +00:00
|
|
|
|
|
|
|
temp_file = tempname()
|
|
|
|
gen_file(temp_file, "Hello, world")
|
|
|
|
@test isfile(temp_file)
|
|
|
|
@test readstring(temp_file) == "Hello, world\n"
|
|
|
|
rm(temp_file)
|
|
|
|
|
2017-08-15 23:46:36 +00:00
|
|
|
@test gen_readme(test_pkg, t) == ["README.md"]
|
|
|
|
@test isfile(joinpath(pkg_dir, "README.md"))
|
|
|
|
readme = readchomp(joinpath(pkg_dir, "README.md"))
|
|
|
|
rm(joinpath(pkg_dir, "README.md"))
|
|
|
|
@test contains(readme, "# $test_pkg")
|
|
|
|
for p in values(t.plugins)
|
|
|
|
@test contains(readme, join(badges(p, t.user, test_pkg), "\n"))
|
2017-08-14 20:58:14 +00:00
|
|
|
end
|
2017-08-15 23:46:36 +00:00
|
|
|
# Check the order of the badges.
|
|
|
|
@test search(readme, "github.io").start <
|
|
|
|
search(readme, "travis").start <
|
|
|
|
search(readme, "appveyor").start <
|
2017-08-17 22:06:05 +00:00
|
|
|
search(readme, "codecov").start <
|
|
|
|
search(readme, "coveralls").start
|
|
|
|
# Plugins with badges but not in BADGE_ORDER should appear at the far right side.
|
|
|
|
t.plugins[Foo] = Foo()
|
|
|
|
gen_readme(test_pkg, t)
|
|
|
|
readme = readchomp(joinpath(pkg_dir, "README.md"))
|
|
|
|
rm(joinpath(pkg_dir, "README.md"))
|
|
|
|
@test search(readme, "coveralls").start < search(readme, "baz").start
|
2017-08-15 23:46:36 +00:00
|
|
|
|
|
|
|
@test gen_gitignore(test_pkg, t) == [".gitignore"]
|
|
|
|
@test isfile(joinpath(pkg_dir, ".gitignore"))
|
|
|
|
gitignore = readstring(joinpath(pkg_dir, ".gitignore"))
|
|
|
|
rm(joinpath(pkg_dir, ".gitignore"))
|
|
|
|
@test contains(gitignore, ".DS_Store")
|
|
|
|
for p in values(t.plugins)
|
2017-08-17 06:57:58 +00:00
|
|
|
for entry in p.gitignore
|
2017-08-15 23:46:36 +00:00
|
|
|
@test contains(gitignore, entry)
|
2017-08-14 20:58:14 +00:00
|
|
|
end
|
|
|
|
end
|
|
|
|
|
2017-08-15 23:46:36 +00:00
|
|
|
@test gen_license(test_pkg, t) == ["LICENSE"]
|
|
|
|
@test isfile(joinpath(pkg_dir, "LICENSE"))
|
|
|
|
license = readchomp(joinpath(pkg_dir, "LICENSE"))
|
|
|
|
rm(joinpath(pkg_dir, "LICENSE"))
|
|
|
|
@test contains(license, t.authors)
|
|
|
|
@test contains(license, t.years)
|
|
|
|
@test contains(license, read_license(t.license))
|
|
|
|
|
|
|
|
@test gen_entrypoint(test_pkg, t) == ["src/"]
|
|
|
|
@test isdir(joinpath(pkg_dir, "src"))
|
|
|
|
@test isfile(joinpath(pkg_dir, "src", "$test_pkg.jl"))
|
|
|
|
entrypoint = readchomp(joinpath(pkg_dir, "src", "$test_pkg.jl"))
|
|
|
|
rm(joinpath(pkg_dir, "src"); recursive=true)
|
|
|
|
@test contains(entrypoint, "module $test_pkg")
|
|
|
|
|
|
|
|
@test gen_require(test_pkg, t) == ["REQUIRE"]
|
|
|
|
@test isfile(joinpath(pkg_dir, "REQUIRE"))
|
|
|
|
vf = version_floor(t.julia_version)
|
|
|
|
@test readchomp(joinpath(pkg_dir, "REQUIRE")) == "julia $vf"
|
|
|
|
rm(joinpath(pkg_dir, "REQUIRE"))
|
|
|
|
|
|
|
|
@test gen_tests(test_pkg, t) == ["test/"]
|
|
|
|
@test isdir(joinpath(pkg_dir, "test"))
|
|
|
|
@test isfile(joinpath(pkg_dir, "test", "runtests.jl"))
|
|
|
|
runtests = readchomp(joinpath(pkg_dir, "test", "runtests.jl"))
|
|
|
|
rm(joinpath(pkg_dir, "test"); recursive=true)
|
|
|
|
@test contains(runtests, "using $test_pkg")
|
|
|
|
@test contains(runtests, "using Base.Test")
|
2017-08-16 22:58:12 +00:00
|
|
|
|
|
|
|
rm(t.temp_dir; recursive=true)
|
2017-08-14 20:58:14 +00:00
|
|
|
end
|
2017-08-14 22:57:49 +00:00
|
|
|
|
|
|
|
@testset "Package generation" begin
|
2017-08-15 16:10:05 +00:00
|
|
|
t = Template(; user="invenia")
|
2017-08-15 23:46:36 +00:00
|
|
|
generate(test_pkg, t)
|
|
|
|
@test !isfile(Pkg.dir(test_pkg, "LICENSE"))
|
|
|
|
@test isfile(Pkg.dir(test_pkg, "README.md"))
|
|
|
|
@test isfile(Pkg.dir(test_pkg, "REQUIRE"))
|
|
|
|
@test isfile(Pkg.dir(test_pkg, ".gitignore"))
|
|
|
|
@test isdir(Pkg.dir(test_pkg, "src"))
|
2017-08-17 06:57:58 +00:00
|
|
|
@test isfile(Pkg.dir(test_pkg, "src", "$test_pkg.jl"))
|
2017-08-15 23:46:36 +00:00
|
|
|
@test isdir(Pkg.dir(test_pkg, "test"))
|
|
|
|
@test isfile(Pkg.dir(test_pkg, "test", "runtests.jl"))
|
|
|
|
repo = LibGit2.GitRepo(Pkg.dir(test_pkg))
|
2017-08-15 16:10:05 +00:00
|
|
|
remote = LibGit2.get(LibGit2.GitRemote, repo, "origin")
|
|
|
|
branches = [LibGit2.shortname(branch[1]) for branch in LibGit2.GitBranchIter(repo)]
|
2017-08-15 02:40:04 +00:00
|
|
|
@test LibGit2.getconfig(repo, "user.name", "") == LibGit2.getconfig("user.name", "")
|
2017-08-17 06:57:58 +00:00
|
|
|
@test LibGit2.url(remote) == "https://github.com/invenia/$test_pkg.jl"
|
2017-08-15 16:10:05 +00:00
|
|
|
@test in("master", branches)
|
|
|
|
@test !in("gh-pages", branches)
|
2017-08-15 02:40:04 +00:00
|
|
|
@test !LibGit2.isdirty(repo)
|
2017-08-15 23:46:36 +00:00
|
|
|
rm(Pkg.dir(test_pkg); recursive=true)
|
2017-08-15 02:40:04 +00:00
|
|
|
|
2017-08-15 23:46:36 +00:00
|
|
|
generate(test_pkg, t; ssh=true)
|
|
|
|
repo = LibGit2.GitRepo(Pkg.dir(test_pkg))
|
2017-08-15 16:10:05 +00:00
|
|
|
remote = LibGit2.get(LibGit2.GitRemote, repo, "origin")
|
2017-08-17 06:57:58 +00:00
|
|
|
@test LibGit2.url(remote) == "git@github.com:invenia/$test_pkg.jl.git"
|
2017-08-15 23:46:36 +00:00
|
|
|
rm(Pkg.dir(test_pkg); recursive=true)
|
2017-08-15 16:10:05 +00:00
|
|
|
|
|
|
|
t = Template(; user="invenia", host="gitlab.com")
|
2017-08-15 23:46:36 +00:00
|
|
|
generate(test_pkg, t)
|
|
|
|
repo = LibGit2.GitRepo(Pkg.dir(test_pkg))
|
2017-08-15 16:10:05 +00:00
|
|
|
remote = LibGit2.get(LibGit2.GitRemote, repo, "origin")
|
2017-08-17 06:57:58 +00:00
|
|
|
@test LibGit2.url(remote) == "https://gitlab.com/invenia/$test_pkg.jl"
|
2017-08-15 23:46:36 +00:00
|
|
|
rm(Pkg.dir(test_pkg); recursive=true)
|
2017-08-15 16:10:05 +00:00
|
|
|
|
2017-08-16 06:47:46 +00:00
|
|
|
temp_dir = mktempdir()
|
|
|
|
t = Template(; user="invenia", dir=temp_dir)
|
|
|
|
generate(test_pkg, t)
|
|
|
|
@test isdir(joinpath(temp_dir, test_pkg))
|
|
|
|
rm(temp_dir; recursive=true)
|
|
|
|
|
2017-08-15 02:40:04 +00:00
|
|
|
t = Template(;
|
2017-08-15 16:10:05 +00:00
|
|
|
user="invenia",
|
2017-08-15 02:40:04 +00:00
|
|
|
license="MIT",
|
|
|
|
git_config=git_config,
|
2017-08-17 06:57:58 +00:00
|
|
|
plugins=[AppVeyor(), GitHubPages(), Coveralls(), CodeCov(), TravisCI()],
|
2017-08-15 02:40:04 +00:00
|
|
|
)
|
2017-08-15 23:46:36 +00:00
|
|
|
generate(test_pkg, t)
|
|
|
|
@test isfile(Pkg.dir(test_pkg, "LICENSE"))
|
|
|
|
@test isfile(Pkg.dir(test_pkg, ".travis.yml"))
|
|
|
|
@test isfile(Pkg.dir(test_pkg, ".appveyor.yml"))
|
|
|
|
@test isfile(Pkg.dir(test_pkg, ".codecov.yml"))
|
|
|
|
@test isdir(Pkg.dir(test_pkg, "docs"))
|
|
|
|
@test isfile(Pkg.dir(test_pkg, "docs", "make.jl"))
|
|
|
|
@test isdir(Pkg.dir(test_pkg, "docs", "src"))
|
|
|
|
@test isfile(Pkg.dir(test_pkg, "docs", "src", "index.md"))
|
|
|
|
repo = LibGit2.GitRepo(Pkg.dir(test_pkg))
|
2017-08-15 02:40:04 +00:00
|
|
|
@test LibGit2.getconfig(repo, "user.name", "") == git_config["user.name"]
|
2017-08-15 16:10:05 +00:00
|
|
|
branches = [LibGit2.shortname(branch[1]) for branch in LibGit2.GitBranchIter(repo)]
|
|
|
|
@test in("gh-pages", branches)
|
2017-08-14 22:57:49 +00:00
|
|
|
@test !LibGit2.isdirty(repo)
|
2017-08-15 23:46:36 +00:00
|
|
|
rm(Pkg.dir(test_pkg); recursive=true)
|
2017-08-14 22:57:49 +00:00
|
|
|
|
2017-08-15 23:46:36 +00:00
|
|
|
mkdir(Pkg.dir(test_pkg))
|
|
|
|
@test_throws ArgumentError generate(test_pkg, t)
|
|
|
|
generate(test_pkg, t; force=true)
|
|
|
|
@test isfile(Pkg.dir(test_pkg, "README.md"))
|
2017-08-16 22:15:06 +00:00
|
|
|
rm(Pkg.dir(test_pkg); recursive=true)
|
|
|
|
|
|
|
|
t = Template(; user="invenia", plugins=[GitHubPages()])
|
|
|
|
generate(test_pkg, t)
|
|
|
|
readme = readstring(Pkg.dir(test_pkg, "README.md"))
|
|
|
|
index = readstring(Pkg.dir(test_pkg, "docs", "src", "index.md"))
|
|
|
|
@test readme == index
|
2017-08-16 22:58:12 +00:00
|
|
|
rm(Pkg.dir(test_pkg); recursive=true)
|
2017-08-14 22:57:49 +00:00
|
|
|
end
|
|
|
|
|
|
|
|
@testset "Plugin generation" begin
|
2017-08-15 23:46:36 +00:00
|
|
|
t = Template(; user="invenia")
|
|
|
|
pkg_dir = joinpath(t.temp_dir, test_pkg)
|
|
|
|
|
|
|
|
p = TravisCI()
|
|
|
|
@test gen_plugin(p, t, test_pkg) == [".travis.yml"]
|
|
|
|
@test isfile(joinpath(pkg_dir, ".travis.yml"))
|
2017-08-17 22:06:05 +00:00
|
|
|
travis = readstring(joinpath(pkg_dir, ".travis.yml"))
|
|
|
|
@test !contains(travis, "after_success")
|
|
|
|
@test !contains(travis, "Codecov.submit")
|
|
|
|
@test !contains(travis, "Coveralls.submit")
|
|
|
|
@test !contains(travis, "Pkg.add(\"Documenter\")")
|
|
|
|
rm(joinpath(pkg_dir, ".travis.yml"))
|
|
|
|
t.plugins[CodeCov] = CodeCov()
|
|
|
|
gen_plugin(p, t, test_pkg)
|
|
|
|
delete!(t.plugins, CodeCov)
|
|
|
|
travis = readstring(joinpath(pkg_dir, ".travis.yml"))
|
|
|
|
@test contains(travis, "after_success")
|
|
|
|
@test contains(travis, "Codecov.submit")
|
|
|
|
@test !contains(travis, "Coveralls.submit")
|
|
|
|
@test !contains(travis, "Pkg.add(\"Documenter\")")
|
|
|
|
rm(joinpath(pkg_dir, ".travis.yml"))
|
|
|
|
t.plugins[Coveralls] = Coveralls()
|
|
|
|
gen_plugin(p, t, test_pkg)
|
|
|
|
delete!(t.plugins, Coveralls)
|
|
|
|
travis = readstring(joinpath(pkg_dir, ".travis.yml"))
|
|
|
|
@test contains(travis, "after_success")
|
|
|
|
@test contains(travis, "Coveralls.submit")
|
|
|
|
@test !contains(travis, "Codecov.submit")
|
|
|
|
@test !contains(travis, "Pkg.add(\"Documenter\")")
|
|
|
|
rm(joinpath(pkg_dir, ".travis.yml"))
|
|
|
|
t.plugins[GitHubPages] = GitHubPages()
|
|
|
|
gen_plugin(p, t, test_pkg)
|
|
|
|
delete!(t.plugins, GitHubPages)
|
|
|
|
travis = readstring(joinpath(pkg_dir, ".travis.yml"))
|
|
|
|
@test contains(travis, "after_success")
|
|
|
|
@test contains(travis, "Pkg.add(\"Documenter\")")
|
|
|
|
@test !contains(travis, "Codecov.submit")
|
|
|
|
@test !contains(travis, "Coveralls.submit")
|
2017-08-15 23:46:36 +00:00
|
|
|
rm(joinpath(pkg_dir, ".travis.yml"))
|
|
|
|
p = TravisCI(; config_file=nothing)
|
|
|
|
@test isempty(gen_plugin(p, t, test_pkg))
|
|
|
|
@test !isfile(joinpath(pkg_dir, ".travis.yml"))
|
|
|
|
@test_throws ArgumentError TravisCI(; config_file=fake_path)
|
|
|
|
|
|
|
|
p = AppVeyor()
|
|
|
|
@test gen_plugin(p, t, test_pkg) == [".appveyor.yml"]
|
|
|
|
@test isfile(joinpath(pkg_dir, ".appveyor.yml"))
|
2017-08-17 22:06:05 +00:00
|
|
|
appveyor = readstring(joinpath(pkg_dir, ".appveyor.yml"))
|
2017-08-18 07:05:48 +00:00
|
|
|
@test !contains(appveyor, "coverage=true")
|
2017-08-17 22:06:05 +00:00
|
|
|
@test !contains(appveyor, "after_script")
|
|
|
|
@test !contains(appveyor, "Codecov.submit")
|
|
|
|
@test !contains(appveyor, "Coveralls.submit")
|
|
|
|
rm(joinpath(pkg_dir, ".appveyor.yml"))
|
|
|
|
t.plugins[CodeCov] = CodeCov()
|
|
|
|
gen_plugin(p, t, test_pkg)
|
|
|
|
delete!(t.plugins, CodeCov)
|
|
|
|
appveyor = readstring(joinpath(pkg_dir, ".appveyor.yml"))
|
2017-08-18 07:05:48 +00:00
|
|
|
@test contains(appveyor, "coverage=true")
|
2017-08-17 22:06:05 +00:00
|
|
|
@test contains(appveyor, "after_script")
|
|
|
|
@test contains(appveyor, "Codecov.submit")
|
|
|
|
@test !contains(appveyor, "Coveralls.submit")
|
|
|
|
rm(joinpath(pkg_dir, ".appveyor.yml"))
|
|
|
|
t.plugins[Coveralls] = Coveralls()
|
|
|
|
gen_plugin(p, t, test_pkg)
|
|
|
|
delete!(t.plugins, Coveralls)
|
|
|
|
appveyor = readstring(joinpath(pkg_dir, ".appveyor.yml"))
|
2017-08-18 07:05:48 +00:00
|
|
|
@test contains(appveyor, "coverage=true")
|
2017-08-17 22:06:05 +00:00
|
|
|
@test contains(appveyor, "after_script")
|
|
|
|
@test contains(appveyor, "Coveralls.submit")
|
|
|
|
@test !contains(appveyor, "Codecov.submit")
|
2017-08-15 23:46:36 +00:00
|
|
|
rm(joinpath(pkg_dir, ".appveyor.yml"))
|
|
|
|
p = AppVeyor(; config_file=nothing)
|
|
|
|
@test isempty(gen_plugin(p, t, test_pkg))
|
|
|
|
@test !isfile(joinpath(pkg_dir, ".appveyor.yml"))
|
|
|
|
@test_throws ArgumentError AppVeyor(; config_file=fake_path)
|
|
|
|
|
|
|
|
p = CodeCov()
|
|
|
|
@test gen_plugin(p, t, test_pkg) == [".codecov.yml"]
|
|
|
|
@test isfile(joinpath(pkg_dir, ".codecov.yml"))
|
|
|
|
rm(joinpath(pkg_dir, ".codecov.yml"))
|
|
|
|
p = CodeCov(; config_file=nothing)
|
|
|
|
@test isempty(gen_plugin(p, t, test_pkg))
|
|
|
|
@test !isfile(joinpath(pkg_dir, ".codecov.yml"))
|
|
|
|
@test_throws ArgumentError CodeCov(; config_file=fake_path)
|
|
|
|
|
|
|
|
p = GitHubPages()
|
|
|
|
@test gen_plugin(p, t, test_pkg) == ["docs/"]
|
|
|
|
@test isdir(joinpath(pkg_dir, "docs"))
|
|
|
|
@test isfile(joinpath(pkg_dir, "docs", "make.jl"))
|
|
|
|
make = readchomp(joinpath(pkg_dir, "docs", "make.jl"))
|
|
|
|
@test contains(make, "assets=[]")
|
|
|
|
@test !contains(make, "deploydocs")
|
|
|
|
@test isdir(joinpath(pkg_dir, "docs", "src"))
|
|
|
|
@test isfile(joinpath(pkg_dir, "docs", "src", "index.md"))
|
|
|
|
index = readchomp(joinpath(pkg_dir, "docs", "src", "index.md"))
|
2017-08-17 06:57:58 +00:00
|
|
|
@test index == "# $test_pkg"
|
2017-08-15 23:46:36 +00:00
|
|
|
rm(joinpath(pkg_dir, "docs"); recursive=true)
|
|
|
|
p = GitHubPages(; assets=[test_file])
|
|
|
|
@test gen_plugin(p, t, test_pkg) == ["docs/"]
|
|
|
|
make = readchomp(joinpath(pkg_dir, "docs", "make.jl"))
|
|
|
|
@test contains(
|
|
|
|
make,
|
|
|
|
strip("""
|
|
|
|
assets=[
|
|
|
|
"assets/$(basename(test_file))",
|
|
|
|
]
|
|
|
|
""")
|
|
|
|
)
|
|
|
|
@test isfile(joinpath(pkg_dir, "docs", "src", "assets", basename(test_file)))
|
|
|
|
rm(joinpath(pkg_dir, "docs"); recursive=true)
|
|
|
|
t.plugins[TravisCI] = TravisCI()
|
|
|
|
@test gen_plugin(p, t, test_pkg) == ["docs/"]
|
|
|
|
make = readchomp(joinpath(pkg_dir, "docs", "make.jl"))
|
|
|
|
@test contains(make, "deploydocs")
|
|
|
|
rm(joinpath(pkg_dir, "docs"); recursive=true)
|
|
|
|
@test_throws ArgumentError GitHubPages(; assets=[fake_path])
|
2017-08-16 22:58:12 +00:00
|
|
|
|
2017-08-18 04:06:33 +00:00
|
|
|
p = Bar()
|
|
|
|
@test isempty(gen_plugin(p, t, test_pkg))
|
|
|
|
p = Baz()
|
|
|
|
@test isempty(gen_plugin(p, t, test_pkg))
|
|
|
|
|
2017-08-16 22:58:12 +00:00
|
|
|
rm(t.temp_dir; recursive=true)
|
2017-08-15 02:40:04 +00:00
|
|
|
end
|
|
|
|
|
|
|
|
@testset "Version floor" begin
|
|
|
|
@test version_floor(v"1.0.0") == "1.0"
|
|
|
|
@test version_floor(v"1.0.1") == "1.0"
|
|
|
|
@test version_floor(v"1.0.1-pre") == "1.0"
|
|
|
|
@test version_floor(v"1.0.0-pre") == "1.0-"
|
|
|
|
end
|
|
|
|
|
|
|
|
@testset "Mustache substitution" begin
|
2017-08-17 22:06:05 +00:00
|
|
|
view = Dict{String, Any}()
|
|
|
|
text = substitute(template_text, view)
|
|
|
|
@test !contains(text, "PKGNAME: $test_pkg")
|
|
|
|
@test !contains(text, "Documenter")
|
|
|
|
@test !contains(text, "CodeCov")
|
|
|
|
@test !contains(text, "Coveralls")
|
|
|
|
@test !contains(text, "After")
|
|
|
|
@test !contains(text, "Other")
|
|
|
|
view["PKGNAME"] = test_pkg
|
|
|
|
view["OTHER"] = true
|
|
|
|
text = substitute(template_text, view)
|
|
|
|
@test contains(text, "PKGNAME: $test_pkg")
|
|
|
|
@test contains(text, "Other")
|
|
|
|
|
2017-08-15 16:10:05 +00:00
|
|
|
t = Template(; user="invenia")
|
2017-08-16 22:58:12 +00:00
|
|
|
rm(t.temp_dir; recursive=true)
|
2017-08-17 22:06:05 +00:00
|
|
|
view["OTHER"] = false
|
2017-08-15 02:40:04 +00:00
|
|
|
|
2017-08-17 22:06:05 +00:00
|
|
|
text = substitute(template_text, t; view=view)
|
2017-08-17 06:57:58 +00:00
|
|
|
@test contains(text, "PKGNAME: $test_pkg")
|
2017-08-15 02:40:04 +00:00
|
|
|
@test contains(text, "VERSION: $(t.julia_version.major).$(t.julia_version.minor)")
|
|
|
|
@test !contains(text, "Documenter")
|
|
|
|
@test !contains(text, "After")
|
|
|
|
@test !contains(text, "Other")
|
|
|
|
|
|
|
|
t.plugins[GitHubPages] = GitHubPages()
|
2017-08-17 22:06:05 +00:00
|
|
|
text = substitute(template_text, t; view=view)
|
2017-08-15 02:40:04 +00:00
|
|
|
@test contains(text, "Documenter")
|
|
|
|
@test contains(text, "After")
|
|
|
|
empty!(t.plugins)
|
|
|
|
|
|
|
|
t.plugins[CodeCov] = CodeCov()
|
2017-08-17 22:06:05 +00:00
|
|
|
text = substitute(template_text, t; view=view)
|
2017-08-15 02:40:04 +00:00
|
|
|
@test contains(text, "CodeCov")
|
|
|
|
@test contains(text, "After")
|
|
|
|
empty!(t.plugins)
|
|
|
|
|
2017-08-17 22:06:05 +00:00
|
|
|
t.plugins[CodeCov] = Coveralls()
|
|
|
|
text = substitute(template_text, t; view=view)
|
|
|
|
@test contains(text, "Coveralls")
|
|
|
|
@test contains(text, "After")
|
|
|
|
empty!(t.plugins)
|
2017-08-17 06:57:58 +00:00
|
|
|
|
2017-08-17 22:06:05 +00:00
|
|
|
view["OTHER"] = true
|
|
|
|
text = substitute(template_text, t; view=view)
|
2017-08-15 02:40:04 +00:00
|
|
|
@test contains(text, "Other")
|
|
|
|
end
|
|
|
|
|
|
|
|
@testset "License display" begin
|
|
|
|
old_stdout = STDOUT
|
|
|
|
out_read, out_write = redirect_stdout()
|
|
|
|
show_license()
|
2017-08-16 22:58:12 +00:00
|
|
|
licenses = join(Char(c) for c in readavailable(out_read))
|
2017-08-15 02:40:04 +00:00
|
|
|
show_license("MIT")
|
2017-08-16 22:58:12 +00:00
|
|
|
mit = join(Char(c) for c in readavailable(out_read))
|
2017-08-15 02:40:04 +00:00
|
|
|
close(out_write)
|
|
|
|
close(out_read)
|
|
|
|
redirect_stdout(old_stdout)
|
|
|
|
|
|
|
|
for (short, long) in LICENSES
|
|
|
|
@test contains(licenses, "$short: $long")
|
2017-08-14 22:57:49 +00:00
|
|
|
end
|
2017-08-15 02:40:04 +00:00
|
|
|
@test strip(mit) == strip(read_license("MIT"))
|
|
|
|
@test strip(read_license("MIT")) == strip(readstring(joinpath(LICENSE_DIR, "MIT")))
|
2017-08-17 06:57:58 +00:00
|
|
|
@test_throws ArgumentError read_license(fake_path)
|
2017-08-14 22:57:49 +00:00
|
|
|
end
|
2017-08-16 22:58:12 +00:00
|
|
|
|
|
|
|
rm(test_file)
|