104 lines
3.3 KiB
C#
104 lines
3.3 KiB
C#
|
using System;
|
||
|
using System.IO;
|
||
|
using System.Linq;
|
||
|
using repomgr;
|
||
|
using Xunit;
|
||
|
|
||
|
namespace tests
|
||
|
{
|
||
|
public class RepomgrTest
|
||
|
{
|
||
|
private static RepoMgr Init(string folder)
|
||
|
{
|
||
|
var repo = new RepoMgr(folder);
|
||
|
repo.Init(Path.Combine(folder, "repo"), "xunit");
|
||
|
return repo;
|
||
|
}
|
||
|
|
||
|
private static void Add(RepoMgr repo, string package)
|
||
|
{
|
||
|
repo.ReadIndex();
|
||
|
repo.Add(package);
|
||
|
Assert.Contains(repo._repo.Packages, p => p.Name == package);
|
||
|
Assert.Contains(package, File.ReadAllText(Path.Combine(repo._buildpath, "repomgr.index.json")));
|
||
|
}
|
||
|
|
||
|
private static void Build(RepoMgr repo, string package)
|
||
|
{
|
||
|
repo.ReadIndex();
|
||
|
repo.Build(package);
|
||
|
}
|
||
|
|
||
|
private static void Remove(RepoMgr repo, string package)
|
||
|
{
|
||
|
repo.ReadIndex();
|
||
|
repo.Remove(package);
|
||
|
}
|
||
|
|
||
|
private static string GetTestFolder()
|
||
|
{
|
||
|
return "xunit-" + Guid.NewGuid();
|
||
|
}
|
||
|
|
||
|
[Fact]
|
||
|
public void TestInit()
|
||
|
{
|
||
|
var folder = GetTestFolder();
|
||
|
Init(folder);
|
||
|
Assert.True(Directory.Exists(Path.Combine(folder, "repo")));
|
||
|
Assert.True(File.Exists(Path.Combine(folder, "repomgr.index.json")));
|
||
|
Directory.Delete(folder, true);
|
||
|
}
|
||
|
|
||
|
[Theory]
|
||
|
[InlineData("adduser")]
|
||
|
[InlineData("yay")]
|
||
|
[InlineData("goimports-git")]
|
||
|
public void TestAdd(string package)
|
||
|
{
|
||
|
var folder = GetTestFolder();
|
||
|
var repo = Init(folder);
|
||
|
Add(repo, package);
|
||
|
Assert.True(File.Exists(Path.Combine(folder, "pkg", package, "PKGBUILD")));
|
||
|
var pkg = repo._repo.Packages.FirstOrDefault(p => p.Name.Equals(package));
|
||
|
Assert.NotNull(pkg);
|
||
|
Assert.Equal("never-updated", pkg.CurrentVersion);
|
||
|
Assert.Equal("nA", pkg.RepoVersion);
|
||
|
Assert.Empty(pkg.PkgFiles);
|
||
|
Assert.True(pkg.LastBuildSucceeded);
|
||
|
Directory.Delete(folder, true);
|
||
|
}
|
||
|
|
||
|
[Theory]
|
||
|
[InlineData("adduser")]
|
||
|
[InlineData("yay")]
|
||
|
[InlineData("goimports-git")]
|
||
|
public void TestBuild(string package)
|
||
|
{
|
||
|
var folder = GetTestFolder();
|
||
|
var repo = Init(folder);
|
||
|
Add(repo, package);
|
||
|
Build(repo, package);
|
||
|
Assert.True(Directory.Exists(Path.Combine(folder, "pkg", package)));
|
||
|
Assert.True(File.Exists(Path.Combine(folder, "repo", "xunit.db.tar.gz")));
|
||
|
Directory.Delete(folder, true);
|
||
|
}
|
||
|
|
||
|
[Theory]
|
||
|
[InlineData("adduser")]
|
||
|
[InlineData("yay")]
|
||
|
[InlineData("goimports-git")]
|
||
|
public void TestRemove(string package)
|
||
|
{
|
||
|
var folder = GetTestFolder();
|
||
|
var repo = Init(folder);
|
||
|
Add(repo, package);
|
||
|
Build(repo, package);
|
||
|
Remove(repo, package);
|
||
|
Assert.False(File.Exists(Path.Combine(folder, "pkg", package, "PKGBUILD")));
|
||
|
var pkg = repo._repo.Packages.FirstOrDefault(p => p.Name.Equals(package));
|
||
|
Assert.Null(pkg);
|
||
|
Directory.Delete(folder, true);
|
||
|
}
|
||
|
}
|
||
|
}
|