[test] add unit tests for ruleset
We extract the rules building logic from readfile into a Ruleset.buildrules()
method to ease testing.
#!/usr/bin/env make -f
PREFIX=/usr/local/share
LIBDIR=$(PREFIX)/mercurial-server
DOCDIR=$(PREFIX)/doc/mercurial-server
ETCDIR=/etc/mercurial-server
NEWUSER=hg
DOCBOOK_XSL?=/usr/share/xml/docbook/stylesheet/nwalsh
INSTALL=install
build: build/html/index.html pythonbuild
setup-adduser: installfiles adduser inituser
# WARNING: this is experimental
setup-useradd: installfiles useradd inituser
# WARNING: this is experimental
setup-windows: installfiles adduser-windows
installetc:
$(INSTALL) -d $(DESTDIR)$(ETCDIR)
$(INSTALL) -m 644 -t $(DESTDIR)$(ETCDIR) \
src/init/conf/access.conf
$(INSTALL) -d $(DESTDIR)$(ETCDIR)/remote-hgrc.d
$(INSTALL) -m 644 -t $(DESTDIR)$(ETCDIR)/remote-hgrc.d \
src/init/conf/remote-hgrc.d/access.rc \
src/init/conf/remote-hgrc.d/logging.rc
$(INSTALL) -d $(DESTDIR)$(ETCDIR)/keys/root
$(INSTALL) -d $(DESTDIR)$(ETCDIR)/keys/users
installdoc: build/html/index.html
$(INSTALL) -d $(DESTDIR)$(DOCDIR)
$(INSTALL) -m 644 -t $(DESTDIR)$(DOCDIR) README
$(INSTALL) -d $(DESTDIR)$(DOCDIR)/html
$(INSTALL) -m 644 -t $(DESTDIR)$(DOCDIR)/html build/html/index.html
build/html/index.html: doc/manual.docbook
xsltproc --nonet -o $@ $(DOCBOOK_XSL)/html/docbook.xsl $^
build/pdf/manual.pdf: doc/manual.docbook
mkdir -p build/pdf
fop -xml $^ -xsl $(DOCBOOK_XSL)/fo/docbook.xsl $@
pythonbuild:
python setup.py build
pythoninstall:
python setup.py install \
--install-purelib=$(DESTDIR)$(LIBDIR) \
--install-platlib=$(DESTDIR)$(LIBDIR) \
--install-scripts=$(DESTDIR)$(LIBDIR) \
--install-data=$(DESTDIR)$(LIBDIR)
installfiles: installetc installdoc pythoninstall
adduser:
adduser --system --shell /bin/sh --group --disabled-password \
--home /var/lib/mercurial-server \
--gecos "Mercurial repositories" $(NEWUSER)
# WARNING: this is experimental
useradd:
useradd --system --shell /bin/sh \
--home /var/lib/mercurial-server --create-home \
--comment "Mercurial repositories" $(NEWUSER)
# WARNING: this is experimental
adduser-windows:
net user $(NEWUSER) /add
inituser:
su -l -c "$(DESTDIR)$(LIBDIR)/init/hginit $(DESTDIR)$(LIBDIR)" $(NEWUSER)
# WARNING: this is experimental
inituser-windows:
mkdir /home/$(NEWUSER)
chown $(NEWUSER) /home/$(NEWUSER)
chmod 755 $(DESTDIR)$(LIBDIR)/init/*
ssh $(NEWUSER)@localhost "sh $(DESTDIR)$(LIBDIR)/init/hginit $(DESTDIR)$(LIBDIR)"