f5adbc0c900c7c5db642a75278e7511808faf146Lubos Kosco/*
f5adbc0c900c7c5db642a75278e7511808faf146Lubos Kosco * CDDL HEADER START
f5adbc0c900c7c5db642a75278e7511808faf146Lubos Kosco *
f5adbc0c900c7c5db642a75278e7511808faf146Lubos Kosco * The contents of this file are subject to the terms of the
f5adbc0c900c7c5db642a75278e7511808faf146Lubos Kosco * Common Development and Distribution License (the "License").
f5adbc0c900c7c5db642a75278e7511808faf146Lubos Kosco * You may not use this file except in compliance with the License.
f5adbc0c900c7c5db642a75278e7511808faf146Lubos Kosco *
f5adbc0c900c7c5db642a75278e7511808faf146Lubos Kosco * See LICENSE.txt included in this distribution for the specific
f5adbc0c900c7c5db642a75278e7511808faf146Lubos Kosco * language governing permissions and limitations under the License.
f5adbc0c900c7c5db642a75278e7511808faf146Lubos Kosco *
f5adbc0c900c7c5db642a75278e7511808faf146Lubos Kosco * When distributing Covered Code, include this CDDL HEADER in each
f5adbc0c900c7c5db642a75278e7511808faf146Lubos Kosco * file and include the License file at LICENSE.txt.
f5adbc0c900c7c5db642a75278e7511808faf146Lubos Kosco * If applicable, add the following below this CDDL HEADER, with the
f5adbc0c900c7c5db642a75278e7511808faf146Lubos Kosco * fields enclosed by brackets "[]" replaced with your own identifying
f5adbc0c900c7c5db642a75278e7511808faf146Lubos Kosco * information: Portions Copyright [yyyy] [name of copyright owner]
f5adbc0c900c7c5db642a75278e7511808faf146Lubos Kosco *
f5adbc0c900c7c5db642a75278e7511808faf146Lubos Kosco * CDDL HEADER END
f5adbc0c900c7c5db642a75278e7511808faf146Lubos Kosco */
f5adbc0c900c7c5db642a75278e7511808faf146Lubos Kosco
f5adbc0c900c7c5db642a75278e7511808faf146Lubos Kosco /*
f5adbc0c900c7c5db642a75278e7511808faf146Lubos Kosco * Copyright (c) 2016, Oracle and/or its affiliates. All rights reserved.
f5adbc0c900c7c5db642a75278e7511808faf146Lubos Kosco */
d622a041594a53bdca784d41ee6af964cca3a17bFarid Zakariapackage org.opensolaris.opengrok.condition;
d622a041594a53bdca784d41ee6af964cca3a17bFarid Zakaria
d622a041594a53bdca784d41ee6af964cca3a17bFarid Zakariaimport org.opensolaris.opengrok.history.BazaarRepository;
d622a041594a53bdca784d41ee6af964cca3a17bFarid Zakariaimport org.opensolaris.opengrok.history.CVSRepository;
d622a041594a53bdca784d41ee6af964cca3a17bFarid Zakariaimport org.opensolaris.opengrok.history.GitRepository;
d622a041594a53bdca784d41ee6af964cca3a17bFarid Zakariaimport org.opensolaris.opengrok.history.MercurialRepository;
d622a041594a53bdca784d41ee6af964cca3a17bFarid Zakariaimport org.opensolaris.opengrok.history.PerforceRepository;
d622a041594a53bdca784d41ee6af964cca3a17bFarid Zakariaimport org.opensolaris.opengrok.history.Repository;
c299ab30469f021ec01d54bb058b300e3f5051a7Farid Zakariaimport org.opensolaris.opengrok.history.SubversionRepository;
d622a041594a53bdca784d41ee6af964cca3a17bFarid Zakaria
d622a041594a53bdca784d41ee6af964cca3a17bFarid Zakaria/**
d622a041594a53bdca784d41ee6af964cca3a17bFarid Zakaria * A template {@link org.opensolaris.opengrok.condition.RunCondition} that will disable certain tests
d622a041594a53bdca784d41ee6af964cca3a17bFarid Zakaria * if the repository is not working - generally means not available through the CLI.
d622a041594a53bdca784d41ee6af964cca3a17bFarid Zakaria *
d622a041594a53bdca784d41ee6af964cca3a17bFarid Zakaria * Each run condition can be forced on with the system property <b>junit-force-{name}=true</b> or <b>junit-force-all=true</b>
d622a041594a53bdca784d41ee6af964cca3a17bFarid Zakaria */
d622a041594a53bdca784d41ee6af964cca3a17bFarid Zakariapublic abstract class RepositoryInstalled implements RunCondition {
d622a041594a53bdca784d41ee6af964cca3a17bFarid Zakaria
d622a041594a53bdca784d41ee6af964cca3a17bFarid Zakaria static final String FORCE_ALL_PROPERTY = "junit-force-all";
d622a041594a53bdca784d41ee6af964cca3a17bFarid Zakaria
d622a041594a53bdca784d41ee6af964cca3a17bFarid Zakaria private final String name;
d622a041594a53bdca784d41ee6af964cca3a17bFarid Zakaria private final Repository repository;
d622a041594a53bdca784d41ee6af964cca3a17bFarid Zakaria
d622a041594a53bdca784d41ee6af964cca3a17bFarid Zakaria public RepositoryInstalled(String name, Repository repository) {
d622a041594a53bdca784d41ee6af964cca3a17bFarid Zakaria this.name = name;
d622a041594a53bdca784d41ee6af964cca3a17bFarid Zakaria this.repository = repository;
d622a041594a53bdca784d41ee6af964cca3a17bFarid Zakaria }
d622a041594a53bdca784d41ee6af964cca3a17bFarid Zakaria
d622a041594a53bdca784d41ee6af964cca3a17bFarid Zakaria @Override
d622a041594a53bdca784d41ee6af964cca3a17bFarid Zakaria public boolean isSatisfied() {
d622a041594a53bdca784d41ee6af964cca3a17bFarid Zakaria if (Boolean.getBoolean(FORCE_ALL_PROPERTY)) {
d622a041594a53bdca784d41ee6af964cca3a17bFarid Zakaria return true;
d622a041594a53bdca784d41ee6af964cca3a17bFarid Zakaria }
d622a041594a53bdca784d41ee6af964cca3a17bFarid Zakaria if (Boolean.getBoolean(forceSystemProperty())) {
d622a041594a53bdca784d41ee6af964cca3a17bFarid Zakaria return true;
d622a041594a53bdca784d41ee6af964cca3a17bFarid Zakaria }
d622a041594a53bdca784d41ee6af964cca3a17bFarid Zakaria return repository.isWorking();
d622a041594a53bdca784d41ee6af964cca3a17bFarid Zakaria }
d622a041594a53bdca784d41ee6af964cca3a17bFarid Zakaria
d622a041594a53bdca784d41ee6af964cca3a17bFarid Zakaria private String forceSystemProperty() {
d622a041594a53bdca784d41ee6af964cca3a17bFarid Zakaria return String.format("junit-force-%s", name);
d622a041594a53bdca784d41ee6af964cca3a17bFarid Zakaria }
d622a041594a53bdca784d41ee6af964cca3a17bFarid Zakaria
d622a041594a53bdca784d41ee6af964cca3a17bFarid Zakaria public static class MercurialInstalled extends RepositoryInstalled {
d622a041594a53bdca784d41ee6af964cca3a17bFarid Zakaria public MercurialInstalled() {
d622a041594a53bdca784d41ee6af964cca3a17bFarid Zakaria super("mercurial", new MercurialRepository());
d622a041594a53bdca784d41ee6af964cca3a17bFarid Zakaria }
d622a041594a53bdca784d41ee6af964cca3a17bFarid Zakaria }
d622a041594a53bdca784d41ee6af964cca3a17bFarid Zakaria
d622a041594a53bdca784d41ee6af964cca3a17bFarid Zakaria public static class GitInstalled extends RepositoryInstalled {
d622a041594a53bdca784d41ee6af964cca3a17bFarid Zakaria public GitInstalled() {
d622a041594a53bdca784d41ee6af964cca3a17bFarid Zakaria super("git", new GitRepository());
d622a041594a53bdca784d41ee6af964cca3a17bFarid Zakaria }
d622a041594a53bdca784d41ee6af964cca3a17bFarid Zakaria }
d622a041594a53bdca784d41ee6af964cca3a17bFarid Zakaria
d622a041594a53bdca784d41ee6af964cca3a17bFarid Zakaria public static class BazaarInstalled extends RepositoryInstalled {
d622a041594a53bdca784d41ee6af964cca3a17bFarid Zakaria public BazaarInstalled() {
d622a041594a53bdca784d41ee6af964cca3a17bFarid Zakaria super("bazaar", new BazaarRepository());
d622a041594a53bdca784d41ee6af964cca3a17bFarid Zakaria }
d622a041594a53bdca784d41ee6af964cca3a17bFarid Zakaria }
d622a041594a53bdca784d41ee6af964cca3a17bFarid Zakaria
d622a041594a53bdca784d41ee6af964cca3a17bFarid Zakaria public static class CvsInstalled extends RepositoryInstalled {
d622a041594a53bdca784d41ee6af964cca3a17bFarid Zakaria public CvsInstalled() {
d622a041594a53bdca784d41ee6af964cca3a17bFarid Zakaria super("cvs", new CVSRepository());
d622a041594a53bdca784d41ee6af964cca3a17bFarid Zakaria }
d622a041594a53bdca784d41ee6af964cca3a17bFarid Zakaria }
d622a041594a53bdca784d41ee6af964cca3a17bFarid Zakaria
d622a041594a53bdca784d41ee6af964cca3a17bFarid Zakaria public static class PerforceInstalled extends RepositoryInstalled {
d622a041594a53bdca784d41ee6af964cca3a17bFarid Zakaria public PerforceInstalled() {
d622a041594a53bdca784d41ee6af964cca3a17bFarid Zakaria super("perforce", new PerforceRepository());
d622a041594a53bdca784d41ee6af964cca3a17bFarid Zakaria }
d622a041594a53bdca784d41ee6af964cca3a17bFarid Zakaria }
d622a041594a53bdca784d41ee6af964cca3a17bFarid Zakaria
c299ab30469f021ec01d54bb058b300e3f5051a7Farid Zakaria public static class SubvsersionInstalled extends RepositoryInstalled {
c299ab30469f021ec01d54bb058b300e3f5051a7Farid Zakaria public SubvsersionInstalled() {
c299ab30469f021ec01d54bb058b300e3f5051a7Farid Zakaria super("svn", new SubversionRepository());
c299ab30469f021ec01d54bb058b300e3f5051a7Farid Zakaria }
c299ab30469f021ec01d54bb058b300e3f5051a7Farid Zakaria }
c299ab30469f021ec01d54bb058b300e3f5051a7Farid Zakaria
d622a041594a53bdca784d41ee6af964cca3a17bFarid Zakaria}