Merge remote-tracking branch 'asteven/master' into partition_msdos

This commit is contained in:
Steven Armstrong 2011-10-04 16:30:36 +02:00
commit 8ac691f4ac
6 changed files with 145 additions and 75 deletions

7
README
View file

@ -115,6 +115,13 @@ If you want to ensure nothing breaks you must set back the python version to wha
eselect python list eselect python list
eselect python list set python3.2 eselect python list set python3.2
#### Max OS X
Ensure you have port installed and configured (http://www.macports.org/install.php).
port install python32
ln -s /opt/local/bin/python3.2 /opt/local/bin/python3
### Get cdist ### Get cdist
You can clone cdist from git, which gives you the advantage of having You can clone cdist from git, which gives you the advantage of having

View file

@ -126,6 +126,14 @@ case "$1" in
| xargs rm -f | xargs rm -f
;; ;;
test)
python3 -m unittest discover test 'test_*.py'
;;
test-all)
python3 -m unittest discover test '*.py'
;;
*) *)
echo '' echo ''
echo 'Welcome to cdist!' echo 'Welcome to cdist!'

View file

@ -55,7 +55,7 @@ if grep -q "^${name}:" "$__object/explorer/passwd"; then
current_value="$(awk -F: '{ print $ENVIRON["field"] }' < "$file")" current_value="$(awk -F: '{ print $ENVIRON["field"] }' < "$file")"
if [ "$new_value" != "$current_value" ]; then if [ "$new_value" != "$current_value" ]; then
set -- "$@" "--$property" \"$new_value\" set -- "$@" "--$property" \'$new_value\'
fi fi
done done
@ -67,7 +67,7 @@ if grep -q "^${name}:" "$__object/explorer/passwd"; then
else else
for property in $(ls .); do for property in $(ls .); do
new_value="$(cat "$property")" new_value="$(cat "$property")"
set -- "$@" "--$property" \"$new_value\" set -- "$@" "--$property" \'$new_value\'
done done
echo useradd "$@" "$name" echo useradd "$@" "$name"

45
test/nico_ui.py Executable file
View file

@ -0,0 +1,45 @@
#!/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 <http://www.gnu.org/licenses/>.
#
#
import os
import subprocess
import unittest
cdist_commands=["banner", "config", "install"]
cdist_exec_path = os.path.abspath(
os.path.join(os.path.dirname(os.path.realpath(__file__)), "../bin/cdist"))
class UI(unittest.TestCase):
def test_banner(self):
self.assertEqual(subprocess.call([cdist_exec_path, "banner"]), 0)
def test_help(self):
for cmd in cdist_commands:
self.assertEqual(subprocess.call([cdist_exec_path, cmd, "-h"]), 0)
# FIXME: mockup needed
def test_config_localhost(self):
for cmd in cdist_commands:
self.assertEqual(subprocess.call([cdist_exec_path, "config", "localhost"]), 0)

76
test.py → test/test_config.py Executable file → Normal file
View file

@ -20,71 +20,19 @@
# #
# #
import os import os
import sys import sys
import shutil
import subprocess
import tempfile import tempfile
import unittest import unittest
sys.path.insert(0, os.path.abspath( sys.path.insert(0, os.path.abspath(
os.path.join(os.path.dirname(os.path.realpath(__file__)), 'lib'))) os.path.join(os.path.dirname(os.path.realpath(__file__)), '../lib')))
import cdist.config
cdist_exec_path = os.path.abspath( cdist_exec_path = os.path.abspath(
os.path.join(os.path.dirname(os.path.realpath(__file__)), "bin/cdist")) os.path.join(os.path.dirname(os.path.realpath(__file__)), "bin/cdist"))
cdist_commands=["banner", "config", "install"]
import cdist
import cdist.config
import cdist.exec
class Exec(unittest.TestCase):
def setUp(self):
"""Create shell code and co."""
self.temp_dir = tempfile.mkdtemp()
self.shell_false = os.path.join(self.temp_dir, "shell_false")
self.shell_true = os.path.join(self.temp_dir, "shell_true")
true_fd = open(self.shell_true, "w")
true_fd.writelines(["#!/bin/sh\n", "/bin/true"])
true_fd.close()
false_fd = open(self.shell_false, "w")
false_fd.writelines(["#!/bin/sh\n", "/bin/false"])
false_fd.close()
def tearDown(self):
shutil.rmtree(self.temp_dir)
def test_local_success_shell(self):
try:
cdist.exec.shell_run_or_debug_fail(self.shell_true, [self.shell_true])
except cdist.Error:
failed = True
else:
failed = False
self.assertFalse(failed)
def test_local_fail_shell(self):
self.assertRaises(cdist.Error, cdist.exec.shell_run_or_debug_fail,
self.shell_false, [self.shell_false])
def test_local_success(self):
try:
cdist.exec.run_or_fail(["/bin/true"])
except cdist.Error:
failed = True
else:
failed = False
self.assertFalse(failed)
def test_local_fail(self):
self.assertRaises(cdist.Error, cdist.exec.run_or_fail, ["/bin/false"])
class Config(unittest.TestCase): class Config(unittest.TestCase):
def setUp(self): def setUp(self):
@ -142,9 +90,7 @@ class Config(unittest.TestCase):
manifest_fd.close() manifest_fd.close()
try: try:
print("a")
self.config.run_initial_manifest() self.config.run_initial_manifest()
print("b")
except cdist.Error: except cdist.Error:
failed = True failed = True
else: else:
@ -153,19 +99,3 @@ class Config(unittest.TestCase):
self.assertFalse(failed) self.assertFalse(failed)
class UI(unittest.TestCase):
def test_banner(self):
self.assertEqual(subprocess.call([cdist_exec_path, "banner"]), 0)
def test_help(self):
for cmd in cdist_commands:
self.assertEqual(subprocess.call([cdist_exec_path, cmd, "-h"]), 0)
# FIXME: mockup needed
def test_config_localhost(self):
for cmd in cdist_commands:
self.assertEqual(subprocess.call([cdist_exec_path, "config", "localhost"]), 0)
if __name__ == '__main__':
unittest.main()

80
test/test_exec.py Executable file
View file

@ -0,0 +1,80 @@
#!/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 <http://www.gnu.org/licenses/>.
#
#
import os
import sys
import shutil
import subprocess
import tempfile
import unittest
sys.path.insert(0, os.path.abspath(
os.path.join(os.path.dirname(os.path.realpath(__file__)), '../lib')))
import cdist.exec
class Exec(unittest.TestCase):
def setUp(self):
"""Create shell code and co."""
self.temp_dir = tempfile.mkdtemp()
self.shell_false = os.path.join(self.temp_dir, "shell_false")
self.shell_true = os.path.join(self.temp_dir, "shell_true")
true_fd = open(self.shell_true, "w")
true_fd.writelines(["#!/bin/sh\n", "/bin/true"])
true_fd.close()
false_fd = open(self.shell_false, "w")
false_fd.writelines(["#!/bin/sh\n", "/bin/false"])
false_fd.close()
def tearDown(self):
shutil.rmtree(self.temp_dir)
def test_local_success_shell(self):
try:
cdist.exec.shell_run_or_debug_fail(self.shell_true, [self.shell_true])
except cdist.Error:
failed = True
else:
failed = False
self.assertFalse(failed)
def test_local_fail_shell(self):
self.assertRaises(cdist.Error, cdist.exec.shell_run_or_debug_fail,
self.shell_false, [self.shell_false])
def test_local_success(self):
try:
cdist.exec.run_or_fail(["/bin/true"])
except cdist.Error:
failed = True
else:
failed = False
self.assertFalse(failed)
def test_local_fail(self):
self.assertRaises(cdist.Error, cdist.exec.run_or_fail, ["/bin/false"])