From 6c22867fc253096f8134960fbb0b4c68f05dd44b Mon Sep 17 00:00:00 2001 From: Nico Schottelius Date: Tue, 4 Oct 2011 16:32:43 +0200 Subject: [PATCH] begin to test path and add method to check type Signed-off-by: Nico Schottelius --- lib/cdist/path.py | 6 +++ lib/cdist/test/test_install.py | 16 ++++++++ lib/cdist/test/test_path.py | 71 ++++++++++++++++++++++++++++++++++ 3 files changed, 93 insertions(+) create mode 100644 lib/cdist/test/test_path.py diff --git a/lib/cdist/path.py b/lib/cdist/path.py index e416c42d..2dd9dcf1 100644 --- a/lib/cdist/path.py +++ b/lib/cdist/path.py @@ -175,8 +175,14 @@ class Path: return list def list_types(self): + """Retuns list of types""" return os.listdir(self.type_base_dir) + def is_install_type(self, type): + """Check whether a type is used for installation (if not: for configuration)""" + marker = os.path.join(self.type_dir(type), "install") + return os.path.isfile(marker) + def list_object_paths(self, starting_point): """Return list of paths of existing objects""" object_paths = [] diff --git a/lib/cdist/test/test_install.py b/lib/cdist/test/test_install.py index 3289ea47..9cfae066 100644 --- a/lib/cdist/test/test_install.py +++ b/lib/cdist/test/test_install.py @@ -54,6 +54,22 @@ class Install(unittest.TestCase): output = self.config.path.global_explorer_output_path(explorer) self.assertTrue(os.path.isfile(output)) + def test_manifest_uses_install_types_only(self): + """Check that objects created from manifest are only of install type""" + manifest_fd = open(self.init_manifest, "w") + manifest_fd.writelines(["#!/bin/sh\n", + "__file " + self.temp_dir + " --mode 0700\n", + "__partition_msdos /dev/null --type 82\n", + ]) + manifest_fd.close() + + self.config.run_initial_manifest() + + # FIXME: check that only __partition_msdos objects are created! + + self.assertFalse(failed) + + ### OLD FROM CONFIG ############################################################ def test_initial_manifest_different_parameter(self): manifest_fd = open(self.init_manifest, "w") diff --git a/lib/cdist/test/test_path.py b/lib/cdist/test/test_path.py new file mode 100644 index 00000000..04a107b8 --- /dev/null +++ b/lib/cdist/test/test_path.py @@ -0,0 +1,71 @@ +#!/usr/bin/env python3 +# -*- coding: utf-8 -*- +# +# 2011 Nico Schottelius (nico-cdist at schottelius.org) +# +# This file is part of cdist. +# +# cdist is free software: you can redistribute it and/or modify +# it under the terms of the GNU General Public License as published by +# the Free Software Foundation, either version 3 of the License, or +# (at your option) any later version. +# +# cdist is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with cdist. If not, see . +# +# + +import os +import sys +import tempfile +import unittest + +import cdist.path +import cdist.test + +class Path(unittest.TestCase): + def setUp(self): + self.temp_dir = tempfile.mkdtemp() + self.init_manifest = os.path.join(self.temp_dir, "manifest") + self.path = cdist.config.Path("localhost", "root", + "ssh root@localhost", + initial_manifest=self.init_manifest, + base_dir=self.temp_dir) + + def tearDown(self): + self.path.cleanup() + + def test_type_detection(self): + """Check that a type is identified as install or configuration correctly""" + + # Create install type + install_type = os.path.join( + os.mkdir( + # Create non-install type + + self.config.run_global_explores() + explorers = self.config.path.list_global_explorers() + + for explorer in explorers: + output = self.config.path.global_explorer_output_path(explorer) + self.assertTrue(os.path.isfile(output)) + + def test_manifest_uses_install_types_only(self): + """Check that objects created from manifest are only of install type""" + manifest_fd = open(self.init_manifest, "w") + manifest_fd.writelines(["#!/bin/sh\n", + "__file " + self.temp_dir + " --mode 0700\n", + "__partition_msdos /dev/null --type 82\n", + ]) + manifest_fd.close() + + self.config.run_initial_manifest() + + # FIXME: check that only __partition_msdos objects are created! + + self.assertFalse(failed)