diff --git a/Core/Net/NetFileCache.cs b/Core/Net/NetFileCache.cs index fba3c0a16e..0830a50639 100644 --- a/Core/Net/NetFileCache.cs +++ b/Core/Net/NetFileCache.cs @@ -153,17 +153,13 @@ public void OnCacheChanged() } // returns true if a url is already in the cache - public bool IsCached(Uri url) - { - return GetCachedFilename(url) != null; - } + public bool IsCached(Uri url) => GetCachedFilename(url) != null; // returns true if a url is already in the cache // returns the filename in the outFilename parameter public bool IsCached(Uri url, out string outFilename) { outFilename = GetCachedFilename(url); - return outFilename != null; } @@ -172,10 +168,7 @@ public bool IsCached(Uri url, out string outFilename) /// validation tests. Prefer this over IsCached when working with /// zip files. /// - public bool IsCachedZip(Uri url) - { - return GetCachedZip(url) != null; - } + public bool IsCachedZip(Uri url) => GetCachedZip(url) != null; /// /// Returns true if a file matching the given URL is cached, but makes no @@ -184,9 +177,7 @@ public bool IsCachedZip(Uri url) /// Use IsCachedZip() for a slower but more reliable method. /// public bool IsMaybeCachedZip(Uri url, DateTime? remoteTimestamp = null) - { - return GetCachedFilename(url, remoteTimestamp) != null; - } + => GetCachedFilename(url, remoteTimestamp) != null; /// > /// Returns the filename of an already cached url or null otherwise @@ -337,14 +328,12 @@ public void CheckFreeSpace(long bytesToStore) } private HashSet legacyDirs() - { - return manager?.Instances.Values + => manager?.Instances.Values .Where(ksp => ksp.Valid) .Select(ksp => ksp.DownloadCacheDir()) .Where(dir => Directory.Exists(dir)) .ToHashSet() ?? new HashSet(); - } public void EnforceSizeLimit(long bytes, Registry registry) { diff --git a/Core/Net/NetModuleCache.cs b/Core/Net/NetModuleCache.cs index 381e9e90ba..387b905a73 100644 --- a/Core/Net/NetModuleCache.cs +++ b/Core/Net/NetModuleCache.cs @@ -123,9 +123,7 @@ public string DescribeAvailability(CkanModule m) /// SHA1 hash, in all-caps hexadecimal format /// public string GetFileHashSha1(string filePath, IProgress progress, CancellationToken cancelToken = default(CancellationToken)) - { - return cache.GetFileHashSha1(filePath, progress, cancelToken); - } + => cache.GetFileHashSha1(filePath, progress, cancelToken); /// /// Calculate the SHA256 hash of a file @@ -136,9 +134,7 @@ public string DescribeAvailability(CkanModule m) /// SHA256 hash, in all-caps hexadecimal format /// public string GetFileHashSha256(string filePath, IProgress progress, CancellationToken cancelToken = default(CancellationToken)) - { - return cache.GetFileHashSha256(filePath, progress, cancelToken); - } + => cache.GetFileHashSha256(filePath, progress, cancelToken); /// /// Try to add a file to the module cache. diff --git a/Core/Registry/InstalledModule.cs b/Core/Registry/InstalledModule.cs index 4794bb86ce..feeb9e319b 100644 --- a/Core/Registry/InstalledModule.cs +++ b/Core/Registry/InstalledModule.cs @@ -89,30 +89,15 @@ public class InstalledModule // registry format compatibility. [JsonProperty] private Dictionary installed_files; - public IEnumerable Files - { - get { return installed_files.Keys; } - } - - public string identifier - { - get { return source_module.identifier; } - } - - public CkanModule Module - { - get { return source_module; } - } - - public DateTime InstallTime - { - get { return install_time; } - } + public IEnumerable Files => installed_files.Keys; + public string identifier => source_module.identifier; + public CkanModule Module => source_module; + public DateTime InstallTime => install_time; public bool AutoInstalled { - get { return auto_installed; } - set { + get => auto_installed; + set { if (Module.IsDLC) { throw new ModuleIsDLCKraken(Module); diff --git a/Core/Registry/Registry.cs b/Core/Registry/Registry.cs index 5d469f70d2..6906ef9309 100644 --- a/Core/Registry/Registry.cs +++ b/Core/Registry/Registry.cs @@ -47,14 +47,7 @@ public class Registry : IEnlistmentNotification, IRegistryQuerier [JsonProperty] public readonly SortedDictionary download_counts = new SortedDictionary(); public int? DownloadCount(string identifier) - { - int count; - if (download_counts.TryGetValue(identifier, out count)) - { - return count; - } - return null; - } + => download_counts.TryGetValue(identifier, out int count) ? (int?)count : null; public void SetDownloadCounts(SortedDictionary counts) { diff --git a/GUI/GUIUser.cs b/GUI/GUIUser.cs index 2bb7e58aff..77bb1132fa 100644 --- a/GUI/GUIUser.cs +++ b/GUI/GUIUser.cs @@ -17,10 +17,8 @@ public GUIUser(Main main, Wait wait) /// /// A GUIUser is obviously not headless. Returns false. /// - public bool Headless - { - get { return false; } - } + public bool Headless => false; + /// /// Shows a small form with the question. @@ -29,9 +27,7 @@ public bool Headless /// true if user pressed yes, false if no. /// Question. public bool RaiseYesNoDialog(string question) - { - return main.YesNoDialog(question); - } + => main.YesNoDialog(question); /// /// Will show a small form with the message and a list to choose from. @@ -40,9 +36,7 @@ public bool RaiseYesNoDialog(string question) /// Message. /// Array of offered options. public int RaiseSelectionDialog(string message, params object[] args) - { - return main.SelectionDialog(message, args); - } + => main.SelectionDialog(message, args); /// /// Shows a message box containing the formatted error message. diff --git a/Tests/Core/Cache.cs b/Tests/Core/Cache.cs index 9e5fa06cf2..09d42a4a2f 100644 --- a/Tests/Core/Cache.cs +++ b/Tests/Core/Cache.cs @@ -2,8 +2,10 @@ using System.IO; using System.Threading; using System.Globalization; + using NUnit.Framework; using Tests.Data; + using CKAN; namespace Tests.Core diff --git a/bin/ckan-merge-pr.py b/bin/ckan-merge-pr.py index 7c0e93adf6..8a6b27c787 100755 --- a/bin/ckan-merge-pr.py +++ b/bin/ckan-merge-pr.py @@ -14,19 +14,23 @@ class CkanRepo(Repo): - def remote_master(self) -> RemoteReference: - return self.heads.master.tracking_branch() + def remote_primary(self) -> RemoteReference: + return next(filter(lambda ref: 'HEAD' in ref.name, self.refs)) - def master_remote(self) -> Remote: - return self.remotes[self.remote_master().remote_name] + def primary_name(self) -> str: + full = self.remote_primary().ref.name + return full[full.index('/')+1:] - def on_master(self) -> bool: - return not self.head.is_detached and self.head.ref.name == 'master' + def primary_remote(self) -> Remote: + return self.remotes[self.remote_primary().remote_name] - def master_up_to_date(self) -> bool: - print(f'Fetching {self.master_remote().name}...') - self.master_remote().fetch() - return self.heads.master.commit.hexsha == self.remote_master().commit.hexsha + def on_primary_branch(self) -> bool: + return not self.head.is_detached and self.head.ref.name == self.primary_name() + + def primary_branch_up_to_date(self) -> bool: + print(f'Fetching {self.primary_remote().name}...') + self.primary_remote().fetch() + return getattr(self.heads, self.primary_name()).commit.hexsha == self.remote_primary().commit.hexsha def changelog_path(self) -> Path: return Path(self.working_dir) / 'CHANGELOG.md' @@ -38,7 +42,7 @@ def prepend_line(self, path: Path, new_line: str) -> None: changelog.writelines(lines) def user_edit_file(self, path: Path) -> None: - editor=self.config_reader().get('core', 'editor') + editor = self.config_reader().get('core', 'editor') run([editor, str(path)]) class CkanPullRequest: @@ -86,11 +90,11 @@ def merge_into(self, repo: CkanRepo, self_review: bool) -> bool: if not self_review and not self.approvers(): print(f'PR #{self.pull_request.number} is not approved!') return False - if not repo.on_master(): - print(f'Not on master branch!') + if not repo.on_primary_branch(): + print('Not on primary branch!') return False - if not repo.master_up_to_date(): - print(f'master branch is not up to date!') + if not repo.primary_branch_up_to_date(): + print('Primary branch is not up to date!') return False branch = self.latest_commit(repo) if not branch: