From d30b122c6f5a73afbc46f3b5ea552fa3c974ec24 Mon Sep 17 00:00:00 2001 From: Laura Date: Fri, 5 Jul 2019 23:12:11 +0200 Subject: [PATCH] Add unit tests --- .gitlab-ci.yml | 7 ++- Pages/Index.cshtml.cs | 1 + Program.cs | 1 - Properties/launchSettings.json | 4 +- RepoMgr.cs | 2 +- appsettings.Development.json | 6 +- appsettings.json | 4 +- repomgr.csproj | 26 +++++++++ repomgr.sln | 7 +++ tests/repomgr_test.cs | 104 +++++++++++++++++++++++++++++++++ tests/tests.csproj | 19 ++++++ 11 files changed, 171 insertions(+), 10 deletions(-) create mode 100644 tests/repomgr_test.cs create mode 100644 tests/tests.csproj diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml index 0d069ba..4535ab4 100644 --- a/.gitlab-ci.yml +++ b/.gitlab-ci.yml @@ -3,12 +3,15 @@ job_build_dotnet: stage: build - image: microsoft/dotnet:latest + image: archlinux/base:latest variables: GIT_SUBMODULE_STRATEGY: recursive script: + - pacman -Syu --needed dotnet-sdk sudo base-devel --noconfirm + - 'useradd xunit && echo "xunit ALL=(ALL) NOPASSWD: ALL" >> /etc/sudoers && mkdir /home/xunit && chown -R xunit:xunit /home/xunit' + - sudo -u xunit dotnet test tests/ - dotnet tool install --global dotnet-warp --version 1.0.9 - - PATH="$PATH:/root/.dotnet/tools" dotnet warp -r linux-x64 --verbose + - PATH="$PATH:/root/.dotnet/tools" dotnet warp -r linux-x64 --verbose repomgr.csproj artifacts: paths: - repomgr \ No newline at end of file diff --git a/Pages/Index.cshtml.cs b/Pages/Index.cshtml.cs index 712baa6..0910416 100644 --- a/Pages/Index.cshtml.cs +++ b/Pages/Index.cshtml.cs @@ -11,6 +11,7 @@ namespace repomgr.Pages { public void OnGet() { + Program.Repo.ReadIndex(); } } } \ No newline at end of file diff --git a/Program.cs b/Program.cs index 06f1d7b..c3ecb2a 100644 --- a/Program.cs +++ b/Program.cs @@ -116,7 +116,6 @@ namespace repomgr private static void PrintHelp() { - //TODO: unit tests... //TODO: add/remove [...] Console.WriteLine("Usage:"); Console.WriteLine("repomgr init "); diff --git a/Properties/launchSettings.json b/Properties/launchSettings.json index 2c347ad..f77c681 100644 --- a/Properties/launchSettings.json +++ b/Properties/launchSettings.json @@ -1,4 +1,4 @@ -{ +{ "profiles": { "repomgr": { @@ -6,7 +6,7 @@ "launchBrowser": false, "applicationUrl": "http://localhost:5000", "environmentVariables": { - "ASPNETCORE_ENVIRONMENT": "Development" + "ASPNETCORE_ENVIRONMENT": "Production" }, "commandLineArgs": "/opt/repomgr daemon" } diff --git a/RepoMgr.cs b/RepoMgr.cs index 1ed4665..a742928 100644 --- a/RepoMgr.cs +++ b/RepoMgr.cs @@ -16,7 +16,7 @@ namespace repomgr _pkgpath = Path.Combine(_buildpath, "pkg"); } - private readonly string _buildpath; + public readonly string _buildpath; public readonly string _pkgpath; public Repository _repo; public void Init(string repopath, string reponame) diff --git a/appsettings.Development.json b/appsettings.Development.json index e203e94..9c53c8c 100644 --- a/appsettings.Development.json +++ b/appsettings.Development.json @@ -1,9 +1,9 @@ { "Logging": { "LogLevel": { - "Default": "Debug", - "System": "Information", - "Microsoft": "Information" + "Default": "Warning", + "System": "Warning", + "Microsoft": "Warning" } } } diff --git a/appsettings.json b/appsettings.json index def9159..f95924b 100644 --- a/appsettings.json +++ b/appsettings.json @@ -1,7 +1,9 @@ { "Logging": { "LogLevel": { - "Default": "Warning" + "Default": "Warning", + "System": "Warning", + "Microsoft": "Warning" } }, "AllowedHosts": "*" diff --git a/repomgr.csproj b/repomgr.csproj index cb248c7..4d6878e 100644 --- a/repomgr.csproj +++ b/repomgr.csproj @@ -18,4 +18,30 @@ + + + + + + + + + + + + + + + + + + + + + + + <_ContentIncludedByDefault Remove="tests\obj\project.assets.json" /> + <_ContentIncludedByDefault Remove="tests\obj\project.packagespec.json" /> + + diff --git a/repomgr.sln b/repomgr.sln index 4380556..4c2aec4 100644 --- a/repomgr.sln +++ b/repomgr.sln @@ -1,7 +1,10 @@  Microsoft Visual Studio Solution File, Format Version 12.00 +# Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "repomgr", "repomgr.csproj", "{86A2FA88-E7F3-44AD-9279-CBE5318F792F}" EndProject +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "tests", "tests\tests.csproj", "{816F57C2-E9F8-4E5F-9B11-9FF383AF61D6}" +EndProject Global GlobalSection(SolutionConfigurationPlatforms) = preSolution Debug|Any CPU = Debug|Any CPU @@ -12,5 +15,9 @@ Global {86A2FA88-E7F3-44AD-9279-CBE5318F792F}.Release|Any CPU.Build.0 = Release|Any CPU {86A2FA88-E7F3-44AD-9279-CBE5318F792F}.Debug|Any CPU.ActiveCfg = Debug|Any CPU {86A2FA88-E7F3-44AD-9279-CBE5318F792F}.Debug|Any CPU.Build.0 = Debug|Any CPU + {816F57C2-E9F8-4E5F-9B11-9FF383AF61D6}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {816F57C2-E9F8-4E5F-9B11-9FF383AF61D6}.Debug|Any CPU.Build.0 = Debug|Any CPU + {816F57C2-E9F8-4E5F-9B11-9FF383AF61D6}.Release|Any CPU.ActiveCfg = Release|Any CPU + {816F57C2-E9F8-4E5F-9B11-9FF383AF61D6}.Release|Any CPU.Build.0 = Release|Any CPU EndGlobalSection EndGlobal diff --git a/tests/repomgr_test.cs b/tests/repomgr_test.cs new file mode 100644 index 0000000..938e25c --- /dev/null +++ b/tests/repomgr_test.cs @@ -0,0 +1,104 @@ +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); + } + } +} \ No newline at end of file diff --git a/tests/tests.csproj b/tests/tests.csproj new file mode 100644 index 0000000..9115d94 --- /dev/null +++ b/tests/tests.csproj @@ -0,0 +1,19 @@ + + + + netcoreapp2.2 + + false + + + + + + + + + + + + +