mirror of
https://github.com/clearlinux/swupd-server.git
synced 2026-10-04 07:58:32 +00:00
Compare commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
9d4df7e035 | ||
|
|
4df4bf14c3 | ||
|
|
6affbd1ecb | ||
|
|
77a0bcd9f9 | ||
|
|
bf19e48917 | ||
|
|
d45304c8b7 | ||
|
|
2b4e9eb3c9 | ||
|
|
b6bd8bf73b | ||
|
|
94240130be | ||
|
|
ae299e2126 | ||
|
|
64e65bca92 |
+4
-2
@@ -27,7 +27,9 @@ coverage/
|
||||
src/*.gcno
|
||||
src/*.gcda
|
||||
tap-driver.sh
|
||||
test/functional/*.log
|
||||
test/functional/*.trs
|
||||
test/functional/*/*.log
|
||||
test/functional/*/*.trs
|
||||
test/functional/*/logs/
|
||||
test/functional/*/web-dir/
|
||||
swupd-*.log
|
||||
test-suite.log
|
||||
|
||||
+12
-11
@@ -15,6 +15,7 @@ swupd_create_update_SOURCES = \
|
||||
src/analyze_fs.c \
|
||||
src/chroot.c \
|
||||
src/config.c \
|
||||
src/create_update.c \
|
||||
src/delta.c \
|
||||
src/fullfiles.c \
|
||||
src/globals.c \
|
||||
@@ -22,7 +23,6 @@ swupd_create_update_SOURCES = \
|
||||
src/helpers.c \
|
||||
src/heuristics.c \
|
||||
src/log.c \
|
||||
src/main.c \
|
||||
src/manifest.c \
|
||||
src/pack.c \
|
||||
src/rename.c \
|
||||
@@ -96,26 +96,27 @@ noinst_HEADERS = \
|
||||
include/swupd.h \
|
||||
include/xattrs.h
|
||||
|
||||
TEST_EXTENSIONS = .sh
|
||||
TEST_EXTENSIONS = .bats
|
||||
|
||||
if ENABLE_TESTS
|
||||
tap_driver = env AM_TAP_AWK='$(AWK)' $(SHELL) \
|
||||
$(top_srcdir)/tap-driver.sh
|
||||
|
||||
LOG_DRIVER = $(tap_driver)
|
||||
SH_LOG_DRIVER = $(tap_driver)
|
||||
BATS_LOG_DRIVER = $(tap_driver)
|
||||
|
||||
TESTS = $(dist_check_SCRIPTS)
|
||||
|
||||
dist_check_SCRIPTS = \
|
||||
test/functional/basic.bats \
|
||||
test/functional/delete-no-version-bump.bats \
|
||||
test/functional/include-version-bump.bats \
|
||||
test/functional/update.bats \
|
||||
test/functional/fullfiles.bats \
|
||||
test/functional/pack.bats \
|
||||
test/functional/full-run.bats \
|
||||
test/functional/full-run-delta.bats
|
||||
test/functional/basic/test.bats \
|
||||
test/functional/delete-no-version-bump/test.bats \
|
||||
test/functional/include-version-bump/test.bats \
|
||||
test/functional/update/test.bats \
|
||||
test/functional/fullfiles/test.bats \
|
||||
test/functional/pack/test.bats \
|
||||
test/functional/full-run/test.bats \
|
||||
test/functional/full-run-delta/test.bats \
|
||||
test/functional/file-name-blacklisted/test.bats
|
||||
endif
|
||||
|
||||
if COVERAGE
|
||||
|
||||
+1
-1
@@ -2,7 +2,7 @@
|
||||
# Process this file with autoconf to produce a configure script.
|
||||
|
||||
AC_PREREQ([2.66])
|
||||
AC_INIT(swupd-server, 3.2.1, timothy.c.pepper@linux.intel.com)
|
||||
AC_INIT(swupd-server, 3.2.3, timothy.c.pepper@linux.intel.com)
|
||||
AM_INIT_AUTOMAKE([foreign -Wall -W subdir-objects])
|
||||
AM_SILENT_RULES([yes])
|
||||
AC_PROG_CC
|
||||
|
||||
+11
-6
@@ -286,18 +286,15 @@ static bool illegal_characters(char *filename)
|
||||
// these breaks the tar transform sed-like expression,
|
||||
// hopefully can remove this check after moving to libtar
|
||||
if (strncmp(filename, "+", 1) == 0) {
|
||||
printf("WARNING: Filename %s begins with '+'! ...skipping.\n", filename);
|
||||
return true;
|
||||
}
|
||||
if (strstr(filename, "+package+") != NULL) {
|
||||
printf("WARNING: Filename %s contains \"+package+\"! ...skipping.\n", filename);
|
||||
return true;
|
||||
}
|
||||
|
||||
for (i = 0; i < BAD_CHAR_COUNT; i++) {
|
||||
c = bad_chars[i];
|
||||
if (strchr(filename, c) != NULL) {
|
||||
printf("WARNING: Filename %s includes illegal character '%c'! ...skipping.\n", filename, c);
|
||||
return true;
|
||||
}
|
||||
}
|
||||
@@ -323,6 +320,7 @@ static void iterate_directory(struct manifest *manifest, char *pathprefix,
|
||||
|
||||
while (dir) {
|
||||
struct file *file;
|
||||
char *sub_filename;
|
||||
char *fullname;
|
||||
|
||||
entry = readdir(dir);
|
||||
@@ -331,8 +329,15 @@ static void iterate_directory(struct manifest *manifest, char *pathprefix,
|
||||
}
|
||||
|
||||
if ((strcmp(entry->d_name, ".") == 0) ||
|
||||
(strcmp(entry->d_name, "..") == 0) ||
|
||||
(illegal_characters(entry->d_name))) {
|
||||
(strcmp(entry->d_name, "..") == 0)) {
|
||||
continue;
|
||||
}
|
||||
|
||||
string_or_die(&sub_filename, "%s/%s", subpath, entry->d_name);
|
||||
|
||||
if (illegal_characters(entry->d_name)) {
|
||||
printf("WARNING: Filename %s includes illegal character(s) ...skipping.\n", sub_filename);
|
||||
free(sub_filename);
|
||||
continue;
|
||||
}
|
||||
|
||||
@@ -342,7 +347,7 @@ static void iterate_directory(struct manifest *manifest, char *pathprefix,
|
||||
}
|
||||
|
||||
file->last_change = manifest->version;
|
||||
string_or_die(&file->filename, "%s/%s", subpath, entry->d_name);
|
||||
file->filename = sub_filename;
|
||||
|
||||
string_or_die(&fullname, "%s/%s", fullpath, entry->d_name);
|
||||
populate_file_struct(file, fullname);
|
||||
|
||||
@@ -65,25 +65,5 @@ void chroot_create_full(int newversion)
|
||||
assert(ret == 0);
|
||||
free(command);
|
||||
}
|
||||
|
||||
/* and since some dumb files have things like install timestamps in
|
||||
* them, we pull files from full back to bundles so each instance
|
||||
* of the "same" file is truly identical across bundles. It may
|
||||
* make sense at some point to add more logic here for conflict
|
||||
* detection and resolution, including work to insure renames are
|
||||
* consistent across groups. */
|
||||
while (1) {
|
||||
group = next_group();
|
||||
if (!group) {
|
||||
break;
|
||||
}
|
||||
|
||||
LOG(NULL, "Recopy bundle chroot out of full", "%s", group);
|
||||
string_or_die(&command, "rsync -aAX --existing %s %s/%i/%s",
|
||||
full_dir, image_dir, newversion, group);
|
||||
ret = system(command);
|
||||
assert(ret == 0);
|
||||
free(command);
|
||||
}
|
||||
free(full_dir);
|
||||
}
|
||||
|
||||
@@ -123,6 +123,7 @@ static void create_fullfile(struct file *file)
|
||||
if (rmdir(rename_tmpdir)) {
|
||||
LOG(NULL, "rmdir failed for %s", rename_tmpdir);
|
||||
}
|
||||
free(rename_tmpdir);
|
||||
|
||||
free(tmp1);
|
||||
free(tmp2);
|
||||
|
||||
+35
-2
@@ -729,6 +729,9 @@ static int write_manifest_plain(struct manifest *manifest)
|
||||
char *conf = config_output_dir();
|
||||
char *filename = NULL;
|
||||
char *submanifest_filename = NULL;
|
||||
char *manifest_tempdir = NULL;
|
||||
char *tarcommand = NULL;
|
||||
char *tempmanifest = NULL;
|
||||
int ret = -1;
|
||||
|
||||
if (conf == NULL) {
|
||||
@@ -776,24 +779,54 @@ static int write_manifest_plain(struct manifest *manifest)
|
||||
}
|
||||
|
||||
list = g_list_first(manifest->manifests);
|
||||
string_or_die(&manifest_tempdir, "%s/XXXXXX", state_dir);
|
||||
if (!mkdtemp(manifest_tempdir)) {
|
||||
LOG(NULL, "Failed to create temporary directory %s for untarring Manifests", manifest_tempdir);
|
||||
assert(0);
|
||||
}
|
||||
|
||||
while (list) {
|
||||
file = list->data;
|
||||
list = g_list_next(list);
|
||||
|
||||
string_or_die(&submanifest_filename, "%s/%i/Manifest.%s", conf, file->last_change, file->filename);
|
||||
populate_file_struct(file, submanifest_filename);
|
||||
ret = compute_hash(file, submanifest_filename);
|
||||
|
||||
if (file->is_deleted) {
|
||||
goto write_entry;
|
||||
}
|
||||
|
||||
/* Untar the Manifest.BUNDLE.tar and calculate the hash on that,
|
||||
* otherwise we may get incorrect hashes due to owner permissions on
|
||||
* the files. */
|
||||
string_or_die(&tarcommand, TAR_COMMAND " -C %s " TAR_PERM_ATTR_ARGS " -xf %s.tar 2> /dev/null",
|
||||
manifest_tempdir, submanifest_filename);
|
||||
if (system(tarcommand) != 0) {
|
||||
LOG(NULL, "Failed to run command:", "%s", tarcommand);
|
||||
assert(0);
|
||||
}
|
||||
free(tarcommand);
|
||||
string_or_die(&tempmanifest, "%s/Manifest.%s", manifest_tempdir, file->filename);
|
||||
populate_file_struct(file, tempmanifest);
|
||||
ret = compute_hash(file, tempmanifest);
|
||||
if (ret != 0) {
|
||||
printf("Hash computation failed\n");
|
||||
assert(0);
|
||||
}
|
||||
|
||||
unlink(tempmanifest);
|
||||
free(tempmanifest);
|
||||
write_entry:
|
||||
fprintf(out, "%s\t%s\t%i\t%s\n", file_type_to_string(file), file->hash, file->last_change, file->filename);
|
||||
free(submanifest_filename);
|
||||
}
|
||||
|
||||
ret = 0;
|
||||
exit:
|
||||
if (rmdir(manifest_tempdir) != 0) {
|
||||
LOG(NULL, "rmdir failed for %s: %s", manifest_tempdir, strerror(errno));
|
||||
}
|
||||
free(manifest_tempdir);
|
||||
|
||||
if (out) {
|
||||
fclose(out);
|
||||
}
|
||||
|
||||
@@ -1,23 +1,25 @@
|
||||
#!/usr/bin/env bats
|
||||
|
||||
load "../swupdlib"
|
||||
|
||||
@test "create_update help output" {
|
||||
run $srcdir/swupd_create_update --help
|
||||
run $CREATE_UPDATE --help
|
||||
[ "$status" -eq 1 ]
|
||||
run $srcdir/swupd_create_update -h
|
||||
run $CREATE_UPDATE -h
|
||||
[ "$status" -eq 1 ]
|
||||
}
|
||||
|
||||
@test "make_fullfiles help output" {
|
||||
run $srcdir/swupd_make_fullfiles --help
|
||||
run $MAKE_FULLFILES --help
|
||||
[ "$status" -eq 1 ]
|
||||
run $srcdir/swupd_make_fullfiles -h
|
||||
run $MAKE_FULLFILES -h
|
||||
[ "$status" -eq 1 ]
|
||||
}
|
||||
|
||||
@test "make_pack help output" {
|
||||
run $srcdir/swupd_make_pack --help
|
||||
run $MAKE_PACK --help
|
||||
[ "$status" -eq 1 ]
|
||||
run $srcdir/swupd_make_pack -h
|
||||
run $MAKE_PACK -h
|
||||
[ "$status" -eq 1 ]
|
||||
}
|
||||
|
||||
+7
-11
@@ -1,11 +1,11 @@
|
||||
#!/usr/bin/env bats
|
||||
|
||||
# common functions
|
||||
load swupdlib
|
||||
load "../swupdlib"
|
||||
|
||||
setup() {
|
||||
DIR=$(init_web_dir "$srcdir/web-dir")
|
||||
export DIR
|
||||
clean_test_dir
|
||||
init_test_dir
|
||||
|
||||
init_server_ini
|
||||
set_latest_ver 0
|
||||
@@ -32,21 +32,17 @@ setup() {
|
||||
}
|
||||
|
||||
@test "delete no version bump update creation" {
|
||||
sudo $srcdir/swupd_create_update --osversion 10 --statedir $DIR --format 3
|
||||
sudo $srcdir/swupd_make_fullfiles --statedir $DIR 10
|
||||
sudo $CREATE_UPDATE --osversion 10 --statedir $DIR --format 3
|
||||
sudo $MAKE_FULLFILES --statedir $DIR 10
|
||||
|
||||
set_latest_ver 10
|
||||
|
||||
sudo $srcdir/swupd_create_update --osversion 20 --statedir $DIR --format 3
|
||||
sudo $srcdir/swupd_make_fullfiles --statedir $DIR 20
|
||||
sudo $CREATE_UPDATE --osversion 20 --statedir $DIR --format 3
|
||||
sudo $MAKE_FULLFILES --statedir $DIR 20
|
||||
|
||||
[ 1 -eq $(grep '10 /foo' $DIR/www/10/Manifest.full | wc -l) ]
|
||||
[ 1 -eq $(grep '10 /foo' $DIR/www/20/Manifest.full | wc -l) ]
|
||||
[ 0 -eq $(grep '20 /foo' $DIR/www/20/Manifest.full | wc -l) ]
|
||||
}
|
||||
|
||||
teardown() {
|
||||
sudo rm -rf $DIR
|
||||
}
|
||||
|
||||
# vi: ft=sh ts=8 sw=2 sts=2 et tw=80
|
||||
+40
@@ -0,0 +1,40 @@
|
||||
#!/usr/bin/env bats
|
||||
|
||||
# common functions
|
||||
load "../swupdlib"
|
||||
|
||||
setup() {
|
||||
clean_test_dir
|
||||
init_test_dir
|
||||
|
||||
init_server_ini
|
||||
set_latest_ver 0
|
||||
init_groups_ini os-core
|
||||
|
||||
set_os_release 10 os-core
|
||||
track_bundle 10 os-core
|
||||
|
||||
gen_file_plain 10 os-core "semicolon;"
|
||||
}
|
||||
|
||||
assert_illegal_char() {
|
||||
local output="$1"
|
||||
local str=$(echo "Filename $2 includes illegal character(s)")
|
||||
[[ "$output" =~ "$str" ]]
|
||||
}
|
||||
|
||||
assert_valid_char() {
|
||||
local output="$1"
|
||||
local str=$(echo "Filename $2 includes illegal character(s)")
|
||||
[[ ! "$output" =~ "$str" ]]
|
||||
}
|
||||
|
||||
@test "file names with blacklisted characters" {
|
||||
run sudo sh -c "$CREATE_UPDATE --osversion 10 --statedir $DIR --format 3"
|
||||
|
||||
echo "$output"
|
||||
assert_illegal_char "$output" "/semicolon;"
|
||||
assert_valid_char "$output" "/usr"
|
||||
}
|
||||
|
||||
# vi: ft=sh ts=8 sw=2 sts=2 et tw=80
|
||||
@@ -1,11 +1,11 @@
|
||||
#!/usr/bin/env bats
|
||||
|
||||
# common functions
|
||||
load swupdlib
|
||||
load "../swupdlib"
|
||||
|
||||
setup() {
|
||||
DIR=$(init_web_dir "$srcdir/web-dir")
|
||||
export DIR
|
||||
clean_test_dir
|
||||
init_test_dir
|
||||
|
||||
init_server_ini
|
||||
set_latest_ver 0
|
||||
@@ -37,22 +37,22 @@ setup() {
|
||||
|
||||
@test "full run update creation with delta packs" {
|
||||
# build the first version
|
||||
sudo $srcdir/swupd_create_update --osversion 10 --statedir $DIR --format 3
|
||||
sudo $srcdir/swupd_make_fullfiles --statedir $DIR 10
|
||||
sudo $srcdir/swupd_make_pack --statedir $DIR 0 10 os-core
|
||||
sudo $srcdir/swupd_make_pack --statedir $DIR 0 10 test-bundle
|
||||
sudo $CREATE_UPDATE --osversion 10 --statedir $DIR --format 3
|
||||
sudo $MAKE_FULLFILES --statedir $DIR 10
|
||||
sudo $MAKE_PACK --statedir $DIR 0 10 os-core
|
||||
sudo $MAKE_PACK --statedir $DIR 0 10 test-bundle
|
||||
|
||||
set_latest_ver 10
|
||||
|
||||
# then the second version...
|
||||
sudo $srcdir/swupd_create_update --osversion 20 --statedir $DIR --format 3
|
||||
sudo $srcdir/swupd_make_fullfiles --statedir $DIR 20
|
||||
sudo $srcdir/swupd_make_pack --statedir $DIR 0 20 os-core
|
||||
sudo $srcdir/swupd_make_pack --statedir $DIR 0 20 test-bundle
|
||||
sudo $CREATE_UPDATE --osversion 20 --statedir $DIR --format 3
|
||||
sudo $MAKE_FULLFILES --statedir $DIR 20
|
||||
sudo $MAKE_PACK --statedir $DIR 0 20 os-core
|
||||
sudo $MAKE_PACK --statedir $DIR 0 20 test-bundle
|
||||
|
||||
# and with delta packs this time
|
||||
sudo $srcdir/swupd_make_pack --statedir $DIR 10 20 os-core
|
||||
sudo $srcdir/swupd_make_pack --statedir $DIR 10 20 test-bundle
|
||||
sudo $MAKE_PACK --statedir $DIR 10 20 os-core
|
||||
sudo $MAKE_PACK --statedir $DIR 10 20 test-bundle
|
||||
|
||||
# zero packs should exist (non-zero size) for both versions
|
||||
[ -s $DIR/www/10/pack-os-core-from-0.tar ]
|
||||
@@ -81,8 +81,4 @@ setup() {
|
||||
[[ 4 -eq $(tar -tf $DIR/www/20/pack-test-bundle-from-0.tar | wc -l) ]]
|
||||
}
|
||||
|
||||
teardown() {
|
||||
sudo rm -rf $DIR
|
||||
}
|
||||
|
||||
# vi: ft=sh ts=8 sw=2 sts=2 et tw=80
|
||||
@@ -1,11 +1,11 @@
|
||||
#!/usr/bin/env bats
|
||||
|
||||
# common functions
|
||||
load swupdlib
|
||||
load "../swupdlib"
|
||||
|
||||
setup() {
|
||||
DIR=$(init_web_dir "$srcdir/web-dir")
|
||||
export DIR
|
||||
clean_test_dir
|
||||
init_test_dir
|
||||
|
||||
init_server_ini
|
||||
set_latest_ver 0
|
||||
@@ -20,10 +20,10 @@ setup() {
|
||||
}
|
||||
|
||||
@test "full run update creation" {
|
||||
sudo $srcdir/swupd_create_update --osversion 10 --statedir $DIR --format 3
|
||||
sudo $srcdir/swupd_make_fullfiles --statedir $DIR 10
|
||||
sudo $srcdir/swupd_make_pack --statedir $DIR 0 10 os-core
|
||||
sudo $srcdir/swupd_make_pack --statedir $DIR 0 10 test-bundle
|
||||
sudo $CREATE_UPDATE --osversion 10 --statedir $DIR --format 3
|
||||
sudo $MAKE_FULLFILES --statedir $DIR 10
|
||||
sudo $MAKE_PACK --statedir $DIR 0 10 os-core
|
||||
sudo $MAKE_PACK --statedir $DIR 0 10 test-bundle
|
||||
|
||||
# zero packs should exist (non-zero size) for the build
|
||||
[ -s $DIR/www/10/pack-os-core-from-0.tar ]
|
||||
@@ -42,8 +42,4 @@ setup() {
|
||||
[[ 9 -eq $(tar -tf $DIR/www/10/pack-os-core-from-0.tar | wc -l) ]]
|
||||
}
|
||||
|
||||
teardown() {
|
||||
sudo rm -rf $DIR
|
||||
}
|
||||
|
||||
# vi: ft=sh ts=8 sw=2 sts=2 et tw=80
|
||||
@@ -1,18 +1,20 @@
|
||||
#!/usr/bin/env bats
|
||||
|
||||
load "../swupdlib"
|
||||
|
||||
@test "make_fullfiles required arg" {
|
||||
run $srcdir/swupd_make_fullfiles
|
||||
run $MAKE_FULLFILES
|
||||
[ "$status" -eq 1 ]
|
||||
}
|
||||
|
||||
@test "make_fullfiles too many arguments" {
|
||||
# exactly one argument must be passed
|
||||
run $srcdir/swupd_make_fullfiles foo bar
|
||||
run $MAKE_FULLFILES foo bar
|
||||
[ "$status" -eq 1 ]
|
||||
}
|
||||
|
||||
@test "make_fullfiles root priv check" {
|
||||
run $srcdir/swupd_make_fullfiles foo
|
||||
run $MAKE_FULLFILES foo
|
||||
[ "$status" -eq 1 ]
|
||||
[[ "$output" =~ "not being run as root.. exiting" ]]
|
||||
}
|
||||
+20
-24
@@ -1,11 +1,11 @@
|
||||
#!/usr/bin/env bats
|
||||
|
||||
# common functions
|
||||
load swupdlib
|
||||
load "../swupdlib"
|
||||
|
||||
setup() {
|
||||
DIR=$(init_web_dir "$srcdir/web-dir")
|
||||
export DIR
|
||||
clean_test_dir
|
||||
init_test_dir
|
||||
|
||||
init_server_ini
|
||||
set_latest_ver 0
|
||||
@@ -44,31 +44,31 @@ setup() {
|
||||
|
||||
@test "full run update creation with delta packs" {
|
||||
# build the first version
|
||||
sudo $srcdir/swupd_create_update --osversion 10 --statedir $DIR --format 3
|
||||
sudo $srcdir/swupd_make_fullfiles --statedir $DIR 10
|
||||
sudo $srcdir/swupd_make_pack --statedir $DIR 0 10 os-core
|
||||
sudo $srcdir/swupd_make_pack --statedir $DIR 0 10 test-bundle
|
||||
sudo $CREATE_UPDATE --osversion 10 --statedir $DIR --format 3
|
||||
sudo $MAKE_FULLFILES --statedir $DIR 10
|
||||
sudo $MAKE_PACK --statedir $DIR 0 10 os-core
|
||||
sudo $MAKE_PACK --statedir $DIR 0 10 test-bundle
|
||||
|
||||
set_latest_ver 10
|
||||
|
||||
# then the second version...
|
||||
sudo $srcdir/swupd_create_update --osversion 20 --statedir $DIR --format 3
|
||||
sudo $srcdir/swupd_make_fullfiles --statedir $DIR 20
|
||||
sudo $srcdir/swupd_make_pack --statedir $DIR 0 20 os-core
|
||||
sudo $srcdir/swupd_make_pack --statedir $DIR 0 20 test-bundle
|
||||
sudo $srcdir/swupd_make_pack --statedir $DIR 0 20 included
|
||||
sudo $srcdir/swupd_make_pack --statedir $DIR 0 20 included-two
|
||||
sudo $CREATE_UPDATE --osversion 20 --statedir $DIR --format 3
|
||||
sudo $MAKE_FULLFILES --statedir $DIR 20
|
||||
sudo $MAKE_PACK --statedir $DIR 0 20 os-core
|
||||
sudo $MAKE_PACK --statedir $DIR 0 20 test-bundle
|
||||
sudo $MAKE_PACK --statedir $DIR 0 20 included
|
||||
sudo $MAKE_PACK --statedir $DIR 0 20 included-two
|
||||
|
||||
set_latest_ver 20
|
||||
|
||||
# then the third version...
|
||||
sudo $srcdir/swupd_create_update --osversion 30 --statedir $DIR --format 3
|
||||
sudo $srcdir/swupd_make_fullfiles --statedir $DIR 30
|
||||
sudo $srcdir/swupd_make_pack --statedir $DIR 0 30 os-core
|
||||
sudo $srcdir/swupd_make_pack --statedir $DIR 0 30 test-bundle
|
||||
sudo $srcdir/swupd_make_pack --statedir $DIR 0 30 included
|
||||
sudo $srcdir/swupd_make_pack --statedir $DIR 0 30 included-two
|
||||
sudo $srcdir/swupd_make_pack --statedir $DIR 0 30 included-nested
|
||||
sudo $CREATE_UPDATE --osversion 30 --statedir $DIR --format 3
|
||||
sudo $MAKE_FULLFILES --statedir $DIR 30
|
||||
sudo $MAKE_PACK --statedir $DIR 0 30 os-core
|
||||
sudo $MAKE_PACK --statedir $DIR 0 30 test-bundle
|
||||
sudo $MAKE_PACK --statedir $DIR 0 30 included
|
||||
sudo $MAKE_PACK --statedir $DIR 0 30 included-two
|
||||
sudo $MAKE_PACK --statedir $DIR 0 30 included-nested
|
||||
|
||||
# zero packs should exist (non-zero size) for both versions
|
||||
[ -s $DIR/www/10/pack-os-core-from-0.tar ]
|
||||
@@ -96,8 +96,4 @@ setup() {
|
||||
[[ 0 -eq $(ls $DIR/www/30/Manifest.included-two | wc -l) ]]
|
||||
}
|
||||
|
||||
teardown() {
|
||||
sudo rm -rf $DIR
|
||||
}
|
||||
|
||||
# vi: ft=sh ts=8 sw=2 sts=2 et tw=80
|
||||
@@ -1,24 +1,26 @@
|
||||
#!/usr/bin/env bats
|
||||
|
||||
load "../swupdlib"
|
||||
|
||||
@test "make_pack required arg" {
|
||||
run $srcdir/swupd_make_pack
|
||||
run $MAKE_PACK
|
||||
[ "$status" -eq 1 ]
|
||||
}
|
||||
|
||||
@test "make_pack too few arguments" {
|
||||
run $srcdir/swupd_make_pack foo
|
||||
run $MAKE_PACK foo
|
||||
[ "$status" -eq 1 ]
|
||||
run $srcdir/swupd_make_pack foo bar
|
||||
run $MAKE_PACK foo bar
|
||||
[ "$status" -eq 1 ]
|
||||
}
|
||||
|
||||
@test "make_pack too many arguments" {
|
||||
run $srcdir/swupd_make_pack foo bar foo bar
|
||||
run $MAKE_PACK foo bar foo bar
|
||||
[ "$status" -eq 1 ]
|
||||
}
|
||||
|
||||
@test "make_pack root priv check" {
|
||||
run $srcdir/swupd_make_pack foo bar foo
|
||||
run $MAKE_PACK foo bar foo
|
||||
[ "$status" -eq 1 ]
|
||||
[[ "$output" =~ "not being run as root.. exiting" ]]
|
||||
}
|
||||
@@ -1,14 +1,28 @@
|
||||
# NOTE: source this file from a *.bats file
|
||||
|
||||
init_web_dir() {
|
||||
# absolute path is a hard requirement right now
|
||||
local dir=$(realpath $1)
|
||||
mkdir -p $dir/{image,www}
|
||||
echo $dir
|
||||
# The location of the swupd_* binaries
|
||||
export SRCDIR="$BATS_TEST_DIRNAME/../../../"
|
||||
|
||||
export CREATE_UPDATE="$SRCDIR/swupd_create_update"
|
||||
export MAKE_FULLFILES="$SRCDIR/swupd_make_fullfiles"
|
||||
export MAKE_PACK="$SRCDIR/swupd_make_pack"
|
||||
|
||||
export DIR="$BATS_TEST_DIRNAME/web-dir"
|
||||
|
||||
init_test_dir() {
|
||||
local testdir="$BATS_TEST_DIRNAME"
|
||||
mkdir -p "$testdir"/logs
|
||||
mkdir -p $DIR/{image,www}
|
||||
# run swupd_* inside the directory to dump the logs
|
||||
cd "$testdir"/logs
|
||||
}
|
||||
|
||||
clean_test_dir() {
|
||||
sudo rm -rf $DIR "$BATS_TEST_DIRNAME"/logs
|
||||
}
|
||||
|
||||
init_server_ini() {
|
||||
cp $srcdir/server.ini $DIR
|
||||
cp $SRCDIR/server.ini $DIR
|
||||
sed -i "s|/var/lib/update|$DIR|" $DIR/server.ini
|
||||
}
|
||||
|
||||
@@ -73,21 +87,21 @@ gen_file_to_delta() {
|
||||
gen_file_plain() {
|
||||
local ver=$1
|
||||
local bundle=$2
|
||||
local name=$3
|
||||
local name="$3"
|
||||
|
||||
# Add plain text file into a bundle
|
||||
mkdir -p $DIR/image/$ver/$bundle
|
||||
echo $name > $DIR/image/$ver/$bundle/$name
|
||||
echo "$name" > $DIR/image/$ver/$bundle/"$name"
|
||||
}
|
||||
|
||||
gen_file_plain_change() {
|
||||
local ver=$1
|
||||
local bundle=$2
|
||||
local name=$3
|
||||
local name="$3"
|
||||
|
||||
# Add plain text file into a bundle
|
||||
mkdir -p $DIR/image/$ver/$bundle
|
||||
echo $ver $name > $DIR/image/$ver/$bundle/$name
|
||||
echo "$ver $name" > $DIR/image/$ver/$bundle/"$name"
|
||||
}
|
||||
|
||||
# vi: ft=sh ts=8 sw=2 sts=2 et tw=80
|
||||
|
||||
@@ -1,19 +1,21 @@
|
||||
#!/usr/bin/env bats
|
||||
|
||||
load "../swupdlib"
|
||||
|
||||
@test "create_update required format" {
|
||||
run $srcdir/swupd_create_update
|
||||
run $CREATE_UPDATE
|
||||
[ "$status" -eq 1 ]
|
||||
[[ "$output" =~ "Missing format parameter" ]]
|
||||
}
|
||||
|
||||
@test "create_update required version" {
|
||||
run $srcdir/swupd_create_update -F 3
|
||||
run $CREATE_UPDATE -F 3
|
||||
[ "$status" -eq 1 ]
|
||||
[[ "$output" =~ "Missing version parameter:" ]]
|
||||
}
|
||||
|
||||
@test "create_update root priv check" {
|
||||
run $srcdir/swupd_create_update -F 3 -o 10
|
||||
run $CREATE_UPDATE -F 3 -o 10
|
||||
[ "$status" -eq 1 ]
|
||||
[[ "$output" =~ "not being run as root.. exiting" ]]
|
||||
}
|
||||
Reference in New Issue
Block a user