123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144 |
- """
- TEST: test_addons_modules.py
- AUTHOR(S): Vaclav Petras <wenzeslaus gmail com>
- PURPOSE: Test for g.extension individual modules/extensions handling
- COPYRIGHT: (C) 2015 Vaclav Petras, and by the GRASS Development Team
- This program is free software under the GNU General Public
- License (>=v2). Read the file COPYING that comes with GRASS
- for details.
- """
- from grass.gunittest.case import TestCase
- from grass.gunittest.main import test
- from grass.gunittest.gmodules import SimpleModule
- from grass.gunittest.utils import silent_rmtree
- from grass.script.utils import decode
- import os
- MODULES_OUTPUT = """\
- d.frame
- d.mon2
- g.copyall
- g.isis3mt
- g.proj.all
- r.gdd
- r.geomorphon
- r.le.patch
- r.le.pixel
- r.traveltime
- r.univar2
- v.civil
- v.class.ml
- v.class.mlpy
- v.colors2
- v.delaunay3d
- v.ellipse
- v.in.proj
- v.in.redwg
- v.neighborhoodmatrix
- v.transects
- wx.metadata
- """.replace(
- "\n", os.linesep
- )
- class TestModulesMetadata(TestCase):
- url = "file://" + os.path.abspath("data")
- def test_listing(self):
- """List individual extensions/modules/addons"""
- module = SimpleModule("g.extension", flags="l", url=self.url)
- self.assertModule(module)
- stdout = decode(module.outputs.stdout)
- self.assertMultiLineEqual(stdout, MODULES_OUTPUT)
- class TestModulesFromDifferentSources(TestCase):
- url = "file://" + os.path.abspath("data/sample_modules")
- path = os.path.join("data", "sample_modules")
- install_prefix = "gextension_test_install_path"
- # TODO: this is wrong for MS Win
- files = [
- os.path.join(install_prefix, "scripts", "r.plus.example"),
- os.path.join(install_prefix, "docs", "html", "r.plus.example.html"),
- ]
- # to create archives from the source, the following was used:
- # zip r.plus.example.zip r.plus.example/*
- # tar czvf r.plus.example.tar.gz r.plus.example
- # cd r.plus.example/
- # tar czvf ../r.plus.example_sep.tar.gz *
- def setUp(self):
- """Make sure we are not dealing with some old files"""
- if os.path.exists(self.install_prefix):
- files = os.listdir(self.install_prefix)
- if files:
- RuntimeError(
- "Install prefix path '{}' contains files {}".format(
- self.install_prefix, files
- )
- )
- def tearDown(self):
- """Remove created files"""
- silent_rmtree(self.install_prefix)
- def test_directory_install(self):
- """Test installing extension from directory"""
- self.assertModule(
- "g.extension",
- extension="r.plus.example",
- url=os.path.join(self.path, "r.plus.example"),
- prefix=self.install_prefix,
- )
- # TODO: this is wrong for MS Win
- for file in self.files:
- self.assertFileExists(file)
- def test_targz_install(self):
- """Test installing extension from local .tar.gz"""
- self.assertModule(
- "g.extension",
- extension="r.plus.example",
- url=os.path.join(self.path, "r.plus.example.tar.gz"),
- prefix=self.install_prefix,
- )
- for file in self.files:
- self.assertFileExists(file)
- def test_remote_targz_without_dir_install(self):
- """Test installing extension from (remote) .tar.gz without main dir"""
- self.assertModule(
- "g.extension",
- extension="r.plus.example",
- url=self.url + "/" + "r.plus.example_sep.tar.gz",
- prefix=self.install_prefix,
- verbose=True,
- )
- for file in self.files:
- self.assertFileExists(file)
- def test_remote_zip_install(self):
- """Test installing extension from .zip specified by URL (local)"""
- self.assertModule(
- "g.extension",
- extension="r.plus.example",
- url=self.url + "/" + "r.plus.example.zip",
- prefix=self.install_prefix,
- )
- for file in self.files:
- self.assertFileExists(os.path.join(file))
- if __name__ == "__main__":
- test()
|