135 lines
4.6 KiB
Perl
135 lines
4.6 KiB
Perl
|
|
Test 'source' stanza compatibility with both user and organization paths from
|
||
|
|
the supported 'github', 'gitlab', 'sourcehut', and 'bitbucket'.
|
||
|
|
|
||
|
|
Test a generated 'github' user repo
|
||
|
|
|
||
|
|
$ cat > dune-project <<EOF
|
||
|
|
> (lang dune 3.17)
|
||
|
|
> (name foo)
|
||
|
|
> (generate_opam_files true)
|
||
|
|
> (source (github user/repo))
|
||
|
|
> (package
|
||
|
|
> (allow_empty)
|
||
|
|
> (name foo))
|
||
|
|
> EOF
|
||
|
|
|
||
|
|
$ dune build
|
||
|
|
$ cat foo.opam | grep -i github
|
||
|
|
homepage: "https://github.com/user/repo"
|
||
|
|
bug-reports: "https://github.com/user/repo/issues"
|
||
|
|
dev-repo: "git+https://github.com/user/repo.git"
|
||
|
|
|
||
|
|
Test a generated 'gitlab' user repo
|
||
|
|
|
||
|
|
$ sed -i -e '4s|.*|(source (gitlab user/repo))|' dune-project
|
||
|
|
$ dune build
|
||
|
|
$ cat foo.opam | grep -i gitlab
|
||
|
|
homepage: "https://gitlab.com/user/repo"
|
||
|
|
bug-reports: "https://gitlab.com/user/repo/-/issues"
|
||
|
|
dev-repo: "git+https://gitlab.com/user/repo.git"
|
||
|
|
|
||
|
|
Test a generated 'sourcehut' user repo
|
||
|
|
|
||
|
|
$ sed -i -e '4s|.*|(source (sourcehut user/repo))|' dune-project
|
||
|
|
$ dune build
|
||
|
|
$ cat foo.opam | grep -i sr.ht
|
||
|
|
homepage: "https://sr.ht/~user/repo"
|
||
|
|
bug-reports: "https://todo.sr.ht/~user/repo"
|
||
|
|
dev-repo: "git+https://git.sr.ht/~user/repo"
|
||
|
|
|
||
|
|
Test a generated 'bitbucket' user repo
|
||
|
|
|
||
|
|
$ sed -i -e '4s|.*|(source (bitbucket user/repo))|' dune-project
|
||
|
|
$ dune build
|
||
|
|
$ cat foo.opam | grep -i bitbucket
|
||
|
|
homepage: "https://bitbucket.org/user/repo"
|
||
|
|
bug-reports: "https://bitbucket.org/user/repo/issues"
|
||
|
|
dev-repo: "git+https://bitbucket.org/user/repo.git"
|
||
|
|
|
||
|
|
Test a generated 'gitlab' organization repo
|
||
|
|
|
||
|
|
$ sed -i -e '4s|.*|(source (gitlab organization/project/repo))|' dune-project
|
||
|
|
$ dune build
|
||
|
|
$ cat foo.opam | grep -i gitlab
|
||
|
|
homepage: "https://gitlab.com/organization/project/repo"
|
||
|
|
bug-reports: "https://gitlab.com/organization/project/repo/-/issues"
|
||
|
|
dev-repo: "git+https://gitlab.com/organization/project/repo.git"
|
||
|
|
|
||
|
|
Test a generated 'codeberg' user repo
|
||
|
|
|
||
|
|
$ sed -i -e '4s|.*|(source (codeberg user/repo))|' dune-project
|
||
|
|
$ dune build
|
||
|
|
$ cat foo.opam | grep -i codeberg.org
|
||
|
|
homepage: "https://codeberg.org/user/repo"
|
||
|
|
bug-reports: "https://codeberg.org/user/repo/issues"
|
||
|
|
dev-repo: "git+https://codeberg.org/user/repo.git"
|
||
|
|
|
||
|
|
Test that the creation of a source stanza of the form 'org/project/repo' is
|
||
|
|
disallowed by any forge type other than gitlab and that associated error
|
||
|
|
messages are provided
|
||
|
|
|
||
|
|
Test github forge.
|
||
|
|
|
||
|
|
$ sed -i -e '4s|.*|(source (github org/proj/repo))|' dune-project
|
||
|
|
$ dune build
|
||
|
|
File "dune-project", line 4, characters 16-29:
|
||
|
|
4 | (source (github org/proj/repo))
|
||
|
|
^^^^^^^^^^^^^
|
||
|
|
Error: Github repository must be of form user/repo
|
||
|
|
Hint: The provided form 'org/proj/repo' is specific to Gitlab projects
|
||
|
|
[1]
|
||
|
|
|
||
|
|
Test bitbucket forge.
|
||
|
|
|
||
|
|
$ sed -i -e '4s|.*|(source (bitbucket org/proj/repo))|' dune-project
|
||
|
|
$ dune build
|
||
|
|
File "dune-project", line 4, characters 19-32:
|
||
|
|
4 | (source (bitbucket org/proj/repo))
|
||
|
|
^^^^^^^^^^^^^
|
||
|
|
Error: Bitbucket repository must be of form user/repo
|
||
|
|
Hint: The provided form 'org/proj/repo' is specific to Gitlab projects
|
||
|
|
[1]
|
||
|
|
|
||
|
|
Test sourcehut forge.
|
||
|
|
|
||
|
|
$ sed -i -e '4s|.*|(source (sourcehut org/proj/repo))|' dune-project
|
||
|
|
$ dune build
|
||
|
|
File "dune-project", line 4, characters 19-32:
|
||
|
|
4 | (source (sourcehut org/proj/repo))
|
||
|
|
^^^^^^^^^^^^^
|
||
|
|
Error: Sourcehut repository must be of form user/repo
|
||
|
|
Hint: The provided form 'org/proj/repo' is specific to Gitlab projects
|
||
|
|
[1]
|
||
|
|
|
||
|
|
Test codeberg forge.
|
||
|
|
|
||
|
|
$ sed -i -e '4s|.*|(source (codeberg org/proj/repo))|' dune-project
|
||
|
|
$ dune build
|
||
|
|
File "dune-project", line 4, characters 18-31:
|
||
|
|
4 | (source (codeberg org/proj/repo))
|
||
|
|
^^^^^^^^^^^^^
|
||
|
|
Error: Codeberg repository must be of form user/repo
|
||
|
|
Hint: The provided form 'org/proj/repo' is specific to Gitlab projects
|
||
|
|
[1]
|
||
|
|
|
||
|
|
So far we have been using '(lang dune 3.17)' which supports gitlab organization
|
||
|
|
style syntax, we will bump the version down and check to make sure an error is
|
||
|
|
thrown telling us we need a more recent version of dune to use orginaziton
|
||
|
|
syntax.
|
||
|
|
|
||
|
|
$ sed -i -e '1s|.*|(lang dune 3.16)|' dune-project
|
||
|
|
$ sed -i -e '4s|.*|(source (gitlab org/proj/repo))|' dune-project
|
||
|
|
$ dune build
|
||
|
|
File "dune-project", line 4, characters 8-30:
|
||
|
|
4 | (source (gitlab org/proj/repo))
|
||
|
|
^^^^^^^^^^^^^^^^^^^^^^
|
||
|
|
Error: Gitlab organization repo is only available since version 3.17 of the
|
||
|
|
dune language. Please update your dune-project file to have (lang dune 3.17).
|
||
|
|
[1]
|
||
|
|
|
||
|
|
With the version bumped down we will also check to make sure that the user/repo
|
||
|
|
style gitlab stanza still works without any error.
|
||
|
|
|
||
|
|
$ sed -i -e '4s|.*|(source (gitlab user/repo))|' dune-project
|
||
|
|
$ dune build
|