init version of itest-cases-gbs
authorRong Jinhui <jinhui.rong@samsung.com>
Fri, 5 Jun 2015 07:38:51 +0000 (15:38 +0800)
committerRong Jinhui <jinhui.rong@samsung.com>
Fri, 5 Jun 2015 07:39:42 +0000 (15:39 +0800)
Change-Id: Ia5306b7f46f8a1635b1140def16ba6064ad968e4
Signed-off-by: Rong Jinhui <jinhui.rong@samsung.com>
412 files changed:
Makefile [new file with mode: 0644]
README.md [new file with mode: 0644]
cases/build/test_build_apply_patterns.case [new file with mode: 0644]
cases/build/test_build_arch_compatible_with_spec.case [new file with mode: 0644]
cases/build/test_build_as_root.case [new file with mode: 0644]
cases/build/test_build_binary_from_file_arm.case [new file with mode: 0644]
cases/build/test_build_binary_from_file_ia32.case [new file with mode: 0644]
cases/build/test_build_binary_list_mix_file.case [new file with mode: 0644]
cases/build/test_build_binary_list_skip.case [new file with mode: 0644]
cases/build/test_build_buildroot_ex_ia32.case [new file with mode: 0644]
cases/build/test_build_buildroot_ex_priority.case [new file with mode: 0644]
cases/build/test_build_buildroot_ia32.case [new file with mode: 0644]
cases/build/test_build_buildroot_uidgid_ia32.case [new file with mode: 0644]
cases/build/test_build_ccache_ia32.case [new file with mode: 0644]
cases/build/test_build_change_arch_skip.case [new file with mode: 0644]
cases/build/test_build_clean-once_arm.case [new file with mode: 0644]
cases/build/test_build_clean-once_ia32.case [new file with mode: 0644]
cases/build/test_build_clean_ia32.case [new file with mode: 0644]
cases/build/test_build_clean_repo.case [new file with mode: 0644]
cases/build/test_build_commit_ia32.case [new file with mode: 0644]
cases/build/test_build_commit_ia32_negative.case [new file with mode: 0644]
cases/build/test_build_configure_exlude_packages_in_profile_section.case [new file with mode: 0644]
cases/build/test_build_cyclic_dependency.case [new file with mode: 0644]
cases/build/test_build_debug_ia32.case [new file with mode: 0644]
cases/build/test_build_define.case [new file with mode: 0644]
cases/build/test_build_dependency_version_ia32.case [new file with mode: 0644]
cases/build/test_build_deps_ia32.case [new file with mode: 0644]
cases/build/test_build_deps_more_ia32.case [new file with mode: 0644]
cases/build/test_build_deps_rdeps_ia32.case [new file with mode: 0644]
cases/build/test_build_dist_ia32.case [new file with mode: 0644]
cases/build/test_build_dist_negative_ia32.case [new file with mode: 0644]
cases/build/test_build_dist_without_builddata.case [new file with mode: 0644]
cases/build/test_build_distconf_path_conflict.case [new file with mode: 0644]
cases/build/test_build_exclude-from-file_ia32.case [new file with mode: 0644]
cases/build/test_build_exclude_arm.case [new file with mode: 0644]
cases/build/test_build_exclude_ia32.case [new file with mode: 0644]
cases/build/test_build_export_filter.case [new file with mode: 0644]
cases/build/test_build_extra-packs_ccache_ia32.case [new file with mode: 0644]
cases/build/test_build_extra-packs_ia32.case [new file with mode: 0644]
cases/build/test_build_fallback-to-native_with_no_tag.case [new file with mode: 0644]
cases/build/test_build_fallback-to-native_with_non-default_gbs_configuration.case [new file with mode: 0644]
cases/build/test_build_fetch_buildconf_fail.case [new file with mode: 0644]
cases/build/test_build_help.case [new file with mode: 0644]
cases/build/test_build_in_subdir_ia32.case [new file with mode: 0644]
cases/build/test_build_include-all_ia32.case [new file with mode: 0644]
cases/build/test_build_include-all_on_develop_branch.case [new file with mode: 0644]
cases/build/test_build_include-all_on_orphan_branch.case [new file with mode: 0644]
cases/build/test_build_incremental_arm.case [new file with mode: 0644]
cases/build/test_build_incremental_dir_arm.case [new file with mode: 0644]
cases/build/test_build_incremental_dir_arm_illegal_pkg.case [new file with mode: 0644]
cases/build/test_build_incremental_dir_ia32.case [new file with mode: 0644]
cases/build/test_build_incremental_dir_ia32_illegal_pkg.case [new file with mode: 0644]
cases/build/test_build_incremental_ia32.case [new file with mode: 0644]
cases/build/test_build_incremental_incremental_noinit_ia32.case [new file with mode: 0644]
cases/build/test_build_incremental_self_overwrite_ia32.case [new file with mode: 0644]
cases/build/test_build_incremental_skip-srcrpm.case [new file with mode: 0644]
cases/build/test_build_incremental_spec_arm.case [new file with mode: 0644]
cases/build/test_build_incremental_spec_ia32.case [new file with mode: 0644]
cases/build/test_build_incremental_spec_not_exist_ia32.case [new file with mode: 0644]
cases/build/test_build_invalid_username_or_passwd_of_repo.case [new file with mode: 0644]
cases/build/test_build_keep-packs_arm.case [new file with mode: 0644]
cases/build/test_build_keep-packs_ia32.case [new file with mode: 0644]
cases/build/test_build_keeppacks_clean.case [new file with mode: 0644]
cases/build/test_build_keeppacks_extra.case [new file with mode: 0644]
cases/build/test_build_keeppacks_incremental.case [new file with mode: 0644]
cases/build/test_build_local_repo_url.case [new file with mode: 0644]
cases/build/test_build_local_repo_with_proxy.case [new file with mode: 0644]
cases/build/test_build_mount_on_buildroot_ia32.case [new file with mode: 0644]
cases/build/test_build_multi-pkgs_with_noinit.case [new file with mode: 0644]
cases/build/test_build_multi_specs_patch.case [new file with mode: 0644]
cases/build/test_build_multiple_specs.case [new file with mode: 0644]
cases/build/test_build_multispecs_patch_include.case [new file with mode: 0644]
cases/build/test_build_no-configure_arm.case [new file with mode: 0644]
cases/build/test_build_no-configure_ia32.case [new file with mode: 0644]
cases/build/test_build_no_build_tag.case [new file with mode: 0644]
cases/build/test_build_noinit_arm.case [new file with mode: 0644]
cases/build/test_build_noinit_clean-once_ia32.case [new file with mode: 0644]
cases/build/test_build_noinit_clean_ia32.case [new file with mode: 0644]
cases/build/test_build_noinit_ia32.case [new file with mode: 0644]
cases/build/test_build_noinit_self_overwrite_ia32.case [new file with mode: 0644]
cases/build/test_build_noinit_without_buildroot.case [new file with mode: 0644]
cases/build/test_build_noinit_without_buildroot_ia32.case [new file with mode: 0644]
cases/build/test_build_on_develop_branch.case [new file with mode: 0644]
cases/build/test_build_on_orphan_branch.case [new file with mode: 0644]
cases/build/test_build_overwrite_arm.case [new file with mode: 0644]
cases/build/test_build_overwrite_ccache_ia32.case [new file with mode: 0644]
cases/build/test_build_overwrite_ia32.case [new file with mode: 0644]
cases/build/test_build_package_bin_list_mix.case [new file with mode: 0644]
cases/build/test_build_package_from_file_ia32.case [new file with mode: 0644]
cases/build/test_build_package_list_ia32.case [new file with mode: 0644]
cases/build/test_build_packaging-dir_ia32.case [new file with mode: 0644]
cases/build/test_build_packaging-dir_multispec_ia32.case [new file with mode: 0644]
cases/build/test_build_packaging-dir_spec_ia32.case [new file with mode: 0644]
cases/build/test_build_packaging_symlink.case [new file with mode: 0644]
cases/build/test_build_parse_wrong_spec_ia32.case [new file with mode: 0644]
cases/build/test_build_profile.case [new file with mode: 0644]
cases/build/test_build_proxy_trailing_with_oblique_line.case [new file with mode: 0644]
cases/build/test_build_rdeps_ia32.case [new file with mode: 0644]
cases/build/test_build_rdeps_more_ia32.case [new file with mode: 0644]
cases/build/test_build_rm_previous_pkg.case [new file with mode: 0644]
cases/build/test_build_skip-conf-repos_ia32.case [new file with mode: 0644]
cases/build/test_build_skip-conf-repos_nagetive.case [new file with mode: 0644]
cases/build/test_build_skip-srcrpm.case [new file with mode: 0644]
cases/build/test_build_spec_dependency_start_with-_ia32.case [new file with mode: 0644]
cases/build/test_build_spec_ia32.case [new file with mode: 0644]
cases/build/test_build_spec_negative.case [new file with mode: 0644]
cases/build/test_build_spec_patch.case [new file with mode: 0644]
cases/build/test_build_specified_arch_ia32.case [new file with mode: 0644]
cases/build/test_build_squash-patches-until_ia32.case [new file with mode: 0644]
cases/build/test_build_substitutedeps_macro.case [new file with mode: 0644]
cases/build/test_build_target_arch_i686.case [new file with mode: 0644]
cases/build/test_build_threads_arm.case [new file with mode: 0644]
cases/build/test_build_threads_ia32.case [new file with mode: 0644]
cases/build/test_build_top_directory_repo.case [new file with mode: 0644]
cases/build/test_build_upstream-branch_ia32.case [new file with mode: 0644]
cases/build/test_build_upstream-tag_ia32.case [new file with mode: 0644]
cases/build/test_build_user_passwd_ia32.case [new file with mode: 0644]
cases/build/test_build_with_negative_arch.case [new file with mode: 0644]
cases/build/test_build_with_negative_profile.case [new file with mode: 0644]
cases/build/test_build_with_rpmsinfo_ia32.case [new file with mode: 0644]
cases/changelog/test_changelog_all.case [new file with mode: 0644]
cases/changelog/test_changelog_commitid-not-found-in-changes.case [new file with mode: 0644]
cases/changelog/test_changelog_editor.case [new file with mode: 0644]
cases/changelog/test_changelog_help.case [new file with mode: 0644]
cases/changelog/test_changelog_in_subdir.case [new file with mode: 0644]
cases/changelog/test_changelog_message.case [new file with mode: 0644]
cases/changelog/test_changelog_multiple_changes.case [new file with mode: 0644]
cases/changelog/test_changelog_no_branch.case [new file with mode: 0644]
cases/changelog/test_changelog_no_spec.case [new file with mode: 0644]
cases/changelog/test_changelog_not_git_repo.case [new file with mode: 0644]
cases/changelog/test_changelog_one_entry.case [new file with mode: 0644]
cases/changelog/test_changelog_order.case [new file with mode: 0644]
cases/changelog/test_changelog_since.case [new file with mode: 0644]
cases/changelog/test_changelog_since_negative.case [new file with mode: 0644]
cases/changelog/test_changelog_spec.case [new file with mode: 0644]
cases/changelog/test_changelog_update.case [new file with mode: 0644]
cases/changelog/test_changelog_update_negative.case [new file with mode: 0644]
cases/changelog/test_changelog_without_subcommand.case [new file with mode: 0644]
cases/chroot/test_chroot_help.case [new file with mode: 0644]
cases/chroot/test_chroot_no_option.case [new file with mode: 0644]
cases/clone/test_clone_conf_upstream-branch.case [new file with mode: 0644]
cases/clone/test_clone_debug.case [new file with mode: 0644]
cases/clone/test_clone_depth.case [new file with mode: 0644]
cases/clone/test_clone_from_special_repourl.case [new file with mode: 0644]
cases/clone/test_clone_help.case [new file with mode: 0644]
cases/clone/test_clone_in_gittree.case [new file with mode: 0644]
cases/clone/test_clone_negative_clone_twice.case [new file with mode: 0644]
cases/clone/test_clone_negative_invalid_uri.case [new file with mode: 0644]
cases/clone/test_clone_negative_not_git_repo.case [new file with mode: 0644]
cases/clone/test_clone_no_opts.case [new file with mode: 0644]
cases/clone/test_clone_packaging_branch.case [new file with mode: 0644]
cases/clone/test_clone_to_newdir.case [new file with mode: 0644]
cases/clone/test_clone_track_all_branches.case [new file with mode: 0644]
cases/clone/test_clone_upstream-branch.case [new file with mode: 0644]
cases/clone/test_clone_upstream-branch_all.case [new file with mode: 0644]
cases/conf/test_buildconf_in_profile.case [new file with mode: 0644]
cases/conf/test_encode_password.case [new file with mode: 0644]
cases/conf/test_error_profile.case [new file with mode: 0644]
cases/conf/test_find_gbs_conf_in_repo_dir.case [new file with mode: 0644]
cases/conf/test_inherit_only_passwdx.case [new file with mode: 0644]
cases/conf/test_inherit_only_user.case [new file with mode: 0644]
cases/conf/test_load_conf_in_gitdir.case [new file with mode: 0644]
cases/conf/test_missing_option.case [new file with mode: 0644]
cases/conf/test_mix_old_newconf.case [new file with mode: 0644]
cases/conf/test_multiple_conf_override.case [new file with mode: 0644]
cases/conf/test_multiple_repos.case [new file with mode: 0644]
cases/conf/test_new_auto_generated_conf.case [new file with mode: 0644]
cases/conf/test_no_such_section.case [new file with mode: 0644]
cases/conf/test_oldconf.case [new file with mode: 0644]
cases/conf/test_only_passwdx_no_user.case [new file with mode: 0644]
cases/conf/test_plaintext_password_issue.case [new file with mode: 0644]
cases/conf/test_profile_name_format.case [new file with mode: 0644]
cases/conf/test_reference_option_not_exist.case [new file with mode: 0644]
cases/conf/test_specified_conf.case [new file with mode: 0644]
cases/conf/test_tmpdir_in_general.case [new file with mode: 0644]
cases/conf/test_workdir_in_general.case [new file with mode: 0644]
cases/devel/base.xml [new file with mode: 0644]
cases/devel/gbs_devel_convert_normal_with_upstream_tag.case [new file with mode: 0644]
cases/devel/gbs_devel_convert_on_orphan_packaging_branch.case [new file with mode: 0644]
cases/devel/gbs_devel_convert_retain_history.case [new file with mode: 0644]
cases/devel/gbs_devel_convert_retain_history_with_empty_commit.case [new file with mode: 0644]
cases/devel/gbs_devel_convert_with_development_branch_from_working_branch_exists.case [new file with mode: 0644]
cases/devel/gbs_devel_convert_without_upstream_tag.case [new file with mode: 0644]
cases/devel/gbs_devel_drop_on_development_branch.case [new file with mode: 0644]
cases/devel/gbs_devel_drop_on_orphan_branch.case [new file with mode: 0644]
cases/devel/gbs_devel_drop_on_working_branch.case [new file with mode: 0644]
cases/devel/gbs_devel_drop_with_more_development_branches.case [new file with mode: 0644]
cases/devel/gbs_devel_drop_without_development_branch.case [new file with mode: 0644]
cases/devel/gbs_devel_export_to_orphan_packaging_branch.case [new file with mode: 0644]
cases/devel/gbs_devel_export_to_working_packaging_branch.case [new file with mode: 0644]
cases/devel/gbs_devel_export_without_orphan_packaging_branch.case [new file with mode: 0644]
cases/devel/gbs_devel_start_first_time_from_orhpan_branch_with_patch_list_in_spec.case [new file with mode: 0644]
cases/devel/gbs_devel_start_from_working_branch_without_patch_list_in_spec.case [new file with mode: 0644]
cases/devel/gbs_devel_start_more_time_from_orphan_branch.case [new file with mode: 0644]
cases/devel/gbs_devel_start_on_development_branch.case [new file with mode: 0644]
cases/devel/gbs_devel_switch_after_drop.case [new file with mode: 0644]
cases/devel/gbs_devel_switch_from_orphan_packaging_branch.case [new file with mode: 0644]
cases/devel/gbs_devel_switch_from_working_packaging_branch.case [new file with mode: 0644]
cases/export/base.xml [new file with mode: 0644]
cases/export/gbs_ex_disable_fallback_to_native_packaging.case [new file with mode: 0644]
cases/export/gbs_ex_no_patch.case [new file with mode: 0644]
cases/export/gbs_ex_no_pristine-tar.case [new file with mode: 0644]
cases/export/gbs_ex_no_pristine_with_patch.case [new file with mode: 0644]
cases/export/gbs_ex_no_tag.case [new file with mode: 0644]
cases/export/gbs_ex_no_tag_with_patch.case [new file with mode: 0644]
cases/export/gbs_ex_no_upstream.case [new file with mode: 0644]
cases/export/gbs_ex_no_upstream_with_patch.case [new file with mode: 0644]
cases/export/gbs_ex_normal.case [new file with mode: 0644]
cases/export/gbs_ex_patches_exist_inspec_and_packaging_together.case [new file with mode: 0644]
cases/export/gbs_ex_with_correct_upstream.case [new file with mode: 0644]
cases/export/gbs_ex_with_patch.case [new file with mode: 0644]
cases/export/gbs_ex_with_patch_macro.case [new file with mode: 0644]
cases/export/gbs_ex_with_symbolic_link_packaging.case [new file with mode: 0644]
cases/export/gbs_export_VCS.case [new file with mode: 0644]
cases/export/gbs_export_VCS_with_localclone.case [new file with mode: 0644]
cases/export/gbs_export_after_gbs_devel_export_to_orphan_packaging_branch.case [new file with mode: 0644]
cases/export/gbs_export_after_gbs_devel_export_to_working_packaging_branch.case [new file with mode: 0644]
cases/export/gbs_export_binary_diff.case [new file with mode: 0644]
cases/export/gbs_export_commit.case [new file with mode: 0644]
cases/export/gbs_export_commit_tag.case [new file with mode: 0644]
cases/export/gbs_export_condition_patch.case [new file with mode: 0644]
cases/export/gbs_export_conf_upstream.case [new file with mode: 0644]
cases/export/gbs_export_different_specs_tizenpkg.case [new file with mode: 0644]
cases/export/gbs_export_disable_script.case [new file with mode: 0644]
cases/export/gbs_export_fail_create_outdir.case [new file with mode: 0644]
cases/export/gbs_export_fallback-to-native_with_no_tag.case [new file with mode: 0644]
cases/export/gbs_export_from_spec.case [new file with mode: 0644]
cases/export/gbs_export_help01.case [new file with mode: 0644]
cases/export/gbs_export_help02.case [new file with mode: 0644]
cases/export/gbs_export_if_ifarch_patch.case [new file with mode: 0644]
cases/export/gbs_export_in_gitdir.case [new file with mode: 0644]
cases/export/gbs_export_in_subdir.case [new file with mode: 0644]
cases/export/gbs_export_include_all.case [new file with mode: 0644]
cases/export/gbs_export_multi_specs_native.case [new file with mode: 0644]
cases/export/gbs_export_multi_specs_tizenpkg.case [new file with mode: 0644]
cases/export/gbs_export_multi_users_run_export.case [new file with mode: 0644]
cases/export/gbs_export_multiopt_comi_incl.case [new file with mode: 0644]
cases/export/gbs_export_multiopt_comi_rpm.case [new file with mode: 0644]
cases/export/gbs_export_multiopt_o_comit.case [new file with mode: 0644]
cases/export/gbs_export_multiopt_o_incl.case [new file with mode: 0644]
cases/export/gbs_export_multiopt_o_rpm.case [new file with mode: 0644]
cases/export/gbs_export_multiopt_o_spec.case [new file with mode: 0644]
cases/export/gbs_export_multiopt_rpm_incl.case [new file with mode: 0644]
cases/export/gbs_export_multiopt_spe_comi.case [new file with mode: 0644]
cases/export/gbs_export_multiopt_spe_incl.case [new file with mode: 0644]
cases/export/gbs_export_multiopt_spe_rpm.case [new file with mode: 0644]
cases/export/gbs_export_multiopt_upsr_spec.case [new file with mode: 0644]
cases/export/gbs_export_multiorigspec.case [new file with mode: 0644]
cases/export/gbs_export_multispec.case [new file with mode: 0644]
cases/export/gbs_export_negative_spec.case [new file with mode: 0644]
cases/export/gbs_export_nobranch.case [new file with mode: 0644]
cases/export/gbs_export_nogit.case [new file with mode: 0644]
cases/export/gbs_export_nosource0.case [new file with mode: 0644]
cases/export/gbs_export_nospec.case [new file with mode: 0644]
cases/export/gbs_export_notag.case [new file with mode: 0644]
cases/export/gbs_export_nottar.case [new file with mode: 0644]
cases/export/gbs_export_on_development_branch.case [new file with mode: 0644]
cases/export/gbs_export_out.case [new file with mode: 0644]
cases/export/gbs_export_out_nowrite.case [new file with mode: 0644]
cases/export/gbs_export_packaging_dir.case [new file with mode: 0644]
cases/export/gbs_export_pkgdir_nowrite.case [new file with mode: 0644]
cases/export/gbs_export_require_dash.case [new file with mode: 0644]
cases/export/gbs_export_special_macro.case [new file with mode: 0644]
cases/export/gbs_export_squash.case [new file with mode: 0644]
cases/export/gbs_export_squash_patches_until_HEAD.case [new file with mode: 0644]
cases/export/gbs_export_srcrpm.case [new file with mode: 0644]
cases/export/gbs_export_submodule.case [new file with mode: 0644]
cases/export/gbs_export_unsup_tarball.case [new file with mode: 0644]
cases/export/gbs_export_upstream.case [new file with mode: 0644]
cases/export/gbs_export_upstream_pristine-tar_in_remote.case [new file with mode: 0644]
cases/export/gbs_export_upstrtag.case [new file with mode: 0644]
cases/export/gbs_export_with_merge_commit_in_git-log.case [new file with mode: 0644]
cases/export/gbs_export_with_native_configuration_in_gbsconf.case [new file with mode: 0644]
cases/export/gbs_export_without_packaging.case [new file with mode: 0644]
cases/export/gbs_export_wrong_info.case [new file with mode: 0644]
cases/export/gbs_export_wrong_project.case [new file with mode: 0644]
cases/export/gbs_export_wrongcommit.case [new file with mode: 0644]
cases/import/base.xml [new file with mode: 0644]
cases/import/gbs_im_VCStag.case [new file with mode: 0644]
cases/import/gbs_im_VCStag_srcrpm.case [new file with mode: 0644]
cases/import/gbs_im_bzip2_compressed_patches.case [new file with mode: 0644]
cases/import/gbs_im_conf_upstream.case [new file with mode: 0644]
cases/import/gbs_im_corrupted_tarball.case [new file with mode: 0644]
cases/import/gbs_im_create_missing_branches.case [new file with mode: 0644]
cases/import/gbs_im_default_no_merge.case [new file with mode: 0644]
cases/import/gbs_im_filter.case [new file with mode: 0644]
cases/import/gbs_im_from_invalidrpm.case [new file with mode: 0644]
cases/import/gbs_im_from_invalidspec.case [new file with mode: 0644]
cases/import/gbs_im_from_rpm_bz2.case [new file with mode: 0644]
cases/import/gbs_im_from_rpm_case.case [new file with mode: 0644]
cases/import/gbs_im_from_rpm_no_pristin.case [new file with mode: 0644]
cases/import/gbs_im_from_rpm_tar.case [new file with mode: 0644]
cases/import/gbs_im_from_rpm_xz.case [new file with mode: 0644]
cases/import/gbs_im_from_spec_case.case [new file with mode: 0644]
cases/import/gbs_im_help01.case [new file with mode: 0644]
cases/import/gbs_im_help02.case [new file with mode: 0644]
cases/import/gbs_im_httppatch_fmt.case [new file with mode: 0644]
cases/import/gbs_im_ifcond_do_prof.case [new file with mode: 0644]
cases/import/gbs_im_ifcondition_spec.case [new file with mode: 0644]
cases/import/gbs_im_lua_spec.case [new file with mode: 0644]
cases/import/gbs_im_merge.case [new file with mode: 0644]
cases/import/gbs_im_multispec.case [new file with mode: 0644]
cases/import/gbs_im_native.case [new file with mode: 0644]
cases/import/gbs_im_negative_untracked.case [new file with mode: 0644]
cases/import/gbs_im_none_exists_tarball.case [new file with mode: 0644]
cases/import/gbs_im_nopatch.case [new file with mode: 0644]
cases/import/gbs_im_not_git.case [new file with mode: 0644]
cases/import/gbs_im_pristine-tar.case [new file with mode: 0644]
cases/import/gbs_im_rpm_name_version_policy.case [new file with mode: 0644]
cases/import/gbs_im_rpm_no-pristine-tar_zip.case [new file with mode: 0644]
cases/import/gbs_im_rpm_pristine-tar_tar.case [new file with mode: 0644]
cases/import/gbs_im_rpm_pristine-tar_tar_bz2.case [new file with mode: 0644]
cases/import/gbs_im_rpm_pristine-tar_tar_gz.case [new file with mode: 0644]
cases/import/gbs_im_rpm_pristine-tar_tar_xz.case [new file with mode: 0644]
cases/import/gbs_im_sameversion.case [new file with mode: 0644]
cases/import/gbs_im_set_useremail_case.case [new file with mode: 0644]
cases/import/gbs_im_setonly_email.case [new file with mode: 0644]
cases/import/gbs_im_setonly_user.case [new file with mode: 0644]
cases/import/gbs_im_spec_negative.case [new file with mode: 0644]
cases/import/gbs_im_srcrpm_twice.case [new file with mode: 0644]
cases/import/gbs_im_srpm_with-patches_pristine-tar.case [new file with mode: 0644]
cases/import/gbs_im_tarball_no-pristine-tar_zip.case [new file with mode: 0644]
cases/import/gbs_im_tarball_pristine-tar_tar.case [new file with mode: 0644]
cases/import/gbs_im_tarball_pristine-tar_tar_bz2.case [new file with mode: 0644]
cases/import/gbs_im_tarball_pristine-tar_tar_gz.case [new file with mode: 0644]
cases/import/gbs_im_tarball_pristine-tar_tar_xz.case [new file with mode: 0644]
cases/import/gbs_im_tarball_pristine-tar_zip.case [new file with mode: 0644]
cases/import/gbs_im_tarball_twice.case [new file with mode: 0644]
cases/import/gbs_im_tarbz2_fmt.case [new file with mode: 0644]
cases/import/gbs_im_targz_fmt.case [new file with mode: 0644]
cases/import/gbs_im_tarxz_fmt.case [new file with mode: 0644]
cases/import/gbs_im_tbz2_fmt.case [new file with mode: 0644]
cases/import/gbs_im_tgz_fmt.case [new file with mode: 0644]
cases/import/gbs_im_unsupported_archive_format.case [new file with mode: 0644]
cases/import/gbs_im_upgrade_srcrpm.case [new file with mode: 0644]
cases/import/gbs_im_upstream.case [new file with mode: 0644]
cases/import/gbs_im_upstream_tag.case [new file with mode: 0644]
cases/import/gbs_im_zip_fmt.case [new file with mode: 0644]
cases/other/gbs_show_man_page.case [new file with mode: 0644]
cases/other/gbs_version_check.case [new file with mode: 0644]
cases/pull/test_pull_conf_upstream-branch.case [new file with mode: 0644]
cases/pull/test_pull_depth.case [new file with mode: 0644]
cases/pull/test_pull_fast_forward.case [new file with mode: 0644]
cases/pull/test_pull_force.case [new file with mode: 0644]
cases/pull/test_pull_help.case [new file with mode: 0644]
cases/pull/test_pull_no_opts.case [new file with mode: 0644]
cases/pull/test_pull_track_all_branches.case [new file with mode: 0644]
cases/pull/test_pull_uncommit.case [new file with mode: 0644]
cases/pull/test_pull_upstream-branch.case [new file with mode: 0644]
cases/submit/test_submit_commit.case [new file with mode: 0644]
cases/submit/test_submit_commit_negative.case [new file with mode: 0644]
cases/submit/test_submit_commit_tag.case [new file with mode: 0644]
cases/submit/test_submit_empty_message.case [new file with mode: 0644]
cases/submit/test_submit_gpg_signed_tag.case [new file with mode: 0644]
cases/submit/test_submit_in_subdir.case [new file with mode: 0644]
cases/submit/test_submit_long_message.case [new file with mode: 0644]
cases/submit/test_submit_message.case [new file with mode: 0644]
cases/submit/test_submit_on_no_branch.case [new file with mode: 0644]
cases/submit/test_submit_outside_gitdir.case [new file with mode: 0644]
cases/submit/test_submit_remote.case [new file with mode: 0644]
cases/submit/test_submit_remote_commit.case [new file with mode: 0644]
cases/submit/test_submit_remote_negative.case [new file with mode: 0644]
cases/submit/test_submit_tag.case [new file with mode: 0644]
cases/submit/test_submit_tag_bad_format.case [new file with mode: 0644]
cases/submit/test_submit_target.case [new file with mode: 0644]
cases/submit/test_submit_user-key.case [new file with mode: 0644]
coveragerc [new file with mode: 0644]
debian/changelog [new file with mode: 0644]
debian/compat [new file with mode: 0644]
debian/control [new file with mode: 0644]
debian/copyright [new file with mode: 0644]
debian/rules [new file with mode: 0644]
fixtures/conf/base.cfg [new file with mode: 0644]
fixtures/conf/changelog_cat.cfg [new file with mode: 0644]
fixtures/conf/changelog_save.cfg [new file with mode: 0644]
fixtures/conf/inherit_only_passwdx.cfg [new file with mode: 0644]
fixtures/conf/inherit_only_user.cfg [new file with mode: 0644]
fixtures/conf/invalid_user.cfg [new file with mode: 0644]
fixtures/conf/old.cfg [new file with mode: 0644]
fixtures/conf/only_passwdx_no_user.cfg [new file with mode: 0644]
fixtures/conf/plaintext_password_issue.cfg [new file with mode: 0644]
fixtures/conf/submit.cfg [new file with mode: 0644]
fixtures/conf/tizen.conf [new file with mode: 0644]
fixtures/specs/capi-system-power.spec [new file with mode: 0644]
fixtures/specs/chicken.spec [new file with mode: 0644]
fixtures/specs/egg.spec [new file with mode: 0644]
fixtures/specs/fake-dev.spec [new file with mode: 0644]
fixtures/specs/fake-lib.spec [new file with mode: 0644]
fixtures/specs/fake.spec [new file with mode: 0644]
fixtures/specs/gdm.spec [new file with mode: 0644]
fixtures/specs/json-c.spec [new file with mode: 0644]
fixtures/specs/package-groups.spec [new file with mode: 0644]
fixtures/specs/sw-tools.spec [new file with mode: 0644]
fixtures/specs/tizen-accelerator.spec [new file with mode: 0644]
fixtures/specs/tizen-release.spec [new file with mode: 0644]
fixtures/specs/xorg-x11-filesystem.spec [new file with mode: 0644]
fixtures/tools/assert [new file with mode: 0644]
fixtures/tools/create_proj [new file with mode: 0644]
future_cases/gbs_cr_ks.case [new file with mode: 0644]
future_cases/gbs_cr_no_opt.case [new file with mode: 0644]
future_cases/gbs_cr_out.case [new file with mode: 0644]
future_cases/test_build_aarch64_support.case [new file with mode: 0644]
future_cases/test_build_baselibs.case [new file with mode: 0644]
future_cases/test_build_dist_in_spec.case [new file with mode: 0644]
packaging/.gitignore [new file with mode: 0644]
packaging/Makefile [new file with mode: 0644]
packaging/itest-cases-gbs.changes [new file with mode: 0644]
packaging/itest-cases-gbs.dsc [new file with mode: 0644]
packaging/itest-cases-gbs.spec [new file with mode: 0644]
report.html [new file with mode: 0644]
settings.py [new file with mode: 0644]
sudoers.itest_cases_gbs [new file with mode: 0644]

diff --git a/Makefile b/Makefile
new file mode 100644 (file)
index 0000000..25c0ab5
--- /dev/null
+++ b/Makefile
@@ -0,0 +1,13 @@
+TARGET_PATH=$(PREFIX)/srv/itest/cases/gbs
+SOURCES="cases fixtures settings.py coveragerc report.html"
+
+build:
+       @echo done
+
+install:
+       install -d $(TARGET_PATH)
+       for src in $(SOURCES); do \
+               cp -avr $$src $(TARGET_PATH); \
+       done
+       install -d $(PREFIX)/etc/sudoers.d
+       install -m 0440 sudoers.itest_cases_gbs $(PREFIX)/etc/sudoers.d/itest_cases_gbs
diff --git a/README.md b/README.md
new file mode 100644 (file)
index 0000000..dd5fe07
--- /dev/null
+++ b/README.md
@@ -0,0 +1,3 @@
+This project contains functional test cases for gbs.
+
+And all these test cases are written in format of itest tools.
diff --git a/cases/build/test_build_apply_patterns.case b/cases/build/test_build_apply_patterns.case
new file mode 100644 (file)
index 0000000..b46c6d7
--- /dev/null
@@ -0,0 +1,33 @@
+<testcase>
+  <summary>apply patterns.xml after build package-groups </summary>
+  <tracking>
+    <ticket>1879</ticket>
+  </tracking>
+  <fixtures>
+    <copy src="tools/create_proj" />
+    <copy src="tools/assert" />
+    <copy src="specs/fake.spec" />
+    <copy src="specs/package-groups.spec" />
+    <copy src="conf/base.cfg" />
+  </fixtures>
+  <steps><![CDATA[
+. assert
+
+sudo /bin/rm -rf $GBS_LOCAL_REPOS
+
+./create_proj fake.spec
+
+gbs -c base.cfg build --clean -A i586 fake
+
+[ ! -f ~/GBS-ROOT/local/repos/tizen/i586/repodata/*-patterns.xml.gz ]
+
+./create_proj package-groups.spec
+
+gbs -c base.cfg build -A i586 --clean package-groups
+
+ls ~/GBS-ROOT/local/repos/tizen/i586/RPMS/package-groups-[0-9]*.rpm
+
+[ -f ~/GBS-ROOT/local/repos/tizen/i586/repodata/*-patterns.xml.gz ]
+
+]]></steps>
+</testcase>
diff --git a/cases/build/test_build_arch_compatible_with_spec.case b/cases/build/test_build_arch_compatible_with_spec.case
new file mode 100644 (file)
index 0000000..9225a8c
--- /dev/null
@@ -0,0 +1,27 @@
+<testcase>
+  <summary>ExclusiveArch in spec is prior to command line arch</summary>
+  <tracking>
+    <ticket>552</ticket>
+  </tracking>
+  <fixtures>
+    <copy src="tools/create_proj" />
+    <copy src="specs/fake.spec" />
+    <copy src="conf/base.cfg" />
+  </fixtures>
+  <steps><![CDATA[
+#ExclusiveArch: ia64 x86_64 %{ix86}
+perl -i -pne 's/(Source0:.*)/\1\nExclusiveArch: ia64 x86_64 %\{ix86\}/' fake.spec
+
+./create_proj fake.spec
+
+( ! gbs -c base.cfg build -A armv7l 2>&1 | tee log )
+
+#check build log not compatible
+test -n "`grep "build arch not compatible" log`"
+
+test -n "`grep ".*no available packages to build" log`"
+
+#check source package not changed
+cd fake && test -n "`git status | grep "working directory clean"`"
+]]></steps>
+</testcase>
diff --git a/cases/build/test_build_as_root.case b/cases/build/test_build_as_root.case
new file mode 100644 (file)
index 0000000..9d7e74c
--- /dev/null
@@ -0,0 +1,40 @@
+<testcase>
+  <summary>login as root then gbs build with mobile repo</summary>
+  <tracking>
+    <ticket>1326</ticket>
+  </tracking>
+  <qa>
+    <prompt>.*Are you sure you want to continue connecting.*? </prompt>
+    <answer>yes</answer>
+    <prompt>.*[P|p]assword:</prompt>
+    <answer>123456</answer>
+  </qa>
+  <fixtures>
+    <copy src="tools/create_proj" />
+    <copy src="specs/fake.spec" />
+    <copy src="conf/base.cfg" />
+  </fixtures>
+  <steps><![CDATA[
+#modify root passwd
+#sudo su -l root -c "passwd"
+
+sudo /bin/rm -rf /var/tmp/fake
+
+sudo /bin/rm -rf /root/GBS-ROOT/local/repos
+
+./create_proj fake.spec -C /var/tmp/fake
+
+cp base.cfg /var/tmp/
+
+#ssh root@localhost gbs -c /var/tmp/base.cfg build  -A i586 --skip-conf-repos -R http://linux-ftp.fi.intel.com/pub/mirrors/tizen/snapshots/tizen/ivi/ivi/latest/repos/atom/packages/ --clean /var/tmp/fake
+sudo su -l root -c "gbs -c /var/tmp/base.cfg build  -A i586 --skip-conf-repos -R http://linux-ftp.fi.intel.com/pub/mirrors/tizen/snapshots/tizen/ivi/ivi/latest/repos/atom/packages/ --clean /var/tmp/fake"
+
+test -n "`sudo find /root/GBS-ROOT/local/repos -name '*fake*.rpm'`"
+
+rm -rf ~/GBS-ROOT/local/repos
+
+gbs -c /var/tmp/base.cfg build  -A i586 --skip-conf-repos -R http://linux-ftp.fi.intel.com/pub/mirrors/tizen/snapshots/tizen/ivi/ivi/latest/repos/atom/packages/ --clean /var/tmp/fake
+
+test -n "`find ~/GBS-ROOT/local/repos -name '*fake*.rpm'`"
+]]></steps>
+</testcase>
diff --git a/cases/build/test_build_binary_from_file_arm.case b/cases/build/test_build_binary_from_file_arm.case
new file mode 100644 (file)
index 0000000..3efcdcb
--- /dev/null
@@ -0,0 +1,43 @@
+<testcase>
+  <summary>test binary-from-file feature</summary>
+  <fixtures>
+    <copy src="tools/create_proj" />
+    <copy src="tools/assert" />
+    <copy src="specs/fake.spec" />
+    <copy src="specs/capi-system-power.spec" />
+    <copy src="specs/xorg-x11-filesystem.spec" />
+    <copy src="conf/base.cfg" />
+  </fixtures>
+  <steps><![CDATA[
+. assert
+
+sudo /bin/rm -rf ${GBS_LOCAL_REPOS}
+
+sudo /bin/rm -rf $GBS_ROOT_ARMV7L_0
+
+./create_proj fake.spec
+
+./create_proj -C power capi-system-power.spec
+
+./create_proj xorg-x11-filesystem.spec
+
+touch bin-list
+
+echo fake >> bin-list
+
+echo xorg-x11-filesystem >> bin-list
+
+cat bin-list
+
+#broken register
+sudo sh -c "echo -1 >/proc/sys/fs/binfmt_misc/status"
+
+gbs -c base.cfg build --binary-from-file=bin-list -A armv7l 2>&1 | tee log
+
+AssertCleanWith fake power xorg-x11-filesystem
+
+AssertRPMsAWithout power
+
+AssertRPMsAWith xorg-x11-filesystem fake
+]]></steps>
+</testcase>
diff --git a/cases/build/test_build_binary_from_file_ia32.case b/cases/build/test_build_binary_from_file_ia32.case
new file mode 100644 (file)
index 0000000..9a6ace3
--- /dev/null
@@ -0,0 +1,40 @@
+<testcase>
+  <summary>test binary-from-file feature</summary>
+  <fixtures>
+    <copy src="tools/create_proj" />
+    <copy src="tools/assert" />
+    <copy src="specs/fake.spec" />
+    <copy src="specs/capi-system-power.spec" />
+    <copy src="specs/xorg-x11-filesystem.spec" />
+    <copy src="conf/base.cfg" />
+  </fixtures>
+  <steps><![CDATA[
+. assert
+
+sudo /bin/rm -rf ${GBS_LOCAL_REPOS}
+
+sudo /bin/rm -rf $GBS_ROOT_I686_0
+
+./create_proj fake.spec
+
+./create_proj -C power capi-system-power.spec
+
+./create_proj xorg-x11-filesystem.spec
+
+touch bin-list
+
+echo fake >> bin-list
+
+echo xorg-x11-filesystem >> bin-list
+
+cat bin-list
+
+gbs -c base.cfg build --binary-from-file=bin-list -A i586 2>&1 | tee log
+
+AssertCleanWith fake power xorg-x11-filesystem
+
+AssertRPMsIWithout power
+
+AssertRPMsIWith xorg-x11-filesystem fake
+]]></steps>
+</testcase>
diff --git a/cases/build/test_build_binary_list_mix_file.case b/cases/build/test_build_binary_list_mix_file.case
new file mode 100644 (file)
index 0000000..add348a
--- /dev/null
@@ -0,0 +1,45 @@
+<testcase>
+  <summary>test binary-list and binary-from-file mix together</summary>
+  <tracking>
+    <change>3491</change>
+    <change>3492</change>
+    <ticket>720</ticket>
+  </tracking>
+  <fixtures>
+    <copy src="tools/create_proj" />
+    <copy src="tools/assert" />
+    <copy src="specs/fake.spec" />
+    <copy src="specs/fake-dev.spec" />
+    <copy src="specs/capi-system-power.spec" />
+    <copy src="specs/xorg-x11-filesystem.spec" />
+    <copy src="conf/base.cfg" />
+  </fixtures>
+  <steps><![CDATA[
+. assert
+
+sudo /bin/rm -rf ${GBS_LOCAL_REPOS}
+
+sudo /bin/rm -rf $GBS_ROOT_ARMV7L_0
+
+# make 4 packs
+./create_proj fake.spec
+
+./create_proj fake-dev.spec
+
+./create_proj -C power capi-system-power.spec
+
+./create_proj xorg-x11-filesystem.spec
+
+# specify 1 pack by --binary-from-file, 2 packs by --binary-list
+# so left 1 pack without build
+echo fake > bin-list
+
+gbs -c base.cfg build --binary-from-file=bin-list --binary-list=fake-dev,xorg-x11-filesystem -A armv7l 2>&1 | tee log
+
+AssertCleanWith fake fake-dev power xorg-x11-filesystem
+
+AssertRPMsAWithout power
+
+AssertRPMsAWith xorg-x11-filesystem fake fake-dev
+]]></steps>
+</testcase>
diff --git a/cases/build/test_build_binary_list_skip.case b/cases/build/test_build_binary_list_skip.case
new file mode 100644 (file)
index 0000000..07581a5
--- /dev/null
@@ -0,0 +1,42 @@
+<testcase>
+  <summary>test binary-from-file with commented package</summary>
+  <tracking>
+    <change>7449</change>
+  </tracking>
+  <fixtures>
+    <copy src="tools/create_proj" />
+    <copy src="tools/assert" />
+    <copy src="specs/fake.spec" />
+    <copy src="specs/capi-system-power.spec" />
+    <copy src="specs/xorg-x11-filesystem.spec" />
+    <copy src="conf/base.cfg" />
+  </fixtures>
+  <steps><![CDATA[
+. assert
+
+sudo /bin/rm -rf $GBS_LOCAL_REPOS
+
+./create_proj fake.spec
+
+./create_proj -C power capi-system-power.spec
+
+./create_proj xorg-x11-filesystem.spec
+
+touch bin-list
+
+echo fake >> bin-list
+
+#gbs will skip this commented package
+echo "#xorg-x11-filesystem" >> bin-list
+
+cat bin-list
+
+gbs -c base.cfg build --binary-from-file=bin-list -A i586 --clean
+
+AssertCleanWith fake power xorg-x11-filesystem
+
+AssertRPMsIWithout power xorg-x11-filesystem
+
+AssertRPMsIWith fake
+]]></steps>
+</testcase>
diff --git a/cases/build/test_build_buildroot_ex_ia32.case b/cases/build/test_build_buildroot_ex_ia32.case
new file mode 100644 (file)
index 0000000..f3dd86d
--- /dev/null
@@ -0,0 +1,30 @@
+<testcase>
+  <summary>test buildroot feature with setting env VARS</summary>
+  <tracking>
+    <ticket>60</ticket>
+  </tracking>
+  <fixtures>
+    <copy src="tools/create_proj" />
+    <copy src="specs/fake.spec" />
+    <copy src="conf/base.cfg" />
+  </fixtures>
+  <steps><![CDATA[
+sudo /bin/rm -rf ~/buildroot/local/repos
+
+sudo /bin/rm -rf ~/buildroot/local/BUILD-ROOTS/scratch.i586.0
+
+./create_proj fake.spec
+
+export TIZEN_BUILD_ROOT=~/buildroot
+
+gbs -c base.cfg build -A i586 2>&1 | tee log
+
+unset TIZEN_BUILD_ROOT
+
+test -z "`grep "mount:.*scratch" log`"
+
+cd fake && test -n "`git status | grep "working directory clean"`" && cd ..
+
+test -n "`find ~/buildroot/local/repos -name "*fake*.rpm"`"
+]]></steps>
+</testcase>
diff --git a/cases/build/test_build_buildroot_ex_priority.case b/cases/build/test_build_buildroot_ex_priority.case
new file mode 100644 (file)
index 0000000..0df92e8
--- /dev/null
@@ -0,0 +1,30 @@
+<testcase>
+  <summary>test buildroot priority(env var less than cmd line)</summary>
+  <tracking>
+    <ticket>60</ticket>
+  </tracking>
+  <fixtures>
+    <copy src="tools/create_proj" />
+    <copy src="specs/fake.spec" />
+    <copy src="conf/base.cfg" />
+  </fixtures>
+  <steps><![CDATA[
+sudo /bin/rm -rf ~/buildroot/local/repos
+
+sudo /bin/rm -rf ~/buildroot/local/BUILD-ROOTS/scratch.i586.0
+
+./create_proj fake.spec
+
+export TIZEN_BUILD_ROOT=~/buildroot2
+
+gbs -c base.cfg build --buildroot=~/buildroot -A i586 2>&1 | tee log
+
+unset TIZEN_BUILD_ROOT
+
+test -z "`grep "mount:.*scratch" log`"
+
+cd fake && test -n "`git status | grep "working directory clean"`" && cd ..
+
+test -n "`find ~/buildroot/local/repos -name "*fake*.rpm"`"
+]]></steps>
+</testcase>
diff --git a/cases/build/test_build_buildroot_ia32.case b/cases/build/test_build_buildroot_ia32.case
new file mode 100644 (file)
index 0000000..b15562a
--- /dev/null
@@ -0,0 +1,26 @@
+<testcase>
+  <summary>test buildroot feature</summary>
+  <tracking>
+    <ticket>60</ticket>
+  </tracking>
+  <fixtures>
+    <copy src="tools/create_proj" />
+    <copy src="specs/fake.spec" />
+    <copy src="conf/base.cfg" />
+  </fixtures>
+  <steps><![CDATA[
+sudo /bin/rm -rf ~/buildroot/local/repos
+
+sudo /bin/rm -rf ~/buildroot/local/BUILD-ROOTS/scratch.i586.0
+
+./create_proj fake.spec
+
+gbs -c base.cfg build --buildroot=~/buildroot -A i586 2>&1 | tee log
+
+test -z "`grep "mount:.*scratch" log`"
+
+cd fake && test -n "`git status | grep "working directory clean"`" && cd ..
+
+test -n "`find ~/buildroot/local/repos -name "*fake*.rpm"`"
+]]></steps>
+</testcase>
diff --git a/cases/build/test_build_buildroot_uidgid_ia32.case b/cases/build/test_build_buildroot_uidgid_ia32.case
new file mode 100644 (file)
index 0000000..6e598f9
--- /dev/null
@@ -0,0 +1,32 @@
+<testcase>
+  <summary>buildroot uid gid changed,gbs build still work</summary>
+  <tracking>
+    <ticket>685</ticket>
+  </tracking>
+  <fixtures>
+    <copy src="tools/create_proj" />
+    <copy src="specs/fake.spec" />
+    <copy src="conf/base.cfg" />
+  </fixtures>
+  <steps><![CDATA[
+./create_proj fake.spec
+
+gbs -c base.cfg build -A i586 --buildroot=buildroot fake 2>&1
+
+BUILD_ROOT=buildroot/local/BUILD-ROOTS/scratch.i586.0
+
+ABUILD_UID=666666
+
+ABUILD_GID=888888
+
+sudo /bin/sed -i '/^abuild/d' $BUILD_ROOT/etc/passwd
+
+sudo /bin/sed -i '/^abuild/d' $BUILD_ROOT/etc/group
+
+echo "abuild:x:${ABUILD_UID}:${ABUILD_GID}:Autobuild:/home/abuild:/bin/bash" |sudo tee -a $BUILD_ROOT/etc/passwd
+
+echo "abuild:x:${ABUILD_GID}:" |sudo tee -a $BUILD_ROOT/etc/group
+
+gbs -c base.cfg build -A i586 --buildroot=buildroot --overwrite fake 2>&1
+]]></steps>
+</testcase>
diff --git a/cases/build/test_build_ccache_ia32.case b/cases/build/test_build_ccache_ia32.case
new file mode 100644 (file)
index 0000000..61143cb
--- /dev/null
@@ -0,0 +1,25 @@
+<testcase>
+  <summary>test ccache feature</summary>
+  <fixtures>
+    <copy src="tools/create_proj" />
+    <copy src="specs/fake.spec" />
+    <copy src="conf/base.cfg" />
+  </fixtures>
+  <steps><![CDATA[
+sudo /bin/rm -rf ~/GBS-ROOT/local/repos
+
+sudo /bin/rm -rf ~/GBS-ROOT/local/BUILD-ROOTS/scratch.i586.0
+
+./create_proj fake.spec
+
+gbs -c base.cfg build --ccache -A i586 2>&1 | tee log
+
+test -z "`grep "mount:.*scratch" log`"
+
+test -n "`grep "init_buildsystem.*ccache" log`"
+
+cd fake && test -n "`git status | grep "working directory clean"`" && cd ..
+
+test -n "`find ~/GBS-ROOT/local/repos -name "*fake*.rpm"`"
+]]></steps>
+</testcase>
diff --git a/cases/build/test_build_change_arch_skip.case b/cases/build/test_build_change_arch_skip.case
new file mode 100644 (file)
index 0000000..a32cedf
--- /dev/null
@@ -0,0 +1,43 @@
+<testcase>
+  <summary>change arch to build, not skip build anymore</summary>
+  <tracking>
+    <ticket>365</ticket>
+  </tracking>
+  <fixtures>
+    <copy src="tools/create_proj" />
+    <copy src="tools/assert" />
+    <copy src="specs/sw-tools.spec" />
+    <copy src="conf/base.cfg" />
+  </fixtures>
+  <steps><![CDATA[
+. assert
+
+sudo /bin/rm -rf ${GBS_LOCAL_REPOS}
+
+sudo /bin/rm -rf $GBS_ROOT_I686_0
+
+sudo /bin/rm -rf $GBS_ROOT_ARMV7L_0
+
+./create_proj sw-tools.spec
+
+gbs -c base.cfg build sw-tools -A i586 2>&1 | tee log
+
+gbs -c base.cfg build sw-tools -A i586 2>&1 | tee log
+
+#check arch not changed, skip still
+test -n "`grep "skip.*sw-tools" log`"
+
+#broken register
+sudo sh -c "echo -1 >/proc/sys/fs/binfmt_misc/status"
+
+gbs -c base.cfg build sw-tools -A armv7l 2>&1 | tee log
+
+#check arch changed, no skip any more
+test -z "`grep "skip.*sw-tools" log`"
+
+#check rpm and src.rpm now under each arch
+AssertRPMsIWith sw-tools
+
+AssertRPMsAWith sw-tools
+]]></steps>
+</testcase>
diff --git a/cases/build/test_build_clean-once_arm.case b/cases/build/test_build_clean-once_arm.case
new file mode 100644 (file)
index 0000000..3c4bbc4
--- /dev/null
@@ -0,0 +1,30 @@
+<testcase>
+  <summary>test clean-once feature</summary>
+  <fixtures>
+    <copy src="tools/create_proj" />
+    <copy src="specs/fake.spec" />
+    <copy src="conf/base.cfg" />
+  </fixtures>
+  <steps><![CDATA[
+sudo /bin/rm -rf ~/GBS-ROOT/local/repos
+
+sudo /bin/rm -rf ~/GBS-ROOT/local/BUILD-ROOTS/scratch.armv7l.0
+
+./create_proj fake.spec
+
+gbs -c base.cfg build -A armv7l fake
+
+sudo /bin/touch ~/GBS-ROOT/local/BUILD-ROOTS/scratch.armv7l.0/test.txt
+
+gbs -c base.cfg build --clean-once -A armv7l --overwrite 2>&1 | tee log
+
+test -z "`grep "mount:.*scratch" log`"
+
+cd fake && test -n "`git status | grep "working directory clean"`" && cd ..
+
+test -n "`find ~/GBS-ROOT/local/repos -name "*fake*.rpm"`"
+
+#buildroot is cleaned, so test.txt doesn't exist
+[ ! -f ~/GBS-ROOT/local/BUILD-ROOTS/scratch.armv7l.0/test.txt ]
+]]></steps>
+</testcase>
diff --git a/cases/build/test_build_clean-once_ia32.case b/cases/build/test_build_clean-once_ia32.case
new file mode 100644 (file)
index 0000000..adf1b7c
--- /dev/null
@@ -0,0 +1,30 @@
+<testcase>
+  <summary>test clean-once feature</summary>
+  <fixtures>
+    <copy src="tools/create_proj" />
+    <copy src="specs/fake.spec" />
+    <copy src="conf/base.cfg" />
+  </fixtures>
+  <steps><![CDATA[
+sudo /bin/rm -rf ~/GBS-ROOT/local/repos
+
+sudo /bin/rm -rf ~/GBS-ROOT/local/BUILD-ROOTS/scratch.i586.0
+
+./create_proj fake.spec
+
+gbs -c base.cfg build -A i586
+
+sudo /bin/touch ~/GBS-ROOT/local/BUILD-ROOTS/scratch.i586.0/test.txt
+
+gbs -c base.cfg build --clean-once -A i586 --overwrite 2>&1 | tee log
+
+test -z "`grep "mount:.*scratch" log`"
+
+cd fake && test -n "`git status | grep "working directory clean"`" && cd ..
+
+test -n "`find ~/GBS-ROOT/local/repos -name "*fake*.rpm"`"
+
+#buildroot is cleaned, so test.txt doesn't exist
+[ ! -f ~/GBS-ROOT/local/BUILD-ROOTS/scratch.i586.0/test.txt ]
+]]></steps>
+</testcase>
diff --git a/cases/build/test_build_clean_ia32.case b/cases/build/test_build_clean_ia32.case
new file mode 100644 (file)
index 0000000..54f8d16
--- /dev/null
@@ -0,0 +1,35 @@
+<testcase>
+  <summary>clean buildroot if repo data updated</summary>
+  <tracking>
+    <ticket>157</ticket>
+  </tracking>
+  <fixtures>
+    <copy src="tools/create_proj" />
+    <copy src="tools/assert" />
+    <copy src="specs/fake.spec" />
+    <copy src="conf/base.cfg" />
+  </fixtures>
+  <steps><![CDATA[
+. assert
+
+sudo /bin/rm -rf $GBS_LOCAL_REPOS
+
+./create_proj fake.spec
+
+gbs -c base.cfg build --clean -A i586 2>&1
+
+time1=`stat -c "%y" $GBS_ROOT_I686_0`
+
+sudo /bin/rm -rf $GBS_LOCAL_REPOS
+
+gbs -c base.cfg build --clean -A i586 2>&1
+
+time2=`stat -c "%y" $GBS_ROOT_I686_0`
+
+AssertCleanWith fake
+
+AssertRPMsIWith fake
+
+test "$time1" != "$time2"
+]]></steps>
+</testcase>
diff --git a/cases/build/test_build_clean_repo.case b/cases/build/test_build_clean_repo.case
new file mode 100644 (file)
index 0000000..04282bb
--- /dev/null
@@ -0,0 +1,38 @@
+<testcase>
+  <summary>--clean-repos will remove local repo RPM, SRPM and log dir before build</summary>
+  <tracking>
+    <ticket>548</ticket>
+  </tracking>
+  <fixtures>
+    <copy src="tools/create_proj" />
+    <copy src="tools/assert" />
+    <copy src="specs/fake.spec" />
+    <copy src="specs/sw-tools.spec" />
+    <copy src="conf/base.cfg" />
+  </fixtures>
+  <steps><![CDATA[
+. assert
+
+sudo /bin/rm -rf ${GBS_LOCAL_REPOS}
+
+sudo /bin/rm -rf $GBS_ROOT_I686_0
+
+./create_proj fake.spec
+
+./create_proj sw-tools.spec
+
+gbs -c base.cfg build fake -A i586
+
+AssertRPMsIWith fake
+
+gbs -c base.cfg build sw-tools -A i586
+
+AssertRPMsIWith fake
+
+gbs -c base.cfg build sw-tools -A i586 --clean-repos 2>&1 | tee log
+
+grep "cleaning up local repo:" log
+
+AssertRPMsIWithout fake
+]]></steps>
+</testcase>
diff --git a/cases/build/test_build_commit_ia32.case b/cases/build/test_build_commit_ia32.case
new file mode 100644 (file)
index 0000000..82e9b8f
--- /dev/null
@@ -0,0 +1,27 @@
+<testcase>
+  <summary>test commit feature</summary>
+  <fixtures>
+    <copy src="tools/create_proj" />
+    <copy src="specs/fake.spec" />
+    <copy src="conf/base.cfg" />
+  </fixtures>
+  <steps><![CDATA[
+sudo /bin/rm -rf ~/GBS-ROOT/local/repos
+
+sudo /bin/rm -rf ~/GBS-ROOT/local/BUILD-ROOTS/scratch.i586.0
+
+./create_proj fake.spec
+
+cd fake
+
+touch xyz && git add xyz &&git commit -m "for test head~1"
+
+gbs -c ../base.cfg build -c HEAD~1 -A i586 2>&1 | tee ../log
+
+test -z "`grep "mount:.*scratch" log`"
+
+test -n "`git status | grep "working directory clean"`" && cd ..
+
+test -n "`find ~/GBS-ROOT/local/repos -name "*fake*.rpm"`"
+]]></steps>
+</testcase>
diff --git a/cases/build/test_build_commit_ia32_negative.case b/cases/build/test_build_commit_ia32_negative.case
new file mode 100644 (file)
index 0000000..2a317e6
--- /dev/null
@@ -0,0 +1,28 @@
+<testcase>
+  <summary>test commit feature with multi-specs</summary>
+  <fixtures>
+    <copy src="tools/create_proj" />
+    <copy src="specs/fake.spec" />
+    <copy src="specs/fake-dev.spec" />
+    <copy src="conf/base.cfg" />
+  </fixtures>
+  <steps><![CDATA[
+sudo /bin/rm -rf ~/GBS-ROOT/local/repos
+
+sudo /bin/rm -rf ~/GBS-ROOT/local/BUILD-ROOTS/scratch.i586.0
+
+./create_proj fake.spec fake-dev.spec
+
+touch fake/xyz && cd fake && git add xyz && git commit -m "add xyz"
+
+(! gbs -c ../base.cfg build -c HEAD~1 -A i586 2>&1 | tee ../log)
+
+cd ..
+
+(! grep "mount:.*scratch" log)
+
+cd fake && test -n "`git status | grep "working directory clean"`" && cd ..
+
+grep "error:.*multiple packages" log
+]]></steps>
+</testcase>
diff --git a/cases/build/test_build_configure_exlude_packages_in_profile_section.case b/cases/build/test_build_configure_exlude_packages_in_profile_section.case
new file mode 100644 (file)
index 0000000..b2706ee
--- /dev/null
@@ -0,0 +1,44 @@
+<testcase>
+  <summary>configure exclude_packages in profile section in conf </summary>
+  <fixtures>
+    <copy src="tools/create_proj" />
+    <copy src="specs/fake.spec" />
+    <copy src="specs/fake-dev.spec" />
+    <copy src="specs/xorg-x11-filesystem.spec" />
+    <copy src="conf/base.cfg" />
+  </fixtures>
+  <steps><![CDATA[
+sudo /bin/rm -rf ~/GBS-ROOT/local/repos
+
+sudo /bin/rm -rf ~/GBS-ROOT/local/BUILD-ROOTS/scratch.i586.0
+
+./create_proj fake.spec
+
+./create_proj fake-dev.spec
+
+./create_proj xorg-x11-filesystem.spec
+
+#Add exclude_package in profile section of base.cfg
+sed -i "/\[profile.tizen\]/a exclude_packages=fake, fake-dev" base.cfg
+
+gbs -c base.cfg build -A i586 | tee log
+
+cd fake && test -n "`git status | grep "working directory clean"`" && cd ..
+
+cd power && test -n "`git status | grep "working directory clean"`" && cd ..
+
+cd xorg-x11-filesystem && test -n "`git status | grep "working directory clean"`" && cd ..
+
+test -z "`find ~/GBS-ROOT/local/repos -name "*fake*.rpm"`"
+
+test -z "`find ~/GBS-ROOT/local/repos -name "*fake-dev*.rpm"`"
+
+test -n "`find ~/GBS-ROOT/local/repos -name "*xorg-x11-filesystem*.rpm"`"
+
+#The exclude packages info
+grep -i "info: the following packages have been excluded build from gbs config:" log
+
+#The only package being built
+grep -i "\[1\/1\] building xorg-x11-filesystem" log
+]]></steps>
+</testcase>
diff --git a/cases/build/test_build_cyclic_dependency.case b/cases/build/test_build_cyclic_dependency.case
new file mode 100644 (file)
index 0000000..5b4b5eb
--- /dev/null
@@ -0,0 +1,18 @@
+<testcase>
+  <summary>gbs building circular cause</summary>
+  <fixtures>
+    <copy src="tools/create_proj" />
+    <copy src="specs/chicken.spec" />
+    <copy src="specs/egg.spec" />
+    <copy src="conf/base.cfg" />
+  </fixtures>
+  <steps><![CDATA[
+./create_proj chicken.spec egg.spec -C cyclic
+
+(! gbs -c base.cfg build -A i586 cyclic/ 2>&1 | tee log)
+
+cat log
+
+grep -E "circle found: (systemd->libtool->systemd|libtool->systemd->libtool)" log
+]]></steps>
+</testcase>
diff --git a/cases/build/test_build_debug_ia32.case b/cases/build/test_build_debug_ia32.case
new file mode 100644 (file)
index 0000000..5ac58d5
--- /dev/null
@@ -0,0 +1,26 @@
+<testcase>
+  <summary>test gbs debug feature</summary>
+  <fixtures>
+    <copy src="tools/create_proj" />
+    <copy src="tools/assert" />
+    <copy src="specs/fake.spec" />
+    <copy src="conf/base.cfg" />
+  </fixtures>
+  <steps><![CDATA[
+. assert
+
+sudo /bin/rm -rf ${GBS_LOCAL_REPOS}
+
+sudo /bin/rm -rf ${GBS_ROOT_I686_0}
+
+./create_proj fake.spec
+
+gbs -c base.cfg build --debug -A i586 2>&1 | tee log
+
+test -z "`grep "mount:.*scratch" log`"
+
+AssertRPMsIWith fake
+
+AssertCleanWith fake
+]]></steps>
+</testcase>
diff --git a/cases/build/test_build_define.case b/cases/build/test_build_define.case
new file mode 100644 (file)
index 0000000..87f21f8
--- /dev/null
@@ -0,0 +1,25 @@
+<testcase>
+  <summary>use --define option to define macro for rpmbuild</summary>
+  <tracking>
+    <ticket>540</ticket>
+  </tracking>
+  <fixtures>
+    <copy src="tools/create_proj" />
+    <copy src="tools/assert" />
+    <copy src="specs/fake.spec" />
+    <copy src="conf/base.cfg" />
+  </fixtures>
+  <steps><![CDATA[
+. assert
+
+sudo /bin/rm -rf ~/GBS-ROOT/local/repos
+
+sudo /bin/rm -rf ${GBS_ROOT_I686_0}
+
+./create_proj fake.spec
+
+gbs -c base.cfg build -A i586 --define "DEBUG 1" --define "PRODUCT 0" 2>&1 | tee log
+
+grep -E "exec rpmbuild .*--define .*DEBUG 1[^-]*--define .*PRODUCT 0" log
+]]></steps>
+</testcase>
diff --git a/cases/build/test_build_dependency_version_ia32.case b/cases/build/test_build_dependency_version_ia32.case
new file mode 100644 (file)
index 0000000..2f5fda6
--- /dev/null
@@ -0,0 +1,41 @@
+<testcase>
+  <summary>fake-dev depend on fake, gbs build select highest ver of fake</summary>
+  <fixtures>
+    <copy src="tools/create_proj" />
+    <copy src="tools/assert" />
+    <copy src="specs/fake.spec" />
+    <copy src="specs/fake-dev.spec" />
+    <copy src="conf/base.cfg" />
+  </fixtures>
+  <steps><![CDATA[
+. assert
+
+sudo /bin/rm -rf $GBS_LOCAL_REPOS
+
+sudo /bin/rm -rf ${GBS_ROOT_I686_0}
+
+./create_proj fake.spec
+
+./create_proj fake-dev.spec
+
+gbs -c base.cfg build -A i586 fake 2>&1
+
+sed -i "/^Source/a BuildRequires: fake >= 1.0" fake-dev/packaging/fake-dev.spec
+
+cd fake-dev && git commit -am 'depend on fake 1.0+' && cd ..
+
+gbs -c base.cfg build -A i586 fake-dev 2>&1
+
+AssertRootI0With fake| grep 1.0
+
+sed -i "s/^Version.*$/Version: 2.0/" fake/packaging/fake.spec
+
+cd fake && git commit -am 'change ver to 2.0' && cd ..
+
+gbs -c base.cfg build -A i586 fake 2>&1
+
+gbs -c base.cfg build -A i586 --overwrite --clean fake-dev 2>&1
+
+AssertRootI0With fake| grep 2.0
+]]></steps>
+</testcase>
diff --git a/cases/build/test_build_deps_ia32.case b/cases/build/test_build_deps_ia32.case
new file mode 100644 (file)
index 0000000..3c1e920
--- /dev/null
@@ -0,0 +1,47 @@
+<testcase>
+  <summary>test gbs build deps feature</summary>
+  <tracking>
+    <ticket>704</ticket>
+  </tracking>
+  <fixtures>
+    <copy src="tools/create_proj" />
+    <copy src="tools/assert" />
+    <copy src="specs/fake.spec" />
+    <copy src="specs/fake-dev.spec" />
+    <copy src="conf/base.cfg" />
+  </fixtures>
+  <steps><![CDATA[
+. assert
+
+sudo /bin/rm -rf $GBS_LOCAL_REPOS
+
+sudo /bin/rm -rf ${GBS_ROOT_I686_0}
+
+./create_proj fake.spec
+
+./create_proj fake-dev.spec
+
+sed -i "/^Source/a BuildRequires: fake" fake-dev/packaging/fake-dev.spec
+
+cd fake-dev && git commit -am 'depend on fake' && cd ..
+
+#generate fake rpm in localrepo
+gbs -c base.cfg build -A i586 fake 2>&1
+
+echo fake-dev| tee list
+
+#without --deps only build fake-dev
+gbs -c base.cfg build -A i586 --binary-from-file=list 2>&1| tee log
+
+(! grep "finished building fake$" log)
+
+grep "finished building fake-dev" log
+
+#with --deps build fake fake-dev
+gbs -c base.cfg build -A i586 --overwrite --deps --binary-from-file=list 2>&1| tee log2
+
+grep "finished building fake$" log2
+
+grep "finished building fake-dev" log2
+]]></steps>
+</testcase>
diff --git a/cases/build/test_build_deps_more_ia32.case b/cases/build/test_build_deps_more_ia32.case
new file mode 100644 (file)
index 0000000..d21ff4f
--- /dev/null
@@ -0,0 +1,54 @@
+<testcase>
+  <summary>test build --deps with package C [C->B->A, D]</summary>
+  <tracking>
+    <ticket>704</ticket>
+  </tracking>
+  <fixtures>
+    <copy src="tools/create_proj" />
+    <copy src="tools/assert" />
+    <copy src="specs/fake.spec" />
+    <copy src="specs/fake-dev.spec" />
+    <copy src="specs/tizen-release.spec" />
+    <copy src="specs/xorg-x11-filesystem.spec" />
+    <copy src="conf/base.cfg" />
+  </fixtures>
+  <steps><![CDATA[
+. assert
+
+sudo /bin/rm -rf $GBS_LOCAL_REPOS
+
+sudo /bin/rm -rf $GBS_ROOT_I686_0
+
+./create_proj fake.spec
+
+./create_proj fake-dev.spec
+
+./create_proj tizen-release.spec
+
+./create_proj xorg-x11-filesystem.spec
+
+sed -i "/^Source/a BuildRequires: fake" fake-dev/packaging/fake-dev.spec
+
+cd fake-dev && git commit -am 'depend on fake' && cd ..
+
+sed -i "/^BuildArch/a BuildRequires: fake-dev" tizen-release/packaging/tizen-release.spec
+
+cd tizen-release && git commit -am 'depend on fake-dev' && cd ..
+
+#generate rpms in localrepo
+gbs -c base.cfg build -A i586
+
+echo tizen-release| tee list
+
+#with --deps build fake fake-dev tizen-release
+gbs -c base.cfg build -A i586 --overwrite --deps --binary-from-file=list 2>&1| tee log
+
+grep "finished building fake$" log
+
+grep "finished building fake-dev" log
+
+grep "finished building tizen-release" log
+
+(! grep "finished building xorg-x11-filesystem" log)
+]]></steps>
+</testcase>
diff --git a/cases/build/test_build_deps_rdeps_ia32.case b/cases/build/test_build_deps_rdeps_ia32.case
new file mode 100644 (file)
index 0000000..f97b135
--- /dev/null
@@ -0,0 +1,54 @@
+<testcase>
+  <summary>test build --deps --rdeps with package B [C->B->A, D]</summary>
+  <tracking>
+    <ticket>704</ticket>
+  </tracking>
+  <fixtures>
+    <copy src="tools/create_proj" />
+    <copy src="tools/assert" />
+    <copy src="specs/fake.spec" />
+    <copy src="specs/fake-dev.spec" />
+    <copy src="specs/tizen-release.spec" />
+    <copy src="specs/xorg-x11-filesystem.spec" />
+    <copy src="conf/base.cfg" />
+  </fixtures>
+  <steps><![CDATA[
+. assert
+
+sudo /bin/rm -rf $GBS_LOCAL_REPOS
+
+sudo /bin/rm -rf $GBS_ROOT_I686_0
+
+./create_proj fake.spec
+
+./create_proj fake-dev.spec
+
+./create_proj tizen-release.spec
+
+./create_proj xorg-x11-filesystem.spec
+
+sed -i "/^Source/a BuildRequires: fake" fake-dev/packaging/fake-dev.spec
+
+cd fake-dev && git commit -am 'depend on fake' && cd ..
+
+sed -i "/^BuildArch/a BuildRequires: fake-dev" tizen-release/packaging/tizen-release.spec
+
+cd tizen-release && git commit -am 'depend on fake-dev' && cd ..
+
+#generate fake rpms in localrepo
+gbs -c base.cfg build -A i586
+
+echo fake-dev| tee list
+
+#with --rdeps build fake fake-dev tizen-release
+gbs -c base.cfg build -A i586 --overwrite --deps --rdeps --binary-from-file=list 2>&1| tee log
+
+grep "finished building fake$" log
+
+grep "finished building fake-dev" log
+
+grep "finished building tizen-release" log
+
+(! grep "finished building xorg-x11-filesystem" log)
+]]></steps>
+</testcase>
diff --git a/cases/build/test_build_dist_ia32.case b/cases/build/test_build_dist_ia32.case
new file mode 100644 (file)
index 0000000..892e38e
--- /dev/null
@@ -0,0 +1,40 @@
+<testcase>
+  <summary>test dist feature</summary>
+  <fixtures>
+    <copy src="tools/create_proj" />
+    <copy src="tools/assert" />
+    <copy src="specs/fake.spec" />
+    <copy src="specs/xorg-x11-filesystem.spec" />
+    <copy src="conf/base.cfg" />
+    <copy src="conf/tizen.conf" />
+  </fixtures>
+  <steps><![CDATA[
+. assert
+
+sudo /bin/rm -rf $GBS_LOCAL_REPOS
+
+sudo /bin/rm -rf ${GBS_ROOT_I686_0}
+
+./create_proj xorg-x11-filesystem.spec
+
+./create_proj fake.spec
+
+#download dist conf
+gbs -d -c base.cfg build -A i586 xorg-x11-filesystem 2>&1| tee log
+
+#grep something like this:
+#gbs:info: build conf has been downloaded at:
+#    /var/tmp/test-gbs/tizen.conf
+#in log
+grep "^[ \t].*conf" log
+
+#use the download dist conf
+gbs -d -c base.cfg build --dist tizen.conf -A i586 fake 2>&1| tee log2
+
+(! grep "^[ \t].*conf" log2)
+
+AssertCleanWith fake
+
+AssertRPMsIWith fake
+]]></steps>
+</testcase>
diff --git a/cases/build/test_build_dist_negative_ia32.case b/cases/build/test_build_dist_negative_ia32.case
new file mode 100644 (file)
index 0000000..0cca8c6
--- /dev/null
@@ -0,0 +1,25 @@
+<testcase>
+  <summary>test dist feature with wrong conf</summary>
+  <fixtures>
+    <copy src="tools/create_proj" />
+    <copy src="specs/xorg-x11-filesystem.spec" />
+    <copy src="conf/base.cfg" />
+  </fixtures>
+  <steps><![CDATA[
+sudo /bin/rm -rf ~/GBS-ROOT/local/repos
+
+./create_proj xorg-x11-filesystem.spec
+
+touch tizen.conf
+
+# using am empty build conf, it will fail
+(! gbs -c base.cfg build --dist ./tizen.conf -A i586 2>&1 | tee log)
+
+#buildroot is destroyed, for other cases, delete buildroot
+sudo /bin/rm -rf ~/GBS-ROOT/local/BUILD-ROOTS/*scratch*0*
+
+test -z "`grep "mount:.*scratch" log`"
+
+cd xorg-x11-filesystem && test -n "`git status | grep "working directory clean"`" && cd ..
+]]></steps>
+</testcase>
diff --git a/cases/build/test_build_dist_without_builddata.case b/cases/build/test_build_dist_without_builddata.case
new file mode 100644 (file)
index 0000000..a57cd0a
--- /dev/null
@@ -0,0 +1,21 @@
+<testcase>
+  <summary>test build --dist tizen.conf without builddata in repo</summary>
+  <fixtures>
+    <copy src="tools/create_proj" />
+    <copy src="tools/assert" />
+    <copy src="specs/fake.spec" />
+    <copy src="conf/base.cfg" />
+  </fixtures>
+  <steps><![CDATA[
+. assert
+
+sudo /bin/rm -rf $GBS_LOCAL_REPOS
+
+./create_proj fake.spec
+
+#there is no build conf in the builddata dir of repo
+(! gbs -c base.cfg build -A i586 -P tizen_without_conf fake 2>&1|tee log )
+
+grep "error.*failed to get build conf from repo" log
+]]></steps>
+</testcase>
diff --git a/cases/build/test_build_distconf_path_conflict.case b/cases/build/test_build_distconf_path_conflict.case
new file mode 100644 (file)
index 0000000..930ab10
--- /dev/null
@@ -0,0 +1,22 @@
+<testcase>
+  <summary>specify dist conf path is /var/tmp/$USER-gbs/tizen.conf</summary>
+  <fixtures>
+    <copy src="tools/create_proj" />
+    <copy src="specs/fake.spec" />
+    <copy src="conf/base.cfg" />
+    <copy src="conf/tizen.conf" />
+  </fixtures>
+  <steps><![CDATA[
+sudo /bin/rm -rf ~/GBS-ROOT/local/repos
+
+./create_proj fake.spec
+
+mkdir -p /var/tmp/$USER-gbs/
+
+cp tizen.conf /var/tmp/$USER-gbs/
+
+(! gbs -c base.cfg build --dist /var/tmp/$USER-gbs/tizen.conf -A i586 2>&1 | tee log)
+
+grep -i "Error:.*tizen.conf.*and.*are the same file" log
+]]></steps>
+</testcase>
diff --git a/cases/build/test_build_exclude-from-file_ia32.case b/cases/build/test_build_exclude-from-file_ia32.case
new file mode 100644 (file)
index 0000000..6de8e24
--- /dev/null
@@ -0,0 +1,43 @@
+<testcase>
+  <summary>test exclude-from-file feature</summary>
+  <fixtures>
+    <copy src="tools/create_proj" />
+    <copy src="specs/fake.spec" />
+    <copy src="specs/capi-system-power.spec" />
+    <copy src="specs/xorg-x11-filesystem.spec" />
+    <copy src="conf/base.cfg" />
+  </fixtures>
+  <steps><![CDATA[
+sudo /bin/rm -rf ~/GBS-ROOT/local/repos
+
+sudo /bin/rm -rf ~/GBS-ROOT/local/BUILD-ROOTS/scratch.i586.0
+
+./create_proj fake.spec
+
+./create_proj -C power capi-system-power.spec
+
+./create_proj xorg-x11-filesystem.spec
+
+touch file-list
+
+echo fake >> file-list
+
+echo power >> file-list
+
+gbs -c base.cfg build --exclude-from-file=file-list -A i586 2>&1 | tee log
+
+test -z "`grep "mount:.*scratch" log`"
+
+cd fake && test -n "`git status | grep "working directory clean"`" && cd ..
+
+cd power && test -n "`git status | grep "working directory clean"`" && cd ..
+
+cd xorg-x11-filesystem && test -n "`git status | grep "working directory clean"`" && cd ..
+
+test -z "`find ~/GBS-ROOT/local/repos -name "*fake*.rpm"`"
+
+test -z "`find ~/GBS-ROOT/local/repos -name "*power*.rpm"`"
+
+test -n "`find ~/GBS-ROOT/local/repos -name "*xorg-x11-filesystem*.rpm"`"
+]]></steps>
+</testcase>
diff --git a/cases/build/test_build_exclude_arm.case b/cases/build/test_build_exclude_arm.case
new file mode 100644 (file)
index 0000000..54224e6
--- /dev/null
@@ -0,0 +1,40 @@
+<testcase>
+  <summary>test exclude feature</summary>
+  <fixtures>
+    <copy src="tools/create_proj" />
+    <copy src="specs/fake.spec" />
+    <copy src="specs/capi-system-power.spec" />
+    <copy src="specs/xorg-x11-filesystem.spec" />
+    <copy src="conf/base.cfg" />
+  </fixtures>
+  <steps><![CDATA[
+sudo /bin/rm -rf ~/GBS-ROOT/local/repos
+
+sudo /bin/rm -rf ~/GBS-ROOT/local/BUILD-ROOTS/scratch.armv7l.0
+
+./create_proj fake.spec
+
+./create_proj -C power capi-system-power.spec
+
+./create_proj xorg-x11-filesystem.spec
+
+#broken register
+sudo sh -c "echo -1 >/proc/sys/fs/binfmt_misc/status"
+
+gbs -c base.cfg build --exclude=power,fake -A armv7l 2>&1 | tee log
+
+test -z "`grep "mount:.*scratch" log`"
+
+cd fake && test -n "`git status | grep "working directory clean"`" && cd ..
+
+cd power && test -n "`git status | grep "working directory clean"`" && cd ..
+
+cd xorg-x11-filesystem && test -n "`git status | grep "working directory clean"`" && cd ..
+
+test -z "`find ~/GBS-ROOT/local/repos -name "*fake*.rpm"`"
+
+test -z "`find ~/GBS-ROOT/local/repos -name "*power*.rpm"`"
+
+test -n "`find ~/GBS-ROOT/local/repos -name "*xorg-x11-filesystem*.rpm"`"
+]]></steps>
+</testcase>
diff --git a/cases/build/test_build_exclude_ia32.case b/cases/build/test_build_exclude_ia32.case
new file mode 100644 (file)
index 0000000..362d62d
--- /dev/null
@@ -0,0 +1,37 @@
+<testcase>
+  <summary>test exclude feature</summary>
+  <fixtures>
+    <copy src="tools/create_proj" />
+    <copy src="specs/fake.spec" />
+    <copy src="specs/capi-system-power.spec" />
+    <copy src="specs/xorg-x11-filesystem.spec" />
+    <copy src="conf/base.cfg" />
+  </fixtures>
+  <steps><![CDATA[
+sudo /bin/rm -rf ~/GBS-ROOT/local/repos
+
+sudo /bin/rm -rf ~/GBS-ROOT/local/BUILD-ROOTS/scratch.i586.0
+
+./create_proj fake.spec
+
+./create_proj -C power capi-system-power.spec
+
+./create_proj xorg-x11-filesystem.spec
+
+gbs -c base.cfg build --exclude=power,fake -A i586 2>&1 | tee log
+
+test -z "`grep "mount:.*scratch" log`"
+
+cd fake && test -n "`git status | grep "working directory clean"`" && cd ..
+
+cd power && test -n "`git status | grep "working directory clean"`" && cd ..
+
+cd xorg-x11-filesystem && test -n "`git status | grep "working directory clean"`" && cd ..
+
+test -z "`find ~/GBS-ROOT/local/repos -name "*fake*.rpm"`"
+
+test -z "`find ~/GBS-ROOT/local/repos -name "*power*.rpm"`"
+
+test -n "`find ~/GBS-ROOT/local/repos -name "*xorg-x11-filesystem*.rpm"`"
+]]></steps>
+</testcase>
diff --git a/cases/build/test_build_export_filter.case b/cases/build/test_build_export_filter.case
new file mode 100644 (file)
index 0000000..6771861
--- /dev/null
@@ -0,0 +1,31 @@
+<testcase>
+  <summary>support ExportFilter in build.conf</summary>
+  <tracking>
+    <ticket>1131</ticket>
+  </tracking>
+  <fixtures>
+    <copy src="tools/create_proj" />
+    <copy src="specs/fake.spec" />
+    <copy src="specs/sw-tools.spec" />
+    <copy src="conf/base.cfg" />
+    <copy src="conf/tizen.conf" />
+  </fixtures>
+  <steps><![CDATA[
+./create_proj fake.spec
+
+gbs -c base.cfg build --arch=i586 --clean --overwrite fake
+
+./create_proj sw-tools.spec
+
+sed -i '29 a\ExportFilter: ^fake.*\\.i586\\.rpm$ armv7l' tizen.conf
+
+sed -i '46 a\Preinstall: fake' tizen.conf
+
+#broken register
+sudo sh -c "echo -1 >/proc/sys/fs/binfmt_misc/status"
+
+gbs -c base.cfg build -D tizen.conf -R ~/GBS-ROOT/local/repos/tizen/i586/RPMS -A armv7l --clean --overwrite sw-tools
+
+sudo chroot ~/GBS-ROOT/local/BUILD-ROOTS/scratch.armv7l.0 rpm -q fake
+]]></steps>
+</testcase>
diff --git a/cases/build/test_build_extra-packs_ccache_ia32.case b/cases/build/test_build_extra-packs_ccache_ia32.case
new file mode 100644 (file)
index 0000000..103edc9
--- /dev/null
@@ -0,0 +1,30 @@
+<testcase>
+  <summary>test extra-packs with ccache option</summary>
+  <fixtures>
+    <copy src="tools/create_proj" />
+    <copy src="specs/xorg-x11-filesystem.spec" />
+    <copy src="conf/base.cfg" />
+  </fixtures>
+  <steps><![CDATA[
+sudo /bin/rm -rf ~/GBS-ROOT/local/repos
+
+#rm build root for checking install packages later
+sudo /bin/rm -rf ~/GBS-ROOT/local/BUILD-ROOTS/scratch.i586.0
+
+./create_proj xorg-x11-filesystem.spec
+
+gbs -c base.cfg build --extra-packs=giflib,smack xorg-x11-filesystem --ccache -A i586 2>&1 | tee log
+
+test -n "`awk '/init_buildsystem/&&/giflib/&&/smack/&&/ccache/' log`"
+
+#check source package unchanged
+cd xorg-x11-filesystem && test -n "`git status | grep "working directory clean"`" && cd ..
+
+test -n "`find ~/GBS-ROOT/local/repos -name "*xorg-x11-filesystem*.rpm"`"
+
+#check extra-packs packages installed in build root
+test -n "`sudo chroot ~/GBS-ROOT/local/BUILD-ROOTS/scratch.i586.0 rpm -q giflib | grep "giflib-"`"
+
+test -n "`sudo chroot ~/GBS-ROOT/local/BUILD-ROOTS/scratch.i586.0 rpm -q smack | grep "smack-"`"
+]]></steps>
+</testcase>
diff --git a/cases/build/test_build_extra-packs_ia32.case b/cases/build/test_build_extra-packs_ia32.case
new file mode 100644 (file)
index 0000000..105d51e
--- /dev/null
@@ -0,0 +1,33 @@
+<testcase>
+  <summary>specify extra packages installed in buildroot with --extra-packs</summary>
+  <tracking>
+    <ticket>119</ticket>
+  </tracking>
+  <fixtures>
+    <copy src="tools/create_proj" />
+    <copy src="specs/xorg-x11-filesystem.spec" />
+    <copy src="conf/base.cfg" />
+  </fixtures>
+  <steps><![CDATA[
+sudo /bin/rm -rf ~/GBS-ROOT/local/repos
+
+#rm build root for checking install packages later
+sudo /bin/rm -rf ~/GBS-ROOT/local/BUILD-ROOTS/scratch.i586.0
+
+./create_proj xorg-x11-filesystem.spec
+
+gbs -c base.cfg build --extra-packs=giflib,smack xorg-x11-filesystem -A i586 2>&1 | tee log
+
+test -n "`awk '/init_buildsystem/&&/giflib/&&/smack/' log`"
+
+#check source package unchanged
+cd xorg-x11-filesystem && test -n "`git status | grep "working directory clean"`" && cd ..
+
+test -n "`find ~/GBS-ROOT/local/repos -name "*xorg-x11-filesystem*.rpm"`"
+
+#check extra-packs packages installed in build root
+test -n "`sudo chroot ~/GBS-ROOT/local/BUILD-ROOTS/scratch.i586.0 rpm -q giflib | grep "giflib-"`"
+
+test -n "`sudo chroot ~/GBS-ROOT/local/BUILD-ROOTS/scratch.i586.0 rpm -q smack | grep "smack-"`"
+]]></steps>
+</testcase>
diff --git a/cases/build/test_build_fallback-to-native_with_no_tag.case b/cases/build/test_build_fallback-to-native_with_no_tag.case
new file mode 100644 (file)
index 0000000..9e32b15
--- /dev/null
@@ -0,0 +1,59 @@
+<testcase>
+  <summary>gbs build with option fallback-to-native for no tag package</summary>
+  <tracking>
+    <change>15859</change>
+    <change>15860</change>
+  </tracking>
+  <fixtures>
+    <copy src="tools/create_proj" />
+    <copy src="specs/sw-tools.spec" />
+    <copy src="conf/base.cfg" />
+  </fixtures>
+  <steps><![CDATA[
+sudo /bin/rm -rf ~/GBS-ROOT/local/repos
+
+sudo /bin/rm -rf ~/GBS-ROOT/local/BUILD-ROOTS/scratch.i586.0
+
+./create_proj sw-tools.spec --tizen
+
+cd sw-tools
+
+# Check tag exist
+git tag | grep upstream/0.1
+
+# gbs build with tag upstream/0.1
+gbs -c ../base.cfg build -A i586 2>&1 | tee ../log1
+
+# Check that build has been finished sucessful.
+test -n "`git status | grep "working directory clean"`"
+
+test -n "`find ~/GBS-ROOT/local/repos -name "*sw-tools*.rpm"`"
+
+# Delete the tag
+git tag -d upstream/0.1
+
+# Add new patch
+echo "new patch" >> README
+
+git commit -a -m "new patch"
+
+# gbs build without tag upstream/0.1
+( ! gbs -c ../base.cfg build -A i586 --clean --clean-repos 2>&1 | tee ../log2 )
+
+# Check that build has been finished unsucessful.
+grep -i "<gbs>Failed to export packaging files from git tree" ../log2
+
+grep -i "some packages failed to be built" ../log2
+
+# gbs build with option --fallback-to-native
+gbs -c ../base.cfg build -A i586 --fallback-to-native --clean --clean-repos 2>&1 | tee ../log3
+
+# Check that build has been finished sucessful.
+grep -i "Falling back to native, i.e. creating source archive directly from exported commit, without any patches" ../log3
+
+test -n "`git status | grep "working directory clean"`"
+
+test -n "`find ~/GBS-ROOT/local/repos -name "*sw-tools*.rpm"`"
+
+]]></steps>
+</testcase>
diff --git a/cases/build/test_build_fallback-to-native_with_non-default_gbs_configuration.case b/cases/build/test_build_fallback-to-native_with_non-default_gbs_configuration.case
new file mode 100644 (file)
index 0000000..bb7c78c
--- /dev/null
@@ -0,0 +1,77 @@
+<testcase>
+  <summary>gbs build with option fallback-to-native in other named conf and .gbs.conf under non-default path</summary>
+  <tracking>
+    <ticket>2263</ticket>
+    <change>16380</change>
+  </tracking>
+  <fixtures>
+    <copy src="tools/create_proj" />
+    <copy src="specs/sw-tools.spec" />
+    <copy src="conf/base.cfg" />
+  </fixtures>
+  <steps><![CDATA[
+sudo /bin/rm -rf ~/GBS-ROOT/local/repos
+
+sudo /bin/rm -rf ~/GBS-ROOT/local/BUILD-ROOTS/scratch.i586.0
+
+./create_proj sw-tools.spec --tizen
+
+cd sw-tools
+
+# Check tag exist
+git tag | grep upstream/0.1
+
+# gbs build with tag upstream/0.1
+gbs -c ../base.cfg build -A i586 2>&1 | tee ../log1
+
+# Check that build has been finished sucessful.
+test -n "`git status | grep "working directory clean"`"
+
+test -n "`find ~/GBS-ROOT/local/repos -name "*sw-tools*.rpm"`"
+
+# Delete the tag
+git tag -d upstream/0.1
+
+# Add new patch
+echo "new patch" >> README
+
+git commit -a -m "new patch"
+
+# gbs build without tag upstream/0.1
+( ! gbs -c ../base.cfg build -A i586 --clean --clean-repos 2>&1 | tee ../log2 )
+
+# Check that build has been finished unsucessful.
+grep -i "<gbs>Failed to export packaging files from git tree" ../log2
+
+grep -i "some packages failed to be built" ../log2
+
+# set fallback_to_native = true in base.cfg
+sed -i '3a fallback_to_native = true' ../base.cfg
+
+# gbs build with base.cfg in which fallback_to_native = true
+gbs -c ../base.cfg build -A i586 --clean --clean-repos 2>&1 | tee ../log3
+
+# Check that build has been finished sucessful.
+grep -i "Falling back to native, i.e. creating source archive directly from exported commit, without any patches" ../log3
+
+test -n "`git status | grep "working directory clean"`"
+
+test -n "`find ~/GBS-ROOT/local/repos -name "*sw-tools*.rpm"`"
+
+cp ../base.cfg ../.gbs.conf
+
+echo "new patch again" >> README
+
+git commit -a -m "new patch again"
+
+# the .gbs.conf under non-default path:HOME dir, git-tree dir, /etc/ and
+# top dir of tizen source
+gbs -c ../.gbs.conf build -A i586 --clean --clean-repos 2>&1 | tee ../log4
+
+# Check that build has been finished sucessful.
+grep -i "Falling back to native, i.e. creating source archive directly from exported commit, without any patches" ../log4
+
+test -n "`find ~/GBS-ROOT/local/repos -name "*sw-tools*.rpm"`"
+
+]]></steps>
+</testcase>
diff --git a/cases/build/test_build_fetch_buildconf_fail.case b/cases/build/test_build_fetch_buildconf_fail.case
new file mode 100644 (file)
index 0000000..4858579
--- /dev/null
@@ -0,0 +1,24 @@
+<testcase>
+  <summary>build with new structure repo</summary>
+  <tracking>
+    <change>5187</change>
+  </tracking>
+  <fixtures>
+    <copy src="tools/create_proj" />
+    <copy src="tools/assert" />
+    <copy src="specs/fake.spec" />
+    <copy src="conf/base.cfg" />
+  </fixtures>
+  <steps><![CDATA[
+. assert
+
+sudo /bin/rm -rf $GBS_LOCAL_REPOS
+
+./create_proj fake.spec
+
+#there is no xxx_build.conf.gz in repodata
+( ! gbs -c base.cfg build -P tizen_negative2 -A i586 fake 2>&1|tee log )
+
+grep -i "failed to get build conf from repos, please use snapshot repo or specify build config using -D option" log
+]]></steps>
+</testcase>
diff --git a/cases/build/test_build_help.case b/cases/build/test_build_help.case
new file mode 100644 (file)
index 0000000..afdbbdf
--- /dev/null
@@ -0,0 +1,11 @@
+<testcase>
+  <summary>Test gbs build help</summary>
+  <fixtures>
+    <copy src="conf/base.cfg" />
+  </fixtures>
+  <steps><![CDATA[
+gbs -c base.cfg build -h
+
+test -z "`grep "mount:.*scratch" log`"
+]]></steps>
+</testcase>
diff --git a/cases/build/test_build_in_subdir_ia32.case b/cases/build/test_build_in_subdir_ia32.case
new file mode 100644 (file)
index 0000000..fcb9928
--- /dev/null
@@ -0,0 +1,31 @@
+<testcase>
+  <summary>gbs can build in subdir of git directory as git command</summary>
+  <tracking>
+    <ticket>21</ticket>
+  </tracking>
+  <fixtures>
+    <copy src="tools/create_proj" />
+    <copy src="tools/assert" />
+    <copy src="specs/fake.spec" />
+    <copy src="conf/base.cfg" />
+  </fixtures>
+  <steps><![CDATA[
+. assert
+
+sudo /bin/rm -rf $GBS_LOCAL_REPOS
+
+sudo /bin/rm -rf $GBS_ROOT_I686_0
+
+./create_proj fake.spec
+
+cd fake/packaging
+
+gbs -c ../../base.cfg build  -A i586 2>&1
+
+cd ../..
+
+AssertCleanWith fake
+
+AssertRPMsIWith fake
+]]></steps>
+</testcase>
diff --git a/cases/build/test_build_include-all_ia32.case b/cases/build/test_build_include-all_ia32.case
new file mode 100644 (file)
index 0000000..a31a7c8
--- /dev/null
@@ -0,0 +1,33 @@
+<testcase>
+  <summary>build include un-commit changes with --include-all</summary>
+  <tracking>
+    <ticket>42</ticket>
+    <ticket>136</ticket>
+  </tracking>
+  <fixtures>
+    <copy src="tools/create_proj" />
+    <copy src="specs/fake.spec" />
+    <copy src="conf/base.cfg" />
+  </fixtures>
+  <steps><![CDATA[
+sudo /bin/rm -rf ~/GBS-ROOT/local/repos
+
+sudo /bin/rm -rf ~/GBS-ROOT/local/BUILD-ROOTS/scratch.i586.0
+
+./create_proj fake.spec
+
+touch fake/xyz
+
+gbs -c base.cfg build --include-all -A i586 2>&1 | tee log
+
+rm fake/xyz
+
+test -z "`grep "mount:.*scratch" log`"
+
+test -n "`grep ".*would be included.*" log`"
+
+cd fake && test -n "`git status | grep "working directory clean"`" && cd ..
+
+test -n "`find ~/GBS-ROOT/local/repos -name "*fake*.rpm"`"
+]]></steps>
+</testcase>
diff --git a/cases/build/test_build_include-all_on_develop_branch.case b/cases/build/test_build_include-all_on_develop_branch.case
new file mode 100644 (file)
index 0000000..b3795e9
--- /dev/null
@@ -0,0 +1,54 @@
+<testcase>
+  <summary>build with --include-all on development branch</summary>
+  <fixtures>
+    <copy src="tools/create_proj" />
+    <copy src="specs/sw-tools.spec" />
+    <copy src="conf/base.cfg" />
+  </fixtures>
+  <tracking>
+    <change>15689</change>
+  </tracking>
+  <steps><![CDATA[
+sudo /bin/rm -rf ~/GBS-ROOT/local/repos
+
+sudo /bin/rm -rf ~/GBS-ROOT/local/BUILD-ROOTS/scratch.i586.0
+
+./create_proj sw-tools.spec --tizen
+
+cd sw-tools
+
+gbs devel convert
+
+gbs devel start
+
+test -n "`git branch | grep "development"`"
+
+[ ! -d packaging ]
+
+# Add new commit on development branch
+touch file1
+
+git add file1
+
+git commit -m "add file1"
+
+# Add new file on development branch
+touch file2
+
+# Build on development branch
+gbs -c ../base.cfg build --include-all -A i586 2>&1 | tee ../log
+
+# Check build results.
+cd ..
+
+test -n "`find ~/GBS-ROOT/local/repos -name "*sw-tools*.rpm"`"
+
+test -n "`grep ".*the following untracked files would be included.*" log`"
+
+#The file1 patch:0001-add-file1.patch
+test -n "`grep ".*Generating patches from.*" log`"
+
+# Untracked file2 will be generated to diff file.
+test -n "`grep ".*Generating diff file.*" log`"
+]]></steps>
+</testcase>
diff --git a/cases/build/test_build_include-all_on_orphan_branch.case b/cases/build/test_build_include-all_on_orphan_branch.case
new file mode 100644 (file)
index 0000000..0c2dac3
--- /dev/null
@@ -0,0 +1,61 @@
+<testcase>
+  <summary>build with --include-all on orphan branch</summary>
+  <fixtures>
+    <copy src="tools/create_proj" />
+    <copy src="specs/sw-tools.spec" />
+    <copy src="conf/base.cfg" />
+  </fixtures>
+  <tracking>
+    <change>15689</change>
+  </tracking>
+  <steps><![CDATA[
+sudo /bin/rm -rf ~/GBS-ROOT/local/repos
+
+sudo /bin/rm -rf ~/GBS-ROOT/local/BUILD-ROOTS/scratch.i586.0
+
+./create_proj sw-tools.spec --tizen
+
+cd sw-tools
+
+gbs devel convert
+
+gbs devel start
+
+test -n "`git branch | grep "development"`"
+
+[ ! -d packaging ]
+
+# Add new commit on development branch
+touch file1
+
+git add file1
+
+git commit -m "add file1"
+
+# Export develop work to orphan branch
+gbs devel export
+
+# Check on orphan branch
+test -n "`git branch | grep "orphan"`"
+
+# Check Changes not staged for commit on orphan-branch
+test -n "`git status | grep sw-tools.spec`"
+
+test -n "`git status | grep file1.patch`"
+
+# Gbs build
+gbs -c ../base.cfg build --include-all -A i586 2>&1 | tee ../log
+
+# Check successfully build results.
+cd ..
+
+test -n "`find ~/GBS-ROOT/local/repos -name "*sw-tools*.rpm"`"
+
+#For packaging/0001-add-file1.patch
+test -n "`grep ".*the following untracked files would be included.*" log`"
+
+#For packaging/sw-tools.spec
+test -n "`grep ".*the following uncommitted changes would be included.*" log`"
+
+]]></steps>
+</testcase>
diff --git a/cases/build/test_build_incremental_arm.case b/cases/build/test_build_incremental_arm.case
new file mode 100644 (file)
index 0000000..a6bd36e
--- /dev/null
@@ -0,0 +1,31 @@
+<testcase>
+  <summary>test incremental feature</summary>
+  <fixtures>
+    <copy src="tools/create_proj" />
+    <copy src="specs/sw-tools.spec" />
+    <copy src="conf/base.cfg" />
+  </fixtures>
+  <steps><![CDATA[
+sudo /bin/rm -rf ~/GBS-ROOT/local/repos
+
+./create_proj sw-tools.spec
+
+#broken register
+sudo sh -c "echo -1 >/proc/sys/fs/binfmt_misc/status"
+
+gbs -c base.cfg build --clean -A armv7l sw-tools
+
+gbs -c base.cfg build --incremental -A armv7l sw-tools 2>&1 | tee log
+
+#check build log key word
+test -z "`grep "mount:.*scratch" log`"
+
+test -n "`grep "rpmbuild.*-bs" log`"
+
+#check rpm generated whether or not
+test -n "`find ~/GBS-ROOT/local/repos/ -name "*sw-tools*rpm"`"
+
+#check generated rpm whether is rpmlib(ShortCircuited) or not
+find ~/GBS-ROOT/local/repos/ -name "*rpm" |xargs -i rpm -qpR {} |grep "rpmlib(ShortCircuited)"
+]]></steps>
+</testcase>
diff --git a/cases/build/test_build_incremental_dir_arm.case b/cases/build/test_build_incremental_dir_arm.case
new file mode 100644 (file)
index 0000000..a74622d
--- /dev/null
@@ -0,0 +1,31 @@
+<testcase>
+  <summary>test incremental feature</summary>
+  <fixtures>
+    <copy src="tools/create_proj" />
+    <copy src="specs/sw-tools.spec" />
+    <copy src="conf/base.cfg" />
+  </fixtures>
+  <steps><![CDATA[
+sudo /bin/rm -rf ~/GBS-ROOT/local/repos
+
+./create_proj sw-tools.spec
+
+#broken register
+sudo sh -c "echo -1 >/proc/sys/fs/binfmt_misc/status"
+
+gbs -c base.cfg build --clean -A armv7l
+
+gbs -c base.cfg build --incremental -A armv7l 2>&1 | tee log
+
+#check build log key word
+test -z "`grep "mount:.*scratch" log`"
+
+test -n "`grep "rpmbuild.*-bs" log`"
+
+#check rpm generated whether or not
+test -n "`find ~/GBS-ROOT/local/repos/ -name "*sw-tools*rpm"`"
+
+#check generated rpm whether is rpmlib(ShortCircuited) or not
+find ~/GBS-ROOT/local/repos/ -name "*rpm" |xargs -i rpm -qpR {} |grep "rpmlib(ShortCircuited)"
+]]></steps>
+</testcase>
diff --git a/cases/build/test_build_incremental_dir_arm_illegal_pkg.case b/cases/build/test_build_incremental_dir_arm_illegal_pkg.case
new file mode 100644 (file)
index 0000000..d8bbac2
--- /dev/null
@@ -0,0 +1,31 @@
+<testcase>
+  <summary>test incremental feature with spec having no source tag</summary>
+  <fixtures>
+    <copy src="tools/create_proj" />
+    <copy src="specs/xorg-x11-filesystem.spec" />
+    <copy src="conf/base.cfg" />
+  </fixtures>
+  <steps><![CDATA[
+sudo /bin/rm -rf ~/GBS-ROOT/local/repos
+
+./create_proj xorg-x11-filesystem.spec
+
+#broken register
+sudo sh -c "echo -1 >/proc/sys/fs/binfmt_misc/status"
+
+gbs -c base.cfg build --clean -A armv7l
+
+#broken register
+sudo sh -c "echo -1 >/proc/sys/fs/binfmt_misc/status"
+
+gbs -c base.cfg build --incremental -A armv7l 2>&1 | tee log
+
+test -z "`grep "mount:.*scratch" log`"
+
+test -n "`grep "rpmbuild.*-bs" log`"
+
+test -n "`find ~/GBS-ROOT/local/repos -name "*xorg-x11-filesystem*rpm"`"
+
+find ~/GBS-ROOT/local/repos/ -name "*.rpm" | xargs -i rpm -qpR {} | grep "rpmlib(ShortCircuited)"
+]]></steps>
+</testcase>
diff --git a/cases/build/test_build_incremental_dir_ia32.case b/cases/build/test_build_incremental_dir_ia32.case
new file mode 100644 (file)
index 0000000..fdf7142
--- /dev/null
@@ -0,0 +1,28 @@
+<testcase>
+  <summary>test incremental feature</summary>
+  <fixtures>
+    <copy src="tools/create_proj" />
+    <copy src="specs/sw-tools.spec" />
+    <copy src="conf/base.cfg" />
+  </fixtures>
+  <steps><![CDATA[
+sudo /bin/rm -rf ~/GBS-ROOT/local/repos
+
+./create_proj sw-tools.spec
+
+gbs -c base.cfg build --clean -A i586 2>&1 | tee log
+
+gbs -c base.cfg build --incremental -A i586 2>&1 | tee log
+
+#check build log key word
+test -z "`grep "mount:.*scratch" log`"
+
+test -n "`grep "rpmbuild.*-bs" log`"
+
+#check rpm generated whether or not
+test -n "`find ~/GBS-ROOT/local/repos -name "*sw-tools*rpm"`"
+
+#check generated rpm whether is rpmlib(ShortCircuited) or not
+find ~/GBS-ROOT/local/repos -name "*rpm" |xargs -i rpm -qpR {} |grep "rpmlib(ShortCircuited)"
+]]></steps>
+</testcase>
diff --git a/cases/build/test_build_incremental_dir_ia32_illegal_pkg.case b/cases/build/test_build_incremental_dir_ia32_illegal_pkg.case
new file mode 100644 (file)
index 0000000..94eb75a
--- /dev/null
@@ -0,0 +1,25 @@
+<testcase>
+  <summary>test incremental with spec having no source tag</summary>
+  <fixtures>
+    <copy src="tools/create_proj" />
+    <copy src="specs/xorg-x11-filesystem.spec" />
+    <copy src="conf/base.cfg" />
+  </fixtures>
+  <steps><![CDATA[
+sudo /bin/rm -rf ~/GBS-ROOT/local/repos
+
+./create_proj xorg-x11-filesystem.spec
+
+gbs -c base.cfg build --clean -A i586
+
+gbs -c base.cfg build --incremental -A i586 2>&1 | tee log
+
+test -z "`grep "mount:.*scratch" log`"
+
+test -n "`grep "rpmbuild.*-bs" log`"
+
+test -n "`find ~/GBS-ROOT/local/repos -name "*xorg-x11-filesystem*rpm"`"
+
+find ~/GBS-ROOT/local/repos/ -name "*.rpm" | xargs -i rpm -qpR {} | grep "rpmlib(ShortCircuited)"
+]]></steps>
+</testcase>
diff --git a/cases/build/test_build_incremental_ia32.case b/cases/build/test_build_incremental_ia32.case
new file mode 100644 (file)
index 0000000..bc50c9a
--- /dev/null
@@ -0,0 +1,28 @@
+<testcase>
+  <summary>test incremental feature</summary>
+  <fixtures>
+    <copy src="tools/create_proj" />
+    <copy src="specs/sw-tools.spec" />
+    <copy src="conf/base.cfg" />
+  </fixtures>
+  <steps><![CDATA[
+sudo rm -rf ~/GBS-ROOT/local/repos
+
+./create_proj sw-tools.spec
+
+gbs -c base.cfg build --clean -A i586 sw-tools 2>&1 | tee log
+
+gbs -c base.cfg build --incremental -A i586 sw-tools 2>&1 | tee log
+
+#check build log key word
+test -z "`grep "mount:.*scratch" log`"
+
+test -n "`grep "rpmbuild.*-bs" log`"
+
+#check rpm generated whether or not
+test -n "`find ~/GBS-ROOT/local/repos -name "*sw-tools*rpm"`"
+
+#check generated rpm whether is rpmlib(ShortCircuited) or not
+find ~/GBS-ROOT/local/repos -name "*rpm" |xargs -i rpm -qpR {} |grep "rpmlib(ShortCircuited)"
+]]></steps>
+</testcase>
diff --git a/cases/build/test_build_incremental_incremental_noinit_ia32.case b/cases/build/test_build_incremental_incremental_noinit_ia32.case
new file mode 100644 (file)
index 0000000..93cbd95
--- /dev/null
@@ -0,0 +1,38 @@
+<testcase>
+  <summary>test incremental feature with noinit option</summary>
+  <fixtures>
+    <copy src="tools/create_proj" />
+    <copy src="specs/sw-tools.spec" />
+    <copy src="conf/base.cfg" />
+  </fixtures>
+  <steps><![CDATA[
+sudo /bin/rm -rf ~/GBS-ROOT/local/repos
+
+./create_proj sw-tools.spec
+
+gbs -c base.cfg build --clean -A i586
+
+gbs -c base.cfg build --incremental -A i586 2>&1 | tee log
+
+test -n "`grep "generate repositories" log`"
+
+time1=`find ~/GBS-ROOT/local/repos/ -name "*.rpm" |grep /RPMS/sw-tools |xargs -i stat -c %y {}`
+
+gbs -c base.cfg build --incremental --noinit -A i586 2>&1 | tee log
+
+time2=`find ~/GBS-ROOT/local/repos/ -name "*.rpm" |grep /RPMS/sw-tools |xargs -i stat -c %y {}`
+
+test "$time1" != "$time2"
+
+#check build log --no-init, then no generate repositories info
+test -z "`grep "generate repositories" log`"
+
+test -z "`grep "mount:.*scratch" log`"
+
+test -z "`grep "skip.*sw-tools" log`"
+
+test -n "`find ~/GBS-ROOT/local/repos -name "*sw-tools*.rpm"`"
+
+find ~/GBS-ROOT/local/repos/ -name "*rpm" |xargs -i rpm -qpR {} |grep "rpmlib(ShortCircuited)"
+]]></steps>
+</testcase>
diff --git a/cases/build/test_build_incremental_self_overwrite_ia32.case b/cases/build/test_build_incremental_self_overwrite_ia32.case
new file mode 100644 (file)
index 0000000..b2080cb
--- /dev/null
@@ -0,0 +1,34 @@
+<testcase>
+  <summary>test incremental feature of self overwrite</summary>
+  <fixtures>
+    <copy src="tools/create_proj" />
+    <copy src="specs/sw-tools.spec" />
+    <copy src="conf/base.cfg" />
+  </fixtures>
+  <steps><![CDATA[
+sudo /bin/rm -rf ~/GBS-ROOT/local/repos
+
+./create_proj sw-tools.spec
+
+gbs -c base.cfg build --clean -A i586 2>&1 | tee log
+
+gbs -c base.cfg build --incremental -A i586 2>&1 | tee log
+
+test -z "`grep "mount:.*scratch" log`"
+
+test -n "`find ~/GBS-ROOT/local/repos -name "*sw-tools*.rpm"`"
+
+#record generated rpm time
+time1=`find ~/GBS-ROOT/local/repos/ -name "*.rpm" |grep /RPMS/sw-tools |xargs -i stat -c %y {}`
+
+gbs -c base.cfg build --incremental -A i586 2>&1 | tee log
+
+time2=`find ~/GBS-ROOT/local/repos/ -name "*.rpm" |grep /RPMS/sw-tools |xargs -i stat -c %y {}`
+
+#check generated rpm whether is overwrite or not
+test "$time1" != "$time2"
+
+#check log whether is right or not
+test -z "`grep "skip.*sw-tools" log`"
+]]></steps>
+</testcase>
diff --git a/cases/build/test_build_incremental_skip-srcrpm.case b/cases/build/test_build_incremental_skip-srcrpm.case
new file mode 100644 (file)
index 0000000..5ae394c
--- /dev/null
@@ -0,0 +1,49 @@
+<testcase>
+  <summary>test --skip-srcrpm option with --incremental option</summary>
+  <tracking>
+    <change>15964</change>
+    <change>15976</change>
+    <change>15965</change>
+    <change>15977</change>
+  </tracking>
+  <fixtures>
+    <copy src="tools/create_proj" />
+    <copy src="specs/sw-tools.spec" />
+    <copy src="conf/base.cfg" />
+  </fixtures>
+  <steps><![CDATA[
+sudo /bin/rm -rf ~/GBS-ROOT/local/repos
+
+./create_proj sw-tools.spec
+
+# GBS build --incremental with --skip-srcrpm option
+gbs -c base.cfg build --incremental --skip-srcrpm -A i586 sw-tools 2>&1 | tee log1
+
+# Check that source rpm packages directory does not exist.
+! test -d ~/GBS-ROOT/local/repos/tizen/i586/SRPMS
+
+# Check log that source rpm packages have not been generated.
+test -z "`grep "generated source RPM packages can be found from local repo" log1`"
+
+# GBS build with --incremental option
+gbs -c base.cfg build --incremental -A i586 sw-tools --clean --clean-repos 2>&1 | tee log2
+
+# Check that source rpm packages have been generated.
+test -n "`grep "generated source RPM packages can be found from local repo" log2`"
+
+test -d ~/GBS-ROOT/local/repos/tizen/i586/SRPMS
+
+test -n "`find ~/GBS-ROOT/local/repos/tizen/i586/SRPMS -name "*sw-tools*.src.rpm"`"
+
+# GBS build --incremental with --skip-srcrpm option again
+gbs -c base.cfg build --incremental --skip-srcrpm -A i586 sw-tools 2>&1 | tee log3
+
+# Check that source rpm packages have not been generated and can not be found.
+test -z "`grep "generated source RPM packages can be found from local repo" log3`"
+
+test -d ~/GBS-ROOT/local/repos/tizen/i586/SRPMS
+
+test -z "`find ~/GBS-ROOT/local/repos/tizen/i586/SRPMS -name "*sw-tools*.src.rpm"`"
+
+]]></steps>
+</testcase>
diff --git a/cases/build/test_build_incremental_spec_arm.case b/cases/build/test_build_incremental_spec_arm.case
new file mode 100644 (file)
index 0000000..8bc61b1
--- /dev/null
@@ -0,0 +1,41 @@
+<testcase>
+  <summary>test incremental feature with spec option</summary>
+  <tracking>
+    <ticket>69</ticket>
+  </tracking>
+  <fixtures>
+    <copy src="tools/create_proj" />
+    <copy src="specs/fake.spec" />
+    <copy src="specs/fake-dev.spec" />
+    <copy src="conf/base.cfg" />
+  </fixtures>
+  <steps><![CDATA[
+sudo /bin/rm -rf ~/GBS-ROOT/local/repos
+
+sudo /bin/rm -rf ~/GBS-ROOT/local/BUILD-ROOTS/scratch.armv7l.*
+
+./create_proj fake.spec fake-dev.spec
+
+#broken register
+sudo sh -c "echo -1 >/proc/sys/fs/binfmt_misc/status"
+
+gbs -c base.cfg build --clean --spec=fake-dev.spec fake -A armv7l 2>&1 | tee log
+
+#check build log key word
+test -z "`grep "init_buildsystem.*fake.spec" log`"
+
+test -n "`grep "init_buildsystem.*fake-dev.spec" log`"
+
+gbs -c base.cfg build --incremental --spec=fake-dev.spec fake -A armv7l 2>&1 | tee log2
+
+test -z "`grep "mount:.*scratch" log2`"
+
+test -n "`grep "rpmbuild.*-b[c|p]" log2`"
+
+#check rpm generated whether or not
+test -n "`find ~/GBS-ROOT/local/repos -name "*fake-dev*rpm"`"
+
+#check generated rpm whether is rpmlib(ShortCircuited) or not
+find ~/GBS-ROOT/local/repos/ -name "*rpm" |xargs -i rpm -qpR {} |grep "rpmlib(ShortCircuited)"
+]]></steps>
+</testcase>
diff --git a/cases/build/test_build_incremental_spec_ia32.case b/cases/build/test_build_incremental_spec_ia32.case
new file mode 100644 (file)
index 0000000..30546ae
--- /dev/null
@@ -0,0 +1,38 @@
+<testcase>
+  <summary>test incremental feature with spec option</summary>
+  <tracking>
+    <ticket>69</ticket>
+  </tracking>
+  <fixtures>
+    <copy src="tools/create_proj" />
+    <copy src="specs/fake.spec" />
+    <copy src="specs/fake-dev.spec" />
+    <copy src="conf/base.cfg" />
+  </fixtures>
+  <steps><![CDATA[
+sudo /bin/rm -rf ~/GBS-ROOT/local/repos
+
+sudo /bin/rm -rf ~/GBS-ROOT/local/BUILD-ROOTS/scratch.i586.*
+
+./create_proj fake.spec fake-dev.spec
+
+gbs -c base.cfg build --clean --spec=fake-dev.spec fake -A i586 2>&1 | tee log
+
+#check build log key word
+test -z "`grep "init_buildsystem.*fake.spec" log`"
+
+test -n "`grep "init_buildsystem.*fake-dev.spec" log`"
+
+gbs -c base.cfg build --incremental --spec=fake-dev.spec fake -A i586 2>&1 | tee log2
+
+test -z "`grep "mount:.*scratch" log2`"
+
+test -n "`grep "rpmbuild.*-b[c|p]" log2`"
+
+#check rpm generated whether or not
+test -n "`find ~/GBS-ROOT/local/repos -name "*fake*rpm"`"
+
+#check generated rpm whether is rpmlib(ShortCircuited) or not
+find ~/GBS-ROOT/local/repos/ -name "*rpm" |xargs -i rpm -qpR {} |grep "rpmlib(ShortCircuited)"
+]]></steps>
+</testcase>
diff --git a/cases/build/test_build_incremental_spec_not_exist_ia32.case b/cases/build/test_build_incremental_spec_not_exist_ia32.case
new file mode 100644 (file)
index 0000000..4147cd4
--- /dev/null
@@ -0,0 +1,24 @@
+<testcase>
+  <summary>gbs build incremental with --spec which specfile not exist</summary>
+  <fixtures>
+    <copy src="tools/create_proj" />
+    <copy src="tools/assert" />
+    <copy src="specs/fake.spec" />
+    <copy src="conf/base.cfg" />
+  </fixtures>
+  <steps><![CDATA[
+. assert
+
+sudo /bin/rm -rf $GBS_LOCAL_REPOS
+
+./create_proj fake.spec
+
+gbs -c base.cfg build --clean -A i586 fake
+
+(! gbs -c base.cfg build --incremental --spec=no.spec -A i586 fake 2>&1| tee log)
+
+(! grep "/usr/bin/depanneur" log)
+
+grep "error.*No source package found at" log
+]]></steps>
+</testcase>
diff --git a/cases/build/test_build_invalid_username_or_passwd_of_repo.case b/cases/build/test_build_invalid_username_or_passwd_of_repo.case
new file mode 100644 (file)
index 0000000..0d46466
--- /dev/null
@@ -0,0 +1,20 @@
+<testcase>
+  <summary>gbs should print auth error info when username or passwd is wrong</summary>
+  <tracking>
+    <ticket>340</ticket>
+  </tracking>
+  <fixtures>
+    <copy src="tools/create_proj" />
+    <copy src="specs/fake.spec" />
+    <copy src="conf/invalid_user.cfg" />
+  </fixtures>
+  <steps><![CDATA[
+sudo /bin/rm -rf ~/GBS-ROOT/local/repos
+
+./create_proj fake.spec
+
+(! gbs -c invalid_user.cfg build fake -A i586 2>&1 | tee log)
+
+grep -E -i "error.*authenticate failed on" log
+]]></steps>
+</testcase>
diff --git a/cases/build/test_build_keep-packs_arm.case b/cases/build/test_build_keep-packs_arm.case
new file mode 100644 (file)
index 0000000..70a7385
--- /dev/null
@@ -0,0 +1,46 @@
+<testcase>
+  <summary>test keep-packs feature</summary>
+  <fixtures>
+    <copy src="tools/create_proj" />
+    <copy src="specs/xorg-x11-filesystem.spec" />
+    <copy src="specs/sw-tools.spec" />
+    <copy src="conf/base.cfg" />
+  </fixtures>
+  <steps><![CDATA[
+sudo /bin/rm -rf ~/GBS-ROOT/local/repos
+
+sudo /bin/rm -rf ~/GBS-ROOT/local/BUILD-ROOTS/scratch.armv7l.0
+
+./create_proj xorg-x11-filesystem.spec
+
+./create_proj sw-tools.spec
+
+gbs -c base.cfg build sw-tools -A armv7l 2>&1 | tee log
+
+count1="`sudo chroot ~/GBS-ROOT/local/BUILD-ROOTS/scratch.armv7l.0 rpm -qa | wc -l`"
+
+gbs -c base.cfg build xorg-x11-filesystem --keep-packs -A armv7l 2>&1 | tee log
+
+count2="`sudo chroot ~/GBS-ROOT/local/BUILD-ROOTS/scratch.armv7l.0 rpm -qa | wc -l`"
+
+test "$count1" == "$count2"
+
+test -z "`grep "deleting.*" log`"
+
+test -n "`grep "init_buildsystem.*keep-packs" log`"
+
+cd xorg-x11-filesystem && test -n "`git status | grep "working directory clean"`" && cd ..
+
+test -n "`find ~/GBS-ROOT/local/repos -name "*xorg-x11-filesystem*.rpm"`"
+
+gbs -c base.cfg build xorg-x11-filesystem -A armv7l --overwrite 2>&1 | tee log
+
+count3="`sudo chroot ~/GBS-ROOT/local/BUILD-ROOTS/scratch.armv7l.0 rpm -qa | wc -l`"
+
+test "$count2" \> "$count3"
+
+test -n "`grep "deleting.*" log`"
+
+test -z "`grep "init_buildsystem.*keep-packs" log`"
+]]></steps>
+</testcase>
diff --git a/cases/build/test_build_keep-packs_ia32.case b/cases/build/test_build_keep-packs_ia32.case
new file mode 100644 (file)
index 0000000..d8c74da
--- /dev/null
@@ -0,0 +1,46 @@
+<testcase>
+  <summary>test keep-packs feature</summary>
+  <fixtures>
+    <copy src="tools/create_proj" />
+    <copy src="specs/xorg-x11-filesystem.spec" />
+    <copy src="specs/sw-tools.spec" />
+    <copy src="conf/base.cfg" />
+  </fixtures>
+  <steps><![CDATA[
+sudo /bin/rm -rf ~/GBS-ROOT/local/repos
+
+sudo /bin/rm -rf ~/GBS-ROOT/local/BUILD-ROOTS/scratch.i586.0
+
+./create_proj xorg-x11-filesystem.spec
+
+./create_proj sw-tools.spec
+
+gbs -c base.cfg build sw-tools -A i586 2>&1 | tee log
+
+count1="`sudo chroot ~/GBS-ROOT/local/BUILD-ROOTS/scratch.i586.0 rpm -qa | wc -l`"
+
+gbs -c base.cfg build xorg-x11-filesystem --keep-packs -A i586 2>&1 | tee log
+
+count2="`sudo chroot ~/GBS-ROOT/local/BUILD-ROOTS/scratch.i586.0 rpm -qa | wc -l`"
+
+test "$count1" == "$count2"
+
+test -z "`grep "deleting.*" log`"
+
+test -n "`grep "init_buildsystem.*keep-packs" log`"
+
+cd xorg-x11-filesystem && test -n "`git status | grep "working directory clean"`" && cd ..
+
+test -n "`find ~/GBS-ROOT/local/repos -name "*xorg-x11-filesystem*.rpm"`"
+
+gbs -c base.cfg build xorg-x11-filesystem  -A i586 --overwrite 2>&1 | tee log
+
+count3="`sudo chroot ~/GBS-ROOT/local/BUILD-ROOTS/scratch.i586.0 rpm -qa | wc -l`"
+
+test "$count2" \> "$count3"
+
+test -n "`grep "deleting.*" log`"
+
+test -z "`grep "init_buildsystem.*keep-packs" log`"
+]]></steps>
+</testcase>
diff --git a/cases/build/test_build_keeppacks_clean.case b/cases/build/test_build_keeppacks_clean.case
new file mode 100644 (file)
index 0000000..8fb5f3d
--- /dev/null
@@ -0,0 +1,37 @@
+<testcase>
+  <summary>--clean work well in condition of --keep-packs</summary>
+  <fixtures>
+    <copy src="tools/create_proj" />
+    <copy src="specs/fake.spec" />
+    <copy src="specs/sw-tools.spec" />
+    <copy src="conf/base.cfg" />
+  </fixtures>
+  <steps><![CDATA[
+sudo /bin/rm -rf ~/GBS-ROOT/local/repos
+
+sudo /bin/rm -rf ~/GBS-ROOT/local/BUILD-ROOTS/scratch.i586.0
+
+./create_proj fake.spec
+
+./create_proj sw-tools.spec
+
+gbs -c base.cfg build sw-tools -A i586
+
+test -n "`find ~/GBS-ROOT/local/repos -name "*sw-tools*.rpm"`"
+
+#libpython is only depanded by sw-tools but not fake
+sudo chroot ~/GBS-ROOT/local/BUILD-ROOTS/scratch.i586.0/ rpm -qa|grep 'libpython'
+
+gbs -c base.cfg build fake -A i586 --keep-packs
+
+test -n "`find ~/GBS-ROOT/local/repos -name "*fake*.rpm"`"
+
+#with keep-packs libpython won't be deleted
+sudo chroot ~/GBS-ROOT/local/BUILD-ROOTS/scratch.i586.0/ rpm -qa|grep 'libpython'
+
+#--clean force to clear buildroot even there is --keep-packs
+gbs -c base.cfg build fake -A i586 --keep-packs --clean --overwrite
+
+(! sudo chroot ~/GBS-ROOT/local/BUILD-ROOTS/scratch.i586.0/ rpm -qa|grep 'libpython')
+]]></steps>
+</testcase>
diff --git a/cases/build/test_build_keeppacks_extra.case b/cases/build/test_build_keeppacks_extra.case
new file mode 100644 (file)
index 0000000..2478c96
--- /dev/null
@@ -0,0 +1,37 @@
+<testcase>
+  <summary>--extra-packs work well in condition of --keep-packs</summary>
+  <fixtures>
+    <copy src="tools/create_proj" />
+    <copy src="specs/fake.spec" />
+    <copy src="specs/sw-tools.spec" />
+    <copy src="conf/base.cfg" />
+  </fixtures>
+  <steps><![CDATA[
+sudo /bin/rm -rf ~/GBS-ROOT/local/repos 
+
+sudo /bin/rm -rf ~/GBS-ROOT/local/BUILD-ROOTS/scratch.i586.0
+
+./create_proj fake.spec
+
+./create_proj sw-tools.spec
+
+gbs -c base.cfg build sw-tools -A i586
+
+test -n "`find ~/GBS-ROOT/local/repos -name "*sw-tools*.rpm"`"
+
+#sw-tools doesn't depand on vim
+(! sudo chroot ~/GBS-ROOT/local/BUILD-ROOTS/scratch.i586.0/ rpm -qa|grep 'vim')
+
+gbs -c base.cfg build fake -A i586 --keep-packs
+
+test -n "`find ~/GBS-ROOT/local/repos -name "*fake*.rpm"`"
+
+#fake doesn't depand on vim
+(! sudo chroot ~/GBS-ROOT/local/BUILD-ROOTS/scratch.i586.0/ rpm -qa|grep 'vim')
+
+gbs -c base.cfg build fake -A i586 --keep-packs --extra-packs=vim --overwrite
+
+#so --extra-packss can work well whith --keep-packs
+sudo chroot ~/GBS-ROOT/local/BUILD-ROOTS/scratch.i586.0/ rpm -qa|grep 'vim'
+]]></steps>
+</testcase>
diff --git a/cases/build/test_build_keeppacks_incremental.case b/cases/build/test_build_keeppacks_incremental.case
new file mode 100644 (file)
index 0000000..e901b38
--- /dev/null
@@ -0,0 +1,30 @@
+<testcase>
+  <summary>--incremental work well in condition of --keep-packs</summary>
+  <fixtures>
+    <copy src="tools/create_proj" />
+    <copy src="specs/fake.spec" />
+    <copy src="specs/sw-tools.spec" />
+    <copy src="conf/base.cfg" />
+  </fixtures>
+  <steps><![CDATA[
+sudo /bin/rm -rf ~/GBS-ROOT/local/repos
+
+sudo /bin/rm -rf ~/GBS-ROOT/local/BUILD-ROOTS/scratch.i586.0
+
+./create_proj fake.spec
+
+./create_proj sw-tools.spec
+
+gbs -c base.cfg build sw-tools -A i586
+
+test -n "`find ~/GBS-ROOT/local/repos -name "*sw-tools*.rpm"`"
+
+#libpython is only depanded by sw-tools but not fake
+sudo chroot ~/GBS-ROOT/local/BUILD-ROOTS/scratch.i586.0/ rpm -qa|grep 'libpython'
+
+gbs -c base.cfg build fake -A i586 --keep-packs --incremental --overwrite
+
+#--incremental force to clear buildroot even there is --keep-packs
+(! sudo chroot ~/GBS-ROOT/local/BUILD-ROOTS/scratch.i586.0/ rpm -qa|grep 'libpython')
+]]></steps>
+</testcase>
diff --git a/cases/build/test_build_local_repo_url.case b/cases/build/test_build_local_repo_url.case
new file mode 100644 (file)
index 0000000..12fd536
--- /dev/null
@@ -0,0 +1,26 @@
+<testcase>
+  <summary>test gbs build -R REPO when repo is local file path</summary>
+  <tracking>
+    <change>5136</change>
+  </tracking>
+  <fixtures>
+    <copy src="tools/create_proj" />
+    <copy src="specs/fake.spec" />
+    <copy src="conf/base.cfg" />
+  </fixtures>
+  <steps><![CDATA[
+sudo /bin/rm -rf ~/GBS-ROOT/local/repos
+
+./create_proj fake.spec
+
+gbs -c base.cfg build -R foobar -A i586 2>&1 --clean |tee log
+
+grep "local repo: foobar does not exist" log
+
+mkdir foobar
+
+gbs -c base.cfg build -R foobar -A i586 2>&1 --clean |tee log
+
+! grep "local repo: foobar does not exist" log
+]]></steps>
+</testcase>
diff --git a/cases/build/test_build_local_repo_with_proxy.case b/cases/build/test_build_local_repo_with_proxy.case
new file mode 100644 (file)
index 0000000..cb29602
--- /dev/null
@@ -0,0 +1,33 @@
+<testcase>
+  <summary>test build with local repo with proxy enabled</summary>
+  <tracking>
+    <ticket>1383</ticket>
+  </tracking>
+  <fixtures>
+    <copy src="tools/create_proj" />
+    <copy src="tools/assert" />
+    <copy src="conf/base.cfg" />
+    <copy src="specs/fake.spec" />
+  </fixtures>
+  <steps><![CDATA[
+. assert
+
+sudo rm -rf $GBS_LOCAL_REPOS
+
+./create_proj fake.spec
+
+export http_proxy=http://proxy-mu.intel.com:911
+
+export https_proxy=http://proxy-mu.intel.com:911
+
+unset no_proxy
+
+unset NO_PROXY
+
+( ! gbs -c base.cfg build --clean -A i586 2>&1 | tee log)
+
+grep "http_proxy=.*" log
+
+grep "https_proxy=.*" log
+]]></steps>
+</testcase>
diff --git a/cases/build/test_build_mount_on_buildroot_ia32.case b/cases/build/test_build_mount_on_buildroot_ia32.case
new file mode 100644 (file)
index 0000000..bb32ba4
--- /dev/null
@@ -0,0 +1,34 @@
+<testcase>
+  <summary>source pkg mount on buildroot will warn user</summary>
+  <tracking>
+    <ticket>580</ticket>
+  </tracking>
+  <fixtures>
+    <copy src="tools/create_proj" />
+    <copy src="tools/assert" />
+    <copy src="specs/fake.spec" />
+    <copy src="conf/base.cfg" />
+  </fixtures>
+  <steps><![CDATA[
+. assert
+
+sudo /bin/rm -rf $GBS_LOCAL_REPOS
+
+./create_proj fake.spec
+
+gbs -c base.cfg build -A i586 --clean --incremental fake
+
+sudo mount -o bind fake $GBS_ROOT_I686_0/home/abuild/
+
+(! gbs -c base.cfg build -A i586 --incremental fake 2>&1| tee log)
+
+grep "error.*there're mounted directories to build root" log
+]]></steps>
+  <teardown><![CDATA[
+. assert
+
+sudo umount -l $GBS_ROOT_I686_0/home/abuild
+
+sudo rm -rf $GBS_ROOT_I686_0
+]]></teardown>
+</testcase>
diff --git a/cases/build/test_build_multi-pkgs_with_noinit.case b/cases/build/test_build_multi-pkgs_with_noinit.case
new file mode 100644 (file)
index 0000000..ac398e2
--- /dev/null
@@ -0,0 +1,36 @@
+<testcase>
+  <summary>--noinit should only support building one package</summary>
+  <tracking>
+    <change>8166</change>
+  </tracking>
+  <fixtures>
+    <copy src="tools/create_proj" />
+    <copy src="specs/fake.spec" />
+    <copy src="specs/capi-system-power.spec" />
+    <copy src="specs/xorg-x11-filesystem.spec" />
+    <copy src="conf/base.cfg" />
+  </fixtures>
+  <steps><![CDATA[
+sudo /bin/rm -rf ~/GBS-ROOT/local/repos
+
+./create_proj fake.spec
+
+./create_proj -C power capi-system-power.spec
+
+./create_proj xorg-x11-filesystem.spec
+
+gbs -c base.cfg build --clean fake -A i586
+
+(! gbs -c base.cfg build --noinit -A i586 2>&1 | tee log)
+
+cd fake && test -n "`git status | grep "working directory clean"`" && cd ..
+
+cd power && test -n "`git status | grep "working directory clean"`" && cd ..
+
+cd xorg-x11-filesystem && test -n "`git status | grep "working directory clean"`" && cd ..
+
+grep "\--noinit build only support building one package" log
+
+grep "some packages failed to be built" log
+]]></steps>
+</testcase>
diff --git a/cases/build/test_build_multi_specs_patch.case b/cases/build/test_build_multi_specs_patch.case
new file mode 100644 (file)
index 0000000..a581a67
--- /dev/null
@@ -0,0 +1,46 @@
+<testcase>
+  <summary>test patch info in multiple specs</summary>
+  <tracking>
+    <change>6234</change>
+  </tracking>
+  <fixtures>
+    <copy src="tools/create_proj" />
+    <copy src="tools/assert" />
+    <copy src="specs/fake.spec" />
+    <copy src="specs/fake-lib.spec" />
+    <copy src="conf/base.cfg" />
+  </fixtures>
+  <steps><![CDATA[
+. assert
+
+sudo /bin/rm -rf ~/GBS-ROOT/local/sources
+
+sudo /bin/rm -rf ~/GBS-ROOT/local/repos
+
+./create_proj fake.spec fake-lib.spec --tizen
+
+#remove extra directory
+rm -rf fake-lib
+
+cd fake
+
+echo hello >> README
+
+git commit -a -m 'hello'
+
+cd ..
+
+gbs -c base.cfg build --clean -A i586 fake 2>&1|tee log
+
+TIMES=$(grep '/home/abuild/rpmbuild/SOURCES/0001-hello.patch' log|wc -l)
+
+#apply patch both in build fake and fake-lib
+[ "$TIMES" -eq "2" ]
+
+AssertCleanWith fake
+
+AssertRPMsIWith fake
+
+AssertRPMsIWith fake-lib
+]]></steps>
+</testcase>
diff --git a/cases/build/test_build_multiple_specs.case b/cases/build/test_build_multiple_specs.case
new file mode 100644 (file)
index 0000000..04fa50f
--- /dev/null
@@ -0,0 +1,27 @@
+<testcase>
+  <summary>Show spec filename if (rpmlib) parsing fails or multiple spec files are found.</summary>
+  <tracking>
+    <ticket>1068</ticket>
+    <change>5803</change>
+  </tracking>
+  <fixtures>
+    <copy src="tools/create_proj" />
+    <copy src="specs/fake.spec" />
+    <copy src="specs/fake-lib.spec" />
+    <copy src="conf/base.cfg" />
+  </fixtures>
+  <steps><![CDATA[
+./create_proj fake.spec fake-lib.spec
+
+cd fake
+
+# delete keyword License in fake-lib.spec, make it an invaild spec file
+sed -i '/^License:/ d' packaging/fake-lib.spec
+
+git commit -am "Delete keyword License in fake-lib.spec"
+
+! gbs -c ../base.cfg build --arch=i586 2>&1 |tee ../log
+
+grep "License field must be present in package" ../log
+]]></steps>
+</testcase>
diff --git a/cases/build/test_build_multispecs_patch_include.case b/cases/build/test_build_multispecs_patch_include.case
new file mode 100644 (file)
index 0000000..a2f0054
--- /dev/null
@@ -0,0 +1,48 @@
+<testcase>
+  <summary>test patch info in multiple specs</summary>
+  <tracking>
+    <change>6234</change>
+  </tracking>
+  <fixtures>
+    <copy src="tools/create_proj" />
+    <copy src="tools/assert" />
+    <copy src="specs/fake.spec" />
+    <copy src="specs/fake-lib.spec" />
+    <copy src="conf/base.cfg" />
+  </fixtures>
+  <steps><![CDATA[
+. assert
+
+sudo /bin/rm -rf ~/GBS-ROOT/local/sources
+
+sudo /bin/rm -rf ~/GBS-ROOT/local/repos
+
+sudo /bin/rm -rf $GBS_ROOT_I686_0
+
+./create_proj fake.spec fake-lib.spec --tizen
+
+#remove extra directory
+rm -rf fake-lib
+
+cd fake
+
+echo hello >> README
+
+git commit -a -m 'hello'
+
+cd ..
+
+gbs -c base.cfg build -A i586 fake --include-all 2>&1|tee log
+
+TIMES=$(grep '/home/abuild/rpmbuild/SOURCES/0001-hello.patch' log|wc -l)
+
+#apply patch both in build fake and fake-lib
+[ "$TIMES" -eq "2" ]
+
+AssertCleanWith fake
+
+AssertRPMsIWith fake
+
+AssertRPMsIWith fake-lib
+]]></steps>
+</testcase>
diff --git a/cases/build/test_build_no-configure_arm.case b/cases/build/test_build_no-configure_arm.case
new file mode 100644 (file)
index 0000000..8313e7d
--- /dev/null
@@ -0,0 +1,46 @@
+<testcase>
+  <summary>test no-configure feature</summary>
+  <fixtures>
+    <copy src="tools/create_proj" />
+    <copy src="tools/assert" />
+    <copy src="specs/fake.spec" />
+    <copy src="conf/base.cfg" />
+  </fixtures>
+  <steps><![CDATA[
+. assert
+
+sudo /bin/rm -rf $GBS_LOCAL_REPOS
+
+perl -i -pne 's/(%setup.*)/$1\n%build\n%configure/' fake.spec
+
+./create_proj fake.spec
+
+cd fake
+
+echo "#!/bin/sh" >configure
+
+echo "echo 'command in configure'" >>configure
+
+chmod +x configure
+
+git add configure
+
+git commit -m 'add configure'
+
+cd ..
+
+gbs -c base.cfg build --clean -A armv7l fake
+
+gbs -c base.cfg build --incremental -A armv7l fake 2>&1| tee log
+
+#configure has been executed
+grep "command in configure" log
+
+gbs -c base.cfg build --no-configure --incremental -A armv7l fake 2>&1| tee log2
+
+#configure has not been executed if --no-configure
+( ! grep "command in configure" log2 )
+
+AssertRPMsAWith fake
+]]></steps>
+</testcase>
diff --git a/cases/build/test_build_no-configure_ia32.case b/cases/build/test_build_no-configure_ia32.case
new file mode 100644 (file)
index 0000000..1e29b69
--- /dev/null
@@ -0,0 +1,46 @@
+<testcase>
+  <summary>test no-configure feature</summary>
+  <fixtures>
+    <copy src="tools/create_proj" />
+    <copy src="tools/assert" />
+    <copy src="specs/fake.spec" />
+    <copy src="conf/base.cfg" />
+  </fixtures>
+  <steps><![CDATA[
+. assert
+
+sudo /bin/rm -rf $GBS_LOCAL_REPOS
+
+perl -i -pne 's/(%setup.*)/$1\n%build\n%configure/' fake.spec
+
+./create_proj fake.spec
+
+cd fake
+
+echo "#!/bin/sh" >configure
+
+echo "echo 'command in configure'" >>configure
+
+chmod +x configure
+
+git add configure
+
+git commit -m 'add configure'
+
+cd ..
+
+gbs -c base.cfg build --clean -A i586 fake 2>&1| tee log
+
+gbs -c base.cfg build --incremental -A i586 fake 2>&1| tee log
+
+#configure has been executed
+grep "command in configure" log
+
+gbs -c base.cfg build --no-configure --incremental -A i586 fake 2>&1| tee log2
+
+#configure has not been executed if --no-configure
+( ! grep "command in configure" log2 )
+
+AssertRPMsIWith fake
+]]></steps>
+</testcase>
diff --git a/cases/build/test_build_no_build_tag.case b/cases/build/test_build_no_build_tag.case
new file mode 100644 (file)
index 0000000..5fdc287
--- /dev/null
@@ -0,0 +1,24 @@
+<testcase>
+  <summary>build with new structure repo</summary>
+  <tracking>
+    <change>5187</change>
+  </tracking>
+  <fixtures>
+    <copy src="tools/create_proj" />
+    <copy src="tools/assert" />
+    <copy src="specs/fake.spec" />
+    <copy src="conf/base.cfg" />
+  </fixtures>
+  <steps><![CDATA[
+. assert
+
+sudo /bin/rm -rf $GBS_LOCAL_REPOS
+
+./create_proj fake.spec
+
+#there is no build tag in repomd.xml
+( ! gbs -c base.cfg build -P tizen_negative1 -A i586 fake 2>&1|tee log )
+
+grep -i "failed to get build conf from repos, please use snapshot repo or specify build config using -D option" log
+]]></steps>
+</testcase>
diff --git a/cases/build/test_build_noinit_arm.case b/cases/build/test_build_noinit_arm.case
new file mode 100644 (file)
index 0000000..442d602
--- /dev/null
@@ -0,0 +1,26 @@
+<testcase>
+  <summary>test noinit feature</summary>
+  <fixtures>
+    <copy src="tools/create_proj" />
+    <copy src="specs/sw-tools.spec" />
+    <copy src="conf/base.cfg" />
+  </fixtures>
+  <steps><![CDATA[
+sudo /bin/rm -rf ~/GBS-ROOT/local/repos
+
+./create_proj sw-tools.spec
+
+#broken register
+sudo sh -c "echo -1 >/proc/sys/fs/binfmt_misc/status"
+
+gbs -c base.cfg build --clean -A armv7l 2>&1 | tee log
+
+gbs -c base.cfg build --noinit -A armv7l 2>&1 | tee log
+
+test -z "`grep "generate repositories" log`"
+
+cd sw-tools && test -n "`git status | grep "working directory clean"`" && cd ..
+
+test -n "`find ~/GBS-ROOT/local/repos -name "*sw-tools*.rpm"`"
+]]></steps>
+</testcase>
diff --git a/cases/build/test_build_noinit_clean-once_ia32.case b/cases/build/test_build_noinit_clean-once_ia32.case
new file mode 100644 (file)
index 0000000..50f23e8
--- /dev/null
@@ -0,0 +1,21 @@
+<testcase>
+  <summary>test noinit with clean-once option</summary>
+  <fixtures>
+    <copy src="tools/create_proj" />
+    <copy src="specs/sw-tools.spec" />
+    <copy src="conf/base.cfg" />
+  </fixtures>
+  <steps><![CDATA[
+sudo /bin/rm -rf ~/GBS-ROOT/local/repos
+
+./create_proj sw-tools.spec
+
+(! gbs -c base.cfg build --noinit --clean-once -A i586 2>&1 | tee log)
+
+test -z "`grep "generate repositories" log`"
+
+cd sw-tools && test -n "`git status | grep "working directory clean"`" && cd ..
+
+test -n "`grep "error.*noinit.*clean-once" log`"
+]]></steps>
+</testcase>
diff --git a/cases/build/test_build_noinit_clean_ia32.case b/cases/build/test_build_noinit_clean_ia32.case
new file mode 100644 (file)
index 0000000..055f3fa
--- /dev/null
@@ -0,0 +1,21 @@
+<testcase>
+  <summary>test noinit feature with clean option</summary>
+  <fixtures>
+    <copy src="tools/create_proj" />
+    <copy src="specs/sw-tools.spec" />
+    <copy src="conf/base.cfg" />
+  </fixtures>
+  <steps><![CDATA[
+sudo /bin/rm -rf ~/GBS-ROOT/local/repos
+
+./create_proj sw-tools.spec
+
+(! gbs -c base.cfg build --noinit --clean -A i586 2>&1 | tee log)
+
+test -z "`grep "generate repositories" log`"
+
+cd sw-tools && test -n "`git status | grep "working directory clean"`" && cd ..
+
+test -n "`grep "error.*noinit.*clean" log`"
+]]></steps>
+</testcase>
diff --git a/cases/build/test_build_noinit_ia32.case b/cases/build/test_build_noinit_ia32.case
new file mode 100644 (file)
index 0000000..082bb2b
--- /dev/null
@@ -0,0 +1,23 @@
+<testcase>
+  <summary>test noinit feature</summary>
+  <fixtures>
+    <copy src="tools/create_proj" />
+    <copy src="specs/sw-tools.spec" />
+    <copy src="conf/base.cfg" />
+  </fixtures>
+  <steps><![CDATA[
+sudo /bin/rm -rf ~/GBS-ROOT/local/repos
+
+./create_proj sw-tools.spec
+
+gbs -c base.cfg build --clean -A i586 2>&1 | tee log
+
+gbs -c base.cfg build --noinit -A i586 2>&1 | tee log
+
+test -z "`grep "generate repositories" log`"
+
+cd sw-tools && test -n "`git status | grep "working directory clean"`" && cd ..
+
+test -n "`find ~/GBS-ROOT/local/repos -name "*sw-tools*.rpm"`"
+]]></steps>
+</testcase>
diff --git a/cases/build/test_build_noinit_self_overwrite_ia32.case b/cases/build/test_build_noinit_self_overwrite_ia32.case
new file mode 100644 (file)
index 0000000..6b7f1a4
--- /dev/null
@@ -0,0 +1,31 @@
+<testcase>
+  <summary>test one of noinit features: self overwrite</summary>
+  <fixtures>
+    <copy src="tools/create_proj" />
+    <copy src="specs/sw-tools.spec" />
+    <copy src="conf/base.cfg" />
+  </fixtures>
+  <steps><![CDATA[
+sudo /bin/rm -rf ~/GBS-ROOT/local/repos
+
+./create_proj sw-tools.spec
+
+gbs -c base.cfg build --clean -A i586 2>&1 | tee log
+
+time1=`find ~/GBS-ROOT/local/repos/ -name "*.rpm" |grep /RPMS/sw-tools |xargs -i stat -c %y {}`
+
+gbs -c base.cfg build --noinit -A i586 2>&1 | tee log
+
+test -z "`grep "generate repositories" log`"
+
+cd sw-tools && test -n "`git status | grep "working directory clean"`" && cd ..
+
+test -n "`find ~/GBS-ROOT/local/repos -name "*sw-tools*.rpm"`"
+
+time2=`find ~/GBS-ROOT/local/repos/ -name "*.rpm" |grep /RPMS/sw-tools |xargs -i stat -c %y {}`
+
+test "$time1" != "$time2"
+
+test -z "`grep "skip.*sw-tools" log`"
+]]></steps>
+</testcase>
diff --git a/cases/build/test_build_noinit_without_buildroot.case b/cases/build/test_build_noinit_without_buildroot.case
new file mode 100644 (file)
index 0000000..17afaee
--- /dev/null
@@ -0,0 +1,19 @@
+<testcase>
+  <summary>test noinit feature with buildroot deleted</summary>
+  <fixtures>
+    <copy src="tools/create_proj" />
+    <copy src="specs/fake.spec" />
+    <copy src="conf/base.cfg" />
+  </fixtures>
+  <steps><![CDATA[
+sudo /bin/rm -rf ~/GBS-ROOT/local/BUILD-ROOTS/scratch.i*
+
+./create_proj fake.spec
+
+(! gbs -c base.cfg build --noinit -A i586 fake 2>&1 | tee log)
+
+grep "build root:.* does not exist\. Please build without --noinit first" log
+
+cd fake && test -n "`git status | grep "working directory clean"`" && cd ..
+]]></steps>
+</testcase>
diff --git a/cases/build/test_build_noinit_without_buildroot_ia32.case b/cases/build/test_build_noinit_without_buildroot_ia32.case
new file mode 100644 (file)
index 0000000..122197a
--- /dev/null
@@ -0,0 +1,23 @@
+<testcase>
+  <summary>test noinit feature with buildroot deleted</summary>
+  <fixtures>
+    <copy src="tools/create_proj" />
+    <copy src="specs/sw-tools.spec" />
+    <copy src="conf/base.cfg" />
+  </fixtures>
+  <steps><![CDATA[
+sudo /bin/rm -rf ~/GBS-ROOT/local/repos
+
+sudo /bin/rm -rf ~/GBS-ROOT/local/BUILD-ROOTS/scratch*i586*
+
+./create_proj sw-tools.spec
+
+(! gbs -c base.cfg build --noinit -A i586 2>&1 | tee log)
+
+test -z "`grep "generate repositories" log`"
+
+cd sw-tools && test -n "`git status | grep "working directory clean"`" && cd ..
+
+test -n "`grep "error.*scratch.*does not exist" log`"
+]]></steps>
+</testcase>
diff --git a/cases/build/test_build_on_develop_branch.case b/cases/build/test_build_on_develop_branch.case
new file mode 100644 (file)
index 0000000..1cf2862
--- /dev/null
@@ -0,0 +1,34 @@
+<testcase>
+  <summary>gbs build on development branch</summary>
+  <fixtures>
+    <copy src="tools/create_proj" />
+    <copy src="specs/sw-tools.spec" />
+    <copy src="conf/base.cfg" />
+  </fixtures>
+  <steps><![CDATA[
+sudo /bin/rm -rf ~/GBS-ROOT/local/repos
+
+sudo /bin/rm -rf ~/GBS-ROOT/local/BUILD-ROOTS/scratch.i586.0
+
+./create_proj sw-tools.spec --tizen
+
+cd sw-tools
+
+gbs devel convert
+
+gbs devel start
+
+# Check on development branch
+test -n "`git branch | grep "development"`"
+
+[ ! -d packaging ]
+
+gbs -c ../base.cfg build -A i586 2>&1
+
+# Check successfully build result.
+test -n "`git status | grep "working directory clean"`"
+
+test -n "`find ~/GBS-ROOT/local/repos -name "*sw-tools*.rpm"`"
+
+]]></steps>
+</testcase>
diff --git a/cases/build/test_build_on_orphan_branch.case b/cases/build/test_build_on_orphan_branch.case
new file mode 100644 (file)
index 0000000..eab9564
--- /dev/null
@@ -0,0 +1,51 @@
+<testcase>
+  <summary>build on orphan branch</summary>
+  <fixtures>
+    <copy src="tools/create_proj" />
+    <copy src="specs/sw-tools.spec" />
+    <copy src="conf/base.cfg" />
+  </fixtures>
+  <steps><![CDATA[
+sudo /bin/rm -rf ~/GBS-ROOT/local/repos
+
+sudo /bin/rm -rf ~/GBS-ROOT/local/BUILD-ROOTS/scratch.i586.0
+
+./create_proj sw-tools.spec --tizen
+
+cd sw-tools
+
+gbs devel convert
+
+gbs devel start
+
+test -n "`git branch | grep "development"`"
+
+[ ! -d packaging ]
+
+# Add new commit on development branch
+touch file1
+
+git add file1
+
+git commit -m "add file1"
+
+# Export develop work to orphan branch
+gbs devel export
+
+# Check on orphan branch
+test -n "`git branch | grep "orphan"`"
+
+# Commit all the changes
+git add *
+
+git commit -m "add all changes"
+
+# Gbs build
+gbs -c ../base.cfg build -A i586 2>&1
+
+# Check that build has been finished sucessful.
+test -n "`git status | grep "working directory clean"`"
+
+test -n "`find ~/GBS-ROOT/local/repos -name "*sw-tools*.rpm"`"
+]]></steps>
+</testcase>
diff --git a/cases/build/test_build_overwrite_arm.case b/cases/build/test_build_overwrite_arm.case
new file mode 100644 (file)
index 0000000..91ce2ea
--- /dev/null
@@ -0,0 +1,36 @@
+<testcase>
+  <summary>test overwrite feature</summary>
+  <fixtures>
+    <copy src="tools/create_proj" />
+    <copy src="specs/fake.spec" />
+    <copy src="conf/base.cfg" />
+  </fixtures>
+  <steps><![CDATA[
+sudo /bin/rm -rf ~/GBS-ROOT/local/repos
+
+sudo /bin/rm -rf ~/GBS-ROOT/local/BUILD-ROOTS/scratch.armv7l.0
+
+./create_proj fake.spec
+
+#broken register
+sudo sh -c "echo -1 >/proc/sys/fs/binfmt_misc/status"
+
+gbs -c base.cfg build -A armv7l 2>&1 | tee log
+
+test -z "`grep "mount:.*scratch" log`"
+
+test -z "`grep "skip.*fake" log`"
+
+test -n "`find ~/GBS-ROOT/local/repos -name "*fake*.rpm"`"
+
+time1=`ls -l --full-time ~/GBS-ROOT/local/repos/tizen/armv7l/RPMS | grep fake | awk '{ print $7 }'`
+
+gbs -c base.cfg build --overwrite -A armv7l 2>&1 | tee log
+
+time2=`ls -l --full-time ~/GBS-ROOT/local/repos/tizen/armv7l/RPMS | grep fake | awk '{ print $7 }'`
+
+cd fake && test -n "`git status | grep "working directory clean"`" && cd ..
+
+test "$time1" != "$time2"
+]]></steps>
+</testcase>
diff --git a/cases/build/test_build_overwrite_ccache_ia32.case b/cases/build/test_build_overwrite_ccache_ia32.case
new file mode 100644 (file)
index 0000000..56856fb
--- /dev/null
@@ -0,0 +1,32 @@
+<testcase>
+  <summary>test overwirte with ccache option</summary>
+  <fixtures>
+    <copy src="tools/create_proj" />
+    <copy src="specs/xorg-x11-filesystem.spec" />
+    <copy src="conf/base.cfg" />
+  </fixtures>
+  <steps><![CDATA[
+sudo /bin/rm -rf ~/GBS-ROOT/local/repos
+
+./create_proj xorg-x11-filesystem.spec
+
+gbs -c base.cfg build --clean --ccache -A i586 2>&1 | tee log
+
+test -z "`grep "mount:.*scratch" log`"
+
+test -z "`grep "skip.*xorg-x11-filesystem" log`"
+
+test -n "`find ~/GBS-ROOT/local/repos -name "*xorg-x11-filesystem*.rpm"`"
+
+time1=`find ~/GBS-ROOT/local/repos/ -name "*.rpm" |grep /RPMS/xorg-x11-filesystem |xargs -i stat -c %y {}`
+
+gbs -c base.cfg build --overwrite -A i586 2>&1 | tee log
+
+time2=`find ~/GBS-ROOT/local/repos/ -name "*.rpm" |grep /RPMS/xorg-x11-filesystem | xargs -i stat -c %y {}`
+
+#check source package unchanged
+cd xorg-x11-filesystem && test -n "`git status | grep "working directory clean"`" && cd ..
+
+test "$time1" != "$time2"
+]]></steps>
+</testcase>
diff --git a/cases/build/test_build_overwrite_ia32.case b/cases/build/test_build_overwrite_ia32.case
new file mode 100644 (file)
index 0000000..ff2f66a
--- /dev/null
@@ -0,0 +1,32 @@
+<testcase>
+  <summary>test overwrite feature</summary>
+  <fixtures>
+    <copy src="tools/create_proj" />
+    <copy src="specs/fake.spec" />
+    <copy src="conf/base.cfg" />
+  </fixtures>
+  <steps><![CDATA[
+sudo /bin/rm -rf ~/GBS-ROOT/local/repos
+
+./create_proj fake.spec
+
+gbs -c base.cfg build --clean -A i586 2>&1 | tee log
+
+test -z "`grep "mount:.*scratch" log`"
+
+test -z "`grep "skip.*fake" log`"
+
+test -n "`find ~/GBS-ROOT/local/repos -name "*fake*.rpm"`"
+
+time1=`find ~/GBS-ROOT/local/repos/ -name "*.rpm" |grep /RPMS/fake |xargs -i stat -c %y {}`
+
+gbs -c base.cfg build --overwrite -A i586 2>&1 | tee log
+
+time2=`find ~/GBS-ROOT/local/repos/ -name "*.rpm" |grep /RPMS/fake |xargs -i stat -c %y {}`
+
+#check source package unchanged
+cd fake && test -n "`git status | grep "working directory clean"`" && cd ..
+
+test "$time1" != "$time2"
+]]></steps>
+</testcase>
diff --git a/cases/build/test_build_package_bin_list_mix.case b/cases/build/test_build_package_bin_list_mix.case
new file mode 100644 (file)
index 0000000..212d268
--- /dev/null
@@ -0,0 +1,30 @@
+<testcase>
+  <summary>test --package-list with --binary-list</summary>
+  <tracking>
+    <ticket>1580</ticket>
+    <change>9145</change>
+  </tracking>
+  <fixtures>
+    <copy src="tools/create_proj" />
+    <copy src="tools/assert" />
+    <copy src="specs/fake.spec" />
+    <copy src="specs/sw-tools.spec" />
+    <copy src="specs/xorg-x11-filesystem.spec" />
+    <copy src="conf/base.cfg" />
+  </fixtures>
+  <steps><![CDATA[
+. assert
+
+sudo /bin/rm -rf ${GBS_LOCAL_REPOS}
+
+./create_proj -C dir1/fake fake.spec
+
+./create_proj -C dir2/sw-tools sw-tools.spec
+
+./create_proj xorg-x11-filesystem.spec
+
+gbs -c base.cfg build --package-list=dir1/fake,dir2/sw-tools --binary-list=fake,xorg-x11-filesystem -A i586 --clean-once
+
+AssertRPMsIWith fake xorg-x11-filesystem sw-tools
+]]></steps>
+</testcase>
diff --git a/cases/build/test_build_package_from_file_ia32.case b/cases/build/test_build_package_from_file_ia32.case
new file mode 100644 (file)
index 0000000..9b308f1
--- /dev/null
@@ -0,0 +1,36 @@
+<testcase>
+  <summary>test --package-from-file</summary>
+  <tracking>
+    <ticket>1580</ticket>
+    <change>9145</change>
+  </tracking>
+  <fixtures>
+    <copy src="tools/create_proj" />
+    <copy src="tools/assert" />
+    <copy src="specs/fake.spec" />
+    <copy src="specs/sw-tools.spec" />
+    <copy src="specs/xorg-x11-filesystem.spec" />
+    <copy src="conf/base.cfg" />
+  </fixtures>
+  <steps><![CDATA[
+. assert
+
+sudo /bin/rm -rf ${GBS_LOCAL_REPOS}
+
+./create_proj -C dir1/fake fake.spec
+
+./create_proj -C dir2/sw-tools sw-tools.spec
+
+./create_proj xorg-x11-filesystem.spec
+
+echo dir1/fake >>package_list_file
+
+echo dir2/sw-tools >>package_list_file
+
+gbs -c base.cfg build --package-from-file=package_list_file -A i586 --clean-once
+
+AssertRPMsIWithout xorg-x11-filesystem
+
+AssertRPMsIWith fake sw-tools
+]]></steps>
+</testcase>
diff --git a/cases/build/test_build_package_list_ia32.case b/cases/build/test_build_package_list_ia32.case
new file mode 100644 (file)
index 0000000..7f1e501
--- /dev/null
@@ -0,0 +1,32 @@
+<testcase>
+  <summary>test --package-list</summary>
+  <tracking>
+    <ticket>1580</ticket>
+    <change>9145</change>
+  </tracking>
+  <fixtures>
+    <copy src="tools/create_proj" />
+    <copy src="tools/assert" />
+    <copy src="specs/fake.spec" />
+    <copy src="specs/sw-tools.spec" />
+    <copy src="specs/xorg-x11-filesystem.spec" />
+    <copy src="conf/base.cfg" />
+  </fixtures>
+  <steps><![CDATA[
+. assert
+
+sudo /bin/rm -rf ${GBS_LOCAL_REPOS}
+
+./create_proj -C dir1/fake fake.spec
+
+./create_proj -C dir2/sw-tools sw-tools.spec
+
+./create_proj xorg-x11-filesystem.spec
+
+gbs -c base.cfg build --package-list=dir1/fake,dir2/sw-tools -A i586 --clean-once
+
+AssertRPMsIWithout xorg-x11-filesystem
+
+AssertRPMsIWith fake sw-tools
+]]></steps>
+</testcase>
diff --git a/cases/build/test_build_packaging-dir_ia32.case b/cases/build/test_build_packaging-dir_ia32.case
new file mode 100644 (file)
index 0000000..6334ac6
--- /dev/null
@@ -0,0 +1,39 @@
+<testcase>
+  <summary>test packaging-dir feature</summary>
+  <tracking>
+    <ticket>1135</ticket>
+  </tracking>
+  <fixtures>
+    <copy src="tools/create_proj" />
+    <copy src="specs/fake.spec" />
+    <copy src="conf/base.cfg" />
+  </fixtures>
+  <steps><![CDATA[
+sudo /bin/rm -rf ~/GBS-ROOT/local/repos
+
+sudo /bin/rm -rf ~/GBS-ROOT/local/BUILD-ROOTS/scratch.i586.0
+
+./create_proj fake.spec
+
+cd fake
+
+mkdir x/
+
+git mv packaging x/anything
+
+git commit -a -m "change packaging dirname to x/anything"
+
+gbs -c ../base.cfg build --packaging-dir=x/anything -A i586 2>&1 | tee ../log
+
+cd ..
+
+#check build log key word init_buildsystem...--spec xxx.spec
+test -n "`grep "init_buildsystem.*fake.spec" log`"
+
+#check source package whether changed or not
+cd fake && test -n "`git status | grep "working directory clean"`"
+
+#check rpm generated whether or not
+test -n "`find ~/GBS-ROOT/local/repos -name "*fake*.rpm"`"
+]]></steps>
+</testcase>
diff --git a/cases/build/test_build_packaging-dir_multispec_ia32.case b/cases/build/test_build_packaging-dir_multispec_ia32.case
new file mode 100644 (file)
index 0000000..7bd83b2
--- /dev/null
@@ -0,0 +1,32 @@
+<testcase>
+  <summary>test packaging-dir feature with multi-specs</summary>
+  <tracking>
+    <ticket>69</ticket>
+  </tracking>
+  <fixtures>
+    <copy src="tools/create_proj" />
+    <copy src="specs/fake.spec" />
+    <copy src="specs/fake-lib.spec" />
+    <copy src="conf/base.cfg" />
+  </fixtures>
+  <steps><![CDATA[
+sudo /bin/rm -rf ~/GBS-ROOT/local/repos
+
+sudo /bin/rm -rf ~/GBS-ROOT/local/BUILD-ROOTS/scratch.i586.0
+
+./create_proj fake.spec fake-lib.spec
+
+gbs -c base.cfg build --packaging-dir=packaging -A i586 2>&1 | tee log
+
+#check build log key word init_buildsystem...--spec xxx.spec
+test -n "`grep "init_buildsystem.*fake.spec" log`"
+
+test -n "`grep "init_buildsystem.*fake-lib.spec" log`"
+
+#check source package whether changed or not
+cd fake && test -n "`git status | grep "working directory clean"`"
+
+#check rpm generated whether or not
+test -n "`find ~/GBS-ROOT/local/repos -name "*fake*.rpm"`"
+]]></steps>
+</testcase>
diff --git a/cases/build/test_build_packaging-dir_spec_ia32.case b/cases/build/test_build_packaging-dir_spec_ia32.case
new file mode 100644 (file)
index 0000000..87ba671
--- /dev/null
@@ -0,0 +1,32 @@
+<testcase>
+  <summary>test packaging-dir feature with a spec</summary>
+  <tracking>
+    <ticket>69</ticket>
+  </tracking>
+  <fixtures>
+    <copy src="tools/create_proj" />
+    <copy src="specs/fake.spec" />
+    <copy src="specs/fake-dev.spec" />
+    <copy src="conf/base.cfg" />
+  </fixtures>
+  <steps><![CDATA[
+sudo /bin/rm -rf ~/GBS-ROOT/local/repos
+
+sudo /bin/rm -rf ~/GBS-ROOT/local/BUILD-ROOTS/scratch.i586.0
+
+./create_proj fake.spec fake-dev.spec
+
+gbs -c base.cfg build --packaging-dir=packaging --spec=fake-dev.spec fake -A i586 2>&1 | tee log
+
+#check build log key word init_buildsystem...--spec xxx.spec
+test -n "`grep "init_buildsystem.*fake-dev.spec" log`"
+
+test -z "`grep "init_buildsystem.*fake.spec" log`"
+
+#check source package whether changed or not
+cd fake && test -n "`git status | grep "working directory clean"`"
+
+#check rpm generated whether or not
+test -n "`find ~/GBS-ROOT/local/repos -name "*fake*.rpm"`"
+]]></steps>
+</testcase>
diff --git a/cases/build/test_build_packaging_symlink.case b/cases/build/test_build_packaging_symlink.case
new file mode 100644 (file)
index 0000000..6f23dcb
--- /dev/null
@@ -0,0 +1,46 @@
+<testcase>
+  <summary>
+    packaging dir is a symbolic link
+  </summary>
+  <tracking>
+  <change>10279</change>
+  </tracking>
+  <fixtures>
+    <copy src="tools/create_proj" />
+    <copy src="tools/assert" />
+    <copy src="specs/sw-tools.spec" />
+    <copy src="conf/base.cfg" />
+  </fixtures>
+  <steps><![CDATA[
+  . assert
+
+  sudo /bin/rm -rf $GBS_LOCAL_REPOS
+
+  ./create_proj sw-tools.spec
+
+  cd sw-tools
+
+  mkdir test
+
+  mv packaging/ test/
+
+  git add .
+
+  git commit -m "mv packaging dir under test dir"
+
+  ln -s test/packaging packaging
+
+  git add packaging
+
+  git commit -m "create symbolic link packaging"
+
+  #use spec in git not in current
+  rm -rf packaging
+  
+  cd ..
+
+  gbs -c base.cfg build -A i586 --clean
+
+  AssertRPMsIWith sw-tools
+]]></steps>
+</testcase>
diff --git a/cases/build/test_build_parse_wrong_spec_ia32.case b/cases/build/test_build_parse_wrong_spec_ia32.case
new file mode 100644 (file)
index 0000000..8cf2932
--- /dev/null
@@ -0,0 +1,27 @@
+<testcase>
+  <summary>gbs build with rm spec in git dir</summary>
+  <tracking>
+    <ticket>535</ticket>
+  </tracking>
+  <fixtures>
+    <copy src="tools/create_proj" />
+    <copy src="tools/assert" />
+    <copy src="specs/fake.spec" />
+    <copy src="conf/base.cfg" />
+  </fixtures>
+  <steps><![CDATA[
+. assert
+
+sudo /bin/rm -rf $GBS_LOCAL_REPOS
+
+sudo /bin/rm -rf $GBS_ROOT_I686_0
+
+./create_proj fake.spec
+
+rm fake/* -rf
+
+gbs -c base.cfg build -A i586 2>&1| tee log
+
+AssertRPMsIWith fake
+]]></steps>
+</testcase>
diff --git a/cases/build/test_build_profile.case b/cases/build/test_build_profile.case
new file mode 100644 (file)
index 0000000..035494a
--- /dev/null
@@ -0,0 +1,25 @@
+<testcase>
+  <summary>test build --profile</summary>
+  <tracking>
+    <ticket>91</ticket>
+  </tracking>
+  <fixtures>
+    <copy src="tools/create_proj" />
+    <copy src="tools/assert" />
+    <copy src="specs/fake.spec" />
+    <copy src="conf/base.cfg" />
+  </fixtures>
+  <steps><![CDATA[
+. assert
+
+sudo /bin/rm -rf $GBS_LOCAL_REPOS
+
+sudo /bin/rm -rf $GBS_ROOT_I686_0
+
+./create_proj fake.spec
+
+gbs -c base.cfg build -A i586 -P tizen_ivi fake |tee log
+
+grep -e "tizen/releases/daily/tizen/ivi/latest/repos/atom/packages/" log
+]]></steps>
+</testcase>
diff --git a/cases/build/test_build_proxy_trailing_with_oblique_line.case b/cases/build/test_build_proxy_trailing_with_oblique_line.case
new file mode 100644 (file)
index 0000000..3663ce7
--- /dev/null
@@ -0,0 +1,41 @@
+<testcase>
+  <summary>check whether it can pass if proxy trailing with '/'</summary>
+  <tracking>
+    <ticket>467</ticket>
+  </tracking>
+  <fixtures>
+    <copy src="tools/create_proj" />
+    <copy src="tools/assert" />
+    <copy src="specs/fake.spec" />
+    <copy src="conf/base.cfg" />
+  </fixtures>
+  <setup><![CDATA[
+export http_proxy=http://proxy-mu.intel.com:911
+export https_proxy=http://proxy-mu.intel.com:911
+export no_proxy=".intel.com,localhost"
+]]></setup>
+  <steps><![CDATA[
+. assert
+
+sudo rm -rf $GBS_LOCAL_REPOS
+
+sudo rm -rf $GBS_ROOT_I686_0
+
+./create_proj fake.spec
+
+export http_proxy=$http_proxy/
+
+export https_proxy=$https_proxy/
+
+# No matter gbs build failed or passed, we just check whether file can be downloaded or not
+gbs -c base.cfg build -R http://download.tizen.org/releases/2.2/latest/ --skip-conf-repos -A i586 2>&1 | tee log || true
+
+# if build conf can be downloaded, network turns out to be good.
+grep "build conf has been downloaded" log
+]]></steps>
+  <teardown><![CDATA[
+. assert
+
+sudo rm -rf $GBS_ROOT_I686_0
+]]></teardown>
+</testcase>
diff --git a/cases/build/test_build_rdeps_ia32.case b/cases/build/test_build_rdeps_ia32.case
new file mode 100644 (file)
index 0000000..9bf08f1
--- /dev/null
@@ -0,0 +1,44 @@
+<testcase>
+  <summary>test gbs build rdeps feature</summary>
+  <tracking>
+    <ticket>704</ticket>
+  </tracking>
+  <fixtures>
+    <copy src="tools/create_proj" />
+    <copy src="tools/assert" />
+    <copy src="specs/fake.spec" />
+    <copy src="specs/fake-dev.spec" />
+    <copy src="conf/base.cfg" />
+  </fixtures>
+  <steps><![CDATA[
+. assert
+
+sudo /bin/rm -rf $GBS_LOCAL_REPOS
+
+sudo /bin/rm -rf $GBS_ROOT_I686_0
+
+./create_proj fake.spec
+
+./create_proj fake-dev.spec
+
+sed -i "/^Source/a BuildRequires: fake" fake-dev/packaging/fake-dev.spec
+
+cd fake-dev && git commit -am 'depend on fake' && cd ..
+
+echo fake| tee list
+
+#without --rdeps only build fake
+gbs -c base.cfg build -A i586 --binary-from-file=list 2>&1| tee log
+
+grep "finished building fake$" log
+
+(! grep "finished building fake-dev" log)
+
+#with --rdeps build fake fake-dev
+gbs -c base.cfg build -A i586 --overwrite --rdeps --binary-from-file=list 2>&1| tee log2
+
+grep "finished building fake$" log2
+
+grep "finished building fake-dev" log2
+]]></steps>
+</testcase>
diff --git a/cases/build/test_build_rdeps_more_ia32.case b/cases/build/test_build_rdeps_more_ia32.case
new file mode 100644 (file)
index 0000000..6bd9bb7
--- /dev/null
@@ -0,0 +1,54 @@
+<testcase>
+  <summary>test build --rdeps with package A [C->B->A, D]</summary>
+  <tracking>
+    <ticket>704</ticket>
+  </tracking>
+  <fixtures>
+    <copy src="tools/create_proj" />
+    <copy src="tools/assert" />
+    <copy src="specs/fake.spec" />
+    <copy src="specs/fake-dev.spec" />
+    <copy src="specs/tizen-release.spec" />
+    <copy src="specs/xorg-x11-filesystem.spec" />
+    <copy src="conf/base.cfg" />
+  </fixtures>
+  <steps><![CDATA[
+. assert
+
+sudo /bin/rm -rf $GBS_LOCAL_REPOS
+
+sudo /bin/rm -rf $GBS_ROOT_I686_0
+
+./create_proj fake.spec
+
+./create_proj fake-dev.spec
+
+./create_proj tizen-release.spec
+
+./create_proj xorg-x11-filesystem.spec
+
+sed -i "/^Source/a BuildRequires: fake" fake-dev/packaging/fake-dev.spec
+
+cd fake-dev && git commit -am 'depend on fake' && cd ..
+
+sed -i "/^BuildArch/a BuildRequires: fake-dev" tizen-release/packaging/tizen-release.spec
+
+cd tizen-release && git commit -am 'depend on fake-dev' && cd ..
+
+echo fake| tee list
+
+#generate rpms in localrepo
+gbs -c base.cfg build -A i586 2>&1
+
+#with --rdeps build fake fake-dev tizen-release
+gbs -c base.cfg build -A i586 --overwrite --rdeps --binary-from-file=list 2>&1| tee log
+
+grep "finished building fake$" log
+
+grep "finished building fake-dev" log
+
+grep "finished building tizen-release" log
+
+(! grep "finished building xorg-x11-filesystem" log)
+]]></steps>
+</testcase>
diff --git a/cases/build/test_build_rm_previous_pkg.case b/cases/build/test_build_rm_previous_pkg.case
new file mode 100644 (file)
index 0000000..1782e77
--- /dev/null
@@ -0,0 +1,40 @@
+<testcase>
+  <summary>remove previous rpm and srpm after current build</summary>
+  <tracking>
+    <change>6314</change>
+    <ticket>1274</ticket>
+  </tracking>
+  <fixtures>
+    <copy src="tools/create_proj" />
+    <copy src="tools/assert" />
+    <copy src="specs/fake.spec" />
+    <copy src="conf/base.cfg" />
+  </fixtures>
+  <steps><![CDATA[
+. assert
+
+sudo /bin/rm -rf $GBS_LOCAL_REPOS
+
+sudo /bin/rm -rf $GBS_ROOT_I686_0
+
+./create_proj fake.spec
+
+gbs -c base.cfg build -A i586
+
+AssertRPMsIWith fake|grep "fake-1.0"
+
+cd fake
+
+perl -i -pne 's/^Version:.*/Version: 2.0/' packaging/fake.spec
+
+git commit -a -m 'update to 2.0'
+
+cd ..
+
+gbs -c base.cfg build -A i586
+
+test -z "`AssertRPMsIWith fake|grep 1.0`"
+
+AssertRPMsIWith fake|grep "2.0"
+]]></steps>
+</testcase>
diff --git a/cases/build/test_build_skip-conf-repos_ia32.case b/cases/build/test_build_skip-conf-repos_ia32.case
new file mode 100644 (file)
index 0000000..10f50fe
--- /dev/null
@@ -0,0 +1,27 @@
+<testcase>
+  <summary>test skip-conf-repos</summary>
+  <tracking>
+    <ticket>26</ticket>
+  </tracking>
+  <fixtures>
+    <copy src="tools/create_proj" />
+    <copy src="tools/assert" />
+    <copy src="specs/fake.spec" />
+    <copy src="conf/base.cfg" />
+  </fixtures>
+  <steps><![CDATA[
+. assert
+
+sudo /bin/rm -rf $GBS_LOCAL_REPOS
+
+sudo /bin/rm -rf $GBS_ROOT_I686_0
+
+./create_proj fake.spec
+
+gbs -c base.cfg build --skip-conf-repos -R http://linux-ftp.fi.intel.com/pub/mirrors/tizen/releases/daily/tizen/ivi/latest/repos/atom/packages/ -A i586 2>&1 |tee log
+
+test -n "`grep "ivi/latest/repos/atom/packages" log`"
+
+test -z "`grep "releases/2.2/tizen-2.2" log`"
+]]></steps>
+</testcase>
diff --git a/cases/build/test_build_skip-conf-repos_nagetive.case b/cases/build/test_build_skip-conf-repos_nagetive.case
new file mode 100644 (file)
index 0000000..7d8426c
--- /dev/null
@@ -0,0 +1,32 @@
+<testcase>
+  <summary>test -R without skip-conf-repos option</summary>
+  <tracking>
+    <ticket>26</ticket>
+  </tracking>
+  <fixtures>
+    <copy src="tools/create_proj" />
+    <copy src="tools/assert" />
+    <copy src="specs/fake.spec" />
+    <copy src="conf/base.cfg" />
+  </fixtures>
+  <steps><![CDATA[
+. assert
+
+sudo /bin/rm -rf $GBS_LOCAL_REPOS
+
+sudo /bin/rm -rf $GBS_ROOT_I686_0
+
+./create_proj fake.spec
+
+gbs -c base.cfg build -R http://linux-ftp.fi.intel.com/pub/mirrors/tizen/releases/2.2.1/latest -A i586 2>&1 |tee log
+
+test -n "`grep "releases/2.2.1/latest" log`"
+
+test -n "`grep "releases/2.2/tizen-2.2" log`"
+]]></steps>
+  <teardown><![CDATA[
+. assert
+
+sudo /bin/rm -rf $GBS_ROOT_I686_0
+]]></teardown>
+</testcase>
diff --git a/cases/build/test_build_skip-srcrpm.case b/cases/build/test_build_skip-srcrpm.case
new file mode 100644 (file)
index 0000000..53685c3
--- /dev/null
@@ -0,0 +1,67 @@
+<testcase>
+  <summary>test --skip-srcrpm option</summary>
+  <tracking>
+    <change>15964</change>
+    <change>15976</change>
+    <change>15965</change>
+    <change>15977</change>
+  </tracking>
+  <fixtures>
+    <copy src="tools/create_proj" />
+    <copy src="specs/sw-tools.spec" />
+    <copy src="conf/base.cfg" />
+  </fixtures>
+  <steps><![CDATA[
+sudo /bin/rm -rf ~/GBS-ROOT/local/repos
+
+./create_proj sw-tools.spec
+
+# GBS build with --skip-srcrpm
+gbs -c base.cfg build --clean --skip-srcrpm -A i586 sw-tools 2>&1 | tee log1
+
+# Check that source rpm packages directory does not exist.
+! test -d ~/GBS-ROOT/local/repos/tizen/i586/SRPMS
+
+# Check log that source rpm packages have not been generated.
+test -z "`grep "generated source RPM packages can be found from local repo" log1`"
+
+# Add new patch
+cd sw-tools
+
+echo "new patch 1" >> README
+
+git commit -am "new patch 1"
+
+cd ..
+
+# GBS build in normal pattern
+gbs -c base.cfg build -A i586 sw-tools --clean --clean-repos 2>&1 | tee log2
+
+# Check that source rpm packages have been generated.
+test -n "`grep "generated source RPM packages can be found from local repo" log2`"
+
+test -d ~/GBS-ROOT/local/repos/tizen/i586/SRPMS
+
+test -n "`find ~/GBS-ROOT/local/repos/tizen/i586/SRPMS -name "*sw-tools*.src.rpm"`"
+
+# Add new patch
+cd sw-tools
+
+echo "new patch 2" >> README
+
+git commit -am "new patch 2"
+
+cd ..
+
+# GBS build again with --skip-srcrpm
+gbs -c base.cfg build --skip-srcrpm -A i586 sw-tools 2>&1 | tee log3
+
+# Check that source rpm packages have not been generated and can not be found.
+test -z "`grep "generated source RPM packages can be found from local repo" log3`"
+
+test -d ~/GBS-ROOT/local/repos/tizen/i586/SRPMS
+
+test -z "`find ~/GBS-ROOT/local/repos/tizen/i586/SRPMS -name "*sw-tools*.src.rpm"`"
+
+]]></steps>
+</testcase>
diff --git a/cases/build/test_build_spec_dependency_start_with-_ia32.case b/cases/build/test_build_spec_dependency_start_with-_ia32.case
new file mode 100644 (file)
index 0000000..4a6d455
--- /dev/null
@@ -0,0 +1,31 @@
+<testcase>
+  <summary>GBS build should support spec file BuildRequires startting with -</summary>
+  <tracking>
+    <ticket>788</ticket>
+  </tracking>
+  <fixtures>
+    <copy src="tools/create_proj" />
+    <copy src="tools/assert" />
+    <copy src="specs/fake.spec" />
+    <copy src="conf/base.cfg" />
+  </fixtures>
+  <steps><![CDATA[
+. assert
+
+sudo /bin/rm -rf $GBS_LOCAL_REPOS
+
+sudo /bin/rm -rf $GBS_ROOT_I686_0
+
+./create_proj fake.spec
+
+cd fake
+
+sed -i "/^Source/a BuildRequires: patchelf sed -rpmlint-Moblin -rpmlint-mini -post-build-checks" packaging/fake.spec
+
+git commit -am "spec file dependency start with -"
+
+gbs -c ../base.cfg build -A i586 2>&1| tee log
+
+AssertRPMsIWith fake
+]]></steps>
+</testcase>
diff --git a/cases/build/test_build_spec_ia32.case b/cases/build/test_build_spec_ia32.case
new file mode 100644 (file)
index 0000000..84182dd
--- /dev/null
@@ -0,0 +1,36 @@
+<testcase>
+  <summary>test spec feature</summary>
+  <tracking>
+    <ticket>69</ticket>
+    <ticket>485</ticket>
+  </tracking>
+  <fixtures>
+    <copy src="tools/create_proj" />
+    <copy src="tools/assert" />
+    <copy src="specs/fake.spec" />
+    <copy src="specs/fake-dev.spec" />
+    <copy src="conf/base.cfg" />
+  </fixtures>
+  <steps><![CDATA[
+. assert
+
+sudo /bin/rm -rf $GBS_LOCAL_REPOS 
+
+sudo /bin/rm -rf $GBS_ROOT_I686_0
+
+./create_proj fake.spec fake-dev.spec
+
+gbs -c base.cfg build --spec=fake-dev.spec fake -A i586 2>&1 | tee log
+
+#check build log key word init_buildsystem...--spec xxx.spec
+test -n "`grep "init_buildsystem.*fake-dev.spec" log`"
+
+test -z "`grep "init_buildsystem.*fake.spec" log`"
+
+#check source package whether changed or not
+cd fake && test -n "`git status | grep "working directory clean"`"
+
+#check rpm generated whether or not
+test -n "`find ~/GBS-ROOT/local/repos -name "*fake*.rpm"`"
+]]></steps>
+</testcase>
diff --git a/cases/build/test_build_spec_negative.case b/cases/build/test_build_spec_negative.case
new file mode 100644 (file)
index 0000000..7d47290
--- /dev/null
@@ -0,0 +1,25 @@
+<testcase>
+  <summary>test spec feature with wrong param</summary>
+  <tracking>
+    <ticket>69</ticket>
+    <ticket>485</ticket>
+  </tracking>
+  <fixtures>
+    <copy src="tools/create_proj" />
+    <copy src="specs/fake.spec" />
+    <copy src="conf/base.cfg" />
+  </fixtures>
+  <steps><![CDATA[
+sudo /bin/rm -rf ~/GBS-ROOT/local/repos 
+
+./create_proj fake.spec
+
+(! gbs -c base.cfg build --spec=fake/packaging/fake.spec fake -A i586 2>&1 | tee log)
+
+#check build log key word
+test -n "`grep "gbs build.*error.*argument --spec" log`"
+
+#check source package whether changed or not
+cd fake && test -n "`git status | grep "working directory clean"`"
+]]></steps>
+</testcase>
diff --git a/cases/build/test_build_spec_patch.case b/cases/build/test_build_spec_patch.case
new file mode 100644 (file)
index 0000000..869a3cb
--- /dev/null
@@ -0,0 +1,41 @@
+<testcase>
+  <summary>specfile patch tag is patch not patch0, patch1...</summary>
+  <tracking>
+    <ticket>73</ticket>
+  </tracking>
+  <fixtures>
+    <copy src="tools/create_proj" />
+    <copy src="tools/assert" />
+    <copy src="specs/fake.spec" />
+    <copy src="conf/base.cfg" />
+  </fixtures>
+  <steps><![CDATA[
+. assert
+
+sudo /bin/rm -rf $GBS_LOCAL_REPOS 
+
+sudo /bin/rm -rf $GBS_ROOT_I686_0
+
+./create_proj fake.spec
+
+cd fake
+
+echo "This is a patch" >README2
+
+(! diff -u README README2| tee packaging/fake-1.00-opt.patch)
+
+rm README2
+
+git add packaging/fake-1.00-opt.patch
+
+git commit -m "add the needed patch"
+
+cd ..
+
+gbs -c base.cfg build -A i586 2>&1| tee log
+
+AssertCleanWith fake
+
+AssertRPMsIWith fake
+]]></steps>
+</testcase>
diff --git a/cases/build/test_build_specified_arch_ia32.case b/cases/build/test_build_specified_arch_ia32.case
new file mode 100644 (file)
index 0000000..d3c1626
--- /dev/null
@@ -0,0 +1,43 @@
+<testcase>
+  <summary>spec BuildArch and -A specified, generate BuildArch rpm</summary>
+  <tracking>
+    <ticket>673</ticket>
+  </tracking>
+  <fixtures>
+    <copy src="tools/create_proj" />
+    <copy src="tools/assert" />
+    <copy src="specs/fake.spec" />
+    <copy src="conf/base.cfg" />
+  </fixtures>
+  <steps><![CDATA[
+. assert
+
+sudo /bin/rm -rf $GBS_LOCAL_REPOS
+
+sudo /bin/rm -rf $GBS_ROOT_I686_0
+
+./create_proj fake.spec
+
+gbs -c base.cfg build -A i586 2>&1| tee log
+
+#The target arch can be specified by depanneur --target i586.
+AssertRPMsIWith fake| grep i586
+
+sudo /bin/rm -rf $GBS_LOCAL_REPOS
+
+sed -i "/^Source/a BuildArch: i386" fake/packaging/fake.spec
+
+cd fake && git commit -am 'change buildarch' && cd ..
+
+gbs -c base.cfg build -A i586 2>&1| tee log
+
+AssertRPMsIWith fake| grep i386
+
+#The following is True. however, ia32 is deprecated.
+#> sudo rm $GBS_LOCAL_REPOS -rf
+#
+#> gbs -c ./conf_fixtures/fakerepo.cfg build -A ia32 2>&1| tee log
+#
+#> AssertRPMsIWith fake| grep i386
+]]></steps>
+</testcase>
diff --git a/cases/build/test_build_squash-patches-until_ia32.case b/cases/build/test_build_squash-patches-until_ia32.case
new file mode 100644 (file)
index 0000000..cf61955
--- /dev/null
@@ -0,0 +1,45 @@
+<testcase>
+  <summary>test squash-patches-until feature</summary>
+  <fixtures>
+    <copy src="tools/create_proj" />
+    <copy src="tools/assert" />
+    <copy src="specs/fake.spec" />
+    <copy src="conf/base.cfg" />
+  </fixtures>
+  <steps><![CDATA[
+. assert
+
+sudo /bin/rm -rf $GBS_LOCAL_REPOS 
+
+sudo /bin/rm -rf $GBS_ROOT_I686_0
+
+./create_proj fake.spec --tizen
+
+cd fake
+
+echo "first change from squash-pathes-until" > a_patch
+
+git add a_patch
+
+git commit -m "first"
+
+#Modify spec file will not generate a patch...
+sed -i "/%description/a modify spec from squash-pathes-until" packaging/fake.spec
+
+git commit -am "modify spec"
+
+echo "second change from squash-pathes-until" >> a_patch
+
+git commit -am 'second'
+
+gbs -c ../base.cfg build --squash-patches-until=HEAD^^^ -A i586 2>&1 | tee ../log
+
+grep "0001-first.patch" ../log
+
+(! grep "modify-spec.patch" ../log)
+
+grep "0002-second.patch" ../log
+
+AssertRPMsIWith fake
+]]></steps>
+</testcase>
diff --git a/cases/build/test_build_substitutedeps_macro.case b/cases/build/test_build_substitutedeps_macro.case
new file mode 100644 (file)
index 0000000..fe7e851
--- /dev/null
@@ -0,0 +1,36 @@
+<testcase>
+  <summary>If spec file contains some special macros such as "CI_CNT" and "B_CNT"</summary>
+  <tracking>
+    <change>5731</change>
+  </tracking>
+  <fixtures>
+    <copy src="tools/create_proj" />
+    <copy src="tools/assert" />
+    <copy src="specs/fake.spec" />
+    <copy src="conf/tizen.conf" />
+    <copy src="conf/base.cfg" />
+  </fixtures>
+  <steps><![CDATA[
+. assert
+
+sudo /bin/rm -rf $GBS_LOCAL_REPOS
+
+sudo /bin/rm -rf $GBS_ROOT_I686_0
+
+#%if 0%{?opensuse_bs}
+#Release: 0rc1.<CI_CNT>.<B_CNT>
+#%else
+#Release: 0rc1.0.0
+#%endif
+perl -i -pne 's/^Release:.*/%if 0%\{\?opensuse_bs\}\nRelease: 0rc1\.<CI_CNT>\.<B_CNT>\n%else\nRelease: 0rc1\.0\.0\n%endif\n/' fake.spec
+
+./create_proj fake.spec
+
+perl -i -pne 's/(^Macros:.*)/$1\n%opensuse_bs 1/' tizen.conf
+
+#%opensuse_bs 1
+gbs -c base.cfg build -A i586 -D tizen.conf fake
+
+AssertRPMsIWith fake
+]]></steps>
+</testcase>
diff --git a/cases/build/test_build_target_arch_i686.case b/cases/build/test_build_target_arch_i686.case
new file mode 100644 (file)
index 0000000..e230fb2
--- /dev/null
@@ -0,0 +1,39 @@
+<testcase>
+  <summary>test target arch in build.conf</summary>
+  <tracking>
+    <change>4752</change>
+  </tracking>
+  <fixtures>
+    <copy src="tools/create_proj" />
+    <copy src="tools/assert" />
+    <copy src="specs/fake.spec" />
+    <copy src="conf/tizen.conf" />
+    <copy src="conf/base.cfg" />
+  </fixtures>
+  <steps><![CDATA[
+. assert
+
+sudo /bin/rm -rf $GBS_LOCAL_REPOS
+
+sudo /bin/rm -rf $GBS_ROOT_I686_0
+
+./create_proj fake.spec
+
+#add into tizen.conf:
+#%ifarch i586
+#Target: i686-tizen-linux
+#%endif
+perl -i -pne 's/^(Support: build build-compare)$/\1\n%ifarch i586\nTarget: i686-tizen-linux\n%endif\n/' tizen.conf
+
+gbs -c base.cfg build -D tizen.conf -A i586 fake
+
+AssertCleanWith fake
+
+#fake-1.0-1.i686.rpm
+ls ~/GBS-ROOT/local/repos/tizen/i586/RPMS
+
+AssertRPMsIWith fake | grep i686
+
+AssertRPMsIWith fake | grep -v i586
+]]></steps>
+</testcase>
diff --git a/cases/build/test_build_threads_arm.case b/cases/build/test_build_threads_arm.case
new file mode 100644 (file)
index 0000000..c7b93e4
--- /dev/null
@@ -0,0 +1,48 @@
+<testcase>
+  <summary>test threads feature</summary>
+  <tracking>
+    <change>8427</change>
+  </tracking>
+  <fixtures>
+    <copy src="tools/create_proj" />
+    <copy src="specs/fake.spec" />
+    <copy src="specs/tizen-release.spec" />
+    <copy src="specs/sw-tools.spec" />
+    <copy src="conf/base.cfg" />
+  </fixtures>
+  <steps><![CDATA[
+sudo /bin/rm -rf ~/GBS-ROOT/local/repos
+
+sudo /bin/rm -rf ~/GBS-ROOT/local/cache
+
+sudo /bin/rm -rf ~/GBS-ROOT/local/BUILD-ROOTS/scratch.armv7l.*
+
+./create_proj fake.spec
+
+./create_proj tizen-release.spec
+
+./create_proj sw-tools.spec
+
+#broken register
+sudo sh -c "echo -1 >/proc/sys/fs/binfmt_misc/status"
+
+gbs -c base.cfg build --threads=4 -A armv7l --debug 2>&1 | tee log
+
+test -z "`grep "mount:.*scratch" log`"
+
+cd fake && test -n "`git status | grep "working directory clean"`" && cd ..
+
+cd tizen-release && test -n "`git status | grep "working directory clean"`" && cd ..
+
+cd sw-tools && test -n "`git status | grep "working directory clean"`" && cd ..
+
+test -n "`find ~/GBS-ROOT/local/repos -name "*fake*.rpm"`"
+
+test -n "`find ~/GBS-ROOT/local/repos -name "*tizen-release*.rpm"`"
+
+test -n "`find ~/GBS-ROOT/local/repos -name "*sw-tools*.rpm"`"
+]]></steps>
+  <teardown><![CDATA[
+find ~/GBS-ROOT/local/repos/tizen/armv7l/logs/fail -name "log.txt" -exec cat {} \;
+]]></teardown>
+</testcase>
diff --git a/cases/build/test_build_threads_ia32.case b/cases/build/test_build_threads_ia32.case
new file mode 100644 (file)
index 0000000..d0eb45a
--- /dev/null
@@ -0,0 +1,45 @@
+<testcase>
+  <summary>test threads feature</summary>
+  <tracking>
+    <change>8427</change>
+  </tracking>
+  <fixtures>
+    <copy src="tools/create_proj" />
+    <copy src="specs/fake.spec" />
+    <copy src="specs/tizen-release.spec" />
+    <copy src="specs/sw-tools.spec" />
+    <copy src="conf/base.cfg" />
+  </fixtures>
+  <steps><![CDATA[
+sudo /bin/rm -rf ~/GBS-ROOT/local/repos
+
+sudo /bin/rm -rf ~/GBS-ROOT/local/cache
+
+sudo /bin/rm -rf ~/GBS-ROOT/local/BUILD-ROOTS/scratch.i586.* -rf
+
+./create_proj fake.spec
+
+./create_proj tizen-release.spec
+
+./create_proj sw-tools.spec
+
+gbs -c base.cfg build --threads=4 -A i586 --debug 2>&1 | tee log
+
+test -z "`grep "mount:.*scratch" log`"
+
+cd fake && test -n "`git status | grep "working directory clean"`" && cd ..
+
+cd tizen-release && test -n "`git status | grep "working directory clean"`" && cd ..
+
+cd sw-tools && test -n "`git status | grep "working directory clean"`" && cd ..
+
+test -n "`find ~/GBS-ROOT/local/repos -name "*fake*.rpm"`"
+
+test -n "`find ~/GBS-ROOT/local/repos -name "*tizen-release*.rpm"`"
+
+test -n "`find ~/GBS-ROOT/local/repos -name "*sw-tools*.rpm"`"
+]]></steps>
+  <teardown><![CDATA[
+find ~/GBS-ROOT/local/repos/tizen/i586/logs/fail -name "log.txt" -exec cat {} \;
+]]></teardown>
+</testcase>
diff --git a/cases/build/test_build_top_directory_repo.case b/cases/build/test_build_top_directory_repo.case
new file mode 100644 (file)
index 0000000..11377d3
--- /dev/null
@@ -0,0 +1,24 @@
+<testcase>
+  <summary>build with new structure repo</summary>
+  <tracking>
+    <change>5192</change>
+  </tracking>
+  <fixtures>
+    <copy src="tools/create_proj" />
+    <copy src="tools/assert" />
+    <copy src="specs/fake.spec" />
+    <copy src="conf/base.cfg" />
+  </fixtures>
+  <steps><![CDATA[
+. assert
+
+sudo /bin/rm -rf $GBS_LOCAL_REPOS
+
+./create_proj fake.spec
+
+#use top directory of new repo
+( ! gbs -c base.cfg build -P tizen_negative3 -A i586 fake 2>&1|tee log )
+
+grep -i "Maybe you are using new designed repo, and please specify real RPM repo with repodata under it" log
+]]></steps>
+</testcase>
diff --git a/cases/build/test_build_upstream-branch_ia32.case b/cases/build/test_build_upstream-branch_ia32.case
new file mode 100644 (file)
index 0000000..b6a3897
--- /dev/null
@@ -0,0 +1,45 @@
+<testcase>
+  <summary>test upstream-branch feature</summary>
+  <fixtures>
+    <copy src="tools/create_proj" />
+    <copy src="tools/assert" />
+    <copy src="specs/fake.spec" />
+    <copy src="conf/base.cfg" />
+  </fixtures>
+  <steps><![CDATA[
+. assert
+
+sudo /bin/rm -rf $GBS_LOCAL_REPOS
+
+sudo /bin/rm -rf $GBS_ROOT_I686_0
+
+./create_proj fake.spec --tizen
+
+cd fake
+
+git branch -m upstream xyz
+
+echo hello > world
+
+git add world && git commit -m "local patch 1"
+
+# Modify spec will not generate a patch...
+sed -i "/%description/a branch-master mark1" packaging/fake.spec
+
+git commit -am "local patch for spec"
+
+echo hello > world2
+
+git add world2 && git commit -m "local patch 2"
+
+gbs -c ../base.cfg build --upstream-branch=xyz -A i586 2>&1| tee ../log
+
+grep "0001-local-patch-1.patch" ../log
+
+grep "0002-local-patch-2.patch" ../log
+
+(! grep "local-patch-for-spec.patch" ../log)
+
+AssertRPMsIWith fake
+]]></steps>
+</testcase>
diff --git a/cases/build/test_build_upstream-tag_ia32.case b/cases/build/test_build_upstream-tag_ia32.case
new file mode 100644 (file)
index 0000000..eb62930
--- /dev/null
@@ -0,0 +1,26 @@
+<testcase>
+  <summary>test upstream-tag feature</summary>
+  <fixtures>
+    <copy src="tools/create_proj" />
+    <copy src="tools/assert" />
+    <copy src="specs/fake.spec" />
+    <copy src="conf/base.cfg" />
+  </fixtures>
+  <steps><![CDATA[
+. assert
+
+sudo /bin/rm -rf $GBS_LOCAL_REPOS 
+
+sudo /bin/rm -rf $GBS_ROOT_I686_0
+
+./create_proj fake.spec
+
+gbs -c base.cfg build --upstream-tag=UPSTREAM_TAG -A i586 2>&1 | tee log
+
+test -z "`grep "mount:.*scratch" log`"
+
+cd fake && test -n "`git status | grep "working directory clean"`" && cd ..
+
+test -n "`find ~/GBS-ROOT/local/repos -name "*fake*.rpm"`"
+]]></steps>
+</testcase>
diff --git a/cases/build/test_build_user_passwd_ia32.case b/cases/build/test_build_user_passwd_ia32.case
new file mode 100644 (file)
index 0000000..81d6f9a
--- /dev/null
@@ -0,0 +1,27 @@
+<testcase>
+  <summary>gbs build with user and passwd in repo, but not in build log</summary>
+  <tracking>
+    <ticket>100</ticket>
+  </tracking>
+  <fixtures>
+    <copy src="tools/create_proj" />
+    <copy src="tools/assert" />
+    <copy src="specs/fake.spec" />
+    <copy src="conf/base.cfg" />
+  </fixtures>
+  <steps><![CDATA[
+. assert
+
+sudo /bin/rm -rf $GBS_LOCAL_REPOS
+
+./create_proj fake.spec
+
+gbs -c base.cfg build -R http://test:123456@linux-ftp.fi.intel.com/repo-protected/tizen/releases/2.2/latest --skip-conf-repos --clean -A i586 2>&1| tee log
+
+(! grep "init_buildsystem.*123456" log)
+
+AssertCleanWith fake
+
+AssertRPMsIWith fake
+]]></steps>
+</testcase>
diff --git a/cases/build/test_build_with_negative_arch.case b/cases/build/test_build_with_negative_arch.case
new file mode 100644 (file)
index 0000000..382f690
--- /dev/null
@@ -0,0 +1,84 @@
+<testcase>
+  <summary>build with negative arch</summary>
+  <tracking>
+    <change>16607</change>
+  </tracking>
+  <fixtures>
+    <copy src="tools/create_proj" />
+    <copy src="specs/fake.spec" />
+    <copy src="conf/base.cfg" />
+  </fixtures>
+  <steps><![CDATA[
+./create_proj fake.spec
+
+if [ -f ~/.gbs.conf ]; then
+    rm ~/.gbs.conf
+fi
+
+touch ~/.gbs.conf
+
+## test 1: using wrong arch
+(! gbs -c base.cfg build -A ERROR fake 2>&1|tee log1)
+
+# check error message when building with a unsupported arch
+grep "Arch \"ERROR\" cannot be supported. Valid archs are:" log1
+
+
+## test 2: no arch specified, host arch will be used
+(! gbs -c base.cfg build fake 2>&1|tee log2)
+
+# check warning message when no arch specified
+grep "No --arch specified in command line, using host arch" log2
+
+# check build message: which profile and arch will be used
+grep "For the following building: active profile.*with arch.*" log2
+
+
+## test 3: arch and profile mismatch
+# specified arch and available arch for specified profile mismatch
+sed -i '5a arch = i586' base.cfg
+
+(! gbs -c base.cfg build -A x86_64 -P tizen fake 2>&1|tee log3)
+
+# check error message
+grep "Both --profile and --arch are specified but the specified arches mismatch according active gbs.conf" log3
+
+
+## test 4: specified arch with available profile but no default profile
+# when no default profile, gbs shows what profiles in gbsconf could support the specified arch
+sed -i '2d' base.cfg
+
+(! gbs -c base.cfg build -A i586 fake 2>&1|tee log4)
+
+# check warning message about no default profile
+grep "No default profile defined in active gbs.conf" log4
+
+# check building message about available profiles
+grep "Available profiles with the specified arch:" log4
+
+# check error message with no profile
+grep "Specified building target in command line is invalid" log4
+
+
+## test 5: no default profile and no profiles available for the specified arch.
+sed -i '5d' base.cfg
+
+(! gbs -c base.cfg build -A i586 fake 2>&1|tee log5)
+
+# check warning message about no default profile
+grep "No default profile defined in active gbs.conf" log5
+
+# check building message about no available profiles
+grep "Cannot find a valid profile in active gbs.conf to support building target arch:" log5
+
+# check error message with no profile
+grep "Specified building target in command line is invalid" log5
+
+
+]]></steps>
+  <teardown><![CDATA[
+
+rm ~/.gbs.conf
+
+]]></teardown>
+</testcase>
diff --git a/cases/build/test_build_with_negative_profile.case b/cases/build/test_build_with_negative_profile.case
new file mode 100644 (file)
index 0000000..e1d29ec
--- /dev/null
@@ -0,0 +1,70 @@
+<testcase>
+  <summary>build with negative profile</summary>
+  <tracking>
+    <change>16607</change>
+  </tracking>
+  <fixtures>
+    <copy src="tools/create_proj" />
+    <copy src="specs/fake.spec" />
+    <copy src="conf/base.cfg" />
+  </fixtures>
+  <steps><![CDATA[
+./create_proj fake.spec
+
+if [ -f ~/.gbs.conf ]; then
+    rm ~/.gbs.conf
+fi
+
+touch ~/.gbs.conf
+
+## test 1: get default profile by name(using wrong profile)
+(! gbs -c base.cfg build -A i586 -P ERROR fake 2>&1|tee log1)
+
+# check error message when using a wrong profile
+grep "error: No profile \"ERROR\" defined in gbs.conf" log1
+
+# check info message about defined profiles when given profile is wrong
+grep "info: All defined building target profiles in active gbs.conf as below:" log1
+
+# check error message about wrong given profile
+grep "error: <gbs>Failed to get profile to build" log1
+
+
+## test 2: get default profile(no profile specified and no arch specified)
+(! gbs build fake  2>&1|tee log2)
+
+# check warning and error message
+grep "No default profile defined in active gbs.conf" log2
+grep "No enough information for building target according command line options" log2
+
+
+## test 3: get default profile by name(no profile specified and no arch specified)
+(! gbs build -P ERROR fake  2>&1|tee log3)
+
+# check warning and error message
+grep "No profile \"ERROR\" defined in gbs.conf" log3
+grep "No defined building target profiles in active gbs.conf" log3
+grep "error: <gbs>Failed to get profile to build" log3
+
+
+## test 4: get default profile by arch(no profile specified and no profile contained in all config files)
+touch error.cfg
+cp error.cfg ~/.gbs.conf
+
+(! gbs -c error.cfg build -A i586 fake 2>&1|tee log4)
+
+# check warning message when no profile defined
+grep "No default profile defined in active gbs.conf" log4
+
+# check info and error message when no profile found to support given target
+grep "Cannot find a valid profile in active gbs.conf to support building target arch" log4
+grep "<gbs>Specified building target in command line is invalid" log4
+
+
+]]></steps>
+  <teardown><![CDATA[
+
+rm ~/.gbs.conf
+
+]]></teardown>
+</testcase>
diff --git a/cases/build/test_build_with_rpmsinfo_ia32.case b/cases/build/test_build_with_rpmsinfo_ia32.case
new file mode 100644 (file)
index 0000000..c9c7f8a
--- /dev/null
@@ -0,0 +1,31 @@
+<testcase>
+  <summary>gbs build with info about rpms location</summary>
+  <tracking>
+    <ticket>32</ticket>
+  </tracking>
+  <fixtures>
+    <copy src="tools/create_proj" />
+    <copy src="tools/assert" />
+    <copy src="specs/fake.spec" />
+    <copy src="conf/base.cfg" />
+  </fixtures>
+  <steps><![CDATA[
+. assert
+
+sudo /bin/rm -rf $GBS_LOCAL_REPOS
+
+sudo /bin/rm -rf $GBS_ROOT_I686_0
+
+./create_proj fake.spec
+
+gbs -c base.cfg build -A i586 2>&1| tee log
+
+grep "^[ |\t].*$GBS_RPMS_I686$" log
+
+grep "^[ |\t].*$GBS_SRPMS_I686$" log
+
+AssertCleanWith fake
+
+AssertRPMsIWith fake
+]]></steps>
+</testcase>
diff --git a/cases/changelog/test_changelog_all.case b/cases/changelog/test_changelog_all.case
new file mode 100644 (file)
index 0000000..476b905
--- /dev/null
@@ -0,0 +1,28 @@
+<testcase>
+  <summary>create a changelog file</summary>
+  <tracking>
+    <ticket>20</ticket>
+  </tracking>
+  <fixtures>
+    <copy src="tools/create_proj" />
+    <copy src="specs/fake.spec" />
+  </fixtures>
+  <steps><![CDATA[
+./create_proj fake.spec
+
+cd fake
+
+export EDITOR=touch
+
+date >>README
+
+git commit -am "Change README for test"
+
+#Create changelog since the oldest commit
+gbs changelog --all
+
+ls packaging/*.changes
+
+cat packaging/*.changes
+]]></steps>
+</testcase>
diff --git a/cases/changelog/test_changelog_commitid-not-found-in-changes.case b/cases/changelog/test_changelog_commitid-not-found-in-changes.case
new file mode 100644 (file)
index 0000000..30bf627
--- /dev/null
@@ -0,0 +1,29 @@
+<testcase>
+  <summary>cannot find latest commit id in the changes file</summary>
+  <fixtures>
+    <copy src="tools/create_proj" />
+    <copy src="specs/fake.spec" />
+  </fixtures>
+  <steps><![CDATA[
+./create_proj fake.spec
+
+cd fake
+
+export EDITOR=touch
+
+gbs changelog -a
+
+ls packaging/*.changes
+
+cat packaging/*.changes
+
+#Write invaild string to the changes file
+sed -i '1 i\invaild string' packaging/*.changes
+
+(! gbs changelog 2>&1)|tee log
+
+grep -i "error: First line in changelog is invalid" log
+
+grep -i "error: <gbs>Change log has not been updated" log
+]]></steps>
+</testcase>
diff --git a/cases/changelog/test_changelog_editor.case b/cases/changelog/test_changelog_editor.case
new file mode 100644 (file)
index 0000000..4f2c497
--- /dev/null
@@ -0,0 +1,25 @@
+<testcase>
+  <summary>editor not exist, work failed</summary>
+  <tracking>
+    <ticket>5</ticket>
+  </tracking>
+  <fixtures>
+    <copy src="tools/create_proj" />
+    <copy src="specs/fake.spec" />
+  </fixtures>
+  <steps><![CDATA[
+./create_proj fake.spec
+
+cd fake
+
+#The EDITOR maybe nano...before,but uninstall later, so define xxx-editor
+export EDITOR=XXX-editor
+
+[ -f ~/.gbs.conf ] && cat ~/.gbs.conf
+
+( ! gbs ch -a 2>&1| tee log )
+
+#Invalid editor, changelog can not be edited.
+grep "error: 'XXX-editor" log
+]]></steps>
+</testcase>
diff --git a/cases/changelog/test_changelog_help.case b/cases/changelog/test_changelog_help.case
new file mode 100644 (file)
index 0000000..fb84b54
--- /dev/null
@@ -0,0 +1,10 @@
+<testcase>
+  <summary>gbs changelog help info check</summary>
+  <steps><![CDATA[
+export EDITOR=cat
+
+gbs changelog -h
+
+gbs changelog --help
+]]></steps>
+</testcase>
diff --git a/cases/changelog/test_changelog_in_subdir.case b/cases/changelog/test_changelog_in_subdir.case
new file mode 100644 (file)
index 0000000..a9e10db
--- /dev/null
@@ -0,0 +1,23 @@
+<testcase>
+  <summary>run gbs changelog in git tree subdir</summary>
+  <fixtures>
+    <copy src="tools/create_proj" />
+    <copy src="specs/fake.spec" />
+    <copy src="conf/changelog_save.cfg" />
+  </fixtures>
+  <steps><![CDATA[
+./create_proj fake.spec changelog_save.cfg
+
+cd fake
+
+date >>README
+
+git commit -am "Change README for test"
+
+cd packaging/
+
+gbs -c changelog_save.cfg changelog -a
+
+cat fake.changes
+]]></steps>
+</testcase>
diff --git a/cases/changelog/test_changelog_message.case b/cases/changelog/test_changelog_message.case
new file mode 100644 (file)
index 0000000..ff4a92c
--- /dev/null
@@ -0,0 +1,21 @@
+<testcase>
+  <summary>test message feature</summary>
+  <tracking>
+    <ticket>88</ticket>
+  </tracking>
+  <fixtures>
+    <copy src="tools/create_proj" />
+    <copy src="specs/fake.spec" />
+  </fixtures>
+  <steps><![CDATA[
+./create_proj fake.spec
+
+cd fake
+
+export EDITOR=cat
+
+gbs ch -m ChangelogMessage
+
+grep "ChangelogMessage" packaging/fake.changes
+]]></steps>
+</testcase>
diff --git a/cases/changelog/test_changelog_multiple_changes.case b/cases/changelog/test_changelog_multiple_changes.case
new file mode 100644 (file)
index 0000000..d16abeb
--- /dev/null
@@ -0,0 +1,28 @@
+<testcase>
+  <summary>more than one changes files found in packaging dir</summary>
+  <fixtures>
+    <copy src="tools/create_proj" />
+    <copy src="specs/fake.spec" />
+  </fixtures>
+  <steps><![CDATA[
+./create_proj fake.spec
+
+cd fake
+
+export EDITOR=touch
+
+gbs changelog -a
+
+ls packaging/*.changes
+
+cp packaging/*.changes packaging/new.changes
+
+date >>README
+
+git commit -am "New commit for test"
+
+gbs changelog 2>&1| tee log
+
+grep "Found more than one changes files" log
+]]></steps>
+</testcase>
diff --git a/cases/changelog/test_changelog_no_branch.case b/cases/changelog/test_changelog_no_branch.case
new file mode 100644 (file)
index 0000000..4869de4
--- /dev/null
@@ -0,0 +1,29 @@
+<testcase>
+  <summary>running gbs changelog on no branch</summary>
+  <tracking>
+    <ticket>110</ticket>
+    <ticket>85</ticket>
+  </tracking>
+  <fixtures>
+    <copy src="tools/create_proj" />
+    <copy src="specs/fake.spec" />
+  </fixtures>
+  <steps><![CDATA[
+./create_proj fake.spec
+
+pushd fake
+
+export EDITOR='touch'
+
+git branch
+
+git checkout HEAD~0
+
+git branch
+
+( ! gbs changelog 2>&1 | tee log )
+
+grep -r "error: Currently not on a branch" log
+grep -r "error: <gbs>Change log has not been updated" log
+]]></steps>
+</testcase>
diff --git a/cases/changelog/test_changelog_no_spec.case b/cases/changelog/test_changelog_no_spec.case
new file mode 100644 (file)
index 0000000..f6c1f3d
--- /dev/null
@@ -0,0 +1,21 @@
+<testcase>
+  <summary>no spec file in packaging</summary>
+  <tracking>
+    <ticket>69</ticket>
+  </tracking>
+  <steps><![CDATA[
+rm -rf tmp_changelog/
+
+mkdir tmp_changelog
+
+cd tmp_changelog/
+
+export EDITOR=cat
+
+git init
+
+(! gbs changelog 2>&1 |tee log)
+
+grep "error.*can't find any spec file" log
+]]></steps>
+</testcase>
diff --git a/cases/changelog/test_changelog_not_git_repo.case b/cases/changelog/test_changelog_not_git_repo.case
new file mode 100644 (file)
index 0000000..b3dfe3b
--- /dev/null
@@ -0,0 +1,14 @@
+<testcase>
+  <summary>negative test: not git repo</summary>
+  <steps><![CDATA[
+rm -rf tmp_changelog
+
+mkdir tmp_changelog
+
+export EDITOR=cat
+
+(! gbs changelog tmp_changelog/ 2>&1 |tee log)
+
+grep "error.*No Git repository" log
+]]></steps>
+</testcase>
diff --git a/cases/changelog/test_changelog_one_entry.case b/cases/changelog/test_changelog_one_entry.case
new file mode 100644 (file)
index 0000000..51e2f5e
--- /dev/null
@@ -0,0 +1,37 @@
+<testcase>
+  <summary>create one change entry</summary>
+  <tracking>
+    <ticket>90</ticket>
+  </tracking>
+  <fixtures>
+    <copy src="tools/create_proj" />
+    <copy src="specs/fake.spec" />
+  </fixtures>
+  <steps><![CDATA[
+./create_proj fake.spec
+
+cd fake
+
+export EDITOR=touch
+
+touch 1
+
+git add 1
+
+git commit -m "add 1" --author "author1 <author1@xx.com>"
+
+touch 2
+
+git add 2
+
+git commit -m "add 2" --author "author2 <author2@yy.com>"
+
+gbs changelog -a
+
+ls packaging/*.changes
+
+(! cat packaging/*.changes| grep author1)
+
+(! cat packaging/*.changes| grep author2)
+]]></steps>
+</testcase>
diff --git a/cases/changelog/test_changelog_order.case b/cases/changelog/test_changelog_order.case
new file mode 100644 (file)
index 0000000..342341a
--- /dev/null
@@ -0,0 +1,37 @@
+<testcase>
+  <summary>changelog ordered by %at(author date, UNIX timestamp) now</summary>
+  <tracking>
+    <ticket>55</ticket>
+  </tracking>
+  <fixtures>
+    <copy src="tools/create_proj" />
+    <copy src="specs/fake.spec" />
+  </fixtures>
+  <steps><![CDATA[
+./create_proj fake.spec
+
+echo "- 2" >> fix-order-change
+
+echo "- 1" >> fix-order-change
+
+echo "- Initial commit" >> fix-order-change
+
+cd fake
+
+export EDITOR=touch
+
+touch 1 && git add 1 && git commit -m "1"
+
+touch 2 && git add 2 && git commit -m "2"
+
+gbs changelog -a
+
+ls packaging/*.changes
+
+cd ..
+
+sed "1d" fake/packaging/fake.changes|tac > fake-change
+
+diff -B fix-order-change fake-change
+]]></steps>
+</testcase>
diff --git a/cases/changelog/test_changelog_since.case b/cases/changelog/test_changelog_since.case
new file mode 100644 (file)
index 0000000..9c92c56
--- /dev/null
@@ -0,0 +1,22 @@
+<testcase>
+  <summary>test changelog --since</summary>
+  <fixtures>
+    <copy src="tools/create_proj" />
+    <copy src="specs/fake.spec" />
+  </fixtures>
+  <steps><![CDATA[
+./create_proj fake.spec
+
+cd fake
+
+export EDITOR='touch'
+
+date >>README
+
+git commit -am "Change README for test"
+
+gbs ch --since HEAD~1
+
+grep -v "Init commit" packaging/*.changes
+]]></steps>
+</testcase>
diff --git a/cases/changelog/test_changelog_since_negative.case b/cases/changelog/test_changelog_since_negative.case
new file mode 100644 (file)
index 0000000..5c25ee7
--- /dev/null
@@ -0,0 +1,18 @@
+<testcase>
+  <summary>negative test: changelog --since error_commit_id</summary>
+  <fixtures>
+    <copy src="tools/create_proj" />
+    <copy src="specs/fake.spec" />
+  </fixtures>
+  <steps><![CDATA[
+./create_proj fake.spec
+
+cd fake
+
+export EDITOR=cat
+
+(! gbs changelog --since error_id 2>&1 |tee log)
+
+grep "Error getting commits error_id..HEAD" log
+]]></steps>
+</testcase>
diff --git a/cases/changelog/test_changelog_spec.case b/cases/changelog/test_changelog_spec.case
new file mode 100644 (file)
index 0000000..9ec606f
--- /dev/null
@@ -0,0 +1,28 @@
+<testcase>
+  <summary>test changelog --spec, specify a specfile to use</summary>
+  <tracking>
+    <ticket>69</ticket>
+  </tracking>
+  <fixtures>
+    <copy src="tools/create_proj" />
+    <copy src="specs/fake.spec" />
+    <copy src="specs/fake-dev.spec" />
+  </fixtures>
+  <steps><![CDATA[
+./create_proj fake.spec fake-dev.spec
+
+cd fake/
+
+export EDITOR=touch
+
+gbs changelog -a --spec=fake-dev.spec
+
+ls packaging/*.changes
+
+cat packaging/fake-dev.changes
+
+(! gbs changelog -a --spec=abc.spec 2>&1 |tee log)
+
+grep "error.*No such spec file packaging/abc.spec" log
+]]></steps>
+</testcase>
diff --git a/cases/changelog/test_changelog_update.case b/cases/changelog/test_changelog_update.case
new file mode 100644 (file)
index 0000000..6e17063
--- /dev/null
@@ -0,0 +1,28 @@
+<testcase>
+  <summary>update changelog file</summary>
+  <fixtures>
+    <copy src="tools/create_proj" />
+    <copy src="specs/fake.spec" />
+  </fixtures>
+  <steps><![CDATA[
+./create_proj fake.spec
+
+cd fake/
+
+export EDITOR=touch
+
+gbs changelog -a
+
+cat packaging/fake.changes
+
+date >>README
+
+git commit -am "New change"
+
+gbs changelog --since=HEAD~1
+
+cat packaging/fake.changes
+
+grep 'New change' packaging/fake.changes
+]]></steps>
+</testcase>
diff --git a/cases/changelog/test_changelog_update_negative.case b/cases/changelog/test_changelog_update_negative.case
new file mode 100644 (file)
index 0000000..4452580
--- /dev/null
@@ -0,0 +1,24 @@
+<testcase>
+  <summary>update changelog file</summary>
+  <fixtures>
+    <copy src="tools/create_proj" />
+    <copy src="specs/fake.spec" />
+  </fixtures>
+  <steps><![CDATA[
+./create_proj fake.spec
+
+cd fake
+
+export EDITOR='touch'
+
+gbs changelog --since HEAD | tee ../log
+
+grep -i "info: No changes detected from HEAD to HEAD" ../log
+
+grep -i "info: Change log has been updated" ../log
+
+ls packaging/*.changes
+
+cat packaging/*.changes
+]]></steps>
+</testcase>
diff --git a/cases/changelog/test_changelog_without_subcommand.case b/cases/changelog/test_changelog_without_subcommand.case
new file mode 100644 (file)
index 0000000..876e0d8
--- /dev/null
@@ -0,0 +1,44 @@
+<testcase>
+  <summary>test changelog without any subcommands</summary>
+  <fixtures>
+    <copy src="tools/create_proj" />
+    <copy src="specs/fake.spec" />
+  </fixtures>
+  <steps><![CDATA[
+./create_proj fake.spec
+
+cd fake/
+
+export EDITOR=touch
+
+#No changes file under packaging dir, changelog will
+#fail if without any subcommands
+( ! gbs changelog 2>&1 | tee log )
+
+grep -i "error: Couldn't determine starting point from changelog, please use the '--since' or '--all" log
+
+grep -i "error: <gbs>Change log has not been update" log
+
+( ! ls packaging/*.changes )
+
+#Successfully create changelog with subcommand -a
+gbs changelog -a | tee log2
+
+grep -i "creating new changelog file" log2
+
+grep -i "Change log has been updated" log2
+
+ls packaging/fake.changes
+
+date >>README
+
+git commit -am "New change"
+
+#There is just new created changes file under packaging dir,gbs changelog could successful.
+gbs changelog | tee log3
+
+grep -i "info: Continuing from commit" log3
+
+grep -i "info: Change log has been updated" log3
+]]></steps>
+</testcase>
diff --git a/cases/chroot/test_chroot_help.case b/cases/chroot/test_chroot_help.case
new file mode 100644 (file)
index 0000000..45dc62b
--- /dev/null
@@ -0,0 +1,27 @@
+<testcase>
+  <summary>gbs chroot help info check</summary>
+  <tracking>
+    <ticket>70</ticket>
+  </tracking>
+  <fixtures>
+    <copy src="conf/base.cfg" />
+  </fixtures>
+  <steps><![CDATA[
+gbs -c base.cfg chroot -h
+
+#chroot (ch): chroot to build root
+#
+#Usage:
+#    gbs chroot [options] <build root dir>
+#
+#    Note: The default location of build root located at:
+#    ~/GBS-ROOT/local/scratch.{arch}.*, which will be different
+#    if -B option specified while running gbs build
+#
+#        Options:
+#            -h, --help  show this help message and exit
+#                -r, --root  chroot as root instead of abuild by default
+
+gbs -c base.cfg chroot --help
+]]></steps>
+</testcase>
diff --git a/cases/chroot/test_chroot_no_option.case b/cases/chroot/test_chroot_no_option.case
new file mode 100644 (file)
index 0000000..9459886
--- /dev/null
@@ -0,0 +1,18 @@
+<testcase>
+  <summary>negative test: missing necessary option for gbs chroot</summary>
+  <tracking>
+    <ticket>70</ticket>
+  </tracking>
+  <fixtures>
+    <copy src="conf/base.cfg" />
+  </fixtures>
+  <steps><![CDATA[
+(! gbs -c base.cfg chroot 2>&1 |tee log)
+
+grep "gbs chroot: error: too few arguments" log
+
+#old: error <usage>: no build root directory specified, please use "--help" for more info
+#new: usage: gbs chroot [-h] [-r] buildroot
+#gbs chroot: error: too few arguments
+]]></steps>
+</testcase>
diff --git a/cases/clone/test_clone_conf_upstream-branch.case b/cases/clone/test_clone_conf_upstream-branch.case
new file mode 100644 (file)
index 0000000..24e4498
--- /dev/null
@@ -0,0 +1,30 @@
+<testcase>
+  <summary>gbs clone and set a upstream branch in conf file</summary>
+  <tracking>
+    <ticket>749</ticket>
+  </tracking>
+  <fixtures>
+    <copy src="tools/create_proj" />
+    <copy src="specs/fake.spec" />
+    <content target="local/tmp.conf">
+[general]
+upstream_branch=new
+    </content>
+  </fixtures>
+  <steps><![CDATA[
+./create_proj fake.spec --tizen
+
+git --git-dir=fake/.git/ show-branch upstream
+
+# create a new branch
+git --git-dir=fake/.git/ branch new
+
+cd local
+
+gbs -c tmp.conf clone ../fake
+
+git --git-dir=fake/.git/ show-branch new
+
+! git --git-dir=fake/.git/ show-branch upstream
+]]></steps>
+</testcase>
diff --git a/cases/clone/test_clone_debug.case b/cases/clone/test_clone_debug.case
new file mode 100644 (file)
index 0000000..810d5d2
--- /dev/null
@@ -0,0 +1,18 @@
+<testcase>
+  <summary>gbs clone debug</summary>
+  <fixtures>
+    <copy src="tools/create_proj" />
+    <copy src="specs/fake.spec" />
+  </fixtures>
+  <steps><![CDATA[
+./create_proj fake.spec --tizen
+
+mkdir local
+
+cd local
+
+gbs -d clone ../fake 2>&1 | tee ../log
+
+grep "gbp:debug" ../log
+]]></steps>
+</testcase>
diff --git a/cases/clone/test_clone_depth.case b/cases/clone/test_clone_depth.case
new file mode 100644 (file)
index 0000000..604b0e6
--- /dev/null
@@ -0,0 +1,32 @@
+<testcase>
+  <summary>specify git history depth, for creating shallow clones</summary>
+  <fixtures>
+    <copy src="tools/create_proj" />
+    <copy src="specs/fake.spec" />
+  </fixtures>
+  <steps><![CDATA[
+./create_proj -t fake.spec
+
+cd fake
+
+for i in 1 2 3
+do
+    echo $i >> README
+    git commit -am "Change $i"
+done
+
+GIT_REPO=`pwd`
+
+mkdir ../local && cd $_
+
+if [[ $(git --version |awk '{print $3}') < 1.8.2 ]]; then
+gbs clone --depth=2 file://$GIT_REPO
+else
+gbs clone --depth=3 file://$GIT_REPO
+fi
+
+cd fake
+
+[ $(git rev-list HEAD |wc -l) = 3 ]
+]]></steps>
+</testcase>
diff --git a/cases/clone/test_clone_from_special_repourl.case b/cases/clone/test_clone_from_special_repourl.case
new file mode 100644 (file)
index 0000000..4859ff2
--- /dev/null
@@ -0,0 +1,25 @@
+<testcase>
+  <summary>gbs clone a repo like host:repo.git</summary>
+  <tracking>
+    <ticket>1335</ticket>
+  </tracking>
+  <fixtures>
+    <copy src="tools/create_proj" />
+    <copy src="specs/fake.spec" />
+  </fixtures>
+  <steps><![CDATA[
+./create_proj fake.spec -t
+
+#work: is alias name of file://$PWD/
+git config --global --add url.file://$PWD/.insteadOf work:
+
+mkdir tmp && cd tmp
+
+gbs clone work:fake
+
+test -d fake/.git
+]]></steps>
+  <teardown><![CDATA[
+git config --global --remove-section url.file://$PWD/
+]]></teardown>
+</testcase>
diff --git a/cases/clone/test_clone_help.case b/cases/clone/test_clone_help.case
new file mode 100644 (file)
index 0000000..1c4ec34
--- /dev/null
@@ -0,0 +1,8 @@
+<testcase>
+  <summary>gbs clone help info check</summary>
+  <steps><![CDATA[
+gbs clone --help
+
+gbs clone -h
+]]></steps>
+</testcase>
\ No newline at end of file
diff --git a/cases/clone/test_clone_in_gittree.case b/cases/clone/test_clone_in_gittree.case
new file mode 100644 (file)
index 0000000..3d9bce9
--- /dev/null
@@ -0,0 +1,20 @@
+<testcase>
+  <summary>gbs clone in a git tree</summary>
+  <fixtures>
+    <copy src="tools/create_proj" />
+    <copy src="specs/fake.spec" />
+  </fixtures>
+  <steps><![CDATA[
+./create_proj fake.spec
+
+mkdir tmp
+
+cd tmp
+
+git init
+
+(! gbs clone ../fake 2>&1 | tee ../log)
+
+grep -i "Can't run inside a git repository" ../log
+]]></steps>
+</testcase>
diff --git a/cases/clone/test_clone_negative_clone_twice.case b/cases/clone/test_clone_negative_clone_twice.case
new file mode 100644 (file)
index 0000000..222c637
--- /dev/null
@@ -0,0 +1,15 @@
+<testcase>
+  <summary>negative test: destination path already exists</summary>
+  <fixtures>
+    <copy src="tools/create_proj" />
+    <copy src="specs/fake.spec" />
+  </fixtures>
+  <steps><![CDATA[
+./create_proj fake.spec
+
+# destination path already exists, cannot clone
+(! gbs clone fake 2>&1 |tee log)
+
+grep "Failed to clone" log
+]]></steps>
+</testcase>
diff --git a/cases/clone/test_clone_negative_invalid_uri.case b/cases/clone/test_clone_negative_invalid_uri.case
new file mode 100644 (file)
index 0000000..f261baf
--- /dev/null
@@ -0,0 +1,9 @@
+<testcase>
+  <summary>negative test: gbs clone from an invalid git repo uri</summary>
+  <steps><![CDATA[
+# git repo url is invalid
+(! gbs clone git://gerrit.bj.intel.com/not-exist 2>&1 | tee log)
+
+grep "Failed to clone git://gerrit.bj.intel.com/not-exist" log
+]]></steps>
+</testcase>
diff --git a/cases/clone/test_clone_negative_not_git_repo.case b/cases/clone/test_clone_negative_not_git_repo.case
new file mode 100644 (file)
index 0000000..b90cb88
--- /dev/null
@@ -0,0 +1,11 @@
+<testcase>
+  <summary>negative test: not a git repo, cannot clone</summary>
+  <steps><![CDATA[
+mkdir local; cd local
+
+# destination path is not a git repo, cannot clone
+(! gbs clone ../tools 2>&1 |tee log)
+
+grep "Failed to clone" log
+]]></steps>
+</testcase>
\ No newline at end of file
diff --git a/cases/clone/test_clone_no_opts.case b/cases/clone/test_clone_no_opts.case
new file mode 100644 (file)
index 0000000..ab9cc10
--- /dev/null
@@ -0,0 +1,26 @@
+<testcase>
+  <summary>gbs clone from a git repo uri</summary>
+  <fixtures>
+    <copy src="tools/create_proj" />
+    <copy src="specs/fake.spec" />
+  </fixtures>
+  <steps><![CDATA[
+./create_proj fake.spec --tizen
+
+# create a new branch
+git --git-dir=fake/.git/ branch new
+
+mkdir local
+
+cd local
+
+gbs clone ../fake
+
+# make sure new branch not exists
+! git --git-dir=fake/.git/ show-branch new
+
+git --git-dir=fake/.git/ show-branch upstream
+
+git --git-dir=fake/.git/ show-branch pristine-tar
+]]></steps>
+</testcase>
diff --git a/cases/clone/test_clone_packaging_branch.case b/cases/clone/test_clone_packaging_branch.case
new file mode 100644 (file)
index 0000000..549f027
--- /dev/null
@@ -0,0 +1,32 @@
+<testcase>
+  <summary>specify packaging branch instead of default master branch</summary>
+  <tracking>
+    <change>4774</change>
+  </tracking>
+  <fixtures>
+    <copy src="tools/create_proj" />
+    <copy src="specs/fake.spec" />
+  </fixtures>
+  <steps><![CDATA[
+./create_proj fake.spec --tizen
+
+# create a new branch
+git --git-dir=fake/.git/ branch new
+
+mkdir local
+
+cd local
+
+gbs clone --packaging-branch=new ../fake
+
+# make sure current branch is that I specified
+[[ $(git --git-dir=fake/.git/ branch|grep \*|cut -d' ' -f2) = new ]]
+
+rm -rf fake
+
+gbs clone ../fake
+
+# make sure current branch is default master
+[[ $(git --git-dir=fake/.git/ branch|grep \*|cut -d' ' -f2) = master ]]
+]]></steps>
+</testcase>
diff --git a/cases/clone/test_clone_to_newdir.case b/cases/clone/test_clone_to_newdir.case
new file mode 100644 (file)
index 0000000..c62954f
--- /dev/null
@@ -0,0 +1,24 @@
+<testcase>
+  <summary>gbs clone a repo to a specific directory</summary>
+  <tracking>
+    <ticket>1336</ticket>
+  </tracking>
+  <fixtures>
+    <copy src="tools/create_proj" />
+    <copy src="specs/fake.spec" />
+  </fixtures>
+  <steps><![CDATA[
+./create_proj fake.spec --tizen
+
+gbs clone fake fake-clone
+
+test -d fake-clone/.git
+
+mkdir -p foo
+
+# clone to an exist but empty directory
+gbs clone fake foo
+
+test -d foo/.git
+]]></steps>
+</testcase>
diff --git a/cases/clone/test_clone_track_all_branches.case b/cases/clone/test_clone_track_all_branches.case
new file mode 100644 (file)
index 0000000..75eda62
--- /dev/null
@@ -0,0 +1,29 @@
+<testcase>
+  <summary>tarck all remote branches</summary>
+  <fixtures>
+    <copy src="tools/create_proj" />
+    <copy src="specs/fake.spec" />
+  </fixtures>
+  <steps><![CDATA[
+./create_proj fake.spec --tizen
+
+# create a new branch
+git --git-dir=fake/.git/ branch new
+
+mkdir local
+
+cd local
+
+gbs clone --all ../fake
+
+# make sure new branch exists
+git --git-dir=fake/.git/ show-branch new
+
+rm -rf fake
+
+gbs clone ../fake
+
+# make sure new branch doesn't exist. Compare
+! git --git-dir=fake/.git/ show-branch new
+]]></steps>
+</testcase>
diff --git a/cases/clone/test_clone_upstream-branch.case b/cases/clone/test_clone_upstream-branch.case
new file mode 100644 (file)
index 0000000..99eaedd
--- /dev/null
@@ -0,0 +1,25 @@
+<testcase>
+  <summary>gbs clone and set a upstream branch</summary>
+  <fixtures>
+    <copy src="tools/create_proj" />
+    <copy src="specs/fake.spec" />
+  </fixtures>
+  <steps><![CDATA[
+./create_proj fake.spec --tizen
+
+git --git-dir=fake/.git/ show-branch upstream
+
+# create a new branch
+git --git-dir=fake/.git/ branch new
+
+mkdir local
+
+cd local
+
+gbs clone --upstream-branch=new ../fake
+
+git --git-dir=fake/.git/ show-branch new
+
+(! git --git-dir=fake/.git/ show-branch upstream)
+]]></steps>
+</testcase>
diff --git a/cases/clone/test_clone_upstream-branch_all.case b/cases/clone/test_clone_upstream-branch_all.case
new file mode 100644 (file)
index 0000000..d55c621
--- /dev/null
@@ -0,0 +1,27 @@
+<testcase>
+  <summary>gbs clone all branches and set a new upstream branch</summary>
+  <fixtures>
+    <copy src="tools/create_proj" />
+    <copy src="specs/fake.spec" />
+  </fixtures>
+  <steps><![CDATA[
+./create_proj fake.spec --tizen
+
+git --git-dir=fake/.git/ show-branch upstream
+
+# create a new branch
+git --git-dir=fake/.git/ branch new
+
+mkdir local
+
+cd local
+
+gbs clone --all --upstream-branch=new ../fake
+
+git --git-dir=fake/.git/ show-branch new
+
+git --git-dir=fake/.git/ show-branch upstream
+
+git --git-dir=fake/.git/ show-branch pristine-tar
+]]></steps>
+</testcase>
diff --git a/cases/conf/test_buildconf_in_profile.case b/cases/conf/test_buildconf_in_profile.case
new file mode 100644 (file)
index 0000000..d669fe1
--- /dev/null
@@ -0,0 +1,45 @@
+<testcase>
+  <summary>set buildconf in profile.tizen section</summary>
+  <tracking>
+    <ticket>1008</ticket>
+  </tracking>
+  <fixtures>
+    <copy src="tools/create_proj" />
+    <copy src="tools/assert" />
+    <copy src="specs/fake.spec" />
+    <copy src="conf/tizen.conf" />
+  </fixtures>
+  <steps><![CDATA[
+./create_proj fake.spec
+
+. assert
+
+cat >gbs.conf <<EOF
+[general]
+tmpdir=$(pwd)/tmp
+profile = profile.tizen
+work_dir=.
+
+[profile.tizen]
+repos = repo.fake
+buildconf = \${work_dir}/project-conf/tizen.conf
+
+[repo.fake]
+url = $GBS_REPOURL
+user = test
+passwdx = QlpoOTFBWSZTWScPk3AAAAAIAD8AIAAhgAwDJy7i7kinChIE4fJuAA==
+EOF
+
+mkdir project-conf
+
+cp tizen.conf project-conf/
+
+# make some changes in tizen.conf, make sure it unique
+echo "# $(date)" >>project-conf/tizen.conf
+
+gbs -c gbs.conf build --arch=i586 --overwrite --clean fake
+
+# make sure my specific tizen.conf was copied to tmpdir
+diff project-conf/tizen.conf tmp/$USER-gbs/tizen.conf
+]]></steps>
+</testcase>
diff --git a/cases/conf/test_encode_password.case b/cases/conf/test_encode_password.case
new file mode 100644 (file)
index 0000000..ef6e2a6
--- /dev/null
@@ -0,0 +1,24 @@
+<testcase>
+  <summary>test plaintext password if can be encoded</summary>
+  <fixtures>
+    <copy src="tools/create_proj" />
+    <copy src="specs/fake.spec" />
+    <content target="passwd.cfg">
+[general]
+editor = cat
+profile = profile.current
+
+[profile.current]
+passwd = 123
+    </content>
+  </fixtures>
+  <steps><![CDATA[
+./create_proj fake.spec
+
+cd fake
+
+gbs -c ../passwd.cfg changelog -a
+
+grep 'passwdx = QlpoOTFBWSZTWSatDpsAAAAIADgAIAAhmBmEYXckU4UJAmrQ6bA=' ../passwd.cfg
+]]></steps>
+</testcase>
diff --git a/cases/conf/test_error_profile.case b/cases/conf/test_error_profile.case
new file mode 100644 (file)
index 0000000..52ded2c
--- /dev/null
@@ -0,0 +1,26 @@
+<testcase>
+  <summary>test error profile value in general section</summary>
+  <tracking>
+    <change>16607</change>
+  </tracking>
+  <fixtures>
+    <copy src="tools/create_proj" />
+    <copy src="specs/fake.spec" />
+    <content target="error_profile.cfg">
+[general]
+profile = profile.error
+    </content>
+  </fixtures>
+  <steps><![CDATA[
+./create_proj fake.spec
+
+(! gbs -c error_profile.cfg -d lb -A i586 fake --overwrite 2>&1 |tee log)
+
+# check searching path when no specified profile
+# first search specified config file, then search .gbs.conf in home dir
+grep "gbs:debug: Loading gbs config file.*error_profile.cfg" log
+grep "gbs:debug: Loading gbs config file.*.gbs.conf" log
+
+grep "error: No profile \"error\" defined in gbs.conf" log
+]]></steps>
+</testcase>
diff --git a/cases/conf/test_find_gbs_conf_in_repo_dir.case b/cases/conf/test_find_gbs_conf_in_repo_dir.case
new file mode 100644 (file)
index 0000000..07548e6
--- /dev/null
@@ -0,0 +1,49 @@
+<testcase>
+  <summary>run gbs in package subdir, find gbs conf in .repo dir</summary>
+  <tracking>
+    <ticket>1008</ticket>
+  </tracking>
+  <fixtures>
+    <copy src="tools/create_proj" />
+    <copy src="tools/assert" />
+    <copy src="specs/fake.spec" />
+    <copy src="conf/tizen.conf" />
+  </fixtures>
+  <steps><![CDATA[
+./create_proj fake.spec
+
+. assert
+
+cat >.gbs.conf <<EOF
+[general]
+work_dir=$(pwd)/tmp
+profile = profile.tizen
+
+[profile.tizen]
+repos = repo.fake
+buildconf = \${work_dir}/project-conf/tizen.conf
+
+[repo.fake]
+url = $GBS_REPOURL
+user = test
+passwdx = QlpoOTFBWSZTWScPk3AAAAAIAD8AIAAhgAwDJy7i7kinChIE4fJuAA==
+EOF
+
+# make a fake .repo dir in curdir, gbs will find .gbs.conf in curdir
+mkdir -p tmp/project-conf .repo
+
+cp tizen.conf tmp/project-conf/
+
+# make some changes in tizen.conf, make sure it unique
+echo "# $(date)" >>tmp/project-conf/tizen.conf
+
+cd fake/packaging/
+
+gbs build --arch=i586 --overwrite --clean
+
+cd ../../
+
+# make sure my specific tizen.conf was copied to tmpdir
+diff tmp/project-conf/tizen.conf /var/tmp/$USER-gbs/tizen.conf
+]]></steps>
+</testcase>
diff --git a/cases/conf/test_inherit_only_passwdx.case b/cases/conf/test_inherit_only_passwdx.case
new file mode 100644 (file)
index 0000000..bd4d90c
--- /dev/null
@@ -0,0 +1,16 @@
+<testcase>
+  <summary>test inherit only password in conf</summary>
+  <tracking>
+    <ticket>387</ticket>
+  </tracking>
+  <fixtures>
+    <copy src="tools/create_proj" />
+    <copy src="specs/fake.spec" />
+    <copy src="conf/inherit_only_passwdx.cfg" />
+  </fixtures>
+  <steps><![CDATA[
+./create_proj fake.spec
+
+gbs -c inherit_only_passwdx.cfg build -A i586 --overwrite -C fake
+]]></steps>
+</testcase>
diff --git a/cases/conf/test_inherit_only_user.case b/cases/conf/test_inherit_only_user.case
new file mode 100644 (file)
index 0000000..26a2ef9
--- /dev/null
@@ -0,0 +1,16 @@
+<testcase>
+  <summary>test only inherit user in conf</summary>
+  <tracking>
+    <ticket>387</ticket>
+  </tracking>
+  <fixtures>
+    <copy src="tools/create_proj" />
+    <copy src="specs/fake.spec" />
+    <copy src="conf/inherit_only_user.cfg" />
+  </fixtures>
+  <steps><![CDATA[
+./create_proj fake.spec
+
+gbs -c inherit_only_user.cfg build -A i586 --overwrite --clean fake
+]]></steps>
+</testcase>
diff --git a/cases/conf/test_load_conf_in_gitdir.case b/cases/conf/test_load_conf_in_gitdir.case
new file mode 100644 (file)
index 0000000..c538857
--- /dev/null
@@ -0,0 +1,30 @@
+<testcase>
+  <summary>fix that gbs cannot load gbs conf in git dir</summary>
+  <tracking>
+    <ticket>1272</ticket>
+  </tracking>
+  <fixtures>
+    <copy src="tools/create_proj" />
+    <copy src="specs/fake.spec" />
+  </fixtures>
+  <steps><![CDATA[
+./create_proj fake.spec
+
+cat >fake/.gbs.conf <<EOF
+[general]
+tmpdir = $PWD/foo
+EOF
+
+
+cat >.gbs.conf <<EOF
+[general]
+tmpdir = $PWD/bar
+EOF
+
+gbs export fake
+
+[ -d foo ]
+
+[ ! -d bar ]
+]]></steps>
+</testcase>
diff --git a/cases/conf/test_missing_option.case b/cases/conf/test_missing_option.case
new file mode 100644 (file)
index 0000000..85a860f
--- /dev/null
@@ -0,0 +1,31 @@
+<testcase>
+  <summary>test missing profile option in general section</summary>
+  <tracking>
+    <ticket>56</ticket>
+  </tracking>
+  <fixtures>
+    <copy src="tools/create_proj" />
+    <copy src="specs/fake.spec" />
+  </fixtures>
+  <steps><![CDATA[
+./create_proj fake.spec
+
+origin_conf="$HOME/.gbs.conf"
+
+if [ -e "$HOME/.gbs.conf" ]; then
+    mv ~/.gbs.conf ~/conf.bak
+fi
+
+cat >~/.gbs.conf <<EOF
+[general]
+tmpdir = /var/tmp
+EOF
+
+(! gbs lb -A i586 fake 2>&1 |tee log)
+
+grep "error: <gbs>Specified building target in command line is invalid" log
+]]></steps>
+  <teardown><![CDATA[
+[ -e ~/conf.bak ] && mv ~/conf.bak ~/.gbs.conf
+]]></teardown>
+</testcase>
diff --git a/cases/conf/test_mix_old_newconf.case b/cases/conf/test_mix_old_newconf.case
new file mode 100644 (file)
index 0000000..4d6263e
--- /dev/null
@@ -0,0 +1,21 @@
+<testcase>
+  <summary>test if new config can work when there's old config in $HOME</summary>
+  <fixtures>
+    <copy src="tools/create_proj" />
+    <copy src="specs/fake.spec" />
+    <copy src="conf/base.cfg" target=".gbs.conf" />
+    <copy src="conf/old.cfg" />
+  </fixtures>
+  <steps><![CDATA[
+./create_proj fake.spec
+
+test -f ~/.gbs.conf && cp ~/.gbs.conf gbs.conf.bak
+
+cp -f old.cfg ~/.gbs.conf
+
+gbs lb -A i586 --overwrite --clean fake
+]]></steps>
+  <teardown><![CDATA[
+test -f gbs.conf.bak && cp gbs.conf.bak ~/.gbs.conf
+]]></teardown>
+</testcase>
diff --git a/cases/conf/test_multiple_conf_override.case b/cases/conf/test_multiple_conf_override.case
new file mode 100644 (file)
index 0000000..843ef27
--- /dev/null
@@ -0,0 +1,34 @@
+<testcase>
+  <summary>test multiple config files, override the setting in ~/.gbs.conf</summary>
+  <tracking>
+    <ticket>27</ticket>
+  </tracking>
+  <fixtures>
+    <copy src="tools/create_proj" />
+    <copy src="specs/fake.spec" />
+    <copy src="conf/base.cfg" />
+  </fixtures>
+  <steps><![CDATA[
+./create_proj fake.spec
+
+test -f ~/.gbs.conf && cp ~/.gbs.conf gbs.conf.bak
+
+cp base.cfg ~/.gbs.conf
+
+gbs export fake
+
+[ ! -d tmp ]
+
+cat >.gbs.conf <<EOF
+[general]
+tmpdir=$(pwd)/tmp
+EOF
+
+gbs export fake
+
+[ -d tmp ]
+]]></steps>
+  <teardown><![CDATA[
+test -f gbs.conf.bak && cp gbs.conf.bak ~/.gbs.conf
+]]></teardown>
+</testcase>
diff --git a/cases/conf/test_multiple_repos.case b/cases/conf/test_multiple_repos.case
new file mode 100644 (file)
index 0000000..36c360a
--- /dev/null
@@ -0,0 +1,20 @@
+<testcase>
+  <summary>test multiple repositories in repos option in profile sction</summary>
+  <fixtures>
+    <copy src="tools/create_proj" />
+    <copy src="specs/fake.spec" />
+    <copy src="conf/base.cfg" />
+  </fixtures>
+  <setup><![CDATA[
+BUILDROOT=tmp_buildroot
+]]></setup>
+  <steps><![CDATA[
+./create_proj fake.spec
+
+sed -i 's/^repos.*/repos = repo.tizen_base, repo.tizen_main/' base.cfg
+gbs -c base.cfg lb -B $BUILDROOT -A i586 fake/
+]]></steps>
+  <teardown><![CDATA[
+sudo rm -rf $BUILDROOT
+]]></teardown>
+</testcase>
diff --git a/cases/conf/test_new_auto_generated_conf.case b/cases/conf/test_new_auto_generated_conf.case
new file mode 100644 (file)
index 0000000..f19b3b6
--- /dev/null
@@ -0,0 +1,13 @@
+<testcase>
+  <summary>test new created gbs config</summary>
+  <fixtures>
+    <copy src="tools/create_proj" />
+    <copy src="specs/fake.spec" />
+    <copy src="conf/base.cfg" />
+  </fixtures>
+  <steps><![CDATA[
+./create_proj fake.spec
+
+gbs -c base.cfg lb -A i586 fake --overwrite --clean
+]]></steps>
+</testcase>
diff --git a/cases/conf/test_no_such_section.case b/cases/conf/test_no_such_section.case
new file mode 100644 (file)
index 0000000..3641384
--- /dev/null
@@ -0,0 +1,21 @@
+<testcase>
+  <summary>test no general section</summary>
+  <tracking>
+    <ticket>56</ticket>
+  </tracking>
+  <fixtures>
+    <copy src="tools/create_proj" />
+    <copy src="specs/fake.spec" />
+    <content target="no_general_section.cfg">
+profile = profile.tizen
+[profile.tizen]
+    </content>
+  </fixtures>
+  <steps><![CDATA[
+./create_proj fake.spec
+
+(! gbs -c no_general_section.cfg lb -A i586 fake/ 2>&1 |tee log)
+
+grep 'error.*config file error:File contains no section headers' log
+]]></steps>
+</testcase>
diff --git a/cases/conf/test_oldconf.case b/cases/conf/test_oldconf.case
new file mode 100644 (file)
index 0000000..ef16b4f
--- /dev/null
@@ -0,0 +1,19 @@
+<testcase>
+  <summary>test if old config can be used</summary>
+  <fixtures>
+    <copy src="tools/create_proj" />
+    <copy src="specs/fake.spec" />
+    <copy src="conf/old.cfg" />
+  </fixtures>
+  <steps><![CDATA[
+./create_proj fake.spec
+
+sed -i "s|^tmpdir.*|tmpdir = $(pwd)/tmp|" old.cfg
+
+[ ! -d tmp ]
+
+gbs -c old.cfg export fake
+
+[ -d tmp ]
+]]></steps>
+</testcase>
diff --git a/cases/conf/test_only_passwdx_no_user.case b/cases/conf/test_only_passwdx_no_user.case
new file mode 100644 (file)
index 0000000..1c3a514
--- /dev/null
@@ -0,0 +1,18 @@
+<testcase>
+  <summary>negative test: only passwdx, no user in conf</summary>
+  <tracking>
+    <ticket>387</ticket>
+  </tracking>
+  <fixtures>
+    <copy src="tools/create_proj" />
+    <copy src="specs/fake.spec" />
+    <copy src="conf/only_passwdx_no_user.cfg" />
+  </fixtures>
+  <steps><![CDATA[
+./create_proj fake.spec
+
+(! gbs -c only_passwdx_no_user.cfg lb -A i586 fake --overwrite 2>&1 |tee log)
+
+grep "error.*No user is specified only password" log
+]]></steps>
+</testcase>
diff --git a/cases/conf/test_plaintext_password_issue.case b/cases/conf/test_plaintext_password_issue.case
new file mode 100644 (file)
index 0000000..d705de4
--- /dev/null
@@ -0,0 +1,18 @@
+<testcase>
+  <summary>test plaintext password issue when change http to https</summary>
+  <tracking>
+    <ticket>390</ticket>
+  </tracking>
+  <fixtures>
+    <copy src="tools/create_proj" />
+    <copy src="specs/fake.spec" />
+    <copy src="conf/plaintext_password_issue.cfg" />
+  </fixtures>
+  <steps><![CDATA[
+./create_proj fake.spec
+
+gbs -c plaintext_password_issue.cfg lb -A i586 --overwrite fake 2>&1 |tee log
+
+grep -v "http://test:123456" log
+]]></steps>
+</testcase>
diff --git a/cases/conf/test_profile_name_format.case b/cases/conf/test_profile_name_format.case
new file mode 100644 (file)
index 0000000..63dd9bd
--- /dev/null
@@ -0,0 +1,38 @@
+<testcase>
+  <summary>profile name format test</summary>
+  <tracking>
+    <ticket>1051</ticket>
+    <change>5465</change>
+  </tracking>
+  <fixtures>
+    <copy src="tools/create_proj" />
+    <copy src="tools/assert" />
+    <copy src="specs/fake.spec" />
+  </fixtures>
+  <steps><![CDATA[
+./create_proj fake.spec
+
+. assert
+
+cat >fakerepo.cfg <<EOF
+[general]
+#if profile name startswith digital, string tizen will be added before it
+#and '-' will be replaced with '_'
+profile = profile.2.1-beta
+
+[profile.2.1-beta]
+repos = repo.fake_repo
+
+[repo.fake_repo]
+url = $GBS_REPOURL
+user = test
+passwdx = QlpoOTFBWSZTWScPk3AAAAAIAD8AIAAhgAwDJy7i7kinChIE4fJuAA==
+EOF
+
+rm -rf ~/GBS-ROOT/local/repos/tizen2.1_beta
+
+gbs -c fakerepo.cfg build fake --arch=i586 --overwrite --clean
+
+test -d ~/GBS-ROOT/local/repos/tizen2.1_beta
+]]></steps>
+</testcase>
diff --git a/cases/conf/test_reference_option_not_exist.case b/cases/conf/test_reference_option_not_exist.case
new file mode 100644 (file)
index 0000000..6fdd43a
--- /dev/null
@@ -0,0 +1,43 @@
+<testcase>
+  <summary>Raise ConfigError if referenced key is not defined in general section</summary>
+  <tracking>
+    <change>5104</change>
+  </tracking>
+  <fixtures>
+    <copy src="tools/create_proj" />
+    <copy src="tools/assert" />
+    <copy src="specs/fake.spec" />
+    <copy src="conf/tizen.conf" />
+  </fixtures>
+  <steps><![CDATA[
+./create_proj fake.spec
+
+. assert
+
+cat >gbs.conf <<EOF
+[general]
+profile = profile.tizen
+
+[profile.tizen]
+repos = repo.fake
+#foobar is not defined in general section
+buildconf = \${foobar}/project-conf/tizen.conf
+
+[repo.fake]
+url = $GBS_REPOURL
+user = test
+passwdx = QlpoOTFBWSZTWScPk3AAAAAIAD8AIAAhgAwDJy7i7kinChIE4fJuAA==
+EOF
+
+mkdir -p tmp/project-conf
+
+cp tizen.conf tmp/project-conf/
+
+# make some changes in tizen.conf, make sure it unique
+echo "# $(date)" >>tmp/project-conf/tizen.conf
+
+(! gbs -c gbs.conf build --arch=i586 --overwrite --clean fake 2>&1|tee log)
+
+grep "error:.*<config>unknown key:.*foobar" log
+]]></steps>
+</testcase>
diff --git a/cases/conf/test_specified_conf.case b/cases/conf/test_specified_conf.case
new file mode 100644 (file)
index 0000000..9fb34ed
--- /dev/null
@@ -0,0 +1,41 @@
+<testcase>
+  <summary>test specified conf using -c option</summary>
+  <tracking>
+    <ticket>1273</ticket>
+  </tracking>
+  <fixtures>
+    <copy src="tools/create_proj" />
+    <copy src="specs/fake.spec" />
+  </fixtures>
+  <steps><![CDATA[
+./create_proj fake.spec
+
+cd fake
+
+git mv packaging package
+
+git commit -am "Rename packaging directory"
+
+cd -
+
+cat >.gbs.conf <<EOF
+[general]
+tmpdir=$(pwd)/foo
+packaging_dir = package
+EOF
+
+cat >new.conf <<EOF
+[general]
+tmpdir=$(pwd)/bar
+EOF
+
+#default conf will be overwritten, instead of cleaning up
+#changed from gbs v0.18.1
+
+gbs -c new.conf export fake
+
+[ -d bar ]
+
+[ ! -d foo ]
+]]></steps>
+</testcase>
diff --git a/cases/conf/test_tmpdir_in_general.case b/cases/conf/test_tmpdir_in_general.case
new file mode 100644 (file)
index 0000000..37b9067
--- /dev/null
@@ -0,0 +1,37 @@
+<testcase>
+  <summary>set tmpdir value in general section</summary>
+  <fixtures>
+    <copy src="tools/create_proj" />
+    <copy src="tools/assert" />
+    <copy src="specs/fake.spec" />
+  </fixtures>
+  <steps><![CDATA[
+./create_proj fake.spec
+
+. assert
+
+cat >gbs.conf <<EOF
+[general]
+profile = profile.tizen
+tmpdir=$(pwd)/tmp
+
+[profile.tizen]
+repos = repo.fakerepo
+
+[repo.fakerepo]
+url = $GBS_REPOURL
+user = test
+passwdx = QlpoOTFBWSZTWScPk3AAAAAIAD8AIAAhgAwDJy7i7kinChIE4fJuAA==
+EOF
+
+gbs -c gbs.conf export fake
+
+[ -d tmp ]
+
+rm -rf tmp
+
+gbs -c gbs.conf build --arch=i586 --overwrite --clean fake
+
+[ -d tmp ]
+]]></steps>
+</testcase>
diff --git a/cases/conf/test_workdir_in_general.case b/cases/conf/test_workdir_in_general.case
new file mode 100644 (file)
index 0000000..cd3d2e9
--- /dev/null
@@ -0,0 +1,45 @@
+<testcase>
+  <summary>set workdir in general section</summary>
+  <tracking>
+    <change>5075</change>
+    <ticket>1008</ticket>
+  </tracking>
+  <fixtures>
+    <copy src="tools/create_proj" />
+    <copy src="tools/assert" />
+    <copy src="specs/fake.spec" />
+    <copy src="conf/tizen.conf" />
+  </fixtures>
+  <steps><![CDATA[
+./create_proj fake.spec
+
+. assert
+
+cat >gbs.conf <<EOF
+[general]
+work_dir=$(pwd)/tmp
+profile = profile.tizen
+
+[profile.tizen]
+repos = repo.fake
+buildconf = \${work_dir}/project-conf/tizen.conf
+
+[repo.fake]
+url = $GBS_REPOURL
+user = test
+passwdx = QlpoOTFBWSZTWScPk3AAAAAIAD8AIAAhgAwDJy7i7kinChIE4fJuAA==
+EOF
+
+mkdir -p tmp/project-conf
+
+cp tizen.conf tmp/project-conf/
+
+# make some changes in tizen.conf, make sure it unique
+echo "# $(date)" >>tmp/project-conf/tizen.conf
+
+gbs -c gbs.conf build --arch=i586 --overwrite --clean fake
+
+# make sure my specific tizen.conf was copied to tmpdir
+diff tmp/project-conf/tizen.conf /var/tmp/$USER-gbs/tizen.conf
+]]></steps>
+</testcase>
diff --git a/cases/devel/base.xml b/cases/devel/base.xml
new file mode 100644 (file)
index 0000000..cb62ba8
--- /dev/null
@@ -0,0 +1,21 @@
+<testcase>
+  <summary>{% block summary %}{% endblock %}</summary>
+  <tracking>{% block tracking %}{% endblock %}</tracking>
+  {% block all_fixtures %}
+  <fixtures>
+    <copy src="tools/create_proj" />
+    <copy src="specs/sw-tools.spec" />
+    {% block fixtures %}{% endblock %}
+  </fixtures>
+  {% endblock %}
+  {% block all_qa %}
+  <qa>
+    <prompt>What is the upstream version?</prompt>
+    <answer></answer>
+    {% block qa %}{% endblock %}
+  </qa>
+  {% endblock %}
+  <setup><![CDATA[{% block setup %}{% endblock %}]]></setup>
+  <steps><![CDATA[{% block steps %}{% endblock %}]]></steps>
+  <teardown><![CDATA[{% block teardown %}{% endblock %}]]></teardown>
+</testcase>
diff --git a/cases/devel/gbs_devel_convert_normal_with_upstream_tag.case b/cases/devel/gbs_devel_convert_normal_with_upstream_tag.case
new file mode 100644 (file)
index 0000000..8fafb6e
--- /dev/null
@@ -0,0 +1,41 @@
+{% extends "base.xml" %}
+
+{% block summary %}
+Gbs devel convert normal should with upstream tag in git tree
+{% endblock %}
+
+{% block steps %}
+./create_proj sw-tools.spec --tizen
+
+cd sw-tools
+
+#Current branch
+git branch | grep master
+
+#Both packaging dir and source(README) exist on working branch
+ls | grep packaging
+
+ls | grep README
+
+git branch | grep upstream
+
+#With tag:upstream/0.1
+git tag | grep upstream/0.1
+
+#Gbs devel convert successful
+gbs devel convert | tee ../log
+
+#Current branch after gbs devel convert
+git branch | grep master-orphan
+
+grep -i "Converting package to orphan-packaging git layout" ../log
+
+grep -i "You're now on the new 'master-orphan' packaging branch" ../log
+
+#Convert a package directory from master branch to new branch
+[ -f packaging/sw-tools.spec ]
+
+#Only packaging dir exists, no sources(README) on orphan packaging branch
+( ! ls | grep -v packaging )
+
+{% endblock %}
diff --git a/cases/devel/gbs_devel_convert_on_orphan_packaging_branch.case b/cases/devel/gbs_devel_convert_on_orphan_packaging_branch.case
new file mode 100644 (file)
index 0000000..5d044f5
--- /dev/null
@@ -0,0 +1,34 @@
+{% extends "base.xml" %}
+
+{% block summary %}
+Gbs devel convert on orphan packaging branch will fail
+{% endblock %}
+
+{% block steps %}
+./create_proj sw-tools.spec --tizen
+
+cd sw-tools
+
+#Current branch
+git branch | grep master
+
+#Gbs devel convert successful
+gbs devel convert | tee ../log
+
+#Current branch after gbs devel convert
+git branch | grep master-orphan
+
+grep -i "Converting package to orphan-packaging git layout" ../log
+
+grep -i "You're now on the new 'master-orphan' packaging branch" ../log
+
+#Convert a package directory from master branch to new branch
+[ -f packaging/sw-tools.spec ]
+
+#Convert on orphan packaging branch
+( ! gbs devel convert 2>&1 | tee ../log2 )
+
+grep -i "error: Seems you're already using orphan-packaging model - master-orphan is not based on upstream version 0.1" ../log2
+
+grep -i "error: <gbs>Action failed" ../log2
+{% endblock %}
diff --git a/cases/devel/gbs_devel_convert_retain_history.case b/cases/devel/gbs_devel_convert_retain_history.case
new file mode 100644 (file)
index 0000000..fcca85c
--- /dev/null
@@ -0,0 +1,47 @@
+{% extends "base.xml" %}
+
+{% block summary %}
+Gbs devel convert with subcommand --retain-history
+{% endblock %}
+
+{% block steps %}
+./create_proj sw-tools.spec --tizen
+
+cd sw-tools
+
+echo test >> README
+
+git commit -a -m "add test"
+
+#Current branch
+git branch | grep master
+
+#Commit number of local change
+COMMIT=$(git rev-parse --verify HEAD)
+
+#Gbs devel convert --retain-history successful
+gbs devel convert --retain-history | tee ../log
+
+#Current branch after gbs devel convert
+git branch | grep master-orphan
+
+grep -i "Converting package to orphan-packaging git layout" ../log
+
+grep -i "Importing packaging files from branch 'master' to 'master-orphan'" ../log
+
+#Create corresponding commits in the new orphan packaging branch
+grep -i "Generating patches from git" ../log
+
+grep -i "You're now on the new 'master-orphan' packaging branch" ../log
+
+[ -f packaging/sw-tools.spec ]
+
+#The generated patch
+[ -f packaging/*test.patch ]
+
+#Preserve the history of the local changes on working(master) branch to orphan branch
+git log | grep ${COMMIT}
+
+#Preserved detail commit title of local change
+git log | grep "add test"
+{% endblock %}
diff --git a/cases/devel/gbs_devel_convert_retain_history_with_empty_commit.case b/cases/devel/gbs_devel_convert_retain_history_with_empty_commit.case
new file mode 100644 (file)
index 0000000..be32968
--- /dev/null
@@ -0,0 +1,43 @@
+{% extends "base.xml" %}
+
+{% block summary %}
+Gbs devel convert --retain-history with empty commit in working branch
+{% endblock %}
+
+{% block steps %}
+./create_proj sw-tools.spec --tizen
+
+cd sw-tools
+
+echo test >> README
+
+git commit -a -m "add test"
+
+#Add an empty commit in working(master) branch
+git commit --allow-empty -m "add an empty commit"
+
+#Current branch
+git branch | grep master
+
+#Gbs devel convert --retain-history successful
+gbs devel convert --retain-history | tee ../log
+
+#Current branch after gbs devel convert
+git branch | grep master-orphan
+
+grep -i "Converting package to orphan-packaging git layout" ../log
+
+grep -i "Importing packaging files from branch 'master' to 'master-orphan'" ../log
+
+#The empty commit isn't generated
+grep -i "Skipping commit" ../log
+
+grep -i "Generating patches from git" ../log
+
+grep -i "You're now on the new 'master-orphan' packaging branch" ../log
+
+[ -f packaging/sw-tools.spec ]
+
+#Successfully generated patch
+[ -f packaging/*test.patch ]
+{% endblock %}
diff --git a/cases/devel/gbs_devel_convert_with_development_branch_from_working_branch_exists.case b/cases/devel/gbs_devel_convert_with_development_branch_from_working_branch_exists.case
new file mode 100644 (file)
index 0000000..cb31988
--- /dev/null
@@ -0,0 +1,48 @@
+{% extends "base.xml" %}
+
+{% block summary %}
+Gbs devel convert on orphan branch will fail if there is development 
+branch from working(master) branch exists
+{% endblock %}
+
+{% block steps %}
+./create_proj sw-tools.spec --tizen
+
+cd sw-tools
+
+#Current branch
+git branch | grep master
+
+gbs devel start
+
+#Generate development branch from master
+git branch | grep development/master/0.1
+
+#Switch to master branch
+gbs devel switch
+
+#Convert failed
+( ! gbs devel convert 2>&1 | tee ../log )
+
+grep -i "Converting package to orphan-packaging git layout" ../log
+
+grep -i "Seems you're already using orphan-packaging model - pq branch development/master/0.1 already exists" ../log
+
+gbs devel drop
+
+#Development branch has been removed
+( ! git branch | grep development/master/0.1 )
+
+#Successfully convert
+gbs devel convert | tee ../log2
+
+#Current branch after gbs devel convert
+git branch | grep master-orphan
+
+grep -i "Converting package to orphan-packaging git layout" ../log2
+
+grep -i "You're now on the new 'master-orphan' packaging branch" ../log2
+
+#Convert a package directory from master branch to new branch
+[ -f packaging/sw-tools.spec ]
+{% endblock %}
diff --git a/cases/devel/gbs_devel_convert_without_upstream_tag.case b/cases/devel/gbs_devel_convert_without_upstream_tag.case
new file mode 100644 (file)
index 0000000..e0b6af6
--- /dev/null
@@ -0,0 +1,26 @@
+{% extends "base.xml" %}
+
+{% block summary %}
+Gbs devel convert without upstream tag in git tree
+{% endblock %}
+
+{% block steps %}
+./create_proj sw-tools.spec
+
+cd sw-tools
+
+( ! git branch | grep upstream )
+
+#No upstream tag in git tree
+( ! git tag | grep upstream/0.1 )
+
+#Gbs devel convert failed
+( ! gbs devel convert 2>&1 | tee ../log )
+
+grep -i "Converting package to orphan-packaging git layout" ../log
+
+#Gbs devel convert failed because of no upstream tag
+grep -i "Couldn't find upstream version 0.1" ../log
+
+grep -i "Action failed" ../log
+{% endblock %}
diff --git a/cases/devel/gbs_devel_drop_on_development_branch.case b/cases/devel/gbs_devel_drop_on_development_branch.case
new file mode 100644 (file)
index 0000000..d8d0095
--- /dev/null
@@ -0,0 +1,32 @@
+{% extends "base.xml" %}
+
+{% block summary %}
+Gbs devel drop will failed if on development branch
+{% endblock %}
+
+{% block steps %}
+./create_proj sw-tools.spec --tizen
+
+cd sw-tools
+
+#Current branch
+git branch | grep master
+
+#Gbs devel convert successful
+gbs devel convert --retain-history
+
+#Current branch after gbs devel convert
+git branch | grep master-orphan
+
+gbs devel start
+
+#Development branch was generated and switch to it
+git branch | grep development/master-orphan/0.1
+
+#Drop on development branch
+( ! gbs devel drop  2>&1 | tee ../log )
+
+grep -i "error: On a patch-queue branch, can't drop it." ../log
+
+grep -i "error: <gbs>Action failed" ../log
+{% endblock %}
diff --git a/cases/devel/gbs_devel_drop_on_orphan_branch.case b/cases/devel/gbs_devel_drop_on_orphan_branch.case
new file mode 100644 (file)
index 0000000..72816d3
--- /dev/null
@@ -0,0 +1,36 @@
+{% extends "base.xml" %}
+
+{% block summary %}
+Gbs devel drop
+{% endblock %}
+
+{% block steps %}
+./create_proj sw-tools.spec --tizen
+
+cd sw-tools
+
+#Current branch
+git branch | grep master
+
+#Gbs devel convert successful
+gbs devel convert --retain-history
+
+#Current branch after gbs devel convert
+git branch | grep master-orphan
+
+gbs devel start
+
+#Development branch was generated and switch to it
+git branch | grep development/master-orphan/0.1
+
+#Switch to master-orphan branch
+gbs devel switch
+
+#Drop on orphan branch
+gbs devel drop | tee ../log
+
+grep -i "Dropped branch 'development/master-orphan/0.1'" ../log
+
+#No development branch exists after gbs devel drop
+( ! git branch | grep development/master-orphan/0.1 )
+{% endblock %}
diff --git a/cases/devel/gbs_devel_drop_on_working_branch.case b/cases/devel/gbs_devel_drop_on_working_branch.case
new file mode 100644 (file)
index 0000000..9a9ab99
--- /dev/null
@@ -0,0 +1,29 @@
+{% extends "base.xml" %}
+
+{% block summary %}
+Gbs devel drop without orphan branch but on working(master) branch
+{% endblock %}
+
+{% block steps %}
+./create_proj sw-tools.spec --tizen
+
+cd sw-tools
+
+#Current branch
+git branch | grep master
+
+gbs devel start
+
+#Development branch was generated and switch to it
+git branch | grep development/master/0.1
+
+#Switch to working branch
+gbs devel switch
+
+gbs devel drop | tee ../log
+
+grep -i "Dropped branch 'development/master/0.1'" ../log
+
+#No development branch exists after gbs devel drop
+( ! git branch | grep development/master/0.1 )
+{% endblock %}
diff --git a/cases/devel/gbs_devel_drop_with_more_development_branches.case b/cases/devel/gbs_devel_drop_with_more_development_branches.case
new file mode 100644 (file)
index 0000000..6fb15d3
--- /dev/null
@@ -0,0 +1,41 @@
+{% extends "base.xml" %}
+
+{% block summary %}
+Gbs devel drop only removes the development branch that the
+current (upstream) version points to.
+{% endblock %}
+
+{% block steps %}
+./create_proj sw-tools.spec --tizen
+
+cd sw-tools
+
+#Current branch
+git branch | grep master
+
+#Gbs devel convert successful
+gbs devel convert --retain-history
+
+#Current branch after gbs devel convert
+git branch | grep master-orphan
+
+gbs devel start
+
+#Development branch was generated and switch to it
+git branch | grep development/master-orphan/0.1
+
+#Create another development branch
+git branch development/master-orphan/0.2
+
+gbs devel switch
+
+#Drop on orphan branch
+gbs devel drop | tee ../log
+
+grep -i "Dropped branch 'development/master-orphan/0.1'" ../log
+
+#The development branch that current(upstream) version points to was removed 
+( ! git branch | grep development/master-orphan/0.1 )
+
+git branch | grep development/master-orphan/0.2
+{% endblock %}
diff --git a/cases/devel/gbs_devel_drop_without_development_branch.case b/cases/devel/gbs_devel_drop_without_development_branch.case
new file mode 100644 (file)
index 0000000..17588d4
--- /dev/null
@@ -0,0 +1,41 @@
+{% extends "base.xml" %}
+
+{% block summary %}
+Gbs devel drop without development branch willn't fail but get info
+{% endblock %}
+
+{% block steps %}
+./create_proj sw-tools.spec --tizen
+
+cd sw-tools
+
+#Current branch
+git branch | grep master
+
+#Gbs devel convert successful
+gbs devel convert --retain-history
+
+#Current branch after gbs devel convert
+git branch | grep master-orphan
+
+gbs devel start
+
+#Development branch was generated and switch to it
+git branch | grep development/master-orphan/0.1
+
+#Switch to master-orphan branch
+gbs devel switch
+
+#Drop on orphan branch
+gbs devel drop | tee ../log
+
+grep -i "Dropped branch 'development/master-orphan/0.1'" ../log
+
+#No development branch exists after gbs devel drop
+( ! git branch | grep development/master-orphan/0.1 )
+
+#Drop without development branch
+gbs devel drop | tee ../log2
+
+grep -i "info: No patch queue branch found - doing nothing" ../log2
+{% endblock %}
diff --git a/cases/devel/gbs_devel_export_to_orphan_packaging_branch.case b/cases/devel/gbs_devel_export_to_orphan_packaging_branch.case
new file mode 100644 (file)
index 0000000..b09df9e
--- /dev/null
@@ -0,0 +1,64 @@
+{% extends "base.xml" %}
+
+{% block summary %}
+Gbs devel export to orphan packaging branch
+{% endblock %}
+
+{% block steps %}
+./create_proj sw-tools.spec --tizen
+
+cd sw-tools
+
+#Current branch
+git branch | grep master
+
+#Generate orphan branch
+gbs devel convert --retain-history
+
+#Current branch after gbs devel convert
+git branch | grep master-orphan
+
+#Generate development branch and switch to it
+gbs devel start | tee ../log
+
+grep -i "Switching to branch 'development/master-orphan/0.1'" ../log
+
+#Current branch
+git branch | grep development/master-orphan/0.1
+
+echo test >>README
+
+git commit -a -m "test"
+
+gbs devel export | tee ../log2
+
+grep -i "switching to 'master-orphan'" ../log2
+
+#Gbs devel export doesn't automatically commit the changes
+grep "Change" ../log2
+
+#Update the spec file
+grep -i "modified:   packaging/sw-tools.spec" ../log2
+
+grep -i "Untracked files" ../log2
+
+#Generate patch
+grep -i "packaging/0001-test.patch" ../log2
+
+#Generate patch list in spec file
+grep -i "0001-test.patch" packaging/sw-tools.spec
+
+[ -f packaging/0001-test.patch ]
+
+#Maintainer needs to verify the changes and commit mannually
+git add *
+
+git status | grep "Changes to be committed"
+
+git status | grep "new file:   packaging/0001-test.patch"
+
+git status | grep "modified:   packaging/sw-tools.spec"
+
+git commit -m "patches export from development branch"
+
+{% endblock %}
diff --git a/cases/devel/gbs_devel_export_to_working_packaging_branch.case b/cases/devel/gbs_devel_export_to_working_packaging_branch.case
new file mode 100644 (file)
index 0000000..cad6543
--- /dev/null
@@ -0,0 +1,57 @@
+{% extends "base.xml" %}
+
+{% block summary %}
+Gbs devel export to working(master) packaging branch
+{% endblock %}
+
+{% block steps %}
+./create_proj sw-tools.spec --tizen
+
+cd sw-tools
+
+#Current branch
+git branch | grep master
+
+#Generate development branch and switch to it
+gbs devel start | tee ../log
+
+grep -i "Switching to branch 'development/master/0.1'" ../log
+
+#Current branch
+git branch | grep development/master/0.1
+
+echo test >>README
+
+git commit -a -m "test"
+
+gbs devel export | tee ../log2
+
+grep -i "switching to 'master'" ../log2
+
+#Gbs devel export doesn't automatically commit the changes
+grep "Change" ../log2
+
+#Update the spec file
+grep -i "modified:   packaging/sw-tools.spec" ../log2
+
+grep -i "Untracked files" ../log2
+
+#Generate patch
+grep -i "packaging/0001-test.patch" ../log2
+
+#Generate patch list in spec file
+grep -i "0001-test.patch" packaging/sw-tools.spec
+
+[ -f packaging/0001-test.patch ]
+
+#Maintainer needs to verify the changes and commit mannually
+git add *
+
+git status | grep "Changes to be committed"
+
+git status | grep "new file:   packaging/0001-test.patch"
+
+git status | grep "modified:   packaging/sw-tools.spec"
+
+git commit -m "patches export from development branch"
+{% endblock %}
diff --git a/cases/devel/gbs_devel_export_without_orphan_packaging_branch.case b/cases/devel/gbs_devel_export_without_orphan_packaging_branch.case
new file mode 100644 (file)
index 0000000..d68e322
--- /dev/null
@@ -0,0 +1,39 @@
+{% extends "base.xml" %}
+
+{% block summary %}
+Gbs devel export will fail if orphan packaging branch is removed
+{% endblock %}
+
+{% block steps %}
+./create_proj sw-tools.spec --tizen
+
+cd sw-tools
+
+#Current branch
+git branch | grep master
+
+#Generate orphan branch
+gbs devel convert --retain-history
+
+#Current branch after gbs devel convert
+git branch | grep master-orphan
+
+#Generate development branch and switch to it
+gbs devel start | tee ../log
+
+grep -i "Switching to branch 'development/master-orphan/0.1'" ../log
+
+#Current branch
+git branch | grep development/master-orphan/0.1
+
+#Remove orphan branch
+git branch -D master-orphan
+
+( ! gbs devel export 2>&1 | tee ../log2 )
+
+grep -i "fatal: Invalid object name 'master-orphan'" ../log2
+
+grep -i "fatal: Not a valid object name master-orphan" ../log2
+
+grep -i "error: <gbs>can't find any spec file under packaging dir" ../log2
+{% endblock %}
diff --git a/cases/devel/gbs_devel_start_first_time_from_orhpan_branch_with_patch_list_in_spec.case b/cases/devel/gbs_devel_start_first_time_from_orhpan_branch_with_patch_list_in_spec.case
new file mode 100644 (file)
index 0000000..7e41387
--- /dev/null
@@ -0,0 +1,53 @@
+{% extends "base.xml" %}
+
+{% block summary %}
+Gbs devel start first time on orphan packaging branch
+{% endblock %}
+
+{% block tracking %}
+    <change>15753</change>
+{% endblock %}
+
+{% block steps %}
+./create_proj sw-tools.spec --tizen
+
+cd sw-tools
+
+echo test >> README
+
+git commit -a -m "add test"
+
+#Current branch
+git branch | grep master
+
+#Gbs devel convert successful
+gbs devel convert --retain-history
+
+#Current branch after gbs devel convert
+git branch | grep master-orphan
+
+#Patch is generated and added in spec patch list on orhpan branch
+[ -f packaging/*test.patch ]
+
+grep -i "test.patch" packaging/sw-tools.spec
+
+#Gbs devel start
+gbs devel start | tee ../log
+
+#Development branch was generated and switch to it
+git branch | grep development/master-orphan/0.1
+
+grep -i "Switching to branch 'development/master-orphan/0.1'" ../log
+
+grep -i "Patches listed in 'sw-tools.spec' imported on 'development/master-orphan/0.1'" ../log
+
+#Generate .gbs.conf on development branch
+grep -i "Updating local .gbs.conf" ../log
+
+#The patch has been applied on development branch
+grep -i "^test" README
+
+[ ! -f packaging/sw-tools.spec ]
+
+[ -f .gbs.conf ]
+{% endblock %}
diff --git a/cases/devel/gbs_devel_start_from_working_branch_without_patch_list_in_spec.case b/cases/devel/gbs_devel_start_from_working_branch_without_patch_list_in_spec.case
new file mode 100644 (file)
index 0000000..f04e052
--- /dev/null
@@ -0,0 +1,45 @@
+{% extends "base.xml" %}
+
+{% block summary %}
+Gbs devel start from working(master) branch
+{% endblock %}
+
+{% block tracking %}
+    <change>15753</change>
+{% endblock %}
+
+{% block steps %}
+./create_proj sw-tools.spec --tizen
+
+cd sw-tools
+
+echo test >> README
+
+git commit -a -m "add test"
+
+#Current branch
+git branch | grep master
+
+#No patch list in spec on master branch
+( ! grep -i "test.patch" packaging/sw-tools.spec )
+
+#Gbs devel start
+gbs devel start | tee ../log
+
+#Development branch was generated and switch to it
+git branch | grep development/master/0.1
+
+grep -i "Switching to branch 'development/master/0.1'" ../log
+
+#Generate .gbs.conf on development branch
+grep -i "Updating local .gbs.conf" ../log
+
+#No "test" patch applied on development branch because of no related patch list in spec on master branch
+( ! grep -i "Patches listed in 'sw-tools.spec' imported on 'development/master/0.1'" ../log )
+
+( ! grep -i "^test" README )
+
+[ ! -f packaging/sw-tools.spec ]
+
+[ -f .gbs.conf ]
+{% endblock %}
diff --git a/cases/devel/gbs_devel_start_more_time_from_orphan_branch.case b/cases/devel/gbs_devel_start_more_time_from_orphan_branch.case
new file mode 100644 (file)
index 0000000..101b78c
--- /dev/null
@@ -0,0 +1,59 @@
+{% extends "base.xml" %}
+
+{% block summary %}
+Gbs devel start more than one time on orphan branch will fail
+{% endblock %}
+
+{% block tracking %}
+    <change>15753</change>
+{% endblock %}
+
+{% block steps %}
+./create_proj sw-tools.spec --tizen
+
+cd sw-tools
+
+echo test >> README
+
+git commit -a -m "add test"
+
+#Current branch
+git branch | grep master
+
+#Gbs devel convert successful
+gbs devel convert --retain-history
+
+#Current branch after gbs devel convert
+git branch | grep master-orphan
+
+#Gbs devel start first time
+gbs devel start | tee ../log
+
+#Development branch was generated and switch to it
+git branch | grep development/master-orphan/0.1
+
+grep -i "Switching to branch 'development/master-orphan/0.1'" ../log
+
+grep -i "Patches listed in 'sw-tools.spec' imported on 'development/master-orphan/0.1'" ../log
+
+#Generate .gbs.conf on development branch
+grep -i "Updating local .gbs.conf" ../log
+
+#The patch has been applied on development branch
+grep -i "^test" README
+
+[ ! -f packaging/sw-tools.spec ]
+
+[ -f .gbs.conf ]
+
+#Switch to master-orphan branch
+gbs devel switch
+
+( ! gbs devel start 2>&1 | tee ../log2 )
+
+#Gbs devel start failed because of development branch already exists.
+grep -i "error: Patch-queue branch 'development/master-orphan/0.1' already exists" ../log2
+
+grep -i "error: <gbs>Action failed" ../log2
+
+{% endblock %}
diff --git a/cases/devel/gbs_devel_start_on_development_branch.case b/cases/devel/gbs_devel_start_on_development_branch.case
new file mode 100644 (file)
index 0000000..d22a67e
--- /dev/null
@@ -0,0 +1,56 @@
+{% extends "base.xml" %}
+
+{% block summary %}
+Gbs devel start on development branch will fail
+{% endblock %}
+
+{% block tracking %}
+    <change>15753</change>
+{% endblock %}
+
+{% block steps %}
+./create_proj sw-tools.spec --tizen
+
+cd sw-tools
+
+echo test >> README
+
+git commit -a -m "add test"
+
+#Current branch
+git branch | grep master
+
+#Gbs devel convert successful
+gbs devel convert --retain-history
+
+#Current branch after gbs devel convert
+git branch | grep master-orphan
+
+#Gbs devel start
+gbs devel start | tee ../log
+
+#Development branch was generated and switch to it
+git branch | grep development/master-orphan/0.1
+
+grep -i "Switching to branch 'development/master-orphan/0.1'" ../log
+
+grep -i "Patches listed in 'sw-tools.spec' imported on 'development/master-orphan/0.1'" ../log
+
+#Generate .gbs.conf on development branch
+grep -i "Updating local .gbs.conf" ../log
+
+#The patch has been applied on development branch
+grep -i "^test" README
+
+[ ! -f packaging/sw-tools.spec ]
+
+[ -f .gbs.conf ]
+
+#Gbs devel start on development branch
+( ! gbs devel start 2>&1 | tee ../log2 )
+
+#Gbs devel start failed because of already on it
+grep -i "error: Already on a patch-queue branch 'development/master-orphan/0.1' - doing nothing" ../log2
+
+grep -i "error: <gbs>Action failed" ../log2
+{% endblock %}
diff --git a/cases/devel/gbs_devel_switch_after_drop.case b/cases/devel/gbs_devel_switch_after_drop.case
new file mode 100644 (file)
index 0000000..ba90a21
--- /dev/null
@@ -0,0 +1,42 @@
+{% extends "base.xml" %}
+
+{% block summary %}
+Gbs devel switch will fail after gbs devel drop
+{% endblock %}
+
+{% block steps %}
+./create_proj sw-tools.spec --tizen
+
+cd sw-tools
+
+#Current branch
+git branch | grep master
+
+#Gbs devel convert successful
+gbs devel convert --retain-history
+
+#Current branch after gbs devel convert
+git branch | grep master-orphan
+
+gbs devel start
+
+#Development branch was generated and switch to it
+git branch | grep development/master-orphan/0.1
+
+#Switch to master-orphan branch
+gbs devel switch
+
+#Drop on orphan branch
+gbs devel drop | tee ../log1
+
+grep -i "Dropped branch 'development/master-orphan/0.1'" ../log1
+
+#No development branch exists after gbs devel drop
+( ! git branch | grep development/master-orphan/0.1 )
+
+( ! gbs devel switch 2>&1 | tee ../log2 )
+
+grep -i "error: Branch 'development/master-orphan/0.1' does not exist" ../log2
+
+grep -i "error: <gbs>Action failed" ../log2
+{% endblock %}
diff --git a/cases/devel/gbs_devel_switch_from_orphan_packaging_branch.case b/cases/devel/gbs_devel_switch_from_orphan_packaging_branch.case
new file mode 100644 (file)
index 0000000..2475bdf
--- /dev/null
@@ -0,0 +1,40 @@
+{% extends "base.xml" %}
+
+{% block summary %}
+Gbs devel switch from orphan packaging branch
+{% endblock %}
+
+{% block steps %}
+./create_proj sw-tools.spec --tizen
+
+cd sw-tools
+
+#Current branch
+git branch | grep master
+
+#Gbs devel convert successful
+gbs devel convert --retain-history
+
+#Current branch after gbs devel convert
+git branch | grep master-orphan
+
+#Gbs devel start
+gbs devel start
+
+#Development branch was generated and switch to it
+git branch | grep development/master-orphan/0.1
+
+gbs devel switch | tee ../log1
+
+grep -i "Switching to branch 'master-orphan'" ../log1
+
+#Current branch after gbs devel switch from development branch
+git branch | grep master-orphan
+
+gbs devel switch | tee ../log2
+
+grep -i "Switching to branch 'development/master-orphan/0.1'" ../log2
+
+#Current branch after gbs devel switch from master-orphan branch
+git branch | grep development/master-orphan/0.1
+{% endblock %}
diff --git a/cases/devel/gbs_devel_switch_from_working_packaging_branch.case b/cases/devel/gbs_devel_switch_from_working_packaging_branch.case
new file mode 100644 (file)
index 0000000..a1df6f4
--- /dev/null
@@ -0,0 +1,34 @@
+{% extends "base.xml" %}
+
+{% block summary %}
+Gbs devel switch from working(master) branch
+{% endblock %}
+
+{% block steps %}
+./create_proj sw-tools.spec --tizen
+
+cd sw-tools
+
+#Working branch
+git branch | grep master
+
+#Gbs devel start
+gbs devel start
+
+#Development branch was generated and switch to it
+git branch | grep development/master/0.1
+
+gbs devel switch | tee ../log1
+
+grep -i "Switching to branch 'master'" ../log1
+
+#Current branch after gbs devel switch from development branch
+git branch | grep master
+
+gbs devel switch | tee ../log2
+
+grep -i "Switching to branch 'development/master/0.1'" ../log2
+
+#Current branch after gbs devel switch from master branch
+git branch | grep development/master/0.1
+{% endblock %}
diff --git a/cases/export/base.xml b/cases/export/base.xml
new file mode 100644 (file)
index 0000000..cb62ba8
--- /dev/null
@@ -0,0 +1,21 @@
+<testcase>
+  <summary>{% block summary %}{% endblock %}</summary>
+  <tracking>{% block tracking %}{% endblock %}</tracking>
+  {% block all_fixtures %}
+  <fixtures>
+    <copy src="tools/create_proj" />
+    <copy src="specs/sw-tools.spec" />
+    {% block fixtures %}{% endblock %}
+  </fixtures>
+  {% endblock %}
+  {% block all_qa %}
+  <qa>
+    <prompt>What is the upstream version?</prompt>
+    <answer></answer>
+    {% block qa %}{% endblock %}
+  </qa>
+  {% endblock %}
+  <setup><![CDATA[{% block setup %}{% endblock %}]]></setup>
+  <steps><![CDATA[{% block steps %}{% endblock %}]]></steps>
+  <teardown><![CDATA[{% block teardown %}{% endblock %}]]></teardown>
+</testcase>
diff --git a/cases/export/gbs_ex_disable_fallback_to_native_packaging.case b/cases/export/gbs_ex_disable_fallback_to_native_packaging.case
new file mode 100644 (file)
index 0000000..0e3275b
--- /dev/null
@@ -0,0 +1,39 @@
+{% extends "base.xml" %}
+
+{% block summary %}
+Export disable fallback to native packaging
+{% endblock %}
+
+{% block tracking %}
+  <change>4590</change>
+{% endblock %}
+
+{% block steps %}
+./create_proj --tizen sw-tools.spec
+
+cd sw-tools
+
+gbs export 2>&1 | tee ../log1
+
+grep -i "info: Generating patches from git (upstream/0.1..HEAD)" ../log1
+
+grep -i "pristine-tar: successfully generated " ../log1
+
+grep -i "info: package files have been exported to" ../log1
+
+ls packaging/sw-tools-0.1-1/sw-tools-0.1.tar.*
+
+rm -rf packaging/sw-tools-0.1-1
+
+sed -i 's/^Version:.*$/Version:0.2/' packaging/sw-tools.spec
+
+git commit -a -m 'upgrade to gbs 0.2'
+
+(! gbs export 2>&1 | tee ../log2)
+
+grep -i "error: Generating upstream tarball and/or generating patches failed" ../log2
+
+grep -i "error: <gbs>Failed to export packaging files from git tree" ../log2
+
+[ ! -f packaging/sw-tools-0.2-1/*-0.2.tar.* ]
+{% endblock %}
diff --git a/cases/export/gbs_ex_no_patch.case b/cases/export/gbs_ex_no_patch.case
new file mode 100644 (file)
index 0000000..065ef27
--- /dev/null
@@ -0,0 +1,54 @@
+{% extends "base.xml" %}
+
+{% block summary %}
+GBS does not create patches when export
+{% endblock %}
+
+{% block tracking %}
+  <ticket>594</ticket>
+  <ticket>1000</ticket>
+{% endblock %}
+
+{% block fixtures %}
+  <copy src="specs/fake.spec" />
+{% endblock %}
+
+{% block steps %}
+./create_proj fake.spec
+
+cd fake
+
+gbs export --source-rpm
+
+cp `find packaging/ -name '*.src.rpm'` ../
+
+cd ../
+
+rm fake -rf
+
+gbs import fake-1.0-1.src.rpm
+
+cd fake
+
+echo "generate a patch" >hello
+
+git add hello
+
+git commit -m "hello"
+
+gbs export
+
+[ -f packaging/fake-1.0-1/0001-hello.patch ]
+
+grep -i '0001-hello.patch' packaging/fake-1.0-1/fake.spec
+
+rm -rf packaging/fake-1.0-1
+
+gbs export --no-patch-export
+
+[ ! -f packaging/fake-1.0-1/0001-hello.patch ]
+
+test -z $(grep -i '0001-hello.patch' packaging/fake-1.0-1/fake.spec)
+
+tar -tvf packaging/fake-1.0-1/fake-1.0.tbz2 | grep 'hello'
+{% endblock %}
diff --git a/cases/export/gbs_ex_no_pristine-tar.case b/cases/export/gbs_ex_no_pristine-tar.case
new file mode 100644 (file)
index 0000000..08fd72c
--- /dev/null
@@ -0,0 +1,76 @@
+{% extends "base.xml" %}
+
+{% block summary %}
+Export with no branch pristine-tar
+{% endblock %}
+
+{% block steps %}
+./create_proj sw-tools.spec
+
+cd sw-tools
+
+sed -i 's/^Version:.*$/Version:0.1/' packaging/sw-tools.spec
+
+git commit -a -m 'update to 0.1'
+
+gbs export --source-rpm
+
+cp `find packaging/ -name '*.src.rpm'` ../
+
+rm -rf `find packaging/ -type d -name 'sw-tools*'`
+
+sed -i 's/^Version:.*$/Version:0.2/' packaging/sw-tools.spec
+
+sed -i 's/^Source0:.*$/Source0: %{name}-%{version}.tar.gz/' packaging/sw-tools.spec
+
+git commit -a -m 'upgrade to gbs 0.2 and tar.gz fmt'
+
+gbs export
+
+cp `find packaging/ -name '*.tar.gz'` ../
+
+cd ../
+
+rm sw-tools -rf
+
+gbs import sw-tools-0.1-1.src.rpm
+
+cd sw-tools
+
+git branch | grep pristine-tar
+
+git branch | grep upstream
+
+git tag | grep upstream/0.1
+
+gbs import ../sw-tools-0.2.tar.gz --merge
+
+#generate a project with upstream
+git tag | grep upstream/0.2
+
+gbs export 2>&1 | tee ../log1
+
+#check the normal info (upstream/0.2)
+grep -i "Generating patches from git (upstream/0.2..HEAD)" ../log1
+
+grep -i "pristine-tar: successfully generated " ../log1
+
+#check tar ball
+ls packaging/sw-tools-0.2-1/sw-tools-0.2.tar.gz
+
+rm -rf packaging/sw-tools-0.2-1
+
+git branch -D pristine-tar
+
+gbs export 2>&1 | tee ../log2
+
+grep -i "info: Generating patches from git (upstream/0.2..HEAD)" ../log2
+
+#pristine-tar branch doesn't exist, so create from upstream/0.2
+grep -i "info: sw-tools-0.2.tar.gz does not exist, creating from 'upstream/0.2'" ../log2
+
+(! grep -i "pristine-tar: successfully generated " ../log2)
+
+#check tar ball
+ls packaging/sw-tools-0.2-1/sw-tools-0.2.tar.gz
+{% endblock %}
diff --git a/cases/export/gbs_ex_no_pristine_with_patch.case b/cases/export/gbs_ex_no_pristine_with_patch.case
new file mode 100644 (file)
index 0000000..6c7ce1a
--- /dev/null
@@ -0,0 +1,99 @@
+{% extends "base.xml" %}
+
+{% block summary %}
+Export with no branch pristine-tar, so generate tarball from upstream
+{% endblock %}
+
+{% block tracking %}
+  <ticket>1000</ticket>
+{% endblock %}
+
+{% block steps %}
+./create_proj sw-tools.spec
+
+cd sw-tools
+
+sed -i 's/^Version:.*$/Version:0.1/' packaging/sw-tools.spec
+
+git commit -a -m 'update to 0.1'
+
+gbs export --source-rpm
+
+cp `find packaging/ -name '*.src.rpm'` ../
+
+rm -rf `find packaging/ -type d -name 'sw-tools*'`
+
+sed -i 's/^Version:.*$/Version:0.2/' packaging/sw-tools.spec
+
+sed -i 's/^Source0:.*$/Source0: %{name}-%{version}.tar.gz/' packaging/sw-tools.spec
+
+git commit -a -m 'upgrade to gbs 0.2 and tar.gz fmt'
+
+gbs export
+
+cp `find packaging/ -name '*.tar.gz'` ../
+
+cd ../
+
+rm sw-tools -rf
+
+gbs import sw-tools-0.1-1.src.rpm
+
+cd sw-tools
+
+git branch | grep pristine-tar
+
+git branch | grep upstream
+
+git tag | grep upstream/0.1
+
+gbs import ../sw-tools-0.2.tar.gz --merge
+
+#generate a project with upstream
+git tag | grep upstream/0.2
+
+echo "generate a patch" >hello
+
+git add hello
+
+#add modification
+git commit -m "hello"
+
+gbs export 2>&1 | tee ../log
+
+#check the normal info
+grep -i "Generating patches from git (upstream/0.2..HEAD)" ../log
+
+#check tar ball
+ls packaging/sw-tools-0.2-1/sw-tools-0.2.tar.gz
+
+#check patch
+ls packaging/sw-tools-0.2-1/0001-hello.patch
+
+rm -rf packaging/sw-tools-0.2-1
+
+#delete branch pristine-tar
+git branch -D pristine-tar
+
+gbs export 2>&1 | tee ../log2
+
+grep -i "info: Generating patches from git (upstream/0.2..HEAD)" ../log2
+
+#pristine-tar branch doesn't exist, so create from upstream/0.2
+grep -i "info: sw-tools-0.2.tar.gz does not exist, creating from 'upstream/0.2'" ../log2
+
+(! grep -i "pristine-tar: successfully generated " ../log2)
+
+#check tar ball
+ls packaging/sw-tools-0.2-1/sw-tools-0.2.tar.gz
+
+#not create from HEAD, so there is patch
+ls packaging/sw-tools-0.2-1/0001-hello.patch
+
+#spec file changed by gbs, add path info
+(! diff packaging/sw-tools.spec packaging/sw-tools-0.2-1/sw-tools.spec | tee ../diffspec)
+
+grep -i 'Patch0:.*0001-hello.patch' ../diffspec
+
+grep -i '%patch0 -p1' ../diffspec
+{% endblock %}
diff --git a/cases/export/gbs_ex_no_tag.case b/cases/export/gbs_ex_no_tag.case
new file mode 100644 (file)
index 0000000..36036e2
--- /dev/null
@@ -0,0 +1,74 @@
+{% extends "base.xml" %}
+
+{% block summary %}
+Export no tag
+{% endblock %}
+
+{% block tracking %}
+    <change>4590</change>
+{% endblock %}
+
+{% block steps %}
+./create_proj sw-tools.spec
+
+cd sw-tools
+
+sed -i 's/^Version:.*$/Version:0.1/' packaging/sw-tools.spec
+
+git commit -a -m 'update to 0.1'
+
+gbs export --source-rpm
+
+cp `find packaging/ -name '*.src.rpm'` ../
+
+rm -rf `find packaging/ -type d -name 'sw-tools*'`
+
+sed -i 's/^Version:.*$/Version:0.2/' packaging/sw-tools.spec
+
+sed -i 's/^Source0:.*$/Source0: %{name}-%{version}.tar.gz/' packaging/sw-tools.spec
+
+git commit -a -m 'upgrade to gbs 0.2 and tar.gz fmt'
+
+gbs export
+
+cp `find packaging/ -name '*.tar.gz'` ../
+
+cd ../
+
+rm sw-tools -rf
+
+gbs import sw-tools-0.1-1.src.rpm
+
+cd sw-tools
+
+git branch | grep pristine-tar
+
+git branch | grep upstream
+
+git tag | grep upstream/0.1
+
+gbs import ../sw-tools-0.2.tar.gz --merge
+
+#generate a project with upstream
+git tag | grep upstream/0.2
+
+gbs export 2>&1 | tee ../log1
+
+#check the normal info
+grep -i "Generating patches from git (upstream/0.2..HEAD)" ../log1
+
+grep -i "pristine-tar: successfully generated " ../log1
+
+#check tar ball
+ls packaging/sw-tools-0.2-1/sw-tools-0.2.tar.gz
+
+rm -rf packaging/sw-tools-0.2-1
+
+#delete tag
+git tag -d upstream/0.2
+
+#export fail, it won't generate tar ball when tag doesn't exist
+( ! gbs export 2>&1 | tee ../log2 )
+
+grep -i "Invalid upstream treeish upstream/0.2" ../log2
+{% endblock %}
diff --git a/cases/export/gbs_ex_no_tag_with_patch.case b/cases/export/gbs_ex_no_tag_with_patch.case
new file mode 100644 (file)
index 0000000..6d162a4
--- /dev/null
@@ -0,0 +1,95 @@
+{% extends "base.xml" %}
+
+{% block summary %}
+Export with no tag and there is modification in master
+{% endblock %}
+
+{% block tracking %}
+    <change>4590</change>
+    <ticket>1000</ticket>
+{% endblock %}
+
+{% block steps %}
+./create_proj sw-tools.spec
+
+cd sw-tools
+
+sed -i 's/^Version:.*$/Version:0.1/' packaging/sw-tools.spec
+
+git commit -a -m 'update to 0.1'
+
+gbs export --source-rpm
+
+cp `find packaging/ -name '*.src.rpm'` ../
+
+rm -rf `find packaging/ -type d -name 'sw-tools*'`
+
+sed -i 's/^Version:.*$/Version:0.2/' packaging/sw-tools.spec
+
+sed -i 's/^Source0:.*$/Source0: %{name}-%{version}.tar.gz/' packaging/sw-tools.spec
+
+git commit -a -m 'upgrade to gbs 0.2 and tar.gz fmt'
+
+gbs export
+
+cp `find packaging/ -name '*.tar.gz'` ../
+
+cd ../
+
+rm sw-tools -rf
+
+gbs import sw-tools-0.1-1.src.rpm
+
+cd sw-tools
+
+git branch | grep pristine-tar
+
+git branch | grep upstream
+
+git tag | grep upstream/0.1
+
+gbs import ../sw-tools-0.2.tar.gz --merge
+
+#generate a project with upstream
+git tag | grep upstream/0.2
+
+echo "generate a patch" >hello
+
+git add hello
+
+git commit -m "hello"
+
+gbs export 2>&1 | tee ../log1
+
+#check the normal info
+grep -i "Generating patches from git (upstream/0.2..HEAD)" ../log1
+
+grep -i "pristine-tar: successfully generated " ../log1
+
+#check tar ball
+ls packaging/sw-tools-0.2-1/sw-tools-0.2.tar.gz
+
+#check patch
+ls packaging/sw-tools-0.2-1/0001-hello.patch
+
+rm -rf packaging/sw-tools-0.2-1
+
+#delete tag
+git tag -d upstream/0.2
+
+(! gbs export 2>&1 | tee ../log2)
+
+grep -i "Invalid upstream treeish upstream/0.2" ../log2
+
+grep -i "Generating upstream tarball and/or generating patches failed." ../log2
+
+(! grep -i "info:sw-tools-0.2.tar.gz does not exist, creating from 'HEAD'" ../log2)
+
+grep -i "Failed to export packaging files from git tree" ../log2
+
+#no tar ball here
+(! ls packaging/sw-tools.*/sw-tools-0.2.tar.gz)
+
+#no patch here
+(! ls packaging/sw-tools.*/0001-hello.patch)
+{% endblock %}
diff --git a/cases/export/gbs_ex_no_upstream.case b/cases/export/gbs_ex_no_upstream.case
new file mode 100644 (file)
index 0000000..9bcb29d
--- /dev/null
@@ -0,0 +1,75 @@
+{% extends "base.xml" %}
+
+{% block summary %}
+Export with no upstream branch
+{% endblock %}
+
+{% block steps %}
+./create_proj sw-tools.spec
+
+cd sw-tools
+
+sed -i 's/^Version:.*$/Version:0.1/' packaging/sw-tools.spec
+
+git commit -a -m 'update to 0.1'
+
+gbs export --source-rpm
+
+cp `find packaging/ -name '*.src.rpm'` ../
+
+rm -rf `find packaging/ -type d -name 'sw-tools*'`
+
+sed -i 's/^Version:.*$/Version:0.2/' packaging/sw-tools.spec
+
+sed -i 's/^Source0:.*$/Source0: %{name}-%{version}.tar.gz/' packaging/sw-tools.spec
+
+git commit -a -m 'upgrade to gbs 0.2 and tar.gz fmt'
+
+gbs export
+
+cp `find packaging/ -name '*.tar.gz'` ../
+
+cd ../
+
+rm sw-tools -rf
+
+gbs import sw-tools-0.1-1.src.rpm
+
+cd sw-tools
+
+git branch | grep pristine-tar
+
+git branch | grep upstream
+
+git tag | grep upstream/0.1
+
+gbs import ../sw-tools-0.2.tar.gz --merge
+
+#generate a project with upstream
+git tag | grep upstream/0.2
+
+gbs export 2>&1 | tee ../log1
+
+#check the normal info (upstream/0.2)
+grep -i "Generating patches from git (upstream/0.2..HEAD)" ../log1
+
+grep -i "pristine-tar: successfully generated " ../log1
+
+#check tar ball
+ls packaging/sw-tools-0.2-1/sw-tools-0.2.tar.gz
+
+rm -rf packaging/sw-tools-0.2-1
+
+#delete branch upstream
+git branch -D upstream
+
+gbs export 2>&1 | tee ../log2
+
+(! grep -i "pristine-tar: successfully generated " ../log2)
+
+#upstream branch doesn't exist, so generate tar ball from HEAD
+grep -i "info: Creating (native) source archive sw-tools-0.2.tar.gz from 'HEAD'" ../log2
+
+#check tar ball
+ls packaging/sw-tools-0.2-1/sw-tools-0.2.tar.gz
+{% endblock %}
diff --git a/cases/export/gbs_ex_no_upstream_with_patch.case b/cases/export/gbs_ex_no_upstream_with_patch.case
new file mode 100644 (file)
index 0000000..be6875e
--- /dev/null
@@ -0,0 +1,89 @@
+{% extends "base.xml" %}
+
+{% block summary %}
+Export with no tag and there is modification in head
+{% endblock %}
+
+{% block tracking %}
+    <ticket>1000</ticket>
+{% endblock %}
+
+{% block steps %}
+./create_proj sw-tools.spec
+
+cd sw-tools
+
+sed -i 's/^Version:.*$/Version:0.1/' packaging/sw-tools.spec
+
+git commit -a -m 'update to 0.1'
+
+gbs export --source-rpm
+
+cp `find packaging/ -name '*.src.rpm'` ../
+
+rm -rf `find packaging/ -type d -name 'sw-tools*'`
+
+sed -i 's/^Version:.*$/Version:0.2/' packaging/sw-tools.spec
+
+sed -i 's/^Source0:.*$/Source0: %{name}-%{version}.tar.gz/' packaging/sw-tools.spec
+
+git commit -a -m 'upgrade to gbs 0.2 and tar.gz fmt'
+
+gbs export
+
+cp `find packaging/ -name '*.tar.gz'` ../
+
+cd ../
+
+rm sw-tools -rf
+
+gbs import sw-tools-0.1-1.src.rpm
+
+cd sw-tools
+
+git branch | grep pristine-tar
+
+git branch | grep upstream
+
+git tag | grep upstream/0.1
+
+gbs import ../sw-tools-0.2.tar.gz --merge
+
+#generate a project with upstream
+git tag | grep upstream/0.2
+
+echo "generate a patch" >hello
+
+git add hello
+
+git commit -m "hello"
+
+gbs export 2>&1 | tee ../log
+
+#check the normal info
+grep -i "Generating patches from git (upstream/0.2..HEAD)" ../log
+
+#check tar ball
+ls packaging/sw-tools-0.2-1/sw-tools-0.2.tar.gz
+
+#check patch
+ls packaging/sw-tools-0.2-1/0001-hello.patch
+
+rm -rf packaging/sw-tools-0.2-1
+
+#delete branch upstream
+git branch -D upstream
+
+gbs export 2>&1 | tee ../log2
+
+(! grep -i "pristine-tar: successfully generated " ../log2)
+
+#upstream branch doesn't exist, so generate tar ball from HEAD
+grep -i "info: Creating (native) source archive sw-tools-0.2.tar.gz from 'HEAD'" ../log2
+
+#check tar ball
+ls packaging/sw-tools-0.2-1/sw-tools-0.2.tar.gz
+
+#create from HEAD, so no patch
+(! ls packaging/sw-tools-0.2-1/0001-hello.patch)
+{% endblock %}
diff --git a/cases/export/gbs_ex_normal.case b/cases/export/gbs_ex_normal.case
new file mode 100644 (file)
index 0000000..0622f7e
--- /dev/null
@@ -0,0 +1,60 @@
+{% extends "base.xml" %}
+
+{% block summary %}
+Export from a normal project with upstream
+{% endblock %}
+
+{% block steps %}
+./create_proj sw-tools.spec
+
+cd sw-tools
+
+sed -i 's/^Version:.*$/Version:0.1/' packaging/sw-tools.spec
+
+git commit -a -m 'update to 0.1'
+
+gbs export --source-rpm
+
+cp `find packaging/ -name '*.src.rpm'` ../
+
+rm -rf `find packaging/ -type d -name 'sw-tools*'`
+
+sed -i 's/^Version:.*$/Version:0.2/' packaging/sw-tools.spec
+
+sed -i 's/^Source0:.*$/Source0: %{name}-%{version}.tar.gz/' packaging/sw-tools.spec
+
+git commit -a -m 'upgrade to gbs 0.2 and tar.gz fmt'
+
+gbs export
+
+cp `find packaging/ -name '*.tar.gz'` ../
+
+cd ../
+
+rm sw-tools -rf
+
+gbs import sw-tools-0.1-1.src.rpm
+
+cd sw-tools
+
+git branch | grep pristine-tar
+
+git branch | grep upstream
+
+git tag | grep upstream/0.1
+
+gbs import ../sw-tools-0.2.tar.gz --merge
+
+#generate a project with upstream
+git tag | grep upstream/0.2
+
+gbs export 2>&1 | tee ../log
+
+#check the normal info
+grep -i "Generating patches from git (upstream/0.2..HEAD)" ../log
+
+grep -i "pristine-tar: successfully generated " ../log
+
+#check tar ball
+ls packaging/sw-tools-0.2-1/sw-tools-0.2.tar.gz
+{% endblock %}
diff --git a/cases/export/gbs_ex_patches_exist_inspec_and_packaging_together.case b/cases/export/gbs_ex_patches_exist_inspec_and_packaging_together.case
new file mode 100644 (file)
index 0000000..15165c8
--- /dev/null
@@ -0,0 +1,64 @@
+{% extends "base.xml" %}
+
+{% block summary %}
+Export with patch in specfile and found in packaging dir together
+{% endblock %}
+
+{% block steps %}
+./create_proj --tizen sw-tools.spec
+
+cd sw-tools
+
+echo test >> README
+
+git add README
+
+git commit -m "test"
+
+echo new >> README
+
+git commit -a -m "new"
+
+gbs export
+
+cd packaging
+
+git reset HEAD~1 --hard
+
+rm -rf sw-tools.spec
+
+mv sw-tools-0.1-1/sw-tools.spec .
+
+mv sw-tools-0.1-1/*.patch .
+
+rm -rf sw-tools-0.1-1/
+
+grep 0001-test.patch sw-tools.spec
+
+grep 0002-new.patch sw-tools.spec
+
+ls | grep 0001-test.patch
+
+ls | grep 0002-new.patch
+
+gbs export --include-all |tee ../../log1
+
+#Generate tarball
+grep -r "package files have been exported to" ../../log1
+
+git log | grep test
+
+#Generate patch list in specfile if find the related commit in git log
+grep 0001-test.patch sw-tools-0.1-1/sw-tools.spec
+
+#Generate patch if find the related commit in git log
+ls sw-tools-0.1-1 | grep 0001-test.patch
+
+( ! git log | grep new )
+
+#Patch list is removed from specfile if no related commit in git log
+( ! grep 0002-new.patch sw-tools-0.1-1/sw-tools.spec )
+
+#Patch is removed if no related commit in git log
+( ! ls sw-tools-0.1-1 | grep 0002-new.patch )
+{% endblock %}
diff --git a/cases/export/gbs_ex_with_correct_upstream.case b/cases/export/gbs_ex_with_correct_upstream.case
new file mode 100644 (file)
index 0000000..42cb4a7
--- /dev/null
@@ -0,0 +1,35 @@
+{% extends "base.xml" %}
+
+{% block summary %}
+Export with correct upstream
+{% endblock %}
+
+{% block tracking %}
+    <change>9670</change>
+{% endblock %}
+
+{% block steps %}
+./create_proj --tizen sw-tools.spec
+
+cd sw-tools
+
+git branch -D upstream
+
+git branch z/upstream
+
+mkdir ../local && cd $_
+
+gbs clone ../sw-tools
+
+cd sw-tools
+
+git branch -a | grep upstream
+
+gbs export | tee ../../log
+
+#If no remotes/origin/upstream branch, gbs will export tarball from HEAD.
+grep "Creating (native) source archive sw-tools-0.1.tar.bz2 from 'HEAD'" ../../log
+
+#If no remotes/origin/upstream branch, gbs won't track other upstream branch from remote.
+( ! grep "tracking branch:origin/z/upstream" ../../log)
+{% endblock %}
diff --git a/cases/export/gbs_ex_with_patch.case b/cases/export/gbs_ex_with_patch.case
new file mode 100644 (file)
index 0000000..a4c4344
--- /dev/null
@@ -0,0 +1,85 @@
+<testcase>
+  <summary>export tarball and patch from a project with upstream</summary>
+  <tracking>
+    <ticket>1000</ticket>
+  </tracking>
+  <qa>
+    <prompt>What will be the source package name?</prompt>
+    <answer></answer>
+    <prompt>What is the upstream version?</prompt>
+    <answer></answer>
+  </qa>
+  <fixtures>
+    <copy src="tools/create_proj" />
+    <copy src="specs/sw-tools.spec" />
+  </fixtures>
+  <steps><![CDATA[
+./create_proj sw-tools.spec
+
+cd sw-tools
+
+sed -i 's/^Version:.*$/Version:0.1/' packaging/sw-tools.spec
+
+git commit -a -m 'update to 0.1'
+
+gbs export --source-rpm
+
+cp `find packaging/ -name '*.src.rpm'` ../
+
+rm -rf `find packaging/ -type d -name 'sw-tools*'`
+
+sed -i 's/^Version:.*$/Version:0.2/' packaging/sw-tools.spec
+
+sed -i 's/^Source0:.*$/Source0: %{name}-%{version}.tar.gz/' packaging/sw-tools.spec
+
+git commit -a -m 'upgrade to gbs 0.2 and tar.gz fmt'
+
+gbs export
+
+cp `find packaging/ -name '*.tar.gz'` ../
+
+cd ../
+
+rm sw-tools -rf
+
+gbs import sw-tools-0.1-1.src.rpm
+
+cd sw-tools
+
+git branch | grep pristine-tar
+
+git branch | grep upstream
+
+git tag | grep upstream/0.1
+
+gbs import ../sw-tools-0.2.tar.gz --merge
+
+#generate a project with upstream
+git tag | grep upstream/0.2
+
+echo "generate a patch" >hello
+
+git add hello
+
+#modify
+git commit -m "hello"
+
+gbs export 2>&1 | tee ../log
+
+#check the normal info
+grep -i "Generating patches from git (upstream/0.2..HEAD)" ../log
+
+#check tar ball
+ls packaging/sw-tools-0.2-1/sw-tools-0.2.tar.gz
+
+#check patch
+ls packaging/sw-tools-0.2-1/0001-hello.patch
+
+#spec file changed by gbs, add path info
+(! diff packaging/sw-tools.spec packaging/sw-tools-0.2-1/sw-tools.spec | tee ../diffspec)
+
+grep -i 'Patch0:.*0001-hello.patch' ../diffspec
+
+grep -i '%patch0 -p1' ../diffspec
+]]></steps>
+</testcase>
diff --git a/cases/export/gbs_ex_with_patch_macro.case b/cases/export/gbs_ex_with_patch_macro.case
new file mode 100644 (file)
index 0000000..a681cda
--- /dev/null
@@ -0,0 +1,89 @@
+<testcase>
+  <summary>export patch with define patch macro</summary>
+  <qa>
+    <prompt>What will be the source package name?</prompt>
+    <answer></answer>
+    <prompt>What is the upstream version?</prompt>
+    <answer></answer>
+  </qa>
+  <fixtures>
+    <copy src="tools/create_proj" />
+    <copy src="specs/sw-tools.spec" />
+  </fixtures>
+  <steps><![CDATA[
+./create_proj sw-tools.spec
+
+cd sw-tools
+
+sed -i 's/^Version:.*$/Version:0.1/' packaging/sw-tools.spec
+
+git commit -a -m 'update to 0.1'
+
+gbs export --source-rpm
+
+cp `find packaging/ -name '*.src.rpm'` ../
+
+rm -rf `find packaging/ -type d -name 'sw-tools*'`
+
+sed -i 's/^Version:.*$/Version:0.2/' packaging/sw-tools.spec
+
+sed -i 's/^Source0:.*$/Source0: %{name}-%{version}.tar.gz/' packaging/sw-tools.spec
+
+git commit -a -m 'upgrade to gbs 0.2 and tar.gz fmt'
+
+gbs export
+
+cp `find packaging/ -name '*.tar.gz'` ../
+
+cd ../
+
+rm sw-tools -rf
+
+gbs import sw-tools-0.1-1.src.rpm
+
+cd sw-tools
+
+git branch | grep pristine-tar
+
+git branch | grep upstream
+
+git tag | grep upstream/0.1
+
+gbs import ../sw-tools-0.2.tar.gz --merge
+
+#generate a project with upstream
+git tag | grep upstream/0.2
+
+perl -i -pne 's/%setup -q -n %{name}-%{version}/%setup -q -n %{name}-%{version}\necho i am a mark/' packaging/sw-tools.spec
+
+git add packaging/sw-tools.spec
+
+echo "generate a patch" >hello
+
+git add hello
+
+#modify
+git commit -m "hello and mark spec"
+
+gbs export 2>&1 | tee ../log
+
+#"%patch0 -p1" generate between "%setup -q -n" and "echo i am a mark" if there is no patch macro
+sed -n '/%setup -q -n/,/echo i am a mark/p' packaging/sw-tools-0.2-1/sw-tools.spec | grep '%patch0 -p1'
+
+rm -rf packaging/sw-tools-0.2-1
+
+#add patch macro after "i am a mark" so that "patch0 -p1" won't go after "%setup" directly but after macro
+perl -i -pne 's/echo i am a mark/echo i am a mark\n\#Gbp-Patch-Macros/' packaging/sw-tools.spec
+
+git add packaging/sw-tools.spec
+
+git commit -m 'add patch macro'
+
+gbs export 2>&1 | tee ../log2
+
+(! sed -n '/%setup -q -n/,/echo i am a mark/p' packaging/sw-tools-0.2-1/sw-tools.spec | grep '%patch0 -p1')
+
+#"%patch0" generate after "#Gbp-Patch-Macros" not after "%setup"
+sed -n '/echo i am a mark/,/%files/p' packaging/sw-tools-0.2-1/sw-tools.spec | grep '%patch0 -p1'
+]]></steps>
+</testcase>
diff --git a/cases/export/gbs_ex_with_symbolic_link_packaging.case b/cases/export/gbs_ex_with_symbolic_link_packaging.case
new file mode 100644 (file)
index 0000000..725ed0a
--- /dev/null
@@ -0,0 +1,34 @@
+{% extends "base.xml" %}
+
+{% block summary %}
+Export with symbolic link packaging
+{% endblock %}
+
+{% block tracking %}
+    <change>10247</change>
+{% endblock %}
+
+{% block steps %}
+./create_proj sw-tools.spec
+
+cd sw-tools
+
+mkdir test
+
+mv packaging/ test/
+
+git add .
+
+git commit -m "mv packaging dir under test dir"
+
+ln -s test/packaging packaging
+
+git add packaging
+
+git commit -m "create symbolic link packaging"
+
+gbs export | tee ../../log
+
+#With symbolic link packaging, gbs could export tarball smoothly.
+test -e packaging/sw-tools-0.1-1/sw-tools-0.1.tar.bz2
+{% endblock %}
diff --git a/cases/export/gbs_export_VCS.case b/cases/export/gbs_export_VCS.case
new file mode 100644 (file)
index 0000000..b790bbf
--- /dev/null
@@ -0,0 +1,48 @@
+<testcase>
+  <summary>gbs export add "VCS:" in spec file</summary>
+  <tracking>
+    <ticket>575</ticket>
+  </tracking>
+  <fixtures>
+    <copy src="tools/create_proj" />
+    <copy src="specs/sw-tools.spec" />
+  </fixtures>
+  <steps><![CDATA[
+./create_proj sw-tools.spec
+
+cd sw-tools
+
+sed -i 's/^Version:.*$/Version:0.1/' packaging/sw-tools.spec
+
+git commit -a -m 'update to 0.1'
+
+gbs export --source-rpm
+
+cp `find packaging/ -name '*.src.rpm'` ../
+
+cd ../
+
+rm sw-tools -rf
+
+gbs import sw-tools-0.1-1.src.rpm
+
+cd sw-tools
+
+git branch | grep upstream
+
+git tag | grep upstream/0.1
+
+#give a remote repo url
+git remote add origin git://10.238.153.188:123/gerrit/sw-tools
+
+REPOPATH='gerrit/sw-tools'
+
+git checkout upstream
+
+COMMIT=$(git rev-parse HEAD)
+
+gbs export
+
+grep -i "VCS: *${REPOPATH}#${COMMIT}" packaging/sw-tools-0.1-1/sw-tools.spec
+]]></steps>
+</testcase>
diff --git a/cases/export/gbs_export_VCS_with_localclone.case b/cases/export/gbs_export_VCS_with_localclone.case
new file mode 100644 (file)
index 0000000..aa26fb7
--- /dev/null
@@ -0,0 +1,25 @@
+<testcase>
+  <summary>test vcs feature with local clone</summary>
+  <tracking>
+    <ticket>575</ticket>
+  </tracking>
+  <fixtures>
+    <copy src="tools/create_proj" />
+    <copy src="specs/fake.spec" />
+  </fixtures>
+  <steps><![CDATA[
+./create_proj fake.spec -f
+
+git clone fake fake-clone
+
+cd fake-clone
+
+REPOPATH=$(git remote show origin | grep "Fetch URL" | cut -d: -f2)
+
+TAGNAME=$(git describe --long --abbrev=40 --always HEAD)
+
+gbs export
+
+grep "VCS:.*${REPOPATH// \/}#${TAGNAME}" packaging/fake-1.0-1/fake.spec
+]]></steps>
+</testcase>
diff --git a/cases/export/gbs_export_after_gbs_devel_export_to_orphan_packaging_branch.case b/cases/export/gbs_export_after_gbs_devel_export_to_orphan_packaging_branch.case
new file mode 100644 (file)
index 0000000..3ea6efe
--- /dev/null
@@ -0,0 +1,64 @@
+{% extends "base.xml" %}
+
+{% block summary %}
+Gbs export after gbs devel export to orphan packaging branch
+{% endblock %}
+
+{% block steps %}
+./create_proj sw-tools.spec --tizen
+
+cd sw-tools
+
+#Current branch
+git branch | grep master
+
+#Generate orphan branch
+gbs devel convert --retain-history
+
+#Current branch after gbs devel convert
+git branch | grep master-orphan
+
+#Generate development branch and switch to it
+gbs devel start | tee ../log
+
+grep -i "Switching to branch 'development/master-orphan/0.1'" ../log
+
+#Current branch
+git branch | grep development/master-orphan/0.1
+
+echo test >>README
+
+git commit -a -m "test"
+
+gbs devel export | tee ../log2
+
+grep -i "info: Exporting patches to packaging branch" ../log2
+
+grep -i "switching to 'master-orphan'" ../log2
+
+#Gbs devel export doesn't automatically commit the changes
+grep "Change" ../log2
+
+grep -i "Untracked files" ../log2
+
+#Update the spec file
+grep -i "modified:   packaging/sw-tools.spec" ../log2
+
+#Generate patch
+grep -i "packaging/0001-test.patch" ../log2
+
+#Commit mannually
+git add *
+
+git commit -m "patches export from development branch"
+
+gbs export | tee ../log3
+
+grep -i "info: package files have been exported to" ../log3
+
+[ -f packaging/sw-tools-0.1-1/0001-test.patch ]
+
+[ -f packaging/sw-tools-0.1-1/sw-tools-0.1.tar.bz2 ]
+
+grep -i "test.patch" packaging/sw-tools-0.1-1/sw-tools.spec
+{% endblock %}
diff --git a/cases/export/gbs_export_after_gbs_devel_export_to_working_packaging_branch.case b/cases/export/gbs_export_after_gbs_devel_export_to_working_packaging_branch.case
new file mode 100644 (file)
index 0000000..a84e517
--- /dev/null
@@ -0,0 +1,58 @@
+{% extends "base.xml" %}
+
+{% block summary %}
+Gbs export after gbs devel export to working packaging branch
+{% endblock %}
+
+{% block steps %}
+./create_proj sw-tools.spec --tizen
+
+cd sw-tools
+
+#Current branch
+git branch | grep master
+
+#Generate development branch and switch to it
+gbs devel start | tee ../log
+
+grep -i "Switching to branch 'development/master/0.1'" ../log
+
+#Current branch
+git branch | grep development/master/0.1
+
+echo test >>README
+
+git commit -a -m "test"
+
+gbs devel export | tee ../log2
+
+grep -i "info: Exporting patches to packaging branch" ../log2
+
+grep -i "switching to 'master'" ../log2
+
+#Gbs devel export doesn't automatically commit the changes
+grep "Change" ../log2
+
+grep -i "Untracked files" ../log2
+
+#Update the spec file
+grep -i "modified:   packaging/sw-tools.spec" ../log2
+
+#Generate patch
+grep -i "packaging/0001-test.patch" ../log2
+
+#Commit mannually
+git add *
+
+git commit -m "patches export from development branch"
+
+gbs export | tee ../log3
+
+grep -i "info: package files have been exported to" ../log3
+
+[ -f packaging/sw-tools-0.1-1/0001-test.patch ]
+
+[ -f packaging/sw-tools-0.1-1/sw-tools-0.1.tar.bz2 ]
+
+grep -i "test.patch" packaging/sw-tools-0.1-1/sw-tools.spec
+{% endblock %}
diff --git a/cases/export/gbs_export_binary_diff.case b/cases/export/gbs_export_binary_diff.case
new file mode 100644 (file)
index 0000000..116e14a
--- /dev/null
@@ -0,0 +1,45 @@
+{% extends "base.xml" %}
+
+{% block summary %}
+'patch' utility support git binary diffs
+{% endblock %}
+
+{% block tracking %}
+    <change>5471</change>
+{% endblock %}
+
+{% block fixtures %}
+  <copy src="specs/fake.spec" />
+{% endblock %}
+
+{% block steps %}
+./create_proj fake.spec
+
+cd fake
+
+gzip README
+
+#change README into a binary file
+mv README.gz README
+
+git commit -a -m 'binary'
+
+gbs export -o ../ --source-rpm
+
+cd ..
+
+rm -rf fake
+
+gbs import fake-1.0-1/fake-1.0-1.src.rpm
+
+cd fake
+
+[ -f README ] && echo hello >> README
+
+git commit -a -m 'change'
+
+gbs export
+
+#there is a diff of binary in patch
+grep hello packaging/fake-1.0-1/0001-change.patch
+{% endblock %}
diff --git a/cases/export/gbs_export_commit.case b/cases/export/gbs_export_commit.case
new file mode 100644 (file)
index 0000000..930784e
--- /dev/null
@@ -0,0 +1,24 @@
+{% extends "base.xml" %}
+
+{% block summary %}
+GBS ex option -c test
+{% endblock %}
+
+{% block fixtures %}
+    <copy src="specs/fake.spec" />
+    <copy src="conf/base.cfg" />
+{% endblock %}
+
+{% block steps %}
+./create_proj fake.spec
+
+cd fake
+
+sed -i 's/tbz2$/zip/' packaging/fake.spec
+
+git commit -a -m 'update zip'
+
+gbs -c ../base.cfg ex --commit HEAD~1
+
+[ -f ./packaging/fake-1.0-1/fake-1.0.tbz2 ]
+{% endblock %}
diff --git a/cases/export/gbs_export_commit_tag.case b/cases/export/gbs_export_commit_tag.case
new file mode 100644 (file)
index 0000000..70cc5be
--- /dev/null
@@ -0,0 +1,40 @@
+{% extends "base.xml" %}
+
+{% block summary %}
+Check VCS with different commit
+{% endblock %}
+
+{% block steps %}
+./create_proj sw-tools.spec
+
+cd sw-tools
+
+#give a remote repo url
+git remote add origin git://10.238.153.188:123/gerrit/sw-tools
+
+REPOPATH='gerrit/sw-tools'
+
+git tag -m '1.0' 1.0
+
+COMMIT1=$(git rev-parse HEAD)
+
+echo "some change" >> README
+
+git commit -a -m 'changes'
+
+git tag -m '0.2' 0.2
+
+COMMIT2=$(git rev-parse HEAD)
+
+gbs export 2>&1
+
+#HEAD is 0.2 tag
+grep -i "VCS: *${REPOPATH}#${COMMIT2}" packaging/sw-tools-0.1-1/sw-tools.spec
+
+rm -rf packaging/sw-tools-0.1-1
+
+gbs export --commit=HEAD^
+
+#HEAD^ is 0.1 tag
+grep -i "VCS: *${REPOPATH}#${COMMIT1}" packaging/sw-tools-0.1-1/sw-tools.spec
+{% endblock %}
diff --git a/cases/export/gbs_export_condition_patch.case b/cases/export/gbs_export_condition_patch.case
new file mode 100644 (file)
index 0000000..20642ef
--- /dev/null
@@ -0,0 +1,38 @@
+<testcase>
+  <summary>generate %if or % ifarch in spec</summary>
+  <tracking>
+    <change>3574</change>
+  </tracking>
+  <fixtures>
+    <copy src="tools/create_proj" />
+    <copy src="specs/fake.spec" />
+  </fixtures>
+  <steps><![CDATA[
+./create_proj fake.spec --tizen
+
+echo "modify" >> msg
+
+echo "" >> msg
+
+#write condition into log msg
+echo "Gbp-Rpm:If condition" >> msg
+
+cd fake
+
+#check no %if in spec file
+( ! grep "%if" packaging/fake.spec )
+
+touch hello
+
+git add hello
+
+#generate log from msg
+git commit --file=../msg
+
+gbs export
+
+grep "%if condition" packaging/fake-1.0-1/fake.spec
+
+grep "%endif" packaging/fake-1.0-1/fake.spec
+]]></steps>
+</testcase>
diff --git a/cases/export/gbs_export_conf_upstream.case b/cases/export/gbs_export_conf_upstream.case
new file mode 100644 (file)
index 0000000..005b4c0
--- /dev/null
@@ -0,0 +1,46 @@
+<testcase>
+  <summary>gbs ex specify upstream branch in gbs conf</summary>
+  <tracking>
+    <ticket>749</ticket>
+  </tracking>
+  <qa>
+    <prompt>What is the upstream version?</prompt>
+    <answer></answer>
+  </qa>
+  <fixtures>
+    <copy src="tools/create_proj" />
+    <copy src="specs/sw-tools.spec" />
+    <content target="tmp.conf">
+[general]
+upstream_branch = xyz
+    </content>
+  </fixtures>
+  <steps><![CDATA[
+./create_proj sw-tools.spec --tizen
+
+cd sw-tools
+
+#change default upstream branch
+git branch -m upstream xyz
+
+touch a.txt
+
+git add a.txt
+
+git commit -m 'add a.txt'
+
+gbs export
+
+#because there is no default upstream branch, so export from master and no patch generated
+[ ! -f packaging/sw-tools-0.1-1/*-add-a.txt.patch ]
+
+tar -tvf packaging/sw-tools-0.1-1/sw-tools-0.1.tar.bz2 | grep 'a.txt'
+
+gbs -c ../tmp.conf export
+
+#--upstream-branch give a upstream branch, so generate a patch
+[ -f packaging/sw-tools-0.1-1/*-add-a.txt.patch ]
+
+( ! tar -tvf packaging/sw-tools-0.1-1/sw-tools-0.1.tar.bz2 | grep 'a.txt')
+]]></steps>
+</testcase>
diff --git a/cases/export/gbs_export_different_specs_tizenpkg.case b/cases/export/gbs_export_different_specs_tizenpkg.case
new file mode 100644 (file)
index 0000000..9d71627
--- /dev/null
@@ -0,0 +1,27 @@
+<testcase>
+  <summary>export with multi-specs with tizen-type package</summary>
+  <tracking>
+    <change>4590</change>
+  </tracking>
+  <fixtures>
+    <copy src="tools/create_proj" />
+    <copy src="specs/fake.spec" />
+    <copy src="specs/fake-dev.spec" />
+  </fixtures>
+  <steps><![CDATA[
+./create_proj fake.spec --tizen
+
+cd fake
+
+cp ../fake-dev.spec packaging/
+
+git add packaging/fake-dev.spec
+
+echo hello >> README
+
+git commit -a -m 'add more spec'
+
+#export fail, because fake-dev won't export with force_native
+( ! gbs export 2>&1 | tee ../log )
+]]></steps>
+</testcase>
diff --git a/cases/export/gbs_export_disable_script.case b/cases/export/gbs_export_disable_script.case
new file mode 100644 (file)
index 0000000..5a92877
--- /dev/null
@@ -0,0 +1,28 @@
+<testcase>
+  <summary>Disables the execution of shell scripts or lua code when parsing the spec file</summary>
+  <tracking>
+    <change>5148</change>
+  </tracking>
+  <fixtures>
+    <copy src="tools/create_proj" />
+    <copy src="specs/fake.spec" />
+  </fixtures>
+  <steps><![CDATA[
+#rm all files in define macro
+perl -i -pne "s/(Name:.*)/%define securityhole %(rm -rf *;echo 1)\n\1/" fake.spec
+
+perl -i -pne "s/(Source0:.*)/Source0:    %{name}-%{version}-%{securityhole}.tbz2/" fake.spec
+
+./create_proj fake.spec
+
+cd fake
+
+gbs export -o ../
+
+#gbs will disable %securityhole with UNEXPANDED_SHELL_SCRIPT
+test -f ../fake-1.0-1/fake-1.0-UNEXPANDEDSHELLSCRIPT.tbz2
+
+#README shouldn't be deleted
+[ -f README ]
+]]></steps>
+</testcase>
diff --git a/cases/export/gbs_export_fail_create_outdir.case b/cases/export/gbs_export_fail_create_outdir.case
new file mode 100644 (file)
index 0000000..215b3b3
--- /dev/null
@@ -0,0 +1,19 @@
+<testcase>
+  <summary>create outdir fail (but parent dir no permission)</summary>
+  <fixtures>
+    <copy src="tools/create_proj" />
+    <copy src="specs/fake.spec" />
+  </fixtures>
+  <steps><![CDATA[
+./create_proj fake.spec
+
+cd fake
+
+(! gbs ex -o /root/out 2>&1 | tee ../log)
+
+grep -i "failed to create.*Permission denied" ../log
+
+#/root no permission, so create out dir denied
+[ ! -d /root/out ]
+]]></steps>
+</testcase>
diff --git a/cases/export/gbs_export_fallback-to-native_with_no_tag.case b/cases/export/gbs_export_fallback-to-native_with_no_tag.case
new file mode 100644 (file)
index 0000000..c19563f
--- /dev/null
@@ -0,0 +1,60 @@
+<testcase>
+  <summary>gbs export with option fallback-to-native for no tag package</summary>
+  <tracking>
+    <change>15858</change>
+    <change>15934</change>
+  </tracking>
+  <fixtures>
+    <copy src="tools/create_proj" />
+    <copy src="specs/sw-tools.spec" />
+  </fixtures>
+  <steps><![CDATA[
+./create_proj sw-tools.spec --tizen
+
+cd sw-tools
+
+# Check tag exist
+git tag | grep upstream/0.1
+
+# New patch
+echo "new patch" >> README
+
+git commit -a -m "new patch"
+
+# gbs export from upstream/0.1
+gbs export 2>&1 | tee ../log1
+
+# Check export result
+grep -i "Generating patches from git (upstream/0.1..HEAD)" ../log1
+
+grep -i "pristine-tar: successfully generated " ../log1
+
+[ -f packaging/sw-tools-0.1-1/sw-tools-0.1.tar.bz2 ]
+
+[ -f packaging/sw-tools-0.1-1/*.patch ]
+
+# Delete the tag
+git tag -d upstream/0.1
+
+# gbs export without tag upstream/0.1
+( ! gbs export 2>&1 | tee ../log2 )
+
+# Check export result failed
+grep -i "Invalid upstream treeish upstream/0.1" ../log2
+
+# gbs export with option --fallback-to-native
+gbs export --fallback-to-native 2>&1 | tee ../log3
+
+# Check export result
+grep -i "Generating upstream tarball and/or generating patches failed" ../log3
+
+grep -i "Falling back to native, i.e. creating source archive directly from exported commit, without any patches" ../log3
+
+grep -i "Creating (native) source archive sw-tools.* from 'HEAD'" ../log3
+
+[ -f packaging/sw-tools-0.1-1/sw-tools-0.1.tar.bz2 ]
+
+[ ! -f packaging/sw-tools-0.1-1/*.patch ]
+
+]]></steps>
+</testcase>
diff --git a/cases/export/gbs_export_from_spec.case b/cases/export/gbs_export_from_spec.case
new file mode 100644 (file)
index 0000000..5a9312a
--- /dev/null
@@ -0,0 +1,21 @@
+<testcase>
+  <summary>gbs ex option --spec test</summary>
+  <tracking>
+    <ticket>69</ticket>
+  </tracking>
+  <fixtures>
+    <copy src="tools/create_proj" />
+    <copy src="specs/fake.spec" />
+    <copy src="specs/json-c.spec" />
+    <copy src="conf/base.cfg" />
+  </fixtures>
+  <steps><![CDATA[
+./create_proj fake.spec json-c.spec
+
+cd fake
+
+gbs -c ../base.cfg ex --spec=json-c.spec
+
+[ -f ./packaging/json-c-0.9-1/json-c-0.9.tar.lzma ]
+]]></steps>
+</testcase>
diff --git a/cases/export/gbs_export_help01.case b/cases/export/gbs_export_help01.case
new file mode 100644 (file)
index 0000000..4897164
--- /dev/null
@@ -0,0 +1,8 @@
+<testcase>
+  <summary>gbs import help</summary>
+  <steps><![CDATA[
+gbs export -h 2>&1 | tee log
+
+grep -i Usage log && echo GBS_TEST_PASSED
+]]></steps>
+</testcase>
\ No newline at end of file
diff --git a/cases/export/gbs_export_help02.case b/cases/export/gbs_export_help02.case
new file mode 100644 (file)
index 0000000..61561c5
--- /dev/null
@@ -0,0 +1,8 @@
+<testcase>
+  <summary>gbs import help</summary>
+  <steps><![CDATA[
+gbs export --help 2>&1 | tee log
+
+grep -i Usage log && echo GBS_TEST_PASSED
+]]></steps>
+</testcase>
\ No newline at end of file
diff --git a/cases/export/gbs_export_if_ifarch_patch.case b/cases/export/gbs_export_if_ifarch_patch.case
new file mode 100644 (file)
index 0000000..263529b
--- /dev/null
@@ -0,0 +1,44 @@
+<testcase>
+  <summary>generate %if or % ifarch in spec</summary>
+  <tracking>
+    <change>3574</change>
+  </tracking>
+  <fixtures>
+    <copy src="tools/create_proj" />
+    <copy src="specs/fake.spec" />
+  </fixtures>
+  <steps><![CDATA[
+./create_proj fake.spec --tizen
+
+echo "modify" >> msg
+
+echo "" >> msg
+
+#write condition into log msg
+echo "Gbp-Rpm: If condition1" >> msg
+
+#give two condition
+echo "Gbp-Rpm: IfArch condition2" >> msg
+
+cd fake
+
+#check no %if in spec file
+( ! grep "%if" packaging/fake.spec )
+
+touch hello
+
+git add hello
+
+#generate log from msg
+git commit --file=../msg
+
+gbs export
+
+grep "%ifarch condition2" packaging/fake-1.0-1/fake.spec
+
+#only support one condition (last one)
+( ! grep "%if condition1" packaging/fake-1.0-1/fake.spec )
+
+grep "%endif" packaging/fake-1.0-1/fake.spec
+]]></steps>
+</testcase>
diff --git a/cases/export/gbs_export_in_gitdir.case b/cases/export/gbs_export_in_gitdir.case
new file mode 100644 (file)
index 0000000..17d21c6
--- /dev/null
@@ -0,0 +1,17 @@
+<testcase>
+  <summary>execute gbs export in a git dir</summary>
+  <fixtures>
+    <copy src="tools/create_proj" />
+    <copy src="specs/fake.spec" />
+    <copy src="conf/base.cfg" />
+  </fixtures>
+  <steps><![CDATA[
+./create_proj fake.spec
+
+cd fake
+
+gbs -c ../base.cfg export
+
+[ -f ./packaging/fake-1.0-1/fake-1.0.tbz2 ]
+]]></steps>
+</testcase>
diff --git a/cases/export/gbs_export_in_subdir.case b/cases/export/gbs_export_in_subdir.case
new file mode 100644 (file)
index 0000000..2e40887
--- /dev/null
@@ -0,0 +1,20 @@
+<testcase>
+  <summary>execute gbs export in a sub dir</summary>
+  <tracking>
+    <ticket>185</ticket>
+  </tracking>
+  <fixtures>
+    <copy src="tools/create_proj" />
+    <copy src="specs/fake.spec" />
+    <copy src="conf/base.cfg" />
+  </fixtures>
+  <steps><![CDATA[
+./create_proj fake.spec
+
+cd fake/packaging
+
+gbs -c ../../base.cfg export
+
+[ -f ./fake-1.0-1/fake-1.0.tbz2 ]
+]]></steps>
+</testcase>
diff --git a/cases/export/gbs_export_include_all.case b/cases/export/gbs_export_include_all.case
new file mode 100644 (file)
index 0000000..c35c781
--- /dev/null
@@ -0,0 +1,25 @@
+<testcase>
+  <summary>gbs ex option --include-all</summary>
+  <fixtures>
+    <copy src="tools/create_proj" />
+    <copy src="specs/fake.spec" />
+    <copy src="conf/base.cfg" />
+  </fixtures>
+  <steps><![CDATA[
+./create_proj fake.spec
+
+cd fake
+
+touch test.txt
+
+touch packaging/test2.txt
+
+gbs -c ../base.cfg ex --include-all
+
+tar -tvf ./packaging/fake-1.0-1/fake-1.0.tbz2 | grep test.txt
+
+tar -tvf ./packaging/fake-1.0-1/fake-1.0.tbz2 | grep test2.txt
+
+[ -f ./packaging/fake-1.0-1/test2.txt ]
+]]></steps>
+</testcase>
diff --git a/cases/export/gbs_export_multi_specs_native.case b/cases/export/gbs_export_multi_specs_native.case
new file mode 100644 (file)
index 0000000..54d1aa3
--- /dev/null
@@ -0,0 +1,47 @@
+<testcase>
+  <summary>export with multi-specs with native package</summary>
+  <tracking>
+    <change>4070</change>
+    <change>12195</change>
+    <ticket>1000</ticket>
+  </tracking>
+  <fixtures>
+    <copy src="tools/create_proj" />
+    <copy src="specs/fake.spec" />
+  </fixtures>
+  <steps><![CDATA[
+./create_proj fake.spec
+
+cd fake
+
+cp packaging/fake.spec packaging/fake-dev.spec
+
+git add packaging/fake-dev.spec
+
+echo hello >> README
+
+git commit -a -m 'add more spec'
+
+gbs export 2>&1 | tee ../log
+
+#native package won't generate patch
+( ! grep -i "Generating patches from git" ../log )
+
+#generate tarball twice
+tar_times=$(grep -i "Creating (native) source archive fake.* from 'HEAD'" ../log | wc -l)
+
+[ "$tar_times" -eq "2" ]
+
+vcs1=$( grep -i "VCS:.*" packaging/fake-1.0-1/fake.spec )
+
+vcs2=$( grep -i "VCS:.*" packaging/fake-1.0-1/fake-dev.spec )
+
+[ "$vcs1" == "$vcs2" ]
+
+#macro define `Source0` in two specs are same,former one is covered by the latter one,
+#so only one tarball exists.
+[ -f packaging/fake-1.0-1/fake-1.0.tbz2 ]
+
+[ ! -f packaging/fake-1.0-1/0001-add-more-spec.patch ]
+]]></steps>
+</testcase>
diff --git a/cases/export/gbs_export_multi_specs_tizenpkg.case b/cases/export/gbs_export_multi_specs_tizenpkg.case
new file mode 100644 (file)
index 0000000..8ebb236
--- /dev/null
@@ -0,0 +1,49 @@
+<testcase>
+  <summary>export with multi-specs with tizen-type package</summary>
+  <tracking>
+    <change>4070</change>
+  </tracking>
+  <fixtures>
+    <copy src="tools/create_proj" />
+    <copy src="specs/fake.spec" />
+  </fixtures>
+  <steps><![CDATA[
+./create_proj fake.spec --tizen
+
+cd fake
+
+cp packaging/fake.spec packaging/fake-dev.spec
+
+git add packaging/fake-dev.spec
+
+echo hello >> README
+
+git commit -a -m 'add more spec'
+
+gbs export 2>&1 | tee ../log
+
+#export twice, so generate patches twice
+ex_times=$( grep -i "Generating patches from git" ../log|wc -l )
+
+[ "$ex_times" -eq "2" ]
+
+#because same tarball, so only generate tarball once
+tar_times=$( grep -i "pristine-tar: successfully generated" ../log|wc -l )
+
+[ "$tar_times" -eq "1" ]
+
+vcs1=$( grep -i "VCS:.*" packaging/fake-1.0-1/fake.spec )
+
+vcs2=$( grep -i "VCS:.*" packaging/fake-1.0-1/fake-dev.spec )
+
+[ "$vcs1" == "$vcs2" ]
+
+grep -i "Patch0:.*" packaging/fake-1.0-1/fake.spec
+
+grep -i "Patch0:.*" packaging/fake-1.0-1/fake-dev.spec
+
+[ -f packaging/fake-1.0-1/fake-1.0.tbz2 ]
+
+[ -f packaging/fake-1.0-1/0001-add-more-spec.patch ]
+]]></steps>
+</testcase>
diff --git a/cases/export/gbs_export_multi_users_run_export.case b/cases/export/gbs_export_multi_users_run_export.case
new file mode 100644 (file)
index 0000000..7020fbf
--- /dev/null
@@ -0,0 +1,54 @@
+<testcase>
+  <summary>multiple users run gbs export in the same system</summary>
+  <tracking>
+    <ticket>332</ticket>
+  </tracking>
+  <fixtures>
+    <copy src="tools/create_proj" />
+    <copy src="specs/fake.spec" />
+    <copy src="specs/json-c.spec" />
+  </fixtures>
+  <setup><![CDATA[
+# generate a new random user
+newuser=itestuser$RANDOM
+homepath=/tmp/$newuser
+TMPPKG=$(mktemp -d /tmp/"$newuser"XXXXX)
+
+if id $newuser; then
+    sudo /usr/sbin/userdel -r $newuser
+fi
+]]></setup>
+  <steps><![CDATA[
+# add a user to test
+mkdir -p $homepath
+sudo /usr/sbin/useradd --home=$homepath $newuser
+sudo chown $newuser $homepath
+
+sudo git config --system user.email "itest@intel.com"
+
+sudo git config --system user.name $newuser
+
+./create_proj fake.spec -f
+
+gbs ex fake
+
+[ -f fake/packaging/fake-1.0-1/*.tbz2 ]
+
+./create_proj json-c.spec -f -C $TMPPKG
+
+sudo chown -R $newuser $TMPPKG
+
+sudo chmod a+x $TMPPKG
+
+cd $TMPPKG
+
+sudo -H -u $newuser gbs ex
+
+sudo test -f $TMPPKG/packaging/json-c-0.9-1/json-c-0.9.tar.lzma
+]]></steps>
+  <teardown><![CDATA[
+sudo /usr/sbin/userdel -r $newuser
+sudo rm -rf $homepath
+sudo rm -rf $TMPPKG
+]]></teardown>
+</testcase>
diff --git a/cases/export/gbs_export_multiopt_comi_incl.case b/cases/export/gbs_export_multiopt_comi_incl.case
new file mode 100644 (file)
index 0000000..5899655
--- /dev/null
@@ -0,0 +1,17 @@
+<testcase>
+  <summary>gbs ex option -c and --include-all</summary>
+  <fixtures>
+    <copy src="tools/create_proj" />
+    <copy src="specs/fake.spec" />
+    <copy src="conf/base.cfg" />
+  </fixtures>
+  <steps><![CDATA[
+./create_proj fake.spec
+
+cd fake
+
+(! gbs -c ../base.cfg ex --commit HEAD~1 --include-all 2>&1 | tee ../log)
+
+grep "commit can.t be specified together with --include-all" ../log
+]]></steps>
+</testcase>
diff --git a/cases/export/gbs_export_multiopt_comi_rpm.case b/cases/export/gbs_export_multiopt_comi_rpm.case
new file mode 100644 (file)
index 0000000..acc1397
--- /dev/null
@@ -0,0 +1,27 @@
+<testcase>
+  <summary>gbs ex option -c and --source-rpm</summary>
+  <tracking>
+    <ticket>396</ticket>
+  </tracking>
+  <fixtures>
+    <copy src="tools/create_proj" />
+    <copy src="specs/fake.spec" />
+  </fixtures>
+  <steps><![CDATA[
+./create_proj fake.spec
+
+cd fake
+
+sed -i 's/^Version:\s*1\.0\s*$/Version: 2.0/' packaging/fake.spec
+
+git commit -am "change ver from 1.0 to 2.0"
+
+gbs ex --source-rpm
+
+[ ! -f ./packaging/fake-1.0-1/fake-1.0-1.src.rpm ]
+
+gbs ex --source-rpm -c HEAD^
+
+test -f ./packaging/fake-1.0-1/fake-1.0-1.src.rpm
+]]></steps>
+</testcase>
diff --git a/cases/export/gbs_export_multiopt_o_comit.case b/cases/export/gbs_export_multiopt_o_comit.case
new file mode 100644 (file)
index 0000000..a79ac00
--- /dev/null
@@ -0,0 +1,23 @@
+<testcase>
+  <summary>gbs ex option -o and --commit</summary>
+  <fixtures>
+    <copy src="tools/create_proj" />
+    <copy src="specs/fake.spec" />
+    <copy src="conf/base.cfg" />
+  </fixtures>
+  <steps><![CDATA[
+./create_proj fake.spec
+
+cd fake
+
+sed -i 's/^Source0:.*$/Source0: %{name}-%{version}.tar.gz/' packaging/fake.spec
+
+git commit -a -m 'change tar ball fmt'
+
+gbs -c ../base.cfg ex -o output --commit HEAD~1
+
+cd output
+
+[ -f ./fake-1.0-1/fake-1.0.tbz2 ]
+]]></steps>
+</testcase>
diff --git a/cases/export/gbs_export_multiopt_o_incl.case b/cases/export/gbs_export_multiopt_o_incl.case
new file mode 100644 (file)
index 0000000..7171589
--- /dev/null
@@ -0,0 +1,27 @@
+<testcase>
+  <summary>gbs ex option -o and --include-all</summary>
+  <fixtures>
+    <copy src="tools/create_proj" />
+    <copy src="specs/fake.spec" />
+    <copy src="conf/base.cfg" />
+  </fixtures>
+  <steps><![CDATA[
+./create_proj fake.spec
+
+cd fake
+
+touch test.txt
+
+touch packaging/test2.txt
+
+gbs -c ../base.cfg ex -o output --include-all
+
+cd output
+
+tar -tvf fake-1.0-1/fake-1.0.tbz2 | grep test.txt
+
+tar -tvf fake-1.0-1/fake-1.0.tbz2 | grep test2.txt
+
+[ -f fake-1.0-1/test2.txt ]
+]]></steps>
+</testcase>
diff --git a/cases/export/gbs_export_multiopt_o_rpm.case b/cases/export/gbs_export_multiopt_o_rpm.case
new file mode 100644 (file)
index 0000000..1de47e5
--- /dev/null
@@ -0,0 +1,19 @@
+<testcase>
+  <summary>gbs ex option -o and --source-rpm</summary>
+  <fixtures>
+    <copy src="tools/create_proj" />
+    <copy src="specs/fake.spec" />
+    <copy src="conf/base.cfg" />
+  </fixtures>
+  <steps><![CDATA[
+./create_proj fake.spec
+
+cd fake
+
+gbs -c ../base.cfg ex -o output --source-rpm
+
+cd output
+
+[ -f ./fake-1.0-1/fake-1.0-1.src.rpm ]
+]]></steps>
+</testcase>
diff --git a/cases/export/gbs_export_multiopt_o_spec.case b/cases/export/gbs_export_multiopt_o_spec.case
new file mode 100644 (file)
index 0000000..8fab9c0
--- /dev/null
@@ -0,0 +1,25 @@
+<testcase>
+  <summary>gbs ex option -o and --spec</summary>
+  <tracking>
+    <ticket>69</ticket>
+  </tracking>
+  <fixtures>
+    <copy src="tools/create_proj" />
+    <copy src="specs/fake.spec" />
+    <copy src="specs/fake-dev.spec" />
+    <copy src="conf/base.cfg" />
+  </fixtures>
+  <steps><![CDATA[
+./create_proj fake.spec fake-dev.spec
+
+cd fake
+
+gbs -c ../base.cfg ex -o output --spec=fake-dev.spec
+
+cd output
+
+[ -f fake-dev-2.0-3/fake-dev-2.0.tgz ]
+
+[ ! -e fake-1* ]
+]]></steps>
+</testcase>
diff --git a/cases/export/gbs_export_multiopt_rpm_incl.case b/cases/export/gbs_export_multiopt_rpm_incl.case
new file mode 100644 (file)
index 0000000..a566fdf
--- /dev/null
@@ -0,0 +1,27 @@
+<testcase>
+  <summary>gbs ex option --source-rpm and --include-all</summary>
+  <fixtures>
+    <copy src="tools/create_proj" />
+    <copy src="specs/fake.spec" />
+    <copy src="conf/base.cfg" />
+  </fixtures>
+  <steps><![CDATA[
+./create_proj fake.spec
+
+cd fake
+
+touch test.txt
+
+touch packaging/test2.txt
+
+gbs -c ../base.cfg ex --source-rpm --include-all
+
+[ -f ./packaging/fake-1.0-1/fake-1.0-1.src.rpm ]
+
+tar -tvf ./packaging/fake-1.0-1/fake-1.0.tbz2 | grep test.txt
+
+tar -tvf ./packaging/fake-1.0-1/fake-1.0.tbz2 | grep test2.txt
+
+[ -f ./packaging/fake-1.0-1/test2.txt ]
+]]></steps>
+</testcase>
diff --git a/cases/export/gbs_export_multiopt_spe_comi.case b/cases/export/gbs_export_multiopt_spe_comi.case
new file mode 100644 (file)
index 0000000..6f20a16
--- /dev/null
@@ -0,0 +1,22 @@
+<testcase>
+  <summary>gbs ex option --spec and --commit</summary>
+  <fixtures>
+    <copy src="tools/create_proj" />
+    <copy src="specs/fake.spec" />
+    <copy src="specs/fake-dev.spec" />
+    <copy src="conf/base.cfg" />
+  </fixtures>
+  <steps><![CDATA[
+./create_proj fake.spec fake-dev.spec
+
+cd fake
+
+sed -i 's/^Version:.*$/Version:3.0/' packaging/fake-dev.spec
+
+git commit -a -m 'update to 3.0'
+
+gbs -c ../base.cfg ex --spec=fake-dev.spec --commit HEAD~1
+
+[ -f ./packaging/fake-dev-2.0-3/fake-dev-2.0.tgz ]
+]]></steps>
+</testcase>
diff --git a/cases/export/gbs_export_multiopt_spe_incl.case b/cases/export/gbs_export_multiopt_spe_incl.case
new file mode 100644 (file)
index 0000000..de8baaa
--- /dev/null
@@ -0,0 +1,28 @@
+<testcase>
+  <summary>gbs ex option --spec and --include-all</summary>
+  <fixtures>
+    <copy src="tools/create_proj" />
+    <copy src="specs/fake.spec" />
+    <copy src="specs/fake-dev.spec" />
+    <copy src="conf/base.cfg" />
+  </fixtures>
+  <steps><![CDATA[
+./create_proj fake.spec fake-dev.spec
+
+cd fake
+
+touch test.txt
+
+touch packaging/test2.txt
+
+gbs -c ../base.cfg ex --spec=fake.spec --include-all
+
+[ -f ./packaging/fake-1.0-1/fake-1.0.tbz2 ]
+
+tar -tvf ./packaging/fake-1.0-1/fake-1.0.tbz2 | grep test.txt
+
+tar -tvf ./packaging/fake-1.0-1/fake-1.0.tbz2 | grep test2.txt
+
+[ -f ./packaging/fake-1.0-1/test2.txt ]
+]]></steps>
+</testcase>
diff --git a/cases/export/gbs_export_multiopt_spe_rpm.case b/cases/export/gbs_export_multiopt_spe_rpm.case
new file mode 100644 (file)
index 0000000..a95e85c
--- /dev/null
@@ -0,0 +1,17 @@
+<testcase>
+  <summary>gbs ex option --spec and --source-rpm</summary>
+  <fixtures>
+    <copy src="tools/create_proj" />
+    <copy src="specs/fake.spec" />
+    <copy src="conf/base.cfg" />
+  </fixtures>
+  <steps><![CDATA[
+./create_proj fake.spec
+
+cd fake
+
+gbs -c ../base.cfg ex --spec=fake.spec --source-rpm
+
+[ -f ./packaging/fake-1.0-1/fake-1.0.tbz2 ] && [ -f ./packaging/fake-1.0-1/fake-1.0-1.src.rpm ]
+]]></steps>
+</testcase>
diff --git a/cases/export/gbs_export_multiopt_upsr_spec.case b/cases/export/gbs_export_multiopt_upsr_spec.case
new file mode 100644 (file)
index 0000000..914d0a8
--- /dev/null
@@ -0,0 +1,53 @@
+<testcase>
+  <summary>gbs ex option --upstream-branch= and --spec</summary>
+  <tracking>
+    <ticket>69</ticket>
+  </tracking>
+  <qa>
+    <prompt>What is the upstream version?</prompt>
+    <answer></answer>
+  </qa>
+  <fixtures>
+    <copy src="tools/create_proj" />
+    <copy src="specs/fake.spec" />
+  </fixtures>
+  <steps><![CDATA[
+./create_proj fake.spec
+
+cd fake
+
+gbs export --source-rpm
+
+cp `find packaging/ -name '*.src.rpm'` ../
+
+rm -rf `find packaging/ -type d -name 'fake*'`
+
+#fake-dev.spec is version 1.0
+cp packaging/fake.spec packaging/fake-dev.spec
+
+#fake.spec is version 2.0
+sed -i 's/^Version:.*$/Version:2.0/' packaging/fake.spec
+
+git add packaging/fake-dev.spec
+
+git commit -a -m 'upgrade to high version'
+
+gbs export
+
+cp `find packaging/ -name '*.tbz2'` ../
+
+cd ../
+
+rm -rf fake
+
+gbs import fake-1.0-1.src.rpm
+
+cd fake
+
+gbs import ../fake-2.0.tbz2 --merge
+
+gbs export --upstream-branch=upstream --spec=fake-dev.spec
+
+[ -f packaging/fake-1.0-1/fake-1.0.tbz2 ]
+]]></steps>
+</testcase>
diff --git a/cases/export/gbs_export_multiorigspec.case b/cases/export/gbs_export_multiorigspec.case
new file mode 100644 (file)
index 0000000..41f949f
--- /dev/null
@@ -0,0 +1,28 @@
+<testcase>
+  <summary>epxort with multi source file in specfile</summary>
+  <tracking>
+    <ticket>69</ticket>
+  </tracking>
+  <fixtures>
+    <copy src="tools/create_proj" />
+    <copy src="specs/fake.spec" />
+    <copy src="conf/base.cfg" />
+  </fixtures>
+  <steps><![CDATA[
+./create_proj fake.spec
+
+cd fake
+
+perl -i -pne 's/(Source0:.*)/\1\nSource1: packaging\/fake.ini/' packaging/fake.spec
+
+touch packaging/fake.ini
+
+git add packaging
+
+git commit -m 'multi source'
+
+gbs -c ../base.cfg ex
+
+[ -f ./packaging/fake-1.0-1/fake-1.0.tbz2 ] && [ -f ./packaging/fake-1.0-1/fake.ini ]
+]]></steps>
+</testcase>
diff --git a/cases/export/gbs_export_multispec.case b/cases/export/gbs_export_multispec.case
new file mode 100644 (file)
index 0000000..d2b6cfc
--- /dev/null
@@ -0,0 +1,27 @@
+<testcase>
+  <summary>epxort with multi spec orig file in specfile</summary>
+  <tracking>
+    <change>12195</change>
+    <ticket>69</ticket>
+  </tracking>
+  <fixtures>
+    <copy src="tools/create_proj" />
+    <copy src="specs/fake.spec" />
+    <copy src="specs/fake-dev.spec" />
+    <copy src="specs/json-c.spec" />
+    <copy src="conf/base.cfg" />
+  </fixtures>
+  <steps><![CDATA[
+./create_proj fake.spec fake-dev.spec json-c.spec
+
+cd fake
+
+gbs -c ../base.cfg ex
+
+[ -f ./packaging/fake-1.0-1/fake-1.0.tbz2 ]
+
+[ -f ./packaging/fake-1.0-1/fake-dev-2.0.tgz ]
+
+[ -f ./packaging/fake-1.0-1/json-c-0.9.tar.lzma ]
+]]></steps>
+</testcase>
diff --git a/cases/export/gbs_export_negative_spec.case b/cases/export/gbs_export_negative_spec.case
new file mode 100644 (file)
index 0000000..f815220
--- /dev/null
@@ -0,0 +1,21 @@
+<testcase>
+  <summary>gbs ex option --spec filename</summary>
+  <tracking>
+    <ticket>69</ticket>
+    <ticket>485</ticket>
+  </tracking>
+  <fixtures>
+    <copy src="tools/create_proj" />
+    <copy src="specs/fake.spec" />
+    <copy src="conf/base.cfg" />
+  </fixtures>
+  <steps><![CDATA[
+./create_proj fake.spec
+
+cd fake
+
+(! gbs -c ../base.cfg ex --spec=packaging/fake.spec 2>&1 | tee log)
+
+grep 'spec.*should be a file name rather than a path' log
+]]></steps>
+</testcase>
diff --git a/cases/export/gbs_export_nobranch.case b/cases/export/gbs_export_nobranch.case
new file mode 100644 (file)
index 0000000..b4c61d1
--- /dev/null
@@ -0,0 +1,24 @@
+<testcase>
+  <summary>gbs export when not on a branch</summary>
+  <tracking>
+    <ticket>85</ticket>
+  </tracking>
+  <fixtures>
+    <copy src="tools/create_proj" />
+    <copy src="specs/fake.spec" />
+    <copy src="conf/base.cfg" />
+  </fixtures>
+  <steps><![CDATA[
+./create_proj fake.spec
+
+cd fake
+
+git checkout HEAD~0
+
+git branch
+
+gbs -c ../base.cfg ex
+
+[ -f ./packaging/fake-1.0-1/fake-1.0.tbz2 ]
+]]></steps>
+</testcase>
diff --git a/cases/export/gbs_export_nogit.case b/cases/export/gbs_export_nogit.case
new file mode 100644 (file)
index 0000000..ad7aac5
--- /dev/null
@@ -0,0 +1,11 @@
+<testcase>
+  <summary>run gbs export not in a repo</summary>
+  <fixtures>
+    <copy src="conf/base.cfg" />
+  </fixtures>
+  <steps><![CDATA[
+(! gbs -c base.cfg ex 2>&1 | tee log)
+
+grep 'No Git repository' log
+]]></steps>
+</testcase>
diff --git a/cases/export/gbs_export_nosource0.case b/cases/export/gbs_export_nosource0.case
new file mode 100644 (file)
index 0000000..5d951c2
--- /dev/null
@@ -0,0 +1,32 @@
+<testcase>
+  <summary>export with specfile no source tag</summary>
+  <tracking>
+    <ticket>13</ticket>
+  </tracking>
+  <fixtures>
+    <copy src="tools/create_proj" />
+    <copy src="specs/fake.spec" />
+    <copy src="conf/base.cfg" />
+  </fixtures>
+  <steps><![CDATA[
+./create_proj fake.spec
+
+cd fake
+
+gbs -c ../base.cfg ex
+
+#fake.spec name:fake version:1.0 release 1
+#top dir name should be {name}-{version}-{release}
+ls packaging/fake-1.0-1
+
+rm packaging/fake-1.0-1 -rf
+
+sed -i "s|Source0|Source1|" packaging/fake.spec
+
+git add packaging/fake.spec
+
+git commit -m "change spec source0 to source1"
+
+gbs -c ../base.cfg ex
+]]></steps>
+</testcase>
diff --git a/cases/export/gbs_export_nospec.case b/cases/export/gbs_export_nospec.case
new file mode 100644 (file)
index 0000000..0a7def7
--- /dev/null
@@ -0,0 +1,25 @@
+<testcase>
+  <summary>export when packaging/specfile dosen't exist</summary>
+  <tracking>
+    <ticket>69</ticket>
+    <ticket>13</ticket>
+  </tracking>
+  <fixtures>
+    <copy src="tools/create_proj" />
+    <copy src="specs/fake.spec" />
+    <copy src="conf/base.cfg" />
+  </fixtures>
+  <steps><![CDATA[
+./create_proj fake.spec
+
+cd fake
+
+rm packaging/fake.spec
+
+git commit -a -m 'rm spec'
+
+(! gbs -c ../base.cfg ex 2>&1 | tee ../log)
+
+grep 'can.t find any spec file' ../log
+]]></steps>
+</testcase>
diff --git a/cases/export/gbs_export_notag.case b/cases/export/gbs_export_notag.case
new file mode 100644 (file)
index 0000000..5baadc0
--- /dev/null
@@ -0,0 +1,20 @@
+<testcase>
+  <summary>export with specfile no source tag</summary>
+  <tracking>
+    <ticket>71</ticket>
+  </tracking>
+  <fixtures>
+    <copy src="tools/create_proj" />
+    <copy src="specs/xorg-x11-filesystem.spec" />
+    <copy src="conf/base.cfg" />
+  </fixtures>
+  <steps><![CDATA[
+./create_proj xorg-x11-filesystem.spec
+
+cd xorg-x11-filesystem
+
+gbs -c ../base.cfg ex
+
+[ ! -f ./packaging/xorg-x11-filesystem-7.3-1/xorg-x11-filesystem-7.3.tar.gz ]
+]]></steps>
+</testcase>
diff --git a/cases/export/gbs_export_nottar.case b/cases/export/gbs_export_nottar.case
new file mode 100644 (file)
index 0000000..98f760b
--- /dev/null
@@ -0,0 +1,28 @@
+<testcase>
+  <summary>export with spec orig file is not tarball</summary>
+  <tracking>
+    <ticket>71</ticket>
+  </tracking>
+  <fixtures>
+    <copy src="tools/create_proj" />
+    <copy src="specs/fake.spec" />
+    <copy src="conf/base.cfg" />
+  </fixtures>
+  <steps><![CDATA[
+./create_proj fake.spec
+
+cd fake
+
+touch packaging/test.txt
+
+sed -i 's/^Source0:.*$/Source0: test.txt/' packaging/fake.spec
+
+git add packaging
+
+git commit -m 'modify spec'
+
+gbs -c ../base.cfg ex
+
+[ -f ./packaging/fake-1.0-1/test.txt ]
+]]></steps>
+</testcase>
diff --git a/cases/export/gbs_export_on_development_branch.case b/cases/export/gbs_export_on_development_branch.case
new file mode 100644 (file)
index 0000000..9156d6a
--- /dev/null
@@ -0,0 +1,42 @@
+{% extends "base.xml" %}
+
+{% block summary %}
+Gbs export on developement branch
+{% endblock %}
+
+{% block steps %}
+./create_proj sw-tools.spec --tizen
+
+cd sw-tools
+
+#Current branch
+git branch | grep master
+
+#Generate orphan branch
+gbs devel convert --retain-history
+
+#Current branch after gbs devel convert
+git branch | grep master-orphan
+
+#Generate development branch and switch to it
+gbs devel start | tee ../log
+
+grep -i "Switching to branch 'development/master-orphan/0.1'" ../log
+
+#Current branch
+git branch | grep development/master-orphan/0.1
+
+echo test >>README
+
+git commit -a -m "test"
+
+gbs export | tee ../log2
+
+grep -i "info: package files have been exported to" ../log2
+
+[ -f packaging/sw-tools-0.1-1/0001-test.patch ]
+
+[ -f packaging/sw-tools-0.1-1/sw-tools-0.1.tar.bz2 ]
+
+grep -i "test.patch" packaging/sw-tools-0.1-1/sw-tools.spec
+{% endblock %}
diff --git a/cases/export/gbs_export_out.case b/cases/export/gbs_export_out.case
new file mode 100644 (file)
index 0000000..1c81115
--- /dev/null
@@ -0,0 +1,19 @@
+<testcase>
+  <summary>gbs ex option -o test</summary>
+  <fixtures>
+    <copy src="tools/create_proj" />
+    <copy src="specs/fake.spec" />
+    <copy src="conf/base.cfg" />
+  </fixtures>
+  <steps><![CDATA[
+./create_proj fake.spec
+
+cd fake
+
+gbs -c ../base.cfg ex -o output
+
+cd output
+
+[ -f ./fake-1.0-1/fake-1.0.tbz2 ]
+]]></steps>
+</testcase>
diff --git a/cases/export/gbs_export_out_nowrite.case b/cases/export/gbs_export_out_nowrite.case
new file mode 100644 (file)
index 0000000..a0938d4
--- /dev/null
@@ -0,0 +1,27 @@
+<testcase>
+  <summary>outdir no write permission</summary>
+  <tracking>
+    <ticket>617</ticket>
+  </tracking>
+  <fixtures>
+    <copy src="tools/create_proj" />
+    <copy src="specs/fake.spec" />
+  </fixtures>
+  <steps><![CDATA[
+./create_proj fake.spec
+
+mkdir out
+
+chmod u-w out
+
+cd fake
+
+(! gbs ex -o ../out 2>&1 | tee ../log)
+
+test -z $(grep -i 'OSError.*Permission denied' ../log)
+
+grep -i 'no write permission to outdir' ../log
+
+[ ! -f ../out/fake-1.0-1/fake-1.0.tbz2 ]
+]]></steps>
+</testcase>
diff --git a/cases/export/gbs_export_packaging_dir.case b/cases/export/gbs_export_packaging_dir.case
new file mode 100644 (file)
index 0000000..318cf90
--- /dev/null
@@ -0,0 +1,24 @@
+<testcase>
+  <summary>gbs ex option --packaging-dir test</summary>
+  <tracking>
+    <ticket>521</ticket>
+  </tracking>
+  <fixtures>
+    <copy src="tools/create_proj" />
+    <copy src="specs/fake.spec" />
+    <copy src="conf/base.cfg" />
+  </fixtures>
+  <steps><![CDATA[
+./create_proj fake.spec
+
+cd fake
+
+git mv packaging/ new_packaging
+
+git commit -m 'rename packaging'
+
+gbs -c ../base.cfg ex --packaging-dir=new_packaging
+
+[ -f new_packaging/fake-1.0-1/fake-1.0.tbz2 ]
+]]></steps>
+</testcase>
diff --git a/cases/export/gbs_export_pkgdir_nowrite.case b/cases/export/gbs_export_pkgdir_nowrite.case
new file mode 100644 (file)
index 0000000..1e4a8cb
--- /dev/null
@@ -0,0 +1,25 @@
+<testcase>
+  <summary>package dir no write permission</summary>
+  <tracking>
+    <ticket>617</ticket>
+  </tracking>
+  <fixtures>
+    <copy src="tools/create_proj" />
+    <copy src="specs/fake.spec" />
+  </fixtures>
+  <steps><![CDATA[
+./create_proj fake.spec
+
+cd fake
+
+sudo gbs ex
+
+(! gbs ex 2>&1 | tee ../log)
+
+test -z $(grep -i 'OSError.*Permission denied' ../log)
+
+grep -i 'no permission to update outdir' ../log
+
+[ ! -f ../packaging/fake-1.0-1/fake-1.0.tbz2 ]
+]]></steps>
+</testcase>
diff --git a/cases/export/gbs_export_require_dash.case b/cases/export/gbs_export_require_dash.case
new file mode 100644 (file)
index 0000000..95028f6
--- /dev/null
@@ -0,0 +1,21 @@
+<testcase>
+  <summary>export with require start with - in spec file</summary>
+  <tracking>
+    <ticket>788</ticket>
+    <ticket>71</ticket>
+  </tracking>
+  <fixtures>
+    <copy src="tools/create_proj" />
+    <copy src="specs/tizen-accelerator.spec" />
+    <copy src="conf/base.cfg" />
+  </fixtures>
+  <steps><![CDATA[
+./create_proj tizen-accelerator.spec
+
+#suport like:
+#BuildRequires:  -rpmlint-Factory -rpmlint-mini -post-build-checks tar
+cd tizen-accelerator
+
+gbs -c ../base.cfg ex
+]]></steps>
+</testcase>
diff --git a/cases/export/gbs_export_special_macro.case b/cases/export/gbs_export_special_macro.case
new file mode 100644 (file)
index 0000000..3b09439
--- /dev/null
@@ -0,0 +1,19 @@
+<testcase>
+  <summary>gbs export can deal with tizen special rpm macros</summary>
+  <tracking>
+    <ticket>601</ticket>
+  </tracking>
+  <fixtures>
+    <copy src="tools/create_proj" />
+    <copy src="specs/gdm.spec" />
+  </fixtures>
+  <steps><![CDATA[
+./create_proj gdm.spec
+
+cd gdm
+
+gbs export 2>&1 | tee ../log
+
+(! grep -i "RPM error while parsing spec: can't parse specfile" ../log )
+]]></steps>
+</testcase>
diff --git a/cases/export/gbs_export_squash.case b/cases/export/gbs_export_squash.case
new file mode 100644 (file)
index 0000000..f928516
--- /dev/null
@@ -0,0 +1,44 @@
+<testcase>
+  <summary>gbs export with --squash-patches-util</summary>
+  <tracking>
+    <ticket>1000</ticket>
+  </tracking>
+  <fixtures>
+    <copy src="tools/create_proj" />
+    <copy src="specs/fake.spec" />
+  </fixtures>
+  <steps><![CDATA[
+./create_proj fake.spec --tizen
+
+cd fake
+
+echo "generate a patch" >patch.txt
+
+git add patch.txt
+
+git commit -m "first modify"
+
+echo "modify patch" >>patch.txt
+
+git commit -a -m 'second modify'
+
+#upstream commit-id
+COMIT1=$(git rev-parse --short upstream/1.0^0)
+
+#first modify commit-id
+COMIT2=$(git rev-parse --short HEAD^)
+
+#squash patches from upstream to first modify
+gbs export --squash-patches-until=HEAD^ 2>&1 | tee ../log
+
+grep "Squashing commits ${COMIT1}..${COMIT2} into one monolithic" ../log
+
+#only generate second modify patch
+[ -f packaging/fake-1.0-1/0002-second-modify.patch ]
+
+[ -f packaging/fake-1.0-1/${COMIT1}-to-${COMIT2}.diff ]
+
+#squash upstream/0.1..first modify patches to xx-to-xx.diff
+(! ls packaging/fake-1.0-1/*first-modify.patch )
+]]></steps>
+</testcase>
diff --git a/cases/export/gbs_export_squash_patches_until_HEAD.case b/cases/export/gbs_export_squash_patches_until_HEAD.case
new file mode 100644 (file)
index 0000000..a04fb0d
--- /dev/null
@@ -0,0 +1,42 @@
+<testcase>
+  <summary>gbs export with --squash-patches-util=HEAD</summary>
+  <tracking>
+    <change>8407</change>
+  </tracking>
+  <fixtures>
+    <copy src="tools/create_proj" />
+    <copy src="specs/fake.spec" />
+  </fixtures>
+  <steps><![CDATA[
+./create_proj fake.spec --tizen
+
+cd fake
+
+echo "generate a patch" >patch.txt
+
+git add patch.txt
+
+git commit -m "first modify"
+
+echo "modify patch" >>patch.txt
+
+git commit -a -m 'second modify'
+
+# upstream commit-id
+COMIT1=$(git rev-parse --short upstream/1.0^0)
+
+# HEAD commit-id
+COMIT2=$(git rev-parse --short HEAD)
+
+gbs export --squash-patches-until=HEAD 2>&1 | tee ../log
+
+# squash all commits into one monolithic diff
+grep "Squashing commits ${COMIT1}..${COMIT2} into one monolithic" ../log
+
+# no patch generated
+[ ! -f packaging/fake-1.0-1/*.patch ]
+
+# diff is generated
+( ls packaging/fake-1.0-1/${COMIT1}-to-${COMIT2}.diff )
+]]></steps>
+</testcase>
diff --git a/cases/export/gbs_export_srcrpm.case b/cases/export/gbs_export_srcrpm.case
new file mode 100644 (file)
index 0000000..da53bd7
--- /dev/null
@@ -0,0 +1,20 @@
+<testcase>
+  <summary>gbs ex option --source-rpm generate source rpm</summary>
+  <tracking>
+    <ticket>89</ticket>
+  </tracking>
+  <fixtures>
+    <copy src="tools/create_proj" />
+    <copy src="specs/fake.spec" />
+    <copy src="conf/base.cfg" />
+  </fixtures>
+  <steps><![CDATA[
+./create_proj fake.spec
+
+cd fake
+
+gbs -c ../base.cfg ex --source-rpm
+
+[ -f ./packaging/fake-1.0-1/fake-1.0-1.src.rpm ]
+]]></steps>
+</testcase>
diff --git a/cases/export/gbs_export_submodule.case b/cases/export/gbs_export_submodule.case
new file mode 100644 (file)
index 0000000..b87a5ed
--- /dev/null
@@ -0,0 +1,33 @@
+<testcase>
+  <summary>export if there is a submodule</summary>
+  <tracking>
+    <change>5528</change>
+  </tracking>
+  <fixtures>
+    <copy src="tools/create_proj" />
+    <copy src="specs/fake.spec" />
+    <copy src="specs/json-c.spec" />
+  </fixtures>
+  <steps><![CDATA[
+./create_proj fake.spec --tizen
+
+./create_proj json-c.spec
+
+remote_repo=`pwd`/json-c
+
+cd fake
+
+git submodule add $remote_repo json-c
+
+echo hello >> README
+
+git commit -a -m 'hello'
+
+gbs export
+
+#There should not be subproject info
+( ! grep -i "\+Subproject commit" packaging/fake-1.0-1/0001-hello.patch)
+
+( ! grep -i "diff --git a/json-c b/json-c" packaging/fake-1.0-1/0001-hello.patch)
+]]></steps>
+</testcase>
diff --git a/cases/export/gbs_export_unsup_tarball.case b/cases/export/gbs_export_unsup_tarball.case
new file mode 100644 (file)
index 0000000..44f1562
--- /dev/null
@@ -0,0 +1,24 @@
+<testcase>
+  <summary>export unsupported format tarball error handling</summary>
+  <tracking>
+    <ticket>71</ticket>
+  </tracking>
+  <fixtures>
+    <copy src="tools/create_proj" />
+    <copy src="specs/fake.spec" />
+    <copy src="conf/base.cfg" />
+  </fixtures>
+  <steps><![CDATA[
+./create_proj fake.spec
+
+cd fake
+
+sed -i 's/^Source0:.*$/Source0: %{name}-%{version}.tar.xyz/' packaging/fake.spec
+
+git commit -a -m 'wrong fmt'
+
+gbs -c ../base.cfg ex
+
+[ ! -f ./packaging/fake-1.0-1/fake-1.0.tar.xyz ]
+]]></steps>
+</testcase>
diff --git a/cases/export/gbs_export_upstream.case b/cases/export/gbs_export_upstream.case
new file mode 100644 (file)
index 0000000..900fe43
--- /dev/null
@@ -0,0 +1,39 @@
+<testcase>
+  <summary>gbs ex option --upstream-branch=</summary>
+  <qa>
+    <prompt>What is the upstream version?</prompt>
+    <answer></answer>
+  </qa>
+  <fixtures>
+    <copy src="tools/create_proj" />
+    <copy src="specs/sw-tools.spec" />
+  </fixtures>
+  <steps><![CDATA[
+./create_proj sw-tools.spec --tizen
+
+cd sw-tools
+
+#change default upstream branch
+git branch -m upstream xyz
+
+touch a.txt
+
+git add a.txt
+
+git commit -m 'add a.txt'
+
+gbs export
+
+#because there is no default upstream branch, so export from master and no patch generated
+[ ! -f packaging/sw-tools-0.1-1/*-add-a.txt.patch ]
+
+tar -tvf packaging/sw-tools-0.1-1/sw-tools-0.1.tar.bz2 | grep 'a.txt'
+
+gbs export --upstream-branch=xyz
+
+#--upstream-branch give a upstream branch, so generate a patch
+[ -f packaging/sw-tools-0.1-1/*-add-a.txt.patch ]
+
+( ! tar -tvf packaging/sw-tools-0.1-1/sw-tools-0.1.tar.bz2 | grep 'a.txt')
+]]></steps>
+</testcase>
diff --git a/cases/export/gbs_export_upstream_pristine-tar_in_remote.case b/cases/export/gbs_export_upstream_pristine-tar_in_remote.case
new file mode 100644 (file)
index 0000000..b71f7f0
--- /dev/null
@@ -0,0 +1,60 @@
+<testcase>
+  <summary>check if upstream and pristine-tar are avaiable in remote git repo</summary>
+  <tracking>
+    <ticket>1230</ticket>
+    <ticket>551</ticket>
+  </tracking>
+  <fixtures>
+    <copy src="tools/create_proj" />
+    <copy src="specs/fake.spec" />
+  </fixtures>
+  <steps><![CDATA[
+./create_proj -f fake.spec
+
+gbs export fake --source-rpm --outdir=.
+
+cd fake-1.0-1/
+
+gbs import fake-1.0-1.src.rpm
+
+git --git-dir=fake/.git branch
+
+git clone fake clone-fake
+
+cd clone-fake
+
+git branch | grep master
+
+( ! git branch | grep upstream)
+
+( ! git branch | grep pristine-tar)
+
+echo hello >>README
+
+git commit -am "add hello"
+
+gbs export  >log 2>&1
+
+#Track the upstream branch from remote if doesn't exist locally
+grep "tracking branch: origin/upstream -> upstream" log
+
+#Track the pristine-tar branch from remote if doesn't exist locally
+grep "tracking branch: origin/pristine-tar -> pristine-tar" log
+
+#Generate tarball with tag:upstream/1.0
+grep "Generating patches from git (upstream/1.0..HEAD)" log
+
+#Generate tarball from pristine-tar branch
+grep "pristine-tar: successfully generated" log
+
+#No upstream branch in repo after generating tarball successfully
+( ! git branch | grep upstream )
+
+#No pristine-tar branch in repo after generating tarball successfully
+( ! git branch | grep pristine-tar )
+
+[ -f packaging/fake-1.0-1/0001-add-hello.patch ]
+
+[ -f packaging/fake-1.0-1/fake-1.0.tbz2 ]
+]]></steps>
+</testcase>
diff --git a/cases/export/gbs_export_upstrtag.case b/cases/export/gbs_export_upstrtag.case
new file mode 100644 (file)
index 0000000..09255cb
--- /dev/null
@@ -0,0 +1,69 @@
+<testcase>
+  <summary>gbs ex option --upstream-tag=</summary>
+  <qa>
+    <prompt>What is the upstream version?</prompt>
+    <answer></answer>
+  </qa>
+  <fixtures>
+    <copy src="tools/create_proj" />
+    <copy src="specs/sw-tools.spec" />
+  </fixtures>
+  <steps><![CDATA[
+./create_proj sw-tools.spec
+
+cd sw-tools
+
+sed -i 's/^Version:.*$/Version:0.1/' packaging/sw-tools.spec
+
+git commit -a -m 'update to 0.1'
+
+gbs export --source-rpm
+
+cp `find packaging/ -name '*.src.rpm'` ../
+
+rm -rf `find packaging/ -type d -name 'sw-tools*'`
+
+sed -i 's/^Version:.*$/Version:0.2/' packaging/sw-tools.spec
+
+sed -i 's/^Source0:.*$/Source0: %{name}-%{version}.tar.gz/' packaging/sw-tools.spec
+
+git commit -a -m 'upgrade to gbs 0.2 and tar.gz fmt'
+
+gbs export
+
+cp `find packaging/ -name '*.tar.gz'` ../
+
+cd ../
+
+rm sw-tools -rf
+
+gbs import sw-tools-0.1-1.src.rpm
+
+cd sw-tools
+
+git checkout upstream
+
+touch hello
+
+git add hello
+
+#add a commit between upstream/0.1 and upstream/0.2 on upstream branch
+git commit -m 'hello'
+
+git checkout master
+
+gbs import ../sw-tools-0.2.tar.gz --merge
+
+gbs export --upstream-tag=upstream/0.1
+
+#from upstream/0.1 to HEAD there is a modification
+[ -f packaging/sw-tools-0.2-1/*hello.patch ]
+
+rm -rf packaging/sw-tools-0.2-1
+
+gbs export --upstream-tag=upstream/0.2
+
+#from upstream/0.2 and HEAD there are no modification
+[ ! -f packaging/sw-tools-0.2-1/*hello.patch ]
+]]></steps>
+</testcase>
diff --git a/cases/export/gbs_export_with_merge_commit_in_git-log.case b/cases/export/gbs_export_with_merge_commit_in_git-log.case
new file mode 100644 (file)
index 0000000..66eccf1
--- /dev/null
@@ -0,0 +1,62 @@
+<testcase>
+  <summary>gbs export with "Merge" commit in git log</summary>
+  <tracking>
+    <change>8406</change>
+  </tracking>
+  <fixtures>
+    <copy src="tools/create_proj" />
+    <copy src="specs/fake.spec" />
+  </fixtures>
+  <steps><![CDATA[
+./create_proj fake.spec --tizen
+
+cd fake
+
+git branch test
+
+echo "generate a patch" >patch.txt
+
+git add patch.txt
+
+git commit -m "first modify patch.txt"
+
+git checkout test
+
+echo "test" >>README
+
+git commit -a -m "first moidfy README"
+
+git checkout master
+
+DIST=`python -c "import platform; print platform.dist()[0]"`
+
+if [ $DIST = centos ] || ([ $DIST = SuSE ] && [ `python -c "import platform;print platform.dist()[1]"` = 12.1 ]);then
+    OPTION=--no-log
+else
+    OPTION=--no-edit
+fi
+
+git merge test $OPTION
+
+echo "modify patch" >>patch.txt
+
+git commit -a -m 'second modify patch.txt'
+
+COMIT1=$(git rev-parse --short upstream/1.0)
+
+LONG=$(git log --pretty=format:%H upstream/1.0..HEAD --merges)
+
+COMIT2=$(git rev-parse --short ${LONG})
+
+gbs export 2>&1 | tee ../log
+
+# From upstream/1.0 to the last merge commit,which are squashed into one diff
+grep "Merge commits found! Diff between ${COMIT1}..${COMIT2} written into one monolithic diff" ../log
+
+# Generate diff
+[ -f packaging/fake-1.0-1/${COMIT1}-to-${COMIT2}.diff ]
+
+# Generate individual patch
+[ -f packaging/fake-1.0-1/0002-second-modify-patch.txt.patch ]
+]]></steps>
+</testcase>
diff --git a/cases/export/gbs_export_with_native_configuration_in_gbsconf.case b/cases/export/gbs_export_with_native_configuration_in_gbsconf.case
new file mode 100644 (file)
index 0000000..f9e3b42
--- /dev/null
@@ -0,0 +1,108 @@
+<testcase>
+  <summary>gbs export with native configuration in .gbs.conf</summary>
+  <change>15934</change>
+  <fixtures>
+    <copy src="tools/create_proj" />
+    <copy src="specs/sw-tools.spec" />
+  </fixtures>
+  <steps><![CDATA[
+
+# Create no-native package
+./create_proj sw-tools.spec --tizen
+
+cd sw-tools
+
+# Check export from upstream
+gbs export 2>&1 | tee ../log1
+
+test -n "`grep "Generating patches from git (upstream/0.1..HEAD)" ../log1`"
+
+# Test native=yes, export in native packaging mode
+# Add .gbs.conf file
+cat >.gbs.conf <<EOF
+[general]
+native=yes
+EOF
+
+git add .gbs.conf
+
+git commit -am "test native=yes"
+
+# Check export from native
+gbs export 2>&1 | tee ../log2
+
+test -n "`grep "Creating (native) source archive sw-tools.* from 'HEAD'" ../log2`"
+
+# Test native=on, export in native packaging mode
+sed -i 's/yes/on/g' .gbs.conf
+
+git commit -am "test native=on"
+
+# Check export from native
+gbs export 2>&1 | tee ../log3
+
+test -n "`grep "Creating (native) source archive sw-tools.* from 'HEAD'" ../log3`"
+
+# Test native=1, export in native packaging mode
+sed -i 's/on/1/g' .gbs.conf
+
+git commit -am "test native=1"
+
+# Check export from native
+gbs export 2>&1 | tee ../log4
+
+test -n "`grep "Creating (native) source archive sw-tools.* from 'HEAD'" ../log4`"
+
+# Test native=true, export in native packaging mode
+sed -i 's/1/true/g' .gbs.conf
+
+git commit -am "test native=true"
+
+# Check export from native
+gbs export 2>&1 | tee ../log5
+
+test -n "`grep "Creating (native) source archive sw-tools.* from 'HEAD'" ../log5`"
+
+# Test native=enabled, export in native packaging mode
+sed -i 's/true/enabled/g' .gbs.conf
+
+git commit -am "test native=enabled"
+
+# Check export from native
+gbs export 2>&1 | tee ../log6
+
+test -n "`grep "Creating (native) source archive sw-tools.* from 'HEAD'" ../log6`"
+
+# Test all other non-empty native values are interpreted as False.
+# Test native=False, export in current packaging mode
+sed -i 's/enabled/False/g' .gbs.conf
+
+git commit -am "test native=False"
+
+# Check export from upstream
+gbs export 2>&1 | tee ../log7
+
+test -n "`grep "Generating patches from git (upstream/0.1..HEAD)" ../log7`"
+
+# Test native=0, export in current packaging mode
+sed -i 's/False/0/g' .gbs.conf
+
+git commit -am "test native=0"
+
+# Check export from upstream
+gbs export 2>&1 | tee ../log8
+
+test -n "`grep "Generating patches from git (upstream/0.1..HEAD)" ../log8`"
+
+# Test native="", export in current packaging mode
+sed -i 's/0//g' .gbs.conf
+
+git commit -am "test native="
+
+# Check export from upstream
+gbs export 2>&1 | tee ../log9
+
+test -n "`grep "Generating patches from git (upstream/0.1..HEAD)" ../log9`"
+
+]]></steps>
+</testcase>
diff --git a/cases/export/gbs_export_without_packaging.case b/cases/export/gbs_export_without_packaging.case
new file mode 100644 (file)
index 0000000..d2c5a60
--- /dev/null
@@ -0,0 +1,30 @@
+<testcase>
+  <summary>gbs export can work if there is packaging dir in any commit</summary>
+  <tracking>
+    <ticket>635</ticket>
+  </tracking>
+  <fixtures>
+    <copy src="tools/create_proj" />
+    <copy src="specs/fake.spec" />
+  </fixtures>
+  <steps><![CDATA[
+./create_proj fake.spec
+
+cd fake
+
+git rm -r packaging
+
+git commit -m 'remove packaging'
+
+(! gbs export 2>&1 | tee ../log)
+
+grep -i "can't find any spec file under packaging dir" ../log
+
+[ ! -f ./packaging/fake-1.0-1/fake-1.0.tbz2 ]
+
+#if there is packaging in any commit, gbs export work well
+gbs export --commit HEAD~1
+
+[ -f ./packaging/fake-1.0-1/fake-1.0.tbz2 ]
+]]></steps>
+</testcase>
diff --git a/cases/export/gbs_export_wrong_info.case b/cases/export/gbs_export_wrong_info.case
new file mode 100644 (file)
index 0000000..94554cc
--- /dev/null
@@ -0,0 +1,17 @@
+<testcase>
+  <summary>export shouldn't output abnormal info(negative)</summary>
+  <fixtures>
+    <copy src="tools/create_proj" />
+    <copy src="specs/json-c.spec" />
+    <copy src="conf/base.cfg" />
+  </fixtures>
+  <steps><![CDATA[
+./create_proj json-c.spec
+
+cd json-c
+
+gbs -c ../base.cfg ex 2>&1 | tee log
+
+(! grep 'source rpm generated to' log)
+]]></steps>
+</testcase>
diff --git a/cases/export/gbs_export_wrong_project.case b/cases/export/gbs_export_wrong_project.case
new file mode 100644 (file)
index 0000000..b6f2feb
--- /dev/null
@@ -0,0 +1,22 @@
+<testcase>
+  <summary>export from another project(negative)</summary>
+  <fixtures>
+    <copy src="tools/create_proj" />
+    <copy src="specs/fake.spec" />
+    <copy src="specs/json-c.spec" />
+    <copy src="conf/base.cfg" />
+  </fixtures>
+  <steps><![CDATA[
+./create_proj json-c.spec
+
+./create_proj fake.spec
+
+cd fake
+
+(! gbs -c ../base.cfg ex --spec ../json-c/packaging/json-c.spec 2>&1 | tee log)
+
+(! grep "package files have been exported to" log)
+
+(! ls packaging/*json*)
+]]></steps>
+</testcase>
diff --git a/cases/export/gbs_export_wrongcommit.case b/cases/export/gbs_export_wrongcommit.case
new file mode 100644 (file)
index 0000000..71b79ba
--- /dev/null
@@ -0,0 +1,19 @@
+<testcase>
+  <summary>gbs ex option -c test</summary>
+  <fixtures>
+    <copy src="tools/create_proj" />
+    <copy src="specs/fake.spec" />
+    <copy src="conf/base.cfg" />
+  </fixtures>
+  <steps><![CDATA[
+./create_proj fake.spec
+
+cd fake
+
+(! gbs -c ../base.cfg ex --commit 12345678 2>&1 | tee ../log)
+
+grep -i "revision .* not found" ../log
+
+[ ! -f ./packaging/fake-1.0-1/fake-1.0.tbz2 ]
+]]></steps>
+</testcase>
diff --git a/cases/import/base.xml b/cases/import/base.xml
new file mode 100644 (file)
index 0000000..325e869
--- /dev/null
@@ -0,0 +1,18 @@
+<testcase>
+  <summary>{% block summary %}{% endblock %}</summary>
+  <tracking>{% block tracking %}{% endblock %}</tracking>
+  {% block all_fixtures %}
+  <fixtures>
+    <copy src="tools/create_proj" />
+    {% block fixtures %}{% endblock %}
+  </fixtures>
+  {% endblock %}
+  {% block all_qa %}
+  <qa>
+    {% block qa %}{% endblock %}
+  </qa>
+  {% endblock %}
+  <setup><![CDATA[{% block setup %}{% endblock %}]]></setup>
+  <steps><![CDATA[{% block steps %}{% endblock %}]]></steps>
+  <teardown><![CDATA[{% block teardown %}{% endblock %}]]></teardown>
+</testcase>
diff --git a/cases/import/gbs_im_VCStag.case b/cases/import/gbs_im_VCStag.case
new file mode 100644 (file)
index 0000000..a0150a0
--- /dev/null
@@ -0,0 +1,77 @@
+<testcase>
+  <summary>setting a upstream git tag as the parent</summary>
+  <tracking>
+    <ticket>594</ticket>
+  </tracking>
+  <qa>
+    <prompt>What will be the source package name?</prompt>
+    <answer></answer>
+    <prompt>What is the upstream version?</prompt>
+    <answer></answer>
+  </qa>
+  <fixtures>
+    <copy src="tools/create_proj" />
+    <copy src="specs/fake.spec" />
+  </fixtures>
+  <steps><![CDATA[
+./create_proj fake.spec
+
+cd fake
+
+gbs export --source-rpm
+
+cp ` find packaging/ -name '*.src.rpm'` ../
+
+rm -rf  `find packaging/ -type d -name 'fake*'`
+
+sed -i 's/^Version:.*$/Version:2.0/' packaging/fake.spec
+
+git commit -a -m 'upgrade to 2.0'
+
+gbs export
+
+cp `find packaging/ -name '*.tbz2'` ../
+
+rm -rf  `find packaging/ -type d -name 'fake*'`
+
+sed -i 's/^Version:.*$/Version:3.0/' packaging/fake.spec
+
+git commit -a -m 'upgrade to 3.0'
+
+gbs export
+
+cp `find packaging/ -name '*.tbz2'` ../
+
+cd ../
+
+rm fake -rf
+
+gbs import fake-1.0-1.src.rpm
+
+cd fake
+
+gbs import ../fake-2.0.tbz2
+
+#copy for compare
+cp ../fake ../fake2 -r
+
+#parent is upstream/2.0
+gbs import ../fake-3.0.tbz2 --upstream-vcs-tag=upstream/2.0
+
+git checkout upstream
+
+#upstream/1.0->upstream/2.0->upstream/3.0 fast forward
+test -z $(git log -1|grep -i 'Merge:')
+
+cd ../fake2
+
+#parent is upstream/1.0
+gbs import ../fake-3.0.tbz2 --upstream-vcs-tag=upstream/1.0
+
+git checkout upstream
+
+#upstream/1.0->upstream/2.0 \__ same parent
+#upstream/1.0->upstream/3.0 /   merge
+git log -1|grep -i 'Merge:'
+]]></steps>
+</testcase>
diff --git a/cases/import/gbs_im_VCStag_srcrpm.case b/cases/import/gbs_im_VCStag_srcrpm.case
new file mode 100644 (file)
index 0000000..72b674a
--- /dev/null
@@ -0,0 +1,77 @@
+<testcase>
+  <summary>setting a upstream git tag as the parent</summary>
+  <tracking>
+    <change>4612</change>
+  </tracking>
+  <qa>
+    <prompt>What will be the source package name?</prompt>
+    <answer></answer>
+    <prompt>What is the upstream version?</prompt>
+    <answer></answer>
+  </qa>
+  <fixtures>
+    <copy src="tools/create_proj" />
+    <copy src="specs/fake.spec" />
+  </fixtures>
+  <steps><![CDATA[
+./create_proj fake.spec
+
+cd fake
+
+gbs export --source-rpm
+
+cp ` find packaging/ -name '*.src.rpm'` ../
+
+rm -rf  `find packaging/ -type d -name 'fake*'`
+
+sed -i 's/^Version:.*$/Version:2.0/' packaging/fake.spec
+
+git commit -a -m 'upgrade to 2.0'
+
+gbs export --source-rpm
+
+cp ` find packaging/ -name '*.src.rpm'` ../
+
+rm -rf  `find packaging/ -type d -name 'fake*'`
+
+sed -i 's/^Version:.*$/Version:3.0/' packaging/fake.spec
+
+git commit -a -m 'upgrade to 3.0'
+
+gbs export --source-rpm
+
+cp ` find packaging/ -name '*.src.rpm'` ../
+
+cd ../
+
+rm fake -rf
+
+gbs import fake-1.0-1.src.rpm
+
+cd fake
+
+gbs import ../fake-2.0-1.src.rpm
+
+#copy for compare
+cp ../fake ../fake2 -r
+
+#parent is upstream/2.0
+gbs import ../fake-3.0-1.src.rpm --upstream-vcs-tag=upstream/2.0
+
+git checkout upstream
+
+#upstream/1.0->upstream/2.0->upstream/3.0 fast forward
+test -z $(git log -1|grep -i 'Merge:')
+
+cd ../fake2
+
+#parent is upstream/1.0
+gbs import ../fake-3.0-1.src.rpm --upstream-vcs-tag=upstream/1.0
+
+git checkout upstream
+
+#upstream/1.0->upstream/2.0 \__ same parent
+#upstream/1.0->upstream/3.0 /   merge
+git log -1|grep -i 'Merge:'
+]]></steps>
+</testcase>
diff --git a/cases/import/gbs_im_bzip2_compressed_patches.case b/cases/import/gbs_im_bzip2_compressed_patches.case
new file mode 100644 (file)
index 0000000..b3819be
--- /dev/null
@@ -0,0 +1,44 @@
+{% extends "base.xml" %}
+
+{% block summary %}
+import bzip2 compressed patches
+{% endblock %}
+
+{% block tracking %}
+  <change>4532</change>
+  <ticket>789</ticket>
+  <ticket>1000</ticket>
+{% endblock %}
+
+{% block fixtures %}
+  <copy src="specs/sw-tools.spec" />
+{% endblock %}
+
+{% block steps %}
+./create_proj --tizen sw-tools.spec
+
+cd sw-tools
+
+echo "add a test patch" >hello
+
+git add hello
+
+git commit -m "hello"
+
+gbs export -o ../
+
+cd ../sw-tools-0.1-1
+
+tar -jcvf 0001-hello.patch.tar.bz2 0001-hello.patch
+
+sed -i 's/^Patch0:.*$/Patch0:0001-hello.patch.tar.bz2/' sw-tools.spec
+
+mkdir ../importdir
+
+cd ../importdir
+
+gbs import ../sw-tools-0.1-1/sw-tools.spec
+
+#check hello file which proves bzip2 compressed patch has been imported successfully
+ls sw-tools/hello
+{% endblock %}
diff --git a/cases/import/gbs_im_conf_upstream.case b/cases/import/gbs_im_conf_upstream.case
new file mode 100644 (file)
index 0000000..4266793
--- /dev/null
@@ -0,0 +1,45 @@
+{% extends "base.xml" %}
+
+{% block summary %}
+gbs import specify upstream branch in conf file
+{% endblock %}
+
+{% block tracking %}
+    <ticket>749</ticket>
+{% endblock %}
+
+{% block fixtures %}
+    <copy src="specs/json-c.spec" />
+    <content target="tmp.conf">
+[general]
+upstream_branch = test
+    </content>
+{% endblock %}
+
+{% block steps %}
+./create_proj json-c.spec
+
+cd json-c
+
+sed -i 's/lzma$/gz/' packaging/json-c.spec
+
+git commit -a -m 'update to tar.gz'
+
+gbs export --source-rpm
+
+cp `find packaging/ -name '*.src.rpm'` ../
+
+cd ..
+
+rm -rf json-c
+
+gbs -c tmp.conf import json-c-0.9-1.src.rpm
+
+cd json-c
+
+git branch | grep 'test'
+
+git checkout test
+
+git log test | grep -i ' Imported Upstream version 0.9'
+{% endblock %}
diff --git a/cases/import/gbs_im_corrupted_tarball.case b/cases/import/gbs_im_corrupted_tarball.case
new file mode 100644 (file)
index 0000000..7f17cec
--- /dev/null
@@ -0,0 +1,19 @@
+<testcase>
+  <summary>Import a corrupted tarball</summary>
+  <tracking>
+    <change>6101</change>
+  </tracking>
+  <steps><![CDATA[
+mkdir test
+
+cd test
+
+git init
+
+touch ../sw-tools-0.2.tar
+
+( ! gbs import ../sw-tools-0.2.tar 2>&1 | tee ../log)
+
+grep -r "Listing tar archive content failed" ../log
+]]></steps>
+</testcase>
diff --git a/cases/import/gbs_im_create_missing_branches.case b/cases/import/gbs_im_create_missing_branches.case
new file mode 100644 (file)
index 0000000..abde6a6
--- /dev/null
@@ -0,0 +1,37 @@
+{% extends "base.xml" %}
+
+{% block summary %}
+give create-missing-branches to gbs import srpm or spec file
+{% endblock %}
+
+{% block tracking %}
+    <change>4613</change>
+{% endblock %}
+
+{% block fixtures %}
+    <copy src="specs/fake.spec" />
+{% endblock %}
+
+{% block steps %}
+./create_proj fake.spec
+
+gbs export fake/ -o .
+
+mkdir test
+
+cd test
+
+touch hello
+
+git init
+
+git add hello
+
+git commit -a -m 'Add hello'
+
+gbs import ../fake-1.0-1/fake.spec
+
+git branch | grep upstream
+
+git branch | grep pristine-tar
+{% endblock %}
diff --git a/cases/import/gbs_im_default_no_merge.case b/cases/import/gbs_im_default_no_merge.case
new file mode 100644 (file)
index 0000000..86dba7e
--- /dev/null
@@ -0,0 +1,61 @@
+{% extends "base.xml" %}
+
+{% block summary %}
+excute gbs import default no merge
+{% endblock %}
+
+{% block fixtures %}
+  <copy src="specs/sw-tools.spec" />
+{% endblock %}
+
+{% block qa %}
+    <prompt>What is the upstream version?</prompt>
+    <answer></answer>
+{% endblock %}
+
+{% block steps %}
+./create_proj sw-tools.spec
+
+cd sw-tools
+
+sed -i 's/^Version:.*$/Version:0.1/' packaging/sw-tools.spec
+
+git commit -a -m 'update to 0.1'
+
+gbs export --source-rpm
+
+cp `find packaging/ -name '*.src.rpm'` ../
+
+rm -rf `find packaging/ -type d -name 'sw-tools*'`
+
+sed -i 's/^Version:.*$/Version:0.2/' packaging/sw-tools.spec
+
+sed -i 's/^Source0:.*$/Source0:        %{name}-%{version}.tar.bz2/' packaging/sw-tools.spec
+
+git commit -a -m 'upgrade to gbs 0.2 and tar.bz2 fmt'
+
+gbs export
+
+cp `find packaging/ -name '*.tar.bz2'` ../
+
+cd ../
+
+rm sw-tools -rf
+
+gbs import sw-tools-0.1-1.src.rpm
+
+cd sw-tools
+
+gbs import ../sw-tools-0.2.tar.bz2
+
+git tag | grep upstream/0.2
+
+git checkout pristine-tar
+
+ls sw-tools-0.2.tar.bz2.delta
+
+git log upstream | grep "Imported Upstream version 0.2"
+
+#default no merge
+(! git log master | grep "Merge commit 'upstream/0.2'")
+{% endblock %}
diff --git a/cases/import/gbs_im_filter.case b/cases/import/gbs_im_filter.case
new file mode 100644 (file)
index 0000000..5d7da87
--- /dev/null
@@ -0,0 +1,43 @@
+<testcase>
+  <summary>files to filter out during import</summary>
+  <tracking>
+    <ticket>594</ticket>
+  </tracking>
+  <fixtures>
+    <copy src="tools/create_proj" />
+    <copy src="specs/fake.spec" />
+  </fixtures>
+  <steps><![CDATA[
+./create_proj fake.spec
+
+cd fake
+
+echo 'filter1' > f1
+
+echo 'filter2' > f2
+
+git add f1
+
+git add f2
+
+git commit -m 'add filter files'
+
+gbs export --source-rpm
+
+cp ` find packaging/ -name '*.src.rpm'` ../
+
+cd ..
+
+rm -rf fake
+
+gbs import fake-1.0-1.src.rpm
+
+[ -f fake/f1 ] && [ -f fake/f2 ]
+
+rm -rf fake
+
+gbs import fake-1.0-1.src.rpm --filter=f1 --filter=f2
+
+[ ! -f fake/f1 ] && [ ! -f fake/f2 ]
+]]></steps>
+</testcase>
diff --git a/cases/import/gbs_im_from_invalidrpm.case b/cases/import/gbs_im_from_invalidrpm.case
new file mode 100644 (file)
index 0000000..a8f715e
--- /dev/null
@@ -0,0 +1,19 @@
+<testcase>
+  <summary>import invlid src rpm tarball test</summary>
+  <fixtures>
+    <copy src="conf/base.cfg" />
+  </fixtures>
+  <steps><![CDATA[
+rm tmp_import -rf
+
+mkdir ./tmp_import
+
+cd tmp_import
+
+touch invalid.src.rpm
+
+(! gbs  -c ../base.cfg import invalid.src.rpm 2>&1 | tee log)
+
+grep 'Failed to import' log
+]]></steps>
+</testcase>
diff --git a/cases/import/gbs_im_from_invalidspec.case b/cases/import/gbs_im_from_invalidspec.case
new file mode 100644 (file)
index 0000000..ba0fb74
--- /dev/null
@@ -0,0 +1,22 @@
+<testcase>
+  <summary>import with sepcfile issue: specfile is not right</summary>
+  <tracking>
+    <ticket>71</ticket>
+  </tracking>
+  <fixtures>
+    <copy src="conf/base.cfg" />
+  </fixtures>
+  <steps><![CDATA[
+rm tmp_import -rf
+
+mkdir ./tmp_import
+
+cd tmp_import
+
+touch invalid.spec
+
+(! gbs -c ../base.cfg import invalid.spec 2>&1|tee log)
+
+grep 'Failed to import' log
+]]></steps>
+</testcase>
diff --git a/cases/import/gbs_im_from_rpm_bz2.case b/cases/import/gbs_im_from_rpm_bz2.case
new file mode 100644 (file)
index 0000000..fad572d
--- /dev/null
@@ -0,0 +1,43 @@
+<testcase>
+  <summary>gbs import package from a source rpm</summary>
+  <fixtures>
+    <copy src="tools/create_proj" />
+    <copy src="specs/json-c.spec" />
+    <copy src="conf/base.cfg" />
+  </fixtures>
+  <steps><![CDATA[
+./create_proj json-c.spec
+
+cd json-c
+
+sed -i 's/lzma$/bz2/' packaging/json-c.spec
+
+git commit -a -m 'update to tar.bz2'
+
+gbs export --source-rpm
+
+cp `find packaging/ -name '*.src.rpm'` ../
+
+cd ..
+
+rm -rf json-c
+
+gbs -c base.cfg import json-c-0.9-1.src.rpm
+
+cd json-c
+
+git log | grep -i 'Imported Downstream release'
+
+git log | grep -i 'Imported Upstream version'
+
+git branch | grep 'upstream'
+
+git branch | grep 'master'
+
+git branch | grep 'pristine-tar'
+
+git tag | grep 'upstream'
+
+git tag | grep 'packaging'
+]]></steps>
+</testcase>
diff --git a/cases/import/gbs_im_from_rpm_case.case b/cases/import/gbs_im_from_rpm_case.case
new file mode 100644 (file)
index 0000000..d57c283
--- /dev/null
@@ -0,0 +1,43 @@
+<testcase>
+  <summary>gbs import package from a source rpm</summary>
+  <fixtures>
+    <copy src="tools/create_proj" />
+    <copy src="specs/json-c.spec" />
+    <copy src="conf/base.cfg" />
+  </fixtures>
+  <steps><![CDATA[
+./create_proj json-c.spec
+
+cd json-c
+
+sed -i 's/lzma$/gz/' packaging/json-c.spec
+
+git commit -a -m 'update to tar.gz'
+
+gbs export --source-rpm
+
+cp `find packaging/ -name '*.src.rpm'` ../
+
+cd ..
+
+rm -rf json-c
+
+gbs -c base.cfg import json-c-0.9-1.src.rpm
+
+cd json-c
+
+git log | grep -i 'Imported Downstream release'
+
+git log | grep -i 'Imported Upstream version'
+
+git branch | grep 'upstream'
+
+git branch | grep 'master'
+
+git branch | grep 'pristine-tar'
+
+git tag | grep 'upstream'
+
+git tag | grep 'packaging'
+]]></steps>
+</testcase>
diff --git a/cases/import/gbs_im_from_rpm_no_pristin.case b/cases/import/gbs_im_from_rpm_no_pristin.case
new file mode 100644 (file)
index 0000000..c716c8a
--- /dev/null
@@ -0,0 +1,39 @@
+<testcase>
+  <summary>gbs import package from a source rpm</summary>
+  <fixtures>
+    <copy src="tools/create_proj" />
+    <copy src="specs/json-c.spec" />
+    <copy src="conf/base.cfg" />
+  </fixtures>
+  <steps><![CDATA[
+./create_proj json-c.spec
+
+cd json-c
+
+gbs export --source-rpm
+
+cp `find packaging/ -name '*.src.rpm'` ../
+
+cd ..
+
+rm -rf json-c
+
+gbs -c base.cfg import json-c-0.9-1.src.rpm --no-pristine-tar
+
+cd json-c
+
+git log | grep -i 'Imported Downstream release'
+
+git log | grep -i 'Imported Upstream version'
+
+(! git branch | grep 'pristine-tar')
+
+git branch | grep 'upstream'
+
+git branch | grep 'master'
+
+git tag | grep 'upstream'
+
+git tag | grep 'packaging'
+]]></steps>
+</testcase>
diff --git a/cases/import/gbs_im_from_rpm_tar.case b/cases/import/gbs_im_from_rpm_tar.case
new file mode 100644 (file)
index 0000000..19bd612
--- /dev/null
@@ -0,0 +1,43 @@
+<testcase>
+  <summary>gbs import package from a source rpm</summary>
+  <fixtures>
+    <copy src="tools/create_proj" />
+    <copy src="specs/json-c.spec" />
+    <copy src="conf/base.cfg" />
+  </fixtures>
+  <steps><![CDATA[
+./create_proj json-c.spec
+
+cd json-c
+
+sed -i 's/.lzma$//' packaging/json-c.spec
+
+git commit -a -m 'update to tar'
+
+gbs export --source-rpm
+
+cp `find packaging/ -name '*.src.rpm'` ../
+
+cd ..
+
+rm -rf json-c
+
+gbs -c base.cfg import json-c-0.9-1.src.rpm
+
+cd json-c
+
+git log | grep -i 'Imported Downstream release'
+
+git log | grep -i 'Imported Upstream version'
+
+git branch | grep 'upstream'
+
+git branch | grep 'master'
+
+git branch | grep 'pristine-tar'
+
+git tag | grep 'upstream'
+
+git tag | grep 'packaging'
+]]></steps>
+</testcase>
diff --git a/cases/import/gbs_im_from_rpm_xz.case b/cases/import/gbs_im_from_rpm_xz.case
new file mode 100644 (file)
index 0000000..4d6e30e
--- /dev/null
@@ -0,0 +1,43 @@
+<testcase>
+  <summary>gbs import package from a source rpm</summary>
+  <fixtures>
+    <copy src="tools/create_proj" />
+    <copy src="specs/json-c.spec" />
+    <copy src="conf/base.cfg" />
+  </fixtures>
+  <steps><![CDATA[
+./create_proj json-c.spec
+
+cd json-c
+
+sed -i 's/lzma$/xz/' packaging/json-c.spec
+
+git commit -a -m 'update to tar.xz'
+
+gbs export --source-rpm
+
+cp `find packaging/ -name '*.src.rpm'` ../
+
+cd ..
+
+rm -rf json-c
+
+gbs -c base.cfg import json-c-0.9-1.src.rpm
+
+cd json-c
+
+git log | grep -i 'Imported Downstream release'
+
+git log | grep -i 'Imported Upstream version'
+
+git branch | grep 'upstream'
+
+git branch | grep 'master'
+
+git branch | grep 'pristine-tar'
+
+git tag | grep 'upstream'
+
+git tag | grep 'packaging'
+]]></steps>
+</testcase>
diff --git a/cases/import/gbs_im_from_spec_case.case b/cases/import/gbs_im_from_spec_case.case
new file mode 100644 (file)
index 0000000..54c2385
--- /dev/null
@@ -0,0 +1,58 @@
+<testcase>
+  <summary>gbs import package from specfile</summary>
+  <fixtures>
+    <copy src="tools/create_proj" />
+    <copy src="specs/sw-tools.spec" />
+  </fixtures>
+  <steps><![CDATA[
+./create_proj sw-tools.spec
+
+cd sw-tools
+
+gbs export --source-rpm
+
+cp ` find packaging/ -name '*.src.rpm'` ../
+
+cd ../
+
+rm sw-tools -rf
+
+gbs import sw-tools-0.1-1.src.rpm
+
+cd sw-tools
+
+echo "generate a patch" >hello
+
+git add hello
+
+git commit -m "hello"
+
+gbs export
+
+#generate a package with patch
+mv packaging/sw-tools-0.1-1 ../
+
+cd ..
+
+rm -rf sw-tools-0.1-1.src.rpm
+
+rm -rf sw-tools
+
+#import from a spec file
+gbs import sw-tools-0.1-1/sw-tools.spec 2>&1 | tee log
+
+cd sw-tools
+
+git branch | grep pristine-tar
+
+git branch | grep upstream
+
+git branch | grep master
+
+git tag | grep upstream/0.1
+
+git tag | grep packaging/0.1-1
+
+git log -1 | grep -i "Autoremove imported patches from packaging"
+]]></steps>
+</testcase>
diff --git a/cases/import/gbs_im_help01.case b/cases/import/gbs_im_help01.case
new file mode 100644 (file)
index 0000000..0b0451d
--- /dev/null
@@ -0,0 +1,8 @@
+<testcase>
+  <summary>gbs import help</summary>
+  <steps><![CDATA[
+gbs import -h|tee log
+
+grep -i 'Usage' log
+]]></steps>
+</testcase>
diff --git a/cases/import/gbs_im_help02.case b/cases/import/gbs_im_help02.case
new file mode 100644 (file)
index 0000000..57caf58
--- /dev/null
@@ -0,0 +1,8 @@
+<testcase>
+  <summary>gbs import help</summary>
+  <steps><![CDATA[
+gbs import --help|tee log
+
+grep -i 'Usage' log
+]]></steps>
+</testcase>
\ No newline at end of file
diff --git a/cases/import/gbs_im_httppatch_fmt.case b/cases/import/gbs_im_httppatch_fmt.case
new file mode 100644 (file)
index 0000000..09d30ca
--- /dev/null
@@ -0,0 +1,51 @@
+<testcase>
+  <summary>patch has url in spec file</summary>
+  <tracking>
+    <ticket>641</ticket>
+    <ticket>1000</ticket>
+  </tracking>
+  <fixtures>
+    <copy src="tools/create_proj" />
+    <copy src="specs/fake.spec" />
+  </fixtures>
+  <steps><![CDATA[
+./create_proj fake.spec
+
+cd fake
+
+gbs export --source-rpm
+
+cp ` find packaging/ -name '*.src.rpm'` ../
+
+cd ../
+
+rm fake -rf
+
+gbs import fake-1.0-1.src.rpm
+
+cd fake
+
+echo "generate a patch" >hello
+
+git add hello
+
+git commit -m "hello"
+
+gbs export -o ../
+
+cd ../fake-1.0-1
+
+perl -i -pne 's|(Patch0:)\s+(0001-hello.patch)|\1  http://testpatch.com/path/\2|' fake.spec
+
+#import from a spec file
+gbs import fake.spec 2>&1 | tee log
+
+(! grep "IOError:.*No such file or directory.*http://testpatch.com/path/0001-hello.patch" log)
+
+cd fake
+
+git branch | grep upstream
+
+git tag | grep upstream/1.0
+]]></steps>
+</testcase>
diff --git a/cases/import/gbs_im_ifcond_do_prof.case b/cases/import/gbs_im_ifcond_do_prof.case
new file mode 100644 (file)
index 0000000..ff4ec36
--- /dev/null
@@ -0,0 +1,28 @@
+<testcase>
+  <summary>test if condition problem in spec file</summary>
+  <tracking>
+    <ticket>779</ticket>
+  </tracking>
+  <fixtures>
+    <copy src="tools/create_proj" />
+    <copy src="specs/fake.spec" />
+  </fixtures>
+  <steps><![CDATA[
+./create_proj fake.spec
+
+cd fake
+
+gbs export -o ../
+
+cd ../fake-1.0-1/
+
+#%if %do_profiling
+#echo hello
+#%endif
+perl -i -pne 's/(%setup.*)/$1\n%if %do_profiling\necho hello\n%endif\n/' fake.spec
+
+gbs import fake.spec 2>&1|tee log
+
+( ! grep 'bad %if condition' log )
+]]></steps>
+</testcase>
diff --git a/cases/import/gbs_im_ifcondition_spec.case b/cases/import/gbs_im_ifcondition_spec.case
new file mode 100644 (file)
index 0000000..c4cf60d
--- /dev/null
@@ -0,0 +1,27 @@
+<testcase>
+  <summary>test if condition problem in spec file</summary>
+  <tracking>
+    <ticket>761</ticket>
+  </tracking>
+  <fixtures>
+    <copy src="tools/create_proj" />
+    <copy src="specs/fake.spec" />
+  </fixtures>
+  <steps><![CDATA[
+./create_proj fake.spec
+
+cd fake
+
+gbs export -o ../
+
+cd ../fake-1.0-1/
+
+perl -i -pne 's/(Name:.*)/%define condition %{expand:1}\n$1/' fake.spec
+
+perl -i -pne 's/(%setup.*)/$1\n%if %condition\necho hello\n%endif\n/' fake.spec
+
+gbs import fake.spec 2>&1|tee log
+
+( ! grep 'bad %if condition' log )
+]]></steps>
+</testcase>
diff --git a/cases/import/gbs_im_lua_spec.case b/cases/import/gbs_im_lua_spec.case
new file mode 100644 (file)
index 0000000..3e93ef6
--- /dev/null
@@ -0,0 +1,26 @@
+<testcase>
+  <summary>test lua script in spec file</summary>
+  <tracking>
+    <ticket>761</ticket>
+  </tracking>
+  <fixtures>
+    <copy src="tools/create_proj" />
+    <copy src="specs/fake.spec" />
+  </fixtures>
+  <steps><![CDATA[
+./create_proj fake.spec
+
+cd fake
+
+gbs export -o ../
+
+cd ../fake-1.0-1/
+
+perl -i -pne 's/(%files)/\n%post -p <lua>\n$1/' fake.spec
+
+#support lua script
+gbs import fake.spec 2>&1|tee log
+
+( ! grep 'unsupported internal script: <lua>' log )
+]]></steps>
+</testcase>
diff --git a/cases/import/gbs_im_merge.case b/cases/import/gbs_im_merge.case
new file mode 100644 (file)
index 0000000..a45e641
--- /dev/null
@@ -0,0 +1,57 @@
+<testcase>
+  <summary>excute gbs import with --merge</summary>
+  <qa>
+    <prompt>What is the upstream version?</prompt>
+    <answer></answer>
+  </qa>
+  <fixtures>
+    <copy src="tools/create_proj" />
+    <copy src="specs/sw-tools.spec" />
+  </fixtures>
+  <steps><![CDATA[
+./create_proj sw-tools.spec
+
+cd sw-tools
+
+sed -i 's/^Version:.*$/Version:0.1/' packaging/sw-tools.spec
+
+git commit -a -m 'update to 0.1'
+
+gbs export --source-rpm
+
+cp `find packaging/ -name '*.src.rpm'` ../
+
+rm -rf `find packaging/ -type d -name 'sw-tools*'`
+
+sed -i 's/^Version:.*$/Version:0.2/' packaging/sw-tools.spec
+
+sed -i 's/^Source0:.*$/Source0:        %{name}-%{version}.tar.bz2/' packaging/sw-tools.spec
+
+git commit -a -m 'upgrade to gbs 0.2 and tar.bz2 fmt'
+
+gbs export
+
+cp `find packaging/ -name '*.tar.bz2'` ../
+
+cd ../
+
+rm sw-tools -rf
+
+gbs import sw-tools-0.1-1.src.rpm
+
+cd sw-tools
+
+gbs import ../sw-tools-0.2.tar.bz2 --merge
+
+git tag | grep upstream/0.2
+
+git checkout pristine-tar
+
+ls sw-tools-0.2.tar.bz2.delta
+
+git log upstream | grep "Imported Upstream version 0.2"
+
+#check merged info
+git log master | grep "Merge .* 'upstream/0.2'"
+]]></steps>
+</testcase>
diff --git a/cases/import/gbs_im_multispec.case b/cases/import/gbs_im_multispec.case
new file mode 100644 (file)
index 0000000..daf435f
--- /dev/null
@@ -0,0 +1,41 @@
+<testcase>
+  <summary>there are multi-specs in rpm package</summary>
+  <tracking>
+    <ticket>649</ticket>
+  </tracking>
+  <fixtures>
+    <copy src="tools/create_proj" />
+    <copy src="specs/fake.spec" />
+  </fixtures>
+  <steps><![CDATA[
+./create_proj fake.spec
+
+cd fake
+
+cp packaging/fake.spec packaging/fake-dev.spec
+
+git add packaging/fake-dev.spec
+
+perl -i -pne 's/(Source0.*)/\1\nSource1:    fake-dev.spec/' packaging/fake.spec
+
+git commit -a -m 'add fake-dev.spec'
+
+gbs export --source-rpm
+
+cp `find packaging/ -name "*.src.rpm"` ../
+
+cd ../
+
+rm fake -rf
+
+gbs import fake-1.0-1.src.rpm 2>&1| tee log
+
+(! grep -i "Multiple spec files found, don't know which to use" log)
+
+cd fake
+
+git branch | grep upstream
+
+git tag | grep upstream/1.0
+]]></steps>
+</testcase>
diff --git a/cases/import/gbs_im_native.case b/cases/import/gbs_im_native.case
new file mode 100644 (file)
index 0000000..1a3e367
--- /dev/null
@@ -0,0 +1,33 @@
+<testcase>
+  <summary>import with --native</summary>
+  <tracking>
+    <ticket>594</ticket>
+  </tracking>
+  <fixtures>
+    <copy src="tools/create_proj" />
+    <copy src="specs/fake.spec" />
+  </fixtures>
+  <steps><![CDATA[
+./create_proj fake.spec
+
+cd fake
+
+gbs export --source-rpm
+
+cp `find packaging/ -name '*.src.rpm'` ../
+
+cd ..
+
+rm -rf fake
+
+gbs im fake-1.0-1.src.rpm --native
+
+cd fake
+
+#no other branch
+test -z $(git branch | grep -v master)
+
+#no other tag
+test -z $(git tag | grep -v packaging/1.0-1)
+]]></steps>
+</testcase>
diff --git a/cases/import/gbs_im_negative_untracked.case b/cases/import/gbs_im_negative_untracked.case
new file mode 100644 (file)
index 0000000..68145bc
--- /dev/null
@@ -0,0 +1,35 @@
+<testcase>
+  <summary>excute gbs import with untracked file</summary>
+  <fixtures>
+    <copy src="tools/create_proj" />
+    <copy src="specs/json-c.spec" />
+    <copy src="conf/base.cfg" />
+  </fixtures>
+  <steps><![CDATA[
+./create_proj json-c.spec
+
+cd json-c
+
+sed -i 's/lzma$/gz/' packaging/json-c.spec
+
+git commit -a -m 'update to tar.gz'
+
+gbs export --source-rpm
+
+cp `find packaging/ -name '*.src.rpm'` ../
+
+cd ..
+
+rm -rf json-c
+
+gbs -c base.cfg import json-c-0.9-1.src.rpm
+
+cd json-c
+
+touch untracked.txt
+
+(! gbs -c ../base.cfg import ../json-c-0.9-1.src.rpm 2>&1 | tee log)
+
+grep 'Repository has uncommitted changes, commit these first' log
+]]></steps>
+</testcase>
diff --git a/cases/import/gbs_im_none_exists_tarball.case b/cases/import/gbs_im_none_exists_tarball.case
new file mode 100644 (file)
index 0000000..ef743d4
--- /dev/null
@@ -0,0 +1,17 @@
+<testcase>
+  <summary>Import none exists tarball</summary>
+  <tracking>
+    <change>6100</change>
+  </tracking>
+  <steps><![CDATA[
+mkdir test
+
+cd test
+
+git init
+
+( ! gbs import ../none-exists-0.1.tar.bz2 2>&1 | tee ../log )
+
+grep -r "UpstreamSource: unable to find" ../log
+]]></steps>
+</testcase>
\ No newline at end of file
diff --git a/cases/import/gbs_im_nopatch.case b/cases/import/gbs_im_nopatch.case
new file mode 100644 (file)
index 0000000..f2eb014
--- /dev/null
@@ -0,0 +1,58 @@
+<testcase>
+  <summary>gbs import with no patch import</summary>
+  <tracking>
+    <ticket>594</ticket>
+    <ticket>1000</ticket>
+  </tracking>
+  <fixtures>
+    <copy src="tools/create_proj" />
+    <copy src="specs/fake.spec" />
+  </fixtures>
+  <steps><![CDATA[
+./create_proj fake.spec
+
+cd fake
+
+gbs export --source-rpm
+
+cp ` find packaging/ -name '*.src.rpm'` ../
+
+cd ../
+
+rm fake -rf
+
+gbs import fake-1.0-1.src.rpm
+
+cd fake
+
+echo "generate a patch" >hello
+
+git add hello
+
+git commit -m "hello"
+
+gbs export -o ../
+
+cd ../fake-1.0-1
+
+gbs import fake.spec
+
+#patch has been apllied
+[ -f fake/hello ]
+
+[ ! -f fake/packaging/0001-hello.patch ]
+
+test -z $(grep '0001-hello.patch' fake/packaging/fake.spec)
+
+rm -rf fake
+
+gbs import fake.spec --no-patch-import
+
+#patch don't be applied
+[ ! -f fake/hello ]
+
+[ -f fake/packaging/0001-hello.patch ]
+
+grep '0001-hello.patch' fake/packaging/fake.spec
+]]></steps>
+</testcase>
diff --git a/cases/import/gbs_im_not_git.case b/cases/import/gbs_im_not_git.case
new file mode 100644 (file)
index 0000000..7e29f02
--- /dev/null
@@ -0,0 +1,25 @@
+<testcase>
+  <summary>run gbs import in none git repo dir</summary>
+  <fixtures>
+    <copy src="tools/create_proj" />
+    <copy src="specs/sw-tools.spec" />
+    <copy src="conf/base.cfg" />
+  </fixtures>
+  <steps><![CDATA[
+./create_proj sw-tools.spec
+
+cd sw-tools
+
+gbs export
+
+cp `find packaging/ -name '*.tar.bz2'` ../
+
+cd ..
+
+rm -rf sw-tools
+
+(! gbs -c base.cfg import sw-tools-0.1.tar.bz2 2>&1 | tee log)
+
+grep 'is not a git repository' log
+]]></steps>
+</testcase>
diff --git a/cases/import/gbs_im_pristine-tar.case b/cases/import/gbs_im_pristine-tar.case
new file mode 100644 (file)
index 0000000..0a01a50
--- /dev/null
@@ -0,0 +1,56 @@
+<testcase>
+  <summary>gbs import/export pristine-tar case</summary>
+  <qa>
+    <prompt>What will be the source package name?</prompt>
+    <answer></answer>
+    <prompt>What is the upstream version?</prompt>
+    <answer></answer>
+  </qa>
+  <fixtures>
+    <copy src="tools/create_proj" />
+    <copy src="specs/sw-tools.spec" />
+  </fixtures>
+  <steps><![CDATA[
+./create_proj sw-tools.spec
+
+cd sw-tools
+
+sed -i 's/^Version:.*$/Version:0.1/' packaging/sw-tools.spec
+
+git commit -a -m 'update to 0.1'
+
+gbs export --source-rpm
+
+cp `find packaging/ -name '*.src.rpm'` ../
+
+rm -rf `find packaging/ -type d -name 'sw-tools*'`
+
+sed -i 's/^Version:.*$/Version:0.2/' packaging/sw-tools.spec
+
+git commit -a -m 'upgrade to gbs 0.2'
+
+gbs export
+
+cp `find packaging/ -name '*.tar.bz2'` ../
+
+cd ../
+
+rm sw-tools -rf
+
+gbs import sw-tools-0.1-1.src.rpm
+
+cd sw-tools
+
+git branch | grep pristine-tar
+
+git branch | grep upstream
+
+git tag | grep upstream/0.1
+
+gbs import ../sw-tools-0.2.tar.bz2
+
+git tag | grep upstream/0.2
+
+gbs export 2>&1 |grep 'pristine-tar: successfully generated'
+]]></steps>
+</testcase>
diff --git a/cases/import/gbs_im_rpm_name_version_policy.case b/cases/import/gbs_im_rpm_name_version_policy.case
new file mode 100644 (file)
index 0000000..265f277
--- /dev/null
@@ -0,0 +1,41 @@
+<testcase>
+  <summary>put '-' at the end of re string</summary>
+  <tracking>
+    <change>4735</change>
+  </tracking>
+  <qa>
+    <prompt>What will be the source package name?</prompt>
+    <answer>s._+%{}-</answer>
+    <prompt>What is the upstream version?</prompt>
+    <answer>2._+%{}~</answer>
+  </qa>
+  <fixtures>
+    <copy src="tools/create_proj" />
+    <copy src="specs/fake.spec" />
+  </fixtures>
+  <steps><![CDATA[
+./create_proj fake.spec
+
+cd fake
+
+gbs export  -o ../
+
+mkdir ../test
+
+cd ../test
+
+git init
+
+#After 'gbs import',input validity of package name and version as "__QA__" above follow the rpm.policy
+
+gbs import ../fake-1.0-1/fake-1.0.tbz2
+
+#The '~' has been changed to '_' automatically
+
+git tag | grep upstream/2._+%{}_
+
+git checkout pristine-tar
+
+ls fake-1.0.tbz2.delta
+]]></steps>
+</testcase>
diff --git a/cases/import/gbs_im_rpm_no-pristine-tar_zip.case b/cases/import/gbs_im_rpm_no-pristine-tar_zip.case
new file mode 100644 (file)
index 0000000..feb249c
--- /dev/null
@@ -0,0 +1,50 @@
+<testcase>
+  <summary>gbs import no-pristine-tar (zip fmt) case</summary>
+  <qa>
+    <prompt>What will be the source package name?</prompt>
+    <answer></answer>
+    <prompt>What is the upstream version?</prompt>
+    <answer></answer>
+  </qa>
+  <fixtures>
+    <copy src="tools/create_proj" />
+    <copy src="specs/sw-tools.spec" />
+  </fixtures>
+  <steps><![CDATA[
+./create_proj sw-tools.spec
+
+cd sw-tools
+
+#modify tar ball format to zip
+sed -i 's/^Source0:.*$/Source0:        %{name}-%{version}.zip/' packaging/sw-tools.spec
+
+git commit -a -m 'update tar ball fmt to zip'
+
+gbs export --source-rpm
+
+#generate src.rpm package
+cp `find packaging/ -name '*.src.rpm'` ../
+
+cd ../
+
+rm sw-tools -rf
+
+gbs import sw-tools-0.1-1.src.rpm 2>&1 | tee log
+
+#unsupport zip fmt, but still can import with a warning
+grep -i 'Ignoring pristine-tar, zip archives not supported' log
+
+rm -rf sw-tools
+
+#only use --no-pristine-tar
+gbs import sw-tools-0.1-1.src.rpm --no-pristine-tar
+
+cd sw-tools
+
+git branch | grep upstream
+
+(! git branch | grep pristine-tar)
+
+git tag | grep upstream/0.1
+]]></steps>
+</testcase>
diff --git a/cases/import/gbs_im_rpm_pristine-tar_tar.case b/cases/import/gbs_im_rpm_pristine-tar_tar.case
new file mode 100644 (file)
index 0000000..325c510
--- /dev/null
@@ -0,0 +1,47 @@
+<testcase>
+  <summary>gbs import pristine-tar (tar fmt) case</summary>
+  <qa>
+    <prompt>What will be the source package name?</prompt>
+    <answer></answer>
+    <prompt>What is the upstream version?</prompt>
+    <answer></answer>
+  </qa>
+  <fixtures>
+    <copy src="tools/create_proj" />
+    <copy src="specs/sw-tools.spec" />
+  </fixtures>
+  <steps><![CDATA[
+./create_proj sw-tools.spec
+
+cd sw-tools
+
+#modify tar ball format to tar
+sed -i 's/^Source0:.*$/Source0:        %{name}-%{version}.tar/' packaging/sw-tools.spec
+
+git commit -a -m 'update tar ball fmt to tar'
+
+gbs export --source-rpm
+
+#generate src.rpm package
+cp `find packaging/ -name '*.src.rpm'` ../
+
+cd ../
+
+rm sw-tools -rf
+
+gbs import sw-tools-0.1-1.src.rpm
+
+cd sw-tools
+
+git branch | grep pristine-tar
+
+git branch | grep upstream
+
+git tag | grep upstream/0.1
+
+git checkout pristine-tar
+
+#generate pristine-tar on pristine-tar branch
+ls 'sw-tools-0.1.tar.delta'
+]]></steps>
+</testcase>
diff --git a/cases/import/gbs_im_rpm_pristine-tar_tar_bz2.case b/cases/import/gbs_im_rpm_pristine-tar_tar_bz2.case
new file mode 100644 (file)
index 0000000..bb1eff8
--- /dev/null
@@ -0,0 +1,47 @@
+<testcase>
+  <summary>gbs import pristine-tar (tar.bz2 fmt) case</summary>
+  <qa>
+    <prompt>What will be the source package name?</prompt>
+    <answer></answer>
+    <prompt>What is the upstream version?</prompt>
+    <answer></answer>
+  </qa>
+  <fixtures>
+    <copy src="tools/create_proj" />
+    <copy src="specs/sw-tools.spec" />
+  </fixtures>
+  <steps><![CDATA[
+./create_proj sw-tools.spec
+
+cd sw-tools
+
+#modify tar ball format to tar
+sed -i 's/^Source0:.*$/Source0:        %{name}-%{version}.tar.bz2/' packaging/sw-tools.spec
+
+git commit -a -m 'update tar ball fmt to tar.bz2'
+
+gbs export --source-rpm
+
+#generate src.rpm package
+cp ` find packaging/ -name '*.src.rpm'` ../
+
+cd ../
+
+rm sw-tools -rf
+
+gbs import sw-tools-0.1-1.src.rpm
+
+cd sw-tools
+
+git branch | grep pristine-tar
+
+git branch | grep upstream
+
+git tag | grep upstream/0.1
+
+git checkout pristine-tar
+
+#generate pristine-tar on pristine-tar branch
+ls 'sw-tools-0.1.tar.bz2.delta'
+]]></steps>
+</testcase>
diff --git a/cases/import/gbs_im_rpm_pristine-tar_tar_gz.case b/cases/import/gbs_im_rpm_pristine-tar_tar_gz.case
new file mode 100644 (file)
index 0000000..40ff220
--- /dev/null
@@ -0,0 +1,47 @@
+<testcase>
+  <summary>gbs import pristine-tar (tar.gz fmt) case</summary>
+  <qa>
+    <prompt>What will be the source package name?</prompt>
+    <answer></answer>
+    <prompt>What is the upstream version?</prompt>
+    <answer></answer>
+  </qa>
+  <fixtures>
+    <copy src="tools/create_proj" />
+    <copy src="specs/sw-tools.spec" />
+  </fixtures>
+  <steps><![CDATA[
+./create_proj sw-tools.spec
+
+cd sw-tools
+
+#modify tar ball format to tar.gz
+sed -i 's/^Source0:.*$/Source0:        %{name}-%{version}.tar.gz/' packaging/sw-tools.spec
+
+git commit -a -m 'update tar ball fmt to tar.gz'
+
+gbs export --source-rpm
+
+#generate src.rpm package
+cp ` find packaging/ -name '*.src.rpm'` ../
+
+cd ../
+
+rm sw-tools -rf
+
+gbs import sw-tools-0.1-1.src.rpm
+
+cd sw-tools
+
+git branch | grep pristine-tar
+
+git branch | grep upstream
+
+git tag | grep upstream/0.1
+
+git checkout pristine-tar
+
+#generate pristine-tar on pristine-tar branch
+ls 'sw-tools-0.1.tar.gz.delta'
+]]></steps>
+</testcase>
diff --git a/cases/import/gbs_im_rpm_pristine-tar_tar_xz.case b/cases/import/gbs_im_rpm_pristine-tar_tar_xz.case
new file mode 100644 (file)
index 0000000..4e6a0da
--- /dev/null
@@ -0,0 +1,47 @@
+<testcase>
+  <summary>gbs import pristine-tar (tar.xz fmt) case</summary>
+  <qa>
+    <prompt>What will be the source package name?</prompt>
+    <answer></answer>
+    <prompt>What is the upstream version?</prompt>
+    <answer></answer>
+  </qa>
+  <fixtures>
+    <copy src="tools/create_proj" />
+    <copy src="specs/sw-tools.spec" />
+  </fixtures>
+  <steps><![CDATA[
+./create_proj sw-tools.spec
+
+cd sw-tools
+
+#modify tar ball format to tar
+sed -i 's/^Source0:.*$/Source0:        %{name}-%{version}.tar.xz/' packaging/sw-tools.spec
+
+git commit -a -m 'update tar ball fmt to tar.xz'
+
+gbs export --source-rpm
+
+#generate src.rpm package
+cp `find packaging/ -name '*.src.rpm'` ../
+
+cd ../
+
+rm sw-tools -rf
+
+gbs import sw-tools-0.1-1.src.rpm
+
+cd sw-tools
+
+git branch | grep pristine-tar
+
+git branch | grep upstream
+
+git tag | grep upstream/0.1
+
+git checkout pristine-tar
+
+#generate pristine-tar on pristine-tar branch
+ls 'sw-tools-0.1.tar.xz.delta'
+]]></steps>
+</testcase>
diff --git a/cases/import/gbs_im_sameversion.case b/cases/import/gbs_im_sameversion.case
new file mode 100644 (file)
index 0000000..0f715c9
--- /dev/null
@@ -0,0 +1,38 @@
+<testcase>
+  <summary>import the same src rpm twice</summary>
+  <tracking>
+    <ticket>594</ticket>
+  </tracking>
+  <fixtures>
+    <copy src="tools/create_proj" />
+    <copy src="specs/fake.spec" />
+  </fixtures>
+  <steps><![CDATA[
+./create_proj fake.spec
+
+cd fake
+
+gbs export --source-rpm
+
+cp `find packaging/ -name '*.src.rpm'` ../
+
+cd ..
+
+rm -rf fake
+
+gbs im fake-1.0-1.src.rpm
+
+gbs im fake-1.0-1.src.rpm 2>&1 | tee log
+
+grep "already imported" log
+
+gbs im fake-1.0-1.src.rpm --allow-same-version 2>&1 |tee log2
+
+grep -i "Moving tag of version '1.0-1' since import forced" log2
+
+cd fake
+
+#old packaging/1.0-1 change to packaging/1.0-1_xxx
+git tag | grep "packaging/1.0-1_.*"
+]]></steps>
+</testcase>
diff --git a/cases/import/gbs_im_set_useremail_case.case b/cases/import/gbs_im_set_useremail_case.case
new file mode 100644 (file)
index 0000000..2d382b6
--- /dev/null
@@ -0,0 +1,31 @@
+<testcase>
+  <summary>set author-name and author-email in import</summary>
+  <fixtures>
+    <copy src="tools/create_proj" />
+    <copy src="specs/json-c.spec" />
+    <copy src="conf/base.cfg" />
+  </fixtures>
+  <steps><![CDATA[
+./create_proj json-c.spec
+
+cd json-c
+
+sed -i 's/lzma$/gz/' packaging/json-c.spec
+
+git commit -a -m 'update to tar.gz'
+
+gbs export --source-rpm
+
+cp `find packaging/ -name '*.src.rpm'` ../
+
+cd ..
+
+rm -rf json-c
+
+gbs -c base.cfg im --author-name=test --author-email=test@intel.com json-c-0.9-1.src.rpm
+
+cd json-c
+
+git log | grep 'Author: test <test@intel.com>'
+]]></steps>
+</testcase>
diff --git a/cases/import/gbs_im_setonly_email.case b/cases/import/gbs_im_setonly_email.case
new file mode 100644 (file)
index 0000000..b7f6d82
--- /dev/null
@@ -0,0 +1,31 @@
+<testcase>
+  <summary>set author-name and author-email in import</summary>
+  <fixtures>
+    <copy src="tools/create_proj" />
+    <copy src="specs/json-c.spec" />
+    <copy src="conf/base.cfg" />
+  </fixtures>
+  <steps><![CDATA[
+./create_proj json-c.spec
+
+cd json-c
+
+sed -i 's/lzma$/gz/' packaging/json-c.spec
+
+git commit -a -m 'update to tar.gz'
+
+gbs export --source-rpm
+
+cp `find packaging/ -name '*.src.rpm'` ../
+
+cd ..
+
+rm -rf json-c
+
+gbs  -c base.cfg im  --author-email=test@intel.com  json-c-0.9-1.src.rpm
+
+cd json-c
+
+git log|grep '<test@intel.com>'
+]]></steps>
+</testcase>
diff --git a/cases/import/gbs_im_setonly_user.case b/cases/import/gbs_im_setonly_user.case
new file mode 100644 (file)
index 0000000..eff2c47
--- /dev/null
@@ -0,0 +1,31 @@
+<testcase>
+  <summary>set author-name and author-email in import</summary>
+  <fixtures>
+    <copy src="tools/create_proj" />
+    <copy src="specs/json-c.spec" />
+    <copy src="conf/base.cfg" />
+  </fixtures>
+  <steps><![CDATA[
+./create_proj json-c.spec
+
+cd json-c
+
+sed -i 's/lzma$/gz/' packaging/json-c.spec
+
+git commit -a -m 'update to tar.gz'
+
+gbs export --source-rpm
+
+cp `find packaging/ -name '*.src.rpm'` ../
+
+cd ..
+
+rm -rf json-c
+
+gbs -c base.cfg im --author-name=test json-c-0.9-1.src.rpm
+
+cd json-c
+
+git log | grep 'Author: test'
+]]></steps>
+</testcase>
diff --git a/cases/import/gbs_im_spec_negative.case b/cases/import/gbs_im_spec_negative.case
new file mode 100644 (file)
index 0000000..40006f8
--- /dev/null
@@ -0,0 +1,17 @@
+<testcase>
+  <summary>import spec file negative test</summary>
+  <tracking>
+    <ticket>7</ticket>
+  </tracking>
+  <fixtures>
+    <copy src="specs/fake.spec" />
+    <copy src="conf/base.cfg" />
+  </fixtures>
+  <steps><![CDATA[
+perl -i -pne 's/(Source0:.*)/\1\nSource1:    fake.yaml/' fake.spec
+
+(! gbs -c ./base.cfg import fake.spec 2>&1|tee log)
+
+grep -i "error: File 'fake.yaml' listed in spec not found" log
+]]></steps>
+</testcase>
diff --git a/cases/import/gbs_im_srcrpm_twice.case b/cases/import/gbs_im_srcrpm_twice.case
new file mode 100644 (file)
index 0000000..eb86835
--- /dev/null
@@ -0,0 +1,34 @@
+<testcase>
+  <summary>import the same src rpm twice</summary>
+  <tracking>
+    <ticket>76</ticket>
+  </tracking>
+  <fixtures>
+    <copy src="tools/create_proj" />
+    <copy src="specs/json-c.spec" />
+    <copy src="conf/base.cfg" />
+  </fixtures>
+  <steps><![CDATA[
+./create_proj json-c.spec
+
+cd json-c
+
+sed -i 's/lzma$/gz/' packaging/json-c.spec
+
+git commit -a -m 'update to tar.gz'
+
+gbs export --source-rpm
+
+cp `find packaging/ -name '*.src.rpm'` ../
+
+cd ..
+
+rm -rf json-c
+
+gbs -c base.cfg im json-c-0.9-1.src.rpm
+
+gbs -c base.cfg im json-c-0.9-1.src.rpm >log 2>&1
+
+grep "already imported" log
+]]></steps>
+</testcase>
diff --git a/cases/import/gbs_im_srpm_with-patches_pristine-tar.case b/cases/import/gbs_im_srpm_with-patches_pristine-tar.case
new file mode 100644 (file)
index 0000000..e51afe3
--- /dev/null
@@ -0,0 +1,67 @@
+<testcase>
+  <summary>import srcrpm with patches, which will be applied automaticlly</summary>
+  <qa>
+    <prompt>What will be the source package name?</prompt>
+    <answer></answer>
+    <prompt>What is the upstream version?</prompt>
+    <answer></answer>
+  </qa>
+  <fixtures>
+    <copy src="tools/create_proj" />
+    <copy src="specs/fake.spec" />
+  </fixtures>
+  <steps><![CDATA[
+./create_proj fake.spec
+
+cd fake
+
+sed -i 's/^Version:.*$/Version:0.1/' packaging/fake.spec
+
+git commit -a -m 'update to 0.1'
+
+gbs export --source-rpm
+
+cp `find packaging/ -name '*.src.rpm'` ../
+
+cd ../
+
+rm fake -rf
+
+# create pristine-tar based git project
+gbs import fake-0.1-1.src.rpm
+
+cd fake
+
+# Add a commit
+echo "hello world" >hello.c
+
+git add hello.c
+
+git commit -a -m "hello"
+
+# export source 
+gbs export --source-rpm
+
+# check patche and spec file has been updated correctly
+grep hello.patch packaging/fake-0.1-1/fake.spec
+
+ls packaging/fake-0.1-1/ | grep hello.patch
+
+cp `find packaging/ -name '*.src.rpm'` ../
+
+cd ../
+
+rm fake -rf
+
+gbs import fake-0.1-1.src.rpm | tee log
+
+grep "Removing imported patch files from spec and packaging dir" log
+
+cd fake
+
+# patche has been applied sucessfully
+(! grep hello.patch packaging/fake.spec)
+
+(! ls packaging | grep hello.patch)
+]]></steps>
+</testcase>
diff --git a/cases/import/gbs_im_tarball_no-pristine-tar_zip.case b/cases/import/gbs_im_tarball_no-pristine-tar_zip.case
new file mode 100644 (file)
index 0000000..76ea6b0
--- /dev/null
@@ -0,0 +1,65 @@
+<testcase>
+  <summary>gbs importno- pristine-tar (zip fmt) case</summary>
+  <qa>
+    <prompt>What will be the source package name?</prompt>
+    <answer></answer>
+    <prompt>What is the upstream version?</prompt>
+    <answer></answer>
+  </qa>
+  <fixtures>
+    <copy src="tools/create_proj" />
+    <copy src="specs/sw-tools.spec" />
+  </fixtures>
+  <steps><![CDATA[
+./create_proj sw-tools.spec
+
+cd sw-tools
+
+sed -i 's/^Version:.*$/Version:0.1/' packaging/sw-tools.spec
+
+git commit -a -m 'update to 0.1'
+
+gbs export --source-rpm
+
+cp `find packaging/ -name '*.src.rpm'` ../
+
+rm -rf `find packaging/ -type d -name 'sw-tools*'`
+
+sed -i 's/^Version:.*$/Version:0.2/' packaging/sw-tools.spec
+
+sed -i 's/^Source0:.*$/Source0:        %{name}-%{version}.zip/' packaging/sw-tools.spec
+
+git commit -a -m 'upgrade to gbs 0.2 and zip fmt'
+
+gbs export
+
+cp `find packaging/ -name '*.zip'` ../
+
+cd ../
+
+rm sw-tools -rf
+
+gbs import sw-tools-0.1-1.src.rpm
+
+cd sw-tools
+
+git branch | grep pristine-tar
+
+git branch | grep upstream
+
+git tag | grep upstream/0.1
+
+git checkout pristine-tar
+
+ls sw-tools-0.1.tar.bz2.delta
+
+gbs import ../sw-tools-0.2.zip --no-pristine-tar
+
+git tag | grep upstream/0.2
+
+git checkout pristine-tar
+
+#no pristine tar
+(! ls sw-tools-0.2.*.delta)
+]]></steps>
+</testcase>
diff --git a/cases/import/gbs_im_tarball_pristine-tar_tar.case b/cases/import/gbs_im_tarball_pristine-tar_tar.case
new file mode 100644 (file)
index 0000000..b85efc4
--- /dev/null
@@ -0,0 +1,64 @@
+<testcase>
+  <summary>gbs import pristine-tar (tar fmt) case</summary>
+  <qa>
+    <prompt>What will be the source package name?</prompt>
+    <answer></answer>
+    <prompt>What is the upstream version?</prompt>
+    <answer></answer>
+  </qa>
+  <fixtures>
+    <copy src="tools/create_proj" />
+    <copy src="specs/sw-tools.spec" />
+  </fixtures>
+  <steps><![CDATA[
+./create_proj sw-tools.spec
+
+cd sw-tools
+
+sed -i 's/^Version:.*$/Version:0.1/' packaging/sw-tools.spec
+
+git commit -a -m 'update to 0.1'
+
+gbs export --source-rpm
+
+cp `find packaging/ -name '*.src.rpm'` ../
+
+rm -rf `find packaging/ -type d -name 'sw-tools*'`
+
+sed -i 's/^Version:.*$/Version:0.2/' packaging/sw-tools.spec
+
+sed -i 's/^Source0:.*$/Source0:        %{name}-%{version}.tar/' packaging/sw-tools.spec
+
+git commit -a -m 'upgrade to gbs 0.2 and tar fmt'
+
+gbs export
+
+cp `find packaging/ -name '*.tar'` ../
+
+cd ../
+
+rm sw-tools -rf
+
+gbs import sw-tools-0.1-1.src.rpm
+
+cd sw-tools
+
+git branch | grep pristine-tar
+
+git branch | grep upstream
+
+git tag | grep upstream/0.1
+
+git checkout pristine-tar
+
+ls sw-tools-0.1.tar.bz2.delta
+
+gbs import ../sw-tools-0.2.tar
+
+git tag | grep upstream/0.2
+
+git checkout pristine-tar
+
+ls sw-tools-0.2.tar.delta
+]]></steps>
+</testcase>
diff --git a/cases/import/gbs_im_tarball_pristine-tar_tar_bz2.case b/cases/import/gbs_im_tarball_pristine-tar_tar_bz2.case
new file mode 100644 (file)
index 0000000..5b86d00
--- /dev/null
@@ -0,0 +1,64 @@
+<testcase>
+  <summary>gbs import pristine-tar (tar.bz2 fmt) case</summary>
+  <qa>
+    <prompt>What will be the source package name?</prompt>
+    <answer></answer>
+    <prompt>What is the upstream version?</prompt>
+    <answer></answer>
+  </qa>
+  <fixtures>
+    <copy src="tools/create_proj" />
+    <copy src="specs/sw-tools.spec" />
+  </fixtures>
+  <steps><![CDATA[
+./create_proj sw-tools.spec
+
+cd sw-tools
+
+sed -i 's/^Version:.*$/Version:0.1/' packaging/sw-tools.spec
+
+git commit -a -m 'update to 0.1'
+
+gbs export --source-rpm
+
+cp `find packaging/ -name '*.src.rpm'` ../
+
+rm -rf `find packaging/ -type d -name 'sw-tools*'`
+
+sed -i 's/^Version:.*$/Version:0.2/' packaging/sw-tools.spec
+
+sed -i 's/^Source0:.*$/Source0:        %{name}-%{version}.tar.bz2/' packaging/sw-tools.spec
+
+git commit -a -m 'upgrade to gbs 0.2 and tar.bz2 fmt'
+
+gbs export
+
+cp `find packaging/ -name '*.tar.bz2'` ../
+
+cd ../
+
+rm sw-tools -rf
+
+gbs import sw-tools-0.1-1.src.rpm
+
+cd sw-tools
+
+git branch | grep pristine-tar
+
+git branch | grep upstream
+
+git tag | grep upstream/0.1
+
+git checkout pristine-tar
+
+ls sw-tools-0.1.tar.bz2.delta
+
+gbs import ../sw-tools-0.2.tar.bz2
+
+git tag | grep upstream/0.2
+
+git checkout pristine-tar
+
+ls sw-tools-0.2.tar.bz2.delta
+]]></steps>
+</testcase>
diff --git a/cases/import/gbs_im_tarball_pristine-tar_tar_gz.case b/cases/import/gbs_im_tarball_pristine-tar_tar_gz.case
new file mode 100644 (file)
index 0000000..e112231
--- /dev/null
@@ -0,0 +1,64 @@
+<testcase>
+  <summary>gbs import pristine-tar (tar.gz fmt) case</summary>
+  <qa>
+    <prompt>What will be the source package name?</prompt>
+    <answer></answer>
+    <prompt>What is the upstream version?</prompt>
+    <answer></answer>
+  </qa>
+  <fixtures>
+    <copy src="tools/create_proj" />
+    <copy src="specs/sw-tools.spec" />
+  </fixtures>
+  <steps><![CDATA[
+./create_proj sw-tools.spec
+
+cd sw-tools
+
+sed -i 's/^Version:.*$/Version:0.1/' packaging/sw-tools.spec
+
+git commit -a -m 'update to 0.1'
+
+gbs export --source-rpm
+
+cp `find packaging/ -name '*.src.rpm'` ../
+
+rm -rf `find packaging/ -type d -name 'sw-tools*'`
+
+sed -i 's/^Version:.*$/Version:0.2/' packaging/sw-tools.spec
+
+sed -i 's/^Source0:.*$/Source0:        %{name}-%{version}.tar.gz/' packaging/sw-tools.spec
+
+git commit -a -m 'upgrade to gbs 0.2 and tar.gz fmt'
+
+gbs export
+
+cp `find packaging/ -name '*.tar.gz'` ../
+
+cd ../
+
+rm sw-tools -rf
+
+gbs import sw-tools-0.1-1.src.rpm
+
+cd sw-tools
+
+git branch | grep pristine-tar
+
+git branch | grep upstream
+
+git tag | grep upstream/0.1
+
+git checkout pristine-tar
+
+ls sw-tools-0.1.tar.bz2.delta
+
+gbs import ../sw-tools-0.2.tar.gz
+
+git tag | grep upstream/0.2
+
+git checkout pristine-tar
+
+ls sw-tools-0.2.tar.gz.delta
+]]></steps>
+</testcase>
diff --git a/cases/import/gbs_im_tarball_pristine-tar_tar_xz.case b/cases/import/gbs_im_tarball_pristine-tar_tar_xz.case
new file mode 100644 (file)
index 0000000..11310b4
--- /dev/null
@@ -0,0 +1,64 @@
+<testcase>
+  <summary>gbs import pristine-tar (tar.xz fmt) case</summary>
+  <qa>
+    <prompt>What will be the source package name?</prompt>
+    <answer></answer>
+    <prompt>What is the upstream version?</prompt>
+    <answer></answer>
+  </qa>
+  <fixtures>
+    <copy src="tools/create_proj" />
+    <copy src="specs/sw-tools.spec" />
+  </fixtures>
+  <steps><![CDATA[
+./create_proj sw-tools.spec
+
+cd sw-tools
+
+sed -i 's/^Version:.*$/Version:0.1/' packaging/sw-tools.spec
+
+git commit -a -m 'update to 0.1'
+
+gbs export --source-rpm
+
+cp `find packaging/ -name '*.src.rpm'` ../
+
+rm -rf `find packaging/ -type d -name 'sw-tools*'`
+
+sed -i 's/^Version:.*$/Version:0.2/' packaging/sw-tools.spec
+
+sed -i 's/^Source0:.*$/Source0:        %{name}-%{version}.tar.xz/' packaging/sw-tools.spec
+
+git commit -a -m 'upgrade to gbs 0.2 and tar.xz fmt'
+
+gbs export
+
+cp `find packaging/ -name '*.tar.xz'` ../
+
+cd ../
+
+rm sw-tools -rf
+
+gbs import sw-tools-0.1-1.src.rpm
+
+cd sw-tools
+
+git branch | grep pristine-tar
+
+git branch | grep upstream
+
+git tag | grep upstream/0.1
+
+git checkout pristine-tar
+
+ls sw-tools-0.1.tar.bz2.delta
+
+gbs import ../sw-tools-0.2.tar.xz
+
+git tag | grep upstream/0.2
+
+git checkout pristine-tar
+
+ls sw-tools-0.2.tar.xz.delta
+]]></steps>
+</testcase>
diff --git a/cases/import/gbs_im_tarball_pristine-tar_zip.case b/cases/import/gbs_im_tarball_pristine-tar_zip.case
new file mode 100644 (file)
index 0000000..2b4ef31
--- /dev/null
@@ -0,0 +1,68 @@
+<testcase>
+  <summary>gbs import tar ball (zip fmt) case</summary>
+  <tracking>
+    <change>4662</change>
+  </tracking>
+  <qa>
+    <prompt>What will be the source package name?</prompt>
+    <answer></answer>
+    <prompt>What is the upstream version?</prompt>
+    <answer></answer>
+  </qa>
+  <fixtures>
+    <copy src="tools/create_proj" />
+    <copy src="specs/sw-tools.spec" />
+  </fixtures>
+  <steps><![CDATA[
+./create_proj sw-tools.spec
+
+cd sw-tools
+
+sed -i 's/^Version:.*$/Version:0.1/' packaging/sw-tools.spec
+
+git commit -a -m 'update to 0.1'
+
+gbs export --source-rpm
+
+cp `find packaging/ -name '*.src.rpm'` ../
+
+rm -rf `find packaging/ -type d -name 'sw-tools*'`
+
+sed -i 's/^Version:.*$/Version:0.2/' packaging/sw-tools.spec
+
+sed -i 's/^Source0:.*$/Source0:        %{name}-%{version}.zip/' packaging/sw-tools.spec
+
+git commit -a -m 'upgrade to gbs 0.2 and zip fmt'
+
+gbs export
+
+cp `find packaging/ -name '*.zip'` ../
+
+cd ../
+
+rm sw-tools -rf
+
+gbs import sw-tools-0.1-1.src.rpm
+
+cd sw-tools
+
+git branch | grep pristine-tar
+
+git branch | grep upstream
+
+git tag | grep upstream/0.1
+
+git checkout pristine-tar
+
+ls sw-tools-0.1.tar.bz2.delta
+
+gbs import ../sw-tools-0.2.zip
+
+git tag | grep upstream/0.2
+
+git checkout pristine-tar
+
+#generate pristine tar, change from zip
+ls sw-tools-0.2.tar.gz.delta
+]]></steps>
+</testcase>
diff --git a/cases/import/gbs_im_tarball_twice.case b/cases/import/gbs_im_tarball_twice.case
new file mode 100644 (file)
index 0000000..f98242a
--- /dev/null
@@ -0,0 +1,43 @@
+<testcase>
+  <summary>import the same tarball twice</summary>
+  <tracking>
+    <ticket>183</ticket>
+    <ticket>76</ticket>
+  </tracking>
+  <qa>
+    <prompt>What will be the source package name?</prompt>
+    <answer></answer>
+    <prompt>What is the upstream version?</prompt>
+    <answer></answer>
+  </qa>
+  <fixtures>
+    <copy src="tools/create_proj" />
+    <copy src="specs/fake.spec" />
+    <copy src="conf/base.cfg" />
+  </fixtures>
+  <steps><![CDATA[
+./create_proj fake.spec
+
+cd fake
+
+gbs export
+
+cp `find packaging/ -name '*.tbz2'` ../
+
+cd ..
+
+rm -rf fake
+
+mkdir fake
+
+cd fake
+
+git init
+
+gbs -c ../base.cfg import ../fake-1.0.tbz2
+
+(! gbs -c ../base.cfg import ../fake-1.0.tbz2 2>../log)
+
+grep "Failed to import" ../log
+]]></steps>
+</testcase>
diff --git a/cases/import/gbs_im_tarbz2_fmt.case b/cases/import/gbs_im_tarbz2_fmt.case
new file mode 100644 (file)
index 0000000..5a5b227
--- /dev/null
@@ -0,0 +1,38 @@
+<testcase>
+  <summary>excute gbs import from a tar.bz2 format tar ball</summary>
+  <qa>
+    <prompt>What will be the source package name?</prompt>
+    <answer></answer>
+    <prompt>What is the upstream version?</prompt>
+    <answer></answer>
+  </qa>
+  <fixtures>
+    <copy src="tools/create_proj" />
+    <copy src="specs/fake.spec" />
+  </fixtures>
+  <steps><![CDATA[
+./create_proj fake.spec
+
+cd fake
+
+gbs export
+
+cp `find packaging/ -name '*.tbz2'` ../
+
+cd ..
+
+rm -rf fake
+
+mkdir fake
+
+cd fake
+
+git init
+
+gbs import ../fake-1.0.tbz2 --merge
+
+git log | grep -i 'Imported Upstream version 1.0'
+
+git tag | grep 'upstream/1.0'
+]]></steps>
+</testcase>
diff --git a/cases/import/gbs_im_targz_fmt.case b/cases/import/gbs_im_targz_fmt.case
new file mode 100644 (file)
index 0000000..d951eb3
--- /dev/null
@@ -0,0 +1,43 @@
+<testcase>
+  <summary>excute gbs import from a tar.gz format tar ball</summary>
+  <qa>
+    <prompt>What will be the source package name?</prompt>
+    <answer></answer>
+    <prompt>What is the upstream version?</prompt>
+    <answer></answer>
+  </qa>
+  <fixtures>
+    <copy src="tools/create_proj" />
+    <copy src="specs/sw-tools.spec" />
+    <copy src="conf/base.cfg" />
+  </fixtures>
+  <steps><![CDATA[
+./create_proj sw-tools.spec
+
+cd sw-tools
+
+sed -i 's/tar.bz2$/tar.gz/' packaging/sw-tools.spec
+
+git commit -a -m 'update tar.gz'
+
+gbs export
+
+cp `find packaging/ -name '*.tar.gz'` ../
+
+cd ..
+
+rm -rf sw-tools
+
+mkdir sw-tools
+
+cd sw-tools
+
+git init
+
+gbs -c ../base.cfg import ../sw-tools-0.1.tar.gz --merge
+
+git log|grep -i 'Imported Upstream version 0.1'
+
+git tag|grep 'upstream/0.1'
+]]></steps>
+</testcase>
diff --git a/cases/import/gbs_im_tarxz_fmt.case b/cases/import/gbs_im_tarxz_fmt.case
new file mode 100644 (file)
index 0000000..b55f93e
--- /dev/null
@@ -0,0 +1,43 @@
+<testcase>
+  <summary>excute gbs import from a tar.xz format tar ball</summary>
+  <qa>
+    <prompt>What will be the source package name?</prompt>
+    <answer></answer>
+    <prompt>What is the upstream version?</prompt>
+    <answer></answer>
+  </qa>
+  <fixtures>
+    <copy src="tools/create_proj" />
+    <copy src="specs/sw-tools.spec" />
+    <copy src="conf/base.cfg" />
+  </fixtures>
+  <steps><![CDATA[
+./create_proj sw-tools.spec
+
+cd sw-tools
+
+sed -i 's/tar.bz2$/tar.xz/' packaging/sw-tools.spec
+
+git commit -a -m 'update tar.xz'
+
+gbs export
+
+cp `find packaging/ -name '*.tar.xz'` ../
+
+cd ..
+
+rm -rf sw-tools
+
+mkdir sw-tools
+
+cd sw-tools
+
+git init
+
+gbs -c ../base.cfg import ../sw-tools-0.1.tar.xz --merge
+
+git log|grep -i 'Imported Upstream version 0.1'
+
+git tag|grep 'upstream/0.1'
+]]></steps>
+</testcase>
diff --git a/cases/import/gbs_im_tbz2_fmt.case b/cases/import/gbs_im_tbz2_fmt.case
new file mode 100644 (file)
index 0000000..0c971a4
--- /dev/null
@@ -0,0 +1,43 @@
+<testcase>
+  <summary>excute gbs import from a tar.bz2 format tar ball</summary>
+  <qa>
+    <prompt>What will be the source package name?</prompt>
+    <answer></answer>
+    <prompt>What is the upstream version?</prompt>
+    <answer></answer>
+  </qa>
+  <fixtures>
+    <copy src="tools/create_proj" />
+    <copy src="specs/sw-tools.spec" />
+    <copy src="conf/base.cfg" />
+  </fixtures>
+  <steps><![CDATA[
+./create_proj sw-tools.spec
+
+cd sw-tools
+
+sed -i 's/tar.bz2$/tbz2/' packaging/sw-tools.spec
+
+git commit -a -m 'update tbz2'
+
+gbs export
+
+cp `find packaging/ -name '*.tbz2'` ../
+
+cd ..
+
+rm -rf sw-tools
+
+mkdir sw-tools
+
+cd sw-tools
+
+git init
+
+gbs -c ../base.cfg import ../sw-tools-0.1.tbz2 --merge
+
+git log | grep -i 'Imported Upstream version 0.1'
+
+git tag | grep 'upstream/0.1'
+]]></steps>
+</testcase>
diff --git a/cases/import/gbs_im_tgz_fmt.case b/cases/import/gbs_im_tgz_fmt.case
new file mode 100644 (file)
index 0000000..e1976ef
--- /dev/null
@@ -0,0 +1,46 @@
+<testcase>
+  <summary>excute gbs import from a tgz format tar ball</summary>
+  <tracking>
+    <ticket>19</ticket>
+  </tracking>
+  <qa>
+    <prompt>What will be the source package name?</prompt>
+    <answer></answer>
+    <prompt>What is the upstream version?</prompt>
+    <answer></answer>
+  </qa>
+  <fixtures>
+    <copy src="tools/create_proj" />
+    <copy src="specs/sw-tools.spec" />
+    <copy src="conf/base.cfg" />
+  </fixtures>
+  <steps><![CDATA[
+./create_proj sw-tools.spec
+
+cd sw-tools
+
+sed -i 's/tar.bz2$/tgz/' packaging/sw-tools.spec
+
+git commit -a -m 'update tgz'
+
+gbs export
+
+cp `find packaging/ -name '*.tgz'` ../
+
+cd ..
+
+rm -rf sw-tools
+
+mkdir sw-tools
+
+cd sw-tools
+
+git init
+
+gbs -c ../base.cfg import ../sw-tools-0.1.tgz --merge
+
+git log | grep -i 'Imported Upstream version 0.1'
+
+git tag | grep 'upstream/0.1'
+]]></steps>
+</testcase>
diff --git a/cases/import/gbs_im_unsupported_archive_format.case b/cases/import/gbs_im_unsupported_archive_format.case
new file mode 100644 (file)
index 0000000..3786cde
--- /dev/null
@@ -0,0 +1,21 @@
+<testcase>
+  <summary>Import a tarball with unsupported archive format</summary>
+  <tracking>
+    <change>6101</change>
+  </tracking>
+  <steps><![CDATA[
+mkdir test
+
+cd test
+
+git init
+
+echo aaa > unsupport
+
+7za a unsupport.7z unsupport
+
+( ! gbs import unsupport.7z 2>&1 | tee ../log )
+
+grep -r "Unsupported archive format" ../log
+]]></steps>
+</testcase>
diff --git a/cases/import/gbs_im_upgrade_srcrpm.case b/cases/import/gbs_im_upgrade_srcrpm.case
new file mode 100644 (file)
index 0000000..ac6fbed
--- /dev/null
@@ -0,0 +1,51 @@
+<testcase>
+  <summary>import in a git tree</summary>
+  <fixtures>
+    <copy src="tools/create_proj" />
+    <copy src="specs/json-c.spec" />
+    <copy src="conf/base.cfg" />
+  </fixtures>
+  <steps><![CDATA[
+./create_proj json-c.spec
+
+
+# generate release 1
+cd json-c
+
+sed -i 's/lzma$/gz/' packaging/json-c.spec
+
+git commit -a -m 'update to tar.gz'
+
+gbs export --source-rpm
+
+cp `find packaging/ -name '*.src.rpm'` ../
+
+rm -rf json-c-0.9-1
+
+
+# generate release 2
+sed -i 's/^Release:.*$/Release: 2/' packaging/json-c.spec
+
+git commit -a -m 'release 2'
+
+gbs export --source-rpm
+
+cp `find packaging/ -name '*.src.rpm'` ../
+
+
+# start to import twice
+cd ..
+
+rm -rf json-c
+
+gbs -c base.cfg import json-c-0.9-1.src.rpm
+
+cd json-c
+
+gbs -c ../base.cfg import ../json-c-0.9-2.src.rpm
+
+git log | grep -i 'Imported Downstream release 0.9-2'
+
+git tag | grep 'packaging/0.9-2'
+]]></steps>
+</testcase>
diff --git a/cases/import/gbs_im_upstream.case b/cases/import/gbs_im_upstream.case
new file mode 100644 (file)
index 0000000..d6ce518
--- /dev/null
@@ -0,0 +1,35 @@
+<testcase>
+  <summary>gbs import specify upstream branch</summary>
+  <fixtures>
+    <copy src="tools/create_proj" />
+    <copy src="specs/json-c.spec" />
+    <copy src="conf/base.cfg" />
+  </fixtures>
+  <steps><![CDATA[
+./create_proj json-c.spec
+
+cd json-c
+
+sed -i 's/lzma$/gz/' packaging/json-c.spec
+
+git commit -a -m 'update to tar.gz'
+
+gbs export --source-rpm
+
+cp `find packaging/ -name '*.src.rpm'` ../
+
+cd ..
+
+rm -rf json-c
+
+gbs -c base.cfg import --upstream-branch=test json-c-0.9-1.src.rpm
+
+cd json-c
+
+git branch | grep 'test'
+
+git checkout test
+
+git log test | grep -i ' Imported Upstream version 0.9'
+]]></steps>
+</testcase>
diff --git a/cases/import/gbs_im_upstream_tag.case b/cases/import/gbs_im_upstream_tag.case
new file mode 100644 (file)
index 0000000..973176e
--- /dev/null
@@ -0,0 +1,34 @@
+<testcase>
+  <summary>gbs import specify --upstream-tag</summary>
+  <tracking>
+    <change>7563</change>
+  </tracking>
+  <fixtures>
+    <copy src="tools/create_proj" />
+    <copy src="specs/json-c.spec" />
+    <copy src="conf/base.cfg" />
+  </fixtures>
+  <steps><![CDATA[
+./create_proj json-c.spec
+
+cd json-c
+
+sed -i 's/lzma$/gz/' packaging/json-c.spec
+
+git commit -a -m 'update to tar.gz'
+
+gbs export --source-rpm
+
+cp `find packaging/ -name '*.src.rpm'` ../
+
+cd ..
+
+rm -rf json-c
+
+gbs -c base.cfg import --upstream-tag="v\${upstreamversion}" json-c-0.9-1.src.rpm
+
+cd json-c
+
+git tag | grep 'v0.9'
+]]></steps>
+</testcase>
diff --git a/cases/import/gbs_im_zip_fmt.case b/cases/import/gbs_im_zip_fmt.case
new file mode 100644 (file)
index 0000000..0330266
--- /dev/null
@@ -0,0 +1,43 @@
+<testcase>
+  <summary>execute gbs import from a zip format tar ball</summary>
+  <qa>
+    <prompt>What will be the source package name?</prompt>
+    <answer></answer>
+    <prompt>What is the upstream version?</prompt>
+    <answer></answer>
+  </qa>
+  <fixtures>
+    <copy src="tools/create_proj" />
+    <copy src="specs/sw-tools.spec" />
+    <copy src="conf/base.cfg" />
+  </fixtures>
+  <steps><![CDATA[
+./create_proj sw-tools.spec
+
+cd sw-tools
+
+sed -i 's/tar.bz2$/zip/' packaging/sw-tools.spec
+
+git commit -a -m 'update zip'
+
+gbs export
+
+cp `find packaging/ -name '*.zip'` ../
+
+cd ..
+
+rm -rf sw-tools
+
+mkdir sw-tools
+
+cd sw-tools
+
+git init
+
+gbs -c ../base.cfg import ../sw-tools-0.1.zip --merge
+
+git log | grep -i 'Imported Upstream version 0.1'
+
+git tag | grep 'upstream/0.1'
+]]></steps>
+</testcase>
diff --git a/cases/other/gbs_show_man_page.case b/cases/other/gbs_show_man_page.case
new file mode 100644 (file)
index 0000000..de5764c
--- /dev/null
@@ -0,0 +1,9 @@
+<testcase>
+  <summary>Show gbs man page</summary>
+  <tracking>
+    <change>8755</change>
+  </tracking>
+  <steps><![CDATA[
+man gbs >/dev/null 2>&1
+]]></steps>
+</testcase>
diff --git a/cases/other/gbs_version_check.case b/cases/other/gbs_version_check.case
new file mode 100644 (file)
index 0000000..7526e84
--- /dev/null
@@ -0,0 +1,21 @@
+<testcase>
+  <summary>GBS package version check</summary>
+  <steps><![CDATA[
+DIST=`python -c "import platform; print platform.dist()[0]"`
+
+if [ $DIST = Ubuntu ]||[ $DIST = debian ]; then
+    #   Version: 0.17~rc1 | 0.17
+    pkgversion=`dpkg -s gbs|grep ^Version|awk '{print $2}'|cut -d~ -f1`
+else
+    #   gbs-0.17-3.1.noarch
+    pkgversion=`rpm -q --qf "%{version}" gbs`
+fi
+
+#   gbs 0.17
+gbs -V
+
+gbsversion=`gbs -V 2>&1 |sed -n '1p' |cut -d' ' -f2`
+
+[ "$pkgversion" = "$gbsversion" ]
+]]></steps>
+</testcase>
diff --git a/cases/pull/test_pull_conf_upstream-branch.case b/cases/pull/test_pull_conf_upstream-branch.case
new file mode 100644 (file)
index 0000000..3e2a65b
--- /dev/null
@@ -0,0 +1,54 @@
+<testcase>
+  <summary>gbs pull and set a upstream branch in gbs conf</summary>
+  <tracking>
+    <ticket>749</ticket>
+  </tracking>
+  <fixtures>
+    <copy src="tools/create_proj" />
+    <copy src="specs/fake.spec" />
+    <content target="local/tmp.conf">
+[general]
+upstream_branch=devel
+    </content>
+  </fixtures>
+  <steps><![CDATA[
+./create_proj fake.spec --tizen
+
+pushd fake
+
+git checkout -b devel
+
+touch a.txt
+
+git add a.txt
+
+git commit -m "Add a.txt on devel branch"
+
+pushd
+
+cd local
+
+# remote branch devel as the upstream branch
+gbs clone --upstream-branch=devel ../fake
+
+cd fake
+
+git checkout devel
+
+git reset --hard HEAD~1
+
+[ ! -e a.txt ]
+
+gbs pull
+
+# cannot fetch the changes on the remote devel branch
+[ ! -e a.txt ]
+
+# specify devel as the upstream branch, then pull again
+gbs -c ../tmp.conf pull
+
+# make sure you've got the changes, a.txt exists on your devel branch
+
+[ -e a.txt ]
+]]></steps>
+</testcase>
diff --git a/cases/pull/test_pull_depth.case b/cases/pull/test_pull_depth.case
new file mode 100644 (file)
index 0000000..8d21e12
--- /dev/null
@@ -0,0 +1,40 @@
+<testcase>
+  <summary>specify git history depth, for creating shallow pulls</summary>
+  <fixtures>
+    <copy src="tools/create_proj" />
+    <copy src="specs/fake.spec" />
+  </fixtures>
+  <steps><![CDATA[
+./create_proj fake.spec --tizen
+
+pushd fake
+
+for filename in {1..3}.txt; do
+  touch $filename
+
+  git add $filename
+
+  git commit -m "Add $filename"
+done
+
+total_commits=$(git rev-list HEAD | wc -l)
+
+pushd
+
+mkdir local; cd local
+
+gbs clone ../fake
+
+cd fake
+
+git reset --hard HEAD~3
+
+if [[ $(git --version |awk '{print $3}') < 1.8.2 ]]; then
+  gbs pull --depth=3
+else
+  gbs pull --depth=4
+fi
+
+[ $(git log --format=%H | wc -l) = $total_commits ]
+]]></steps>
+</testcase>
diff --git a/cases/pull/test_pull_fast_forward.case b/cases/pull/test_pull_fast_forward.case
new file mode 100644 (file)
index 0000000..24a9885
--- /dev/null
@@ -0,0 +1,39 @@
+<testcase>
+  <summary>pull fast forward will not fail</summary>
+  <fixtures>
+    <copy src="tools/create_proj" />
+    <copy src="specs/fake.spec" />
+  </fixtures>
+  <steps><![CDATA[
+./create_proj fake.spec --tizen
+
+mkdir local; cd local
+
+gbs clone ../fake
+
+cd ../fake
+
+for filename in {1..3}.txt; do
+  touch $filename
+
+  git add $filename
+
+  git commit -m "Add $filename"
+done
+
+cd ../local/fake
+
+(! gbs pull --depth=1 2>&1 | tee ../log)
+
+grep -i "Skipping non-fast forward of .* use --force or update manually" ../log
+
+#remote have 3 commit ahead
+if [[ $(git --version |awk '{print $3}') < 1.8.2 ]]; then
+  gbs pull --depth=3 | tee ../log2
+else
+  gbs pull --depth=4 | tee ../log2
+fi
+
+grep -i "updating" ../log2
+]]></steps>
+</testcase>
diff --git a/cases/pull/test_pull_force.case b/cases/pull/test_pull_force.case
new file mode 100644 (file)
index 0000000..47de2a3
--- /dev/null
@@ -0,0 +1,44 @@
+<testcase>
+  <summary>gbs pull --force will checkout out clean copy</summary>
+  <fixtures>
+    <copy src="tools/create_proj" />
+    <copy src="specs/fake.spec" />
+  </fixtures>
+  <steps><![CDATA[
+./create_proj fake.spec --tizen
+
+mkdir local; cd local
+
+gbs clone ../fake
+
+cd ../fake
+
+touch a.txt
+
+git add a.txt
+
+git commit -m "Add a.txt in remote repo"
+
+cd ../local/fake
+
+touch b.txt
+
+git add b.txt
+
+git commit -m "Add b.txt in local repo"
+
+(! gbs pull 2>&1 | tee ../log)
+
+grep "Failed to update some of the branches" ../log
+
+[ ! -e a.txt ]
+
+[ -e b.txt ]
+
+gbs pull --force
+
+[ -e a.txt ]
+
+[ ! -e b.txt ]
+]]></steps>
+</testcase>
diff --git a/cases/pull/test_pull_help.case b/cases/pull/test_pull_help.case
new file mode 100644 (file)
index 0000000..c6620eb
--- /dev/null
@@ -0,0 +1,8 @@
+<testcase>
+  <summary>gbs pull help info check</summary>
+  <steps><![CDATA[
+gbs pull --help
+
+gbs pull -h
+]]></steps>
+</testcase>
\ No newline at end of file
diff --git a/cases/pull/test_pull_no_opts.case b/cases/pull/test_pull_no_opts.case
new file mode 100644 (file)
index 0000000..15978ba
--- /dev/null
@@ -0,0 +1,41 @@
+<testcase>
+  <summary>gbs pull without options, fetch changes from master, upstream and pristine-tar branch in a standard tizen package</summary>
+  <fixtures>
+    <copy src="tools/create_proj" />
+    <copy src="specs/fake.spec" />
+  </fixtures>
+  <steps><![CDATA[
+./create_proj fake.spec --tizen
+
+pushd fake
+
+# create a new branch
+git branch new
+
+pushd
+
+mkdir local
+
+cd local
+
+gbs clone ../fake
+
+cd fake
+
+pushd
+
+date >>README
+
+git commit -am "Change1"
+
+c1=$(git rev-parse HEAD)
+
+pushd
+
+gbs pull
+
+c2=$(git rev-parse HEAD)
+
+[ $c1 = $c2 ]
+]]></steps>
+</testcase>
diff --git a/cases/pull/test_pull_track_all_branches.case b/cases/pull/test_pull_track_all_branches.case
new file mode 100644 (file)
index 0000000..4c51dbb
--- /dev/null
@@ -0,0 +1,50 @@
+<testcase>
+  <summary>track all remote branches</summary>
+  <fixtures>
+    <copy src="tools/create_proj" />
+    <copy src="specs/fake.spec" />
+  </fixtures>
+  <steps><![CDATA[
+./create_proj fake.spec --tizen
+
+pushd fake
+
+git branch new
+
+pushd
+
+mkdir local
+
+cd local
+
+gbs clone --all ../fake
+
+cd fake
+
+pushd
+
+git checkout new
+
+date >>README
+
+git commit -am "Change1"
+
+c1=$(git rev-parse HEAD)
+
+pushd
+
+git checkout new
+
+gbs pull
+
+c2=$(git rev-parse HEAD)
+
+[ $c1 != $c2 ]
+
+gbs pull --all
+
+c2=$(git rev-parse HEAD)
+
+[ $c1 = $c2 ]
+]]></steps>
+</testcase>
diff --git a/cases/pull/test_pull_uncommit.case b/cases/pull/test_pull_uncommit.case
new file mode 100644 (file)
index 0000000..04e7f48
--- /dev/null
@@ -0,0 +1,24 @@
+<testcase>
+  <summary>gbs pull with uncommit changes</summary>
+  <fixtures>
+    <copy src="tools/create_proj" />
+    <copy src="specs/fake.spec" />
+  </fixtures>
+  <steps><![CDATA[
+./create_proj fake.spec --tizen
+
+mkdir local
+
+cd local
+
+gbs clone ../fake
+
+cd fake
+
+touch uncommit.txt
+
+(! gbs pull 2>&1 | tee ../log)
+
+grep -i "You have uncommitted changes in your source tree" ../log
+]]></steps>
+</testcase>
diff --git a/cases/pull/test_pull_upstream-branch.case b/cases/pull/test_pull_upstream-branch.case
new file mode 100644 (file)
index 0000000..ef79982
--- /dev/null
@@ -0,0 +1,47 @@
+<testcase>
+  <summary>gbs pull and set a upstream branch</summary>
+  <fixtures>
+    <copy src="tools/create_proj" />
+    <copy src="specs/fake.spec" />
+  </fixtures>
+  <steps><![CDATA[
+./create_proj fake.spec --tizen
+
+pushd fake
+
+git checkout -b devel
+
+touch a.txt
+
+git add a.txt
+
+git commit -m "Add a.txt on devel branch"
+
+pushd
+
+mkdir local; cd local
+
+# remote branch devel as the upstream branch
+gbs clone --upstream-branch=devel ../fake
+
+cd fake
+
+git checkout devel
+
+git reset --hard HEAD~1
+
+[ ! -e a.txt ]
+
+gbs pull
+
+# cannot fetch the changes on the remote devel branch
+[ ! -e a.txt ]
+
+# specify devel as the upstream branch, then pull again
+gbs pull --upstream-branch=devel
+
+# make sure you've got the changes, a.txt exists on your devel branch
+
+[ -e a.txt ]
+]]></steps>
+</testcase>
diff --git a/cases/submit/test_submit_commit.case b/cases/submit/test_submit_commit.case
new file mode 100644 (file)
index 0000000..a94584a
--- /dev/null
@@ -0,0 +1,32 @@
+<testcase>
+  <summary>test submit --commit</summary>
+  <tracking>
+    <ticket>82</ticket>
+  </tracking>
+  <fixtures>
+    <copy src="tools/create_proj" />
+    <copy src="specs/fake.spec" />
+  </fixtures>
+  <steps><![CDATA[
+./create_proj fake.spec -C fake-submit
+
+date >>fake-submit/README
+
+git --git-dir=fake-submit/.git/ commit -am "Change README for test"
+
+git clone fake-submit test-submit
+
+gbs submit -c HEAD~1 -m "test commit" test-submit |tee log
+
+# with git version 1.7.11.4, checking is simple
+# test -n "`git --git-dir=test-submit/.git/ tag -l --points-at HEAD~1`"
+
+TAG=`awk -v FS=: '/submit\/trunk/ {print $3}' log`
+
+c1=`git --git-dir=fake-submit/.git/ log $TAG -1 --pretty=format:%H`
+
+c2=`git --git-dir=test-submit/.git/ rev-parse HEAD~1`
+
+[ ${c1} == ${c2} ] && echo "GBS_TEST_PASSED"
+]]></steps>
+</testcase>
diff --git a/cases/submit/test_submit_commit_negative.case b/cases/submit/test_submit_commit_negative.case
new file mode 100644 (file)
index 0000000..5d06a08
--- /dev/null
@@ -0,0 +1,20 @@
+<testcase>
+  <version>1.0</version>
+  <summary>test submit --commit negative test</summary>
+  <tracking>
+    <ticket>82</ticket>
+  </tracking>
+  <fixtures>
+    <copy src="tools/create_proj" />
+    <copy src="specs/fake.spec" />
+  </fixtures>
+  <steps><![CDATA[
+./create_proj fake.spec -C fake-submit
+
+git clone fake-submit test-submit
+
+(! gbs submit -c xxx -m "test commit" test-submit |tee log)
+
+test -n `grep "error: revision 'xxx' not found" log`
+]]></steps>
+</testcase>
diff --git a/cases/submit/test_submit_commit_tag.case b/cases/submit/test_submit_commit_tag.case
new file mode 100644 (file)
index 0000000..0d31812
--- /dev/null
@@ -0,0 +1,37 @@
+<testcase>
+  <summary>test submit --commit a tag</summary>
+  <tracking>
+    <ticket>82</ticket>
+  </tracking>
+  <fixtures>
+    <copy src="tools/create_proj" />
+    <copy src="specs/fake.spec" />
+  </fixtures>
+  <steps><![CDATA[
+./create_proj fake.spec -C fake-submit
+
+date >>fake-submit/README
+
+git --git-dir=fake-submit/.git/ commit -am "Change README for test"
+
+git clone fake-submit test-submit
+
+cd test-submit/
+
+git tag -m "create tag" upstream/1.0 HEAD~1
+
+test -n "`git tag`"
+
+gbs submit -m "commit a tag" -c upstream/1.0 |tee log
+
+TAG=`awk -v FS=: '/submit\/trunk/ {print $3}' log`
+
+test -n $TAG
+
+c1=`git log $TAG -1 --pretty=format:%h`
+
+c2=`git log upstream/1.0 -1 --pretty=format:%h`
+
+test $c1 == $c2 && echo GBS_TEST_PASSED
+]]></steps>
+</testcase>
diff --git a/cases/submit/test_submit_empty_message.case b/cases/submit/test_submit_empty_message.case
new file mode 100644 (file)
index 0000000..cfd77c4
--- /dev/null
@@ -0,0 +1,18 @@
+<testcase>
+  <summary>run submit with empty message</summary>
+  <tracking>
+    <ticket>82</ticket>
+    <ticket>468</ticket>
+  </tracking>
+  <fixtures>
+    <copy src="tools/create_proj" />
+    <copy src="specs/fake.spec" />
+  </fixtures>
+  <steps><![CDATA[
+./create_proj fake.spec -C test-submit
+
+(! gbs submit -m "" test-submit/ 2>&1 | tee log)
+
+grep "error:.*tag message is required" log
+]]></steps>
+</testcase>
diff --git a/cases/submit/test_submit_gpg_signed_tag.case b/cases/submit/test_submit_gpg_signed_tag.case
new file mode 100644 (file)
index 0000000..a76d101
--- /dev/null
@@ -0,0 +1,17 @@
+<testcase>
+  <summary>submit -s option failed handling</summary>
+  <tracking>
+    <ticket>82</ticket>
+  </tracking>
+  <fixtures>
+    <copy src="tools/create_proj" />
+    <copy src="specs/json-c.spec" />
+  </fixtures>
+  <steps><![CDATA[
+./create_proj json-c.spec
+
+(! gbs sr -m 'test -m 1' -s json-c/ 2>&1 | tee log)
+
+grep "error:.*failed to create tag" log
+]]></steps>
+</testcase>
diff --git a/cases/submit/test_submit_in_subdir.case b/cases/submit/test_submit_in_subdir.case
new file mode 100644 (file)
index 0000000..f27d226
--- /dev/null
@@ -0,0 +1,29 @@
+<testcase>
+  <summary>test submit in subdir</summary>
+  <tracking>
+    <ticket>82</ticket>
+  </tracking>
+  <fixtures>
+    <copy src="tools/create_proj" />
+    <copy src="specs/fake.spec" />
+  </fixtures>
+  <steps><![CDATA[
+./create_proj fake.spec -C fake-submit
+
+git clone fake-submit test-submit
+
+pushd test-submit/packaging
+
+gbs submit -m 'test submit in subdir'
+
+git tag |tee log
+
+test -n "`grep "submit/trunk/" log`"
+
+pushd
+
+git --git-dir=fake-submit/.git/ tag |tee log
+
+test -n "`grep "submit/trunk/" log`" && echo GBS_TEST_PASSED
+]]></steps>
+</testcase>
diff --git a/cases/submit/test_submit_long_message.case b/cases/submit/test_submit_long_message.case
new file mode 100644 (file)
index 0000000..ac13b11
--- /dev/null
@@ -0,0 +1,37 @@
+<testcase>
+  <summary>launch editor for long submit request message</summary>
+  <tracking>
+    <ticket>82</ticket>
+    <ticket>553</ticket>
+  </tracking>
+  <fixtures>
+    <copy src="tools/create_proj" />
+    <copy src="specs/fake.spec" />
+    <copy src="conf/submit.cfg" />
+  </fixtures>
+  <steps><![CDATA[
+./create_proj -f fake.spec
+
+rm -rf test-submit
+
+git clone fake test-submit
+
+cd test-submit
+
+echo hello >msg
+
+echo '#comment' >>msg
+
+echo world >>msg
+
+gbs -c ../submit.cfg submit <msg
+
+git tag -n3 |tee log
+
+grep hello log
+
+grep world log
+
+(! grep '#comment' log)
+]]></steps>
+</testcase>
diff --git a/cases/submit/test_submit_message.case b/cases/submit/test_submit_message.case
new file mode 100644 (file)
index 0000000..fb8c4c9
--- /dev/null
@@ -0,0 +1,29 @@
+<testcase>
+  <summary>test submit -m option</summary>
+  <tracking>
+    <ticket>82</ticket>
+  </tracking>
+  <fixtures>
+    <copy src="tools/create_proj" />
+    <copy src="specs/fake.spec" />
+  </fixtures>
+  <steps><![CDATA[
+./create_proj fake.spec -C fake-submit
+
+git clone fake-submit test-submit
+
+gbs sr -m 'test -m XXXXX' test-submit
+
+git --git-dir=test-submit/.git/ tag -n |tee log
+
+test -n "`grep XXXXX log`"
+
+git --git-dir=test-submit/.git/ tag |tee log
+
+test -n "`grep "submit/trunk/" log`"
+
+git --git-dir=fake-submit/.git/ tag |tee log
+
+test -n "`grep "submit/trunk/" log`" && echo GBS_TEST_PASSED
+]]></steps>
+</testcase>
diff --git a/cases/submit/test_submit_on_no_branch.case b/cases/submit/test_submit_on_no_branch.case
new file mode 100644 (file)
index 0000000..6efa1c2
--- /dev/null
@@ -0,0 +1,25 @@
+<testcase>
+  <summary>submit not on a branch</summary>
+  <tracking>
+    <ticket>82</ticket>
+  </tracking>
+  <fixtures>
+    <copy src="tools/create_proj" />
+    <copy src="specs/fake.spec" />
+  </fixtures>
+  <steps><![CDATA[
+./create_proj fake.spec -C fake-submit
+
+git clone fake-submit test-submit
+
+pushd test-submit
+
+git checkout HEAD~0
+
+git branch
+
+(! gbs submit -m 'test not on a branch' 2>&1 | tee log)
+
+test -n "`grep "error:.*Currently not on a branch" log`"
+]]></steps>
+</testcase>
diff --git a/cases/submit/test_submit_outside_gitdir.case b/cases/submit/test_submit_outside_gitdir.case
new file mode 100644 (file)
index 0000000..635fdcd
--- /dev/null
@@ -0,0 +1,25 @@
+<testcase>
+  <summary>test submit -m option</summary>
+  <tracking>
+    <ticket>82</ticket>
+  </tracking>
+  <fixtures>
+    <copy src="tools/create_proj" />
+    <copy src="specs/fake.spec" />
+  </fixtures>
+  <steps><![CDATA[
+./create_proj fake.spec -C fake-submit
+
+git clone fake-submit test-submit
+
+gbs sr -m 'test -m 1' test-submit
+
+git --git-dir=test-submit/.git/ tag |tee log
+
+test -n "`grep "submit/trunk/" log`"
+
+git --git-dir=fake-submit/.git/ tag |tee log
+
+test -n "`grep "submit/trunk/" log`" && echo GBS_TEST_PASSED
+]]></steps>
+</testcase>
diff --git a/cases/submit/test_submit_remote.case b/cases/submit/test_submit_remote.case
new file mode 100644 (file)
index 0000000..1e95acf
--- /dev/null
@@ -0,0 +1,35 @@
+<testcase>
+  <summary>test submit -r option</summary>
+  <tracking>
+    <ticket>82</ticket>
+  </tracking>
+  <fixtures>
+    <copy src="tools/create_proj" />
+    <copy src="specs/fake.spec" />
+  </fixtures>
+  <steps><![CDATA[
+./create_proj fake.spec -C fake-submit
+
+git clone fake-submit test-submit
+
+git clone fake-submit fake-remote
+
+pushd test-submit
+
+git remote add fake-origin ../fake-remote
+
+git remote -v |tee log
+
+gbs submit --remote fake-origin -m "test remote" |tee log
+
+TAG=`awk -v FS=: '/submit\/trunk/ {print $3}' log`
+
+test -n $TAG
+
+pushd
+
+git --git-dir=fake-remote/.git/ tag |tee log
+
+test -n `grep "$TAG" log` && echo "GBS_TEST_PASSED"
+]]></steps>
+</testcase>
diff --git a/cases/submit/test_submit_remote_commit.case b/cases/submit/test_submit_remote_commit.case
new file mode 100644 (file)
index 0000000..7409aa0
--- /dev/null
@@ -0,0 +1,46 @@
+<testcase>
+  <summary>test submit -r with -c option</summary>
+  <tracking>
+    <ticket>82</ticket>
+  </tracking>
+  <fixtures>
+    <copy src="tools/create_proj" />
+    <copy src="specs/fake.spec" />
+  </fixtures>
+  <steps><![CDATA[
+./create_proj fake.spec -C fake-submit
+
+date >>fake-submit/README
+
+git --git-dir=fake-submit/.git/ commit -am "Change README for test"
+
+git clone fake-submit test-submit
+
+git clone fake-submit fake-remote
+
+pushd test-submit
+
+git remote add fake-origin ../fake-remote
+
+git remote -v
+
+gbs submit --remote fake-origin --commit HEAD~1 -m "test remote" |tee log
+
+TAG=`awk -v FS=: '/submit\/trunk/ {print $3}' log`
+
+test -n $TAG
+
+# with git version 1.7.11.4, checking is simple
+# test -n "`git --git-dir=fake-remote/.git/ tag -l --points-at HEAD~1`"
+
+TAG=`awk -v FS=: '/submit\/trunk/ {print $3}' log`
+
+pushd
+
+c1=`git --git-dir=fake-remote/.git/ log $TAG -1 --pretty=format:%H`
+
+c2=`git --git-dir=test-submit/.git/ rev-parse HEAD~1`
+
+[ ${c1} == ${c2} ] && echo "GBS_TEST_PASSED"
+]]></steps>
+</testcase>
diff --git a/cases/submit/test_submit_remote_negative.case b/cases/submit/test_submit_remote_negative.case
new file mode 100644 (file)
index 0000000..3c9c814
--- /dev/null
@@ -0,0 +1,19 @@
+<testcase>
+  <summary>submit -r option failed handling</summary>
+  <tracking>
+    <ticket>82</ticket>
+  </tracking>
+  <fixtures>
+    <copy src="tools/create_proj" />
+    <copy src="specs/fake.spec" />
+  </fixtures>
+  <steps><![CDATA[
+./create_proj fake.spec -C fake-submit
+
+git clone fake-submit test-submit
+
+(! gbs submit -r error_remote -m "test remote negative" test-submit 2>&1 | tee log)
+
+test -n "`grep "warning: Can't find upstream branch for current branch" log`"
+]]></steps>
+</testcase>
diff --git a/cases/submit/test_submit_tag.case b/cases/submit/test_submit_tag.case
new file mode 100644 (file)
index 0000000..93f9acb
--- /dev/null
@@ -0,0 +1,23 @@
+<testcase>
+  <summary>support group submission using submit --tag option</summary>
+  <tracking>
+    <ticket>596</ticket>
+  </tracking>
+  <fixtures>
+    <copy src="tools/create_proj" />
+    <copy src="specs/fake.spec" />
+  </fixtures>
+  <steps><![CDATA[
+./create_proj fake.spec -C fake-submit
+
+git clone fake-submit test-submit
+
+TAG="submit/barnd_name/20130129.093012"
+
+gbs submit --tag $TAG -m 'test tag' test-submit
+
+[ $TAG = $(git --git-dir=test-submit/.git/ tag -l) ]
+
+[ $TAG = $(git --git-dir=fake-submit/.git/ tag -l) ]
+]]></steps>
+</testcase>
diff --git a/cases/submit/test_submit_tag_bad_format.case b/cases/submit/test_submit_tag_bad_format.case
new file mode 100644 (file)
index 0000000..673acd7
--- /dev/null
@@ -0,0 +1,22 @@
+<testcase>
+  <summary>--tag only allow tag format as submit/branch_name/datetime</summary>
+  <tracking>
+    <change>3237</change>
+    <ticket>596</ticket>
+  </tracking>
+  <fixtures>
+    <copy src="tools/create_proj" />
+    <copy src="specs/fake.spec" />
+  </fixtures>
+  <steps><![CDATA[
+./create_proj fake.spec
+
+cd fake
+
+TAG=12306
+
+(! gbs submit --tag $TAG -m 'test tag' 2>&1 | tee log)
+
+grep 'invalid tag' log
+]]></steps>
+</testcase>
diff --git a/cases/submit/test_submit_target.case b/cases/submit/test_submit_target.case
new file mode 100644 (file)
index 0000000..712482a
--- /dev/null
@@ -0,0 +1,23 @@
+<testcase>
+  <summary>submit --target</summary>
+  <tracking>
+    <ticket>82</ticket>
+  </tracking>
+  <fixtures>
+    <copy src="tools/create_proj" />
+    <copy src="specs/fake.spec" />
+  </fixtures>
+  <steps><![CDATA[
+./create_proj fake.spec -C fake-submit
+
+git clone fake-submit test-submit
+
+gbs submit -t target -m "test target" test-submit |tee log
+
+git --git-dir=test-submit/.git/ tag -l |grep target
+
+TAG=`awk -v FS=: '/submit\/target/ {print $3}' log`
+
+test -n "$TAG" && echo GBS_TEST_PASSED
+]]></steps>
+</testcase>
diff --git a/cases/submit/test_submit_user-key.case b/cases/submit/test_submit_user-key.case
new file mode 100644 (file)
index 0000000..120b54c
--- /dev/null
@@ -0,0 +1,21 @@
+<testcase>
+  <summary>test submit -u option</summary>
+  <tracking>
+    <ticket>82</ticket>
+  </tracking>
+  <fixtures>
+    <copy src="tools/create_proj" />
+    <copy src="specs/fake.spec" />
+  </fixtures>
+  <steps><![CDATA[
+./create_proj fake.spec -C fake-submit
+
+git clone fake-submit test-submit
+
+gbs sr -u test1 -m 'test user-key' test-submit
+
+test -n "`git --git-dir=test-submit/.git/ tag -l`"
+
+echo "GBS_TEST_PASSED"
+]]></steps>
+</testcase>
diff --git a/coveragerc b/coveragerc
new file mode 100644 (file)
index 0000000..1345f5e
--- /dev/null
@@ -0,0 +1,2 @@
+[run]
+source = gitbuildsys
diff --git a/debian/changelog b/debian/changelog
new file mode 100644 (file)
index 0000000..53553e3
--- /dev/null
@@ -0,0 +1,5 @@
+itest-cases-gbs (0.9) unstable; urgency=high
+  * Upgrade to 0.3, which contains the following bug fixing & features:
+    * Moving changelog cases from itest project to this projects
+
+ -- Huang Hao <hao.h.huang@intel.com>  Wed, 3 July 2013 11:45:08 +0800
diff --git a/debian/compat b/debian/compat
new file mode 100644 (file)
index 0000000..7f8f011
--- /dev/null
@@ -0,0 +1 @@
+7
diff --git a/debian/control b/debian/control
new file mode 100644 (file)
index 0000000..4e2f649
--- /dev/null
@@ -0,0 +1,12 @@
+Source: itest-cases-gbs
+Section: devel
+Priority: extra
+Maintainer: Junchun Guan <junchunx.guan@intel.com>
+Standards-Version: 3.8.0
+Homepage: http://www.tizen.org
+Build-Depends: debhelper (>= 4.0.0)
+
+Package: itest-cases-gbs
+Architecture: all
+Depends: zip, p7zip-full
+Description: Cases for gbs functional testing
diff --git a/debian/copyright b/debian/copyright
new file mode 100644 (file)
index 0000000..1c2c739
--- /dev/null
@@ -0,0 +1,7 @@
+Upstream Authors:
+
+    Intel Inc.
+
+Copyright:
+
+    Copyright (C) 2012 Intel Inc.
diff --git a/debian/rules b/debian/rules
new file mode 100644 (file)
index 0000000..54e9a92
--- /dev/null
@@ -0,0 +1,16 @@
+#!/usr/bin/make -f
+# -*- makefile -*-
+# Sample debian/rules that uses debhelper.
+# This file was originally written by Joey Hess and Craig Small.
+# As a special exception, when this file is copied by dh-make into a
+# dh-make output file, you may use that output file without restriction.
+# This special exception was added by Craig Small in version 0.37 of dh-make.
+
+# Uncomment this to turn on verbose mode.
+#export DH_VERBOSE=1
+
+%:
+       dh $@
+
+override_dh_auto_install:
+       make PREFIX=debian/itest-cases-gbs install
diff --git a/fixtures/conf/base.cfg b/fixtures/conf/base.cfg
new file mode 100644 (file)
index 0000000..d310d11
--- /dev/null
@@ -0,0 +1,64 @@
+[general]
+profile = profile.tizen
+tmpdir = /var/tmp
+
+[profile.tizen]
+; common authentication info for whole profile
+#user =
+; CAUTION: please use the key name "passwd" to reset plaintext password
+#passwd =
+obs = obs.tizen
+; comma separated list of repositories
+repos = repo.tizen_latest
+
+[obs.tizen]
+url = https://api.tizen.org
+; optinal user/passwd, set if differ from proflie's user/passwd
+#user =
+#passwd =
+
+[repo.tizen_latest]
+url = http://linux-ftp.fi.intel.com/pub/mirrors/tizen/releases/2.2/tizen-2.2/
+; optinal user/passwd, set if differ from proflie's user/passwd
+#user =
+#passwdx =
+
+[repo.tizen_main]
+url = http://linux-ftp.fi.intel.com/pub/mirrors/tizen/releases/2.2/tizen-2.2/repos/tizen-main/ia32/packages/
+
+[repo.tizen_base]
+url = http://linux-ftp.fi.intel.com/pub/mirrors/tizen/releases/2.2/tizen-2.2/repos/tizen-base/ia32/packages/
+
+[profile.tizen_ivi]
+repos = repo.tizen_ivi
+
+[repo.tizen_ivi]
+url=http://linux-ftp.fi.intel.com/pub/mirrors/tizen/releases/daily/tizen/ivi/latest/repos/atom/packages/
+
+[profile.tizen_negative1]
+repos = repo.tizen_negative1
+
+[repo.tizen_negative1]
+#there is no <data type="build"> in repomd.xml
+url=http://linux-ftp.fi.intel.com/repo-new-structure/repos/atom/i586/packages1
+
+[profile.tizen_negative2]
+repos = repo.tizen_negative2
+
+[repo.tizen_negative2]
+#there is no f113ca67a6b9f572cdbd1bacf3e7364b685dbb7f9f79bf43ca2a55df3c84ff9e-build.conf.gz defined by repomd.xml in repodata
+url=http://linux-ftp.fi.intel.com/repo-new-structure/repos/atom/i586/packages2
+
+[profile.tizen_negative3]
+repos = repo.tizen_negative3
+
+[repo.tizen_negative3]
+#new structure repo
+url=http://linux-ftp.fi.intel.com/repo-new-structure/
+
+[repo.tizen_without_conf]
+#there is no builddata under latest directory
+url=http://linux-ftp.fi.intel.com/repo-without-builddata/tizen/releases/2.2/latest/repos/tizen-base/ia32/packages/
+
+[profile.tizen_without_conf]
+repos = repo.tizen_without_conf
diff --git a/fixtures/conf/changelog_cat.cfg b/fixtures/conf/changelog_cat.cfg
new file mode 100644 (file)
index 0000000..9af1a25
--- /dev/null
@@ -0,0 +1,2 @@
+[general]
+editor = cat
diff --git a/fixtures/conf/changelog_save.cfg b/fixtures/conf/changelog_save.cfg
new file mode 100644 (file)
index 0000000..499c3bf
--- /dev/null
@@ -0,0 +1,2 @@
+[general]
+editor = touch
diff --git a/fixtures/conf/inherit_only_passwdx.cfg b/fixtures/conf/inherit_only_passwdx.cfg
new file mode 100644 (file)
index 0000000..977f153
--- /dev/null
@@ -0,0 +1,16 @@
+[general]
+profile = profile.tizen
+tmpdir = /var/tmp
+
+[profile.tizen]
+repos = repo.tizen
+passwdx = QlpoOTFBWSZTWScPk3AAAAAIAD8AIAAhgAwDJy7i7kinChIE4fJuAA==
+
+[repo.tizen]
+url = http://linux-ftp.fi.intel.com/repo-protected/tizen/releases/2.2/latest
+user = test
+
+[obs.tizen]
+#OBS API URL pointing to a remote OBS.
+url = https://api.tizen.org
+user = test
diff --git a/fixtures/conf/inherit_only_user.cfg b/fixtures/conf/inherit_only_user.cfg
new file mode 100644 (file)
index 0000000..826a126
--- /dev/null
@@ -0,0 +1,11 @@
+[general]
+profile = profile.tizen
+tmpdir = /var/tmp
+
+[profile.tizen]
+repos = repo.tizen
+user = test
+
+[repo.tizen]
+url = http://linux-ftp.fi.intel.com/repo-protected/tizen/releases/2.2/latest
+passwdx = QlpoOTFBWSZTWScPk3AAAAAIAD8AIAAhgAwDJy7i7kinChIE4fJuAA==
diff --git a/fixtures/conf/invalid_user.cfg b/fixtures/conf/invalid_user.cfg
new file mode 100644 (file)
index 0000000..c52e49d
--- /dev/null
@@ -0,0 +1,10 @@
+[general]
+profile = profile.current
+
+[repo.repo1]
+url = http://linux-ftp.fi.intel.com/repo-protected/tizen/releases/2.2/latest
+user = invaliduser
+passwdx = QlpoOTFBWSZTWbwQMfEAAACZgAABOkAggQAgIAAiAaHqEAMFtNawA8XckU4UJC8EDHxA
+
+[profile.current]
+repos = repo.repo1
diff --git a/fixtures/conf/old.cfg b/fixtures/conf/old.cfg
new file mode 100644 (file)
index 0000000..6015bd1
--- /dev/null
@@ -0,0 +1,25 @@
+[general]
+; general settings
+tmpdir = /var/tmp
+editor =
+
+[remotebuild]
+; settings for build subcommand
+build_server = https://api.tizen.org
+user = daweiyan
+; CAUTION: please use the key name "passwd" to reset plaintext password
+passwdx = QlpoOTFBWSZTWfuN9YwAAAQZgAABOkACJQQAIAAiAaNNCAaaaDEtVhaeXi7kinChIfcb6xg=
+
+[build]
+build_cmd = /usr/bin/build
+build_root = /var/tmp/build-root-gbs
+distconf = /usr/share/gbs/tizen-1.0.conf
+
+; optional, repos definitions
+#repo1.url=
+#repo1.user=
+#repo1.passwd=
+; one more repo
+#repo2.url=
+#repo2.user=
+#repo2.passwd=
diff --git a/fixtures/conf/only_passwdx_no_user.cfg b/fixtures/conf/only_passwdx_no_user.cfg
new file mode 100644 (file)
index 0000000..93db5b0
--- /dev/null
@@ -0,0 +1,10 @@
+[general]
+profile = profile.tizen
+tmpdir = /var/tmp
+
+[profile.tizen]
+repos = repo.tizen
+passwdx = QlpoOTFBWSZTWdgiTvYAAASZAAAEcAASEiAAMQwIIDaI2JGSHi7kinChIbBEnew=
+
+[repo.tizen]
+url = http://linux-ftp.fi.intel.com/repo-protected/tizen/releases/2.2/latest
diff --git a/fixtures/conf/plaintext_password_issue.cfg b/fixtures/conf/plaintext_password_issue.cfg
new file mode 100644 (file)
index 0000000..4c55677
--- /dev/null
@@ -0,0 +1,12 @@
+[general]
+profile = profile.tizen
+tmpdir = /var/tmp
+
+[profile.tizen]
+repos = repo.tizen
+
+[repo.tizen]
+url = http://linux-ftp.fi.intel.com/repo-protected/tizen/releases/2.2/latest
+user = test
+passwdx = QlpoOTFBWSZTWScPk3AAAAAIAD8AIAAhgAwDJy7i7kinChIE4fJuAA==
+
diff --git a/fixtures/conf/submit.cfg b/fixtures/conf/submit.cfg
new file mode 100644 (file)
index 0000000..708277e
--- /dev/null
@@ -0,0 +1,2 @@
+[general]
+editor = cat >
diff --git a/fixtures/conf/tizen.conf b/fixtures/conf/tizen.conf
new file mode 100644 (file)
index 0000000..67d29cd
--- /dev/null
@@ -0,0 +1,373 @@
+%define _repository standard
+
+Patterntype: rpm-md comps 
+Release: <CI_CNT>.<B_CNT>
+Support: build build-compare
+
+#####################################
+Substitute: gettext gettext-tools
+Ignore: pkg-config
+#####################################
+
+%ifarch armv7l armv7el
+Substitute: libncurses ncurses-libs 
+Substitute: libncurses-devel ncurses-devel
+Preinstall: nss
+Ignore: bash:libncurses
+%endif
+
+Support: util-linux
+VMinstall: util-linux  libblkid libuuid
+
+ExportFilter: \.armv7hl\.rpm$ armv8el
+ExportFilter: \.armv7thl*\.rpm$ armv8el
+ExportFilter: \.armv7tnh*\.rpm$ armv8el
+ExportFilter: \.armv7h*\.rpm$ armv8el
+ExportFilter: \.armv7nh*\.rpm$ armv8el
+ExportFilter: \.x86_64\.rpm$ x86_64
+ExportFilter: \.i586\.rpm$ i586
+ExportFilter: \.armv5el\.rpm$ armv5el
+ExportFilter: \.armv5tel\.rpm$ armv5el
+ExportFilter: \.armv6el\.rpm$ armv6el
+ExportFilter: \.armv6l\.rpm$ armv6el
+ExportFilter: \.armv6vl\.rpm$ armv6el
+ExportFilter: \.armv7el\.rpm$ armv7el
+ExportFilter: \.armv7l\.rpm$ armv7el
+ExportFilter: \.armv7vl\.rpm$ armv7el
+# filter out packages of cross setup on ia32
+ExportFilter: .*vanish\.rpm
+PublishFilter: .*vanish\.rpm
+ExportFilter: .*dontuse\.rpm
+PublishFilter: .*dontuse\.rpm
+
+Prefer: coreutils
+
+#
+# ARM Start
+#
+%ifarch %arm
+# arm land
+Hostarch: i586
+Preinstall: qemu.x86_64
+
+%define cross_5 1
+%define cross_7 1
+%define native 1
+
+%define cross_7h 1
+
+%ifarch armv8el
+Changetarget: armv7hl-tizen-linux
+%define _gnu gnueabi
+%if %{cross_7h}
+Prefer: cross-armv7hl-binutils-accel-armv7hl
+Prefer: cross-armv7hl-gcc-accel-armv7hl
+%define speedcommon 1
+%define speedbash 1
+%define speedbinutils 1
+%define speedgcc 1
+%define native 0
+%define speedtools 1
+Support: cross-armv7tnhl-platformfile
+%endif
+%endif
+
+
+########################
+# preselect rpm targets  
+# more ifs for _repository possible as needed  
+#########################  
+%ifarch armv5el
+Changetarget: armv5tel-tizen-linux
+%define _gnu gnueabi
+%if %{cross_5}
+%define speedcommon 1
+%define speedbash 1
+%define speedbinutils 1
+%define speedgcc 1
+%define native 0
+%endif
+%endif
+
+%ifarch armv6el
+Changetarget: armv6l-tizen-linux
+%define _gnu gnueabi
+%endif
+
+%ifarch armv7l armv7el
+Changetarget: armv7l-tizen-linux
+%define _gnu gnueabi
+%if %{cross_7}
+#Support: cross-armv7tnhl-platformfile
+#Support: cross-armv7l-platformfile
+Prefer: cross-armv7l-binutils-accel-armv7l
+Prefer: cross-armv7l-gcc-accel-armv7l
+%define speedcommon 1
+%define speedbash 1
+%define speedbinutils 1
+%define speedgcc 1
+%define native 0
+%define speedtools 1
+%endif
+
+%endif
+
+%if %speedtools
+Support: patch-x86-arm findutils-x86-arm gawk-x86-arm fdupes-x86-arm 
+Preinstall: libfile-x86-arm
+Preinstall: elfutils-libelf-x86-arm
+Preinstall: nss-softokn-freebl-x86-arm
+Preinstall: nss-x86-arm
+Preinstall: nspr-x86-arm
+Preinstall: libgcc-x86-arm
+Preinstall: libacl-x86-arm
+Preinstall: libattr-x86-arm
+Preinstall: libcap-x86-arm
+Preinstall: liblua-x86-arm
+Preinstall: popt-x86-arm
+Preinstall: xz-libs-x86-arm
+Preinstall: zlib-x86-arm
+Preinstall: file
+Preinstall: sqlite-x86-arm
+Preinstall: mpfr-x86-arm
+Preinstall: gmp-x86-arm
+Preinstall: mpc-x86-arm
+Preinstall: bzip2-libs-x86-arm
+Preinstall: rpm-x86-arm
+Preinstall: rpm-libs-x86-arm
+
+Required: tar-x86-arm
+Required: sed-x86-arm
+Required: elfutils-x86-arm
+Required: elfutils-libs-x86-arm
+Required: elfutils-libelf-x86-arm
+Required: diffutils-x86-arm
+Required: gzip-x86-arm
+Required: libgcc-x86-arm
+Required: libacl-x86-arm
+Required: libattr-x86-arm
+Required: coreutils
+Required: coreutils-x86-arm
+Required: libcap-x86-arm
+Required: liblua-x86-arm
+Required: popt-x86-arm
+Required: xz-libs-x86-arm
+Required: zlib-x86-arm
+Required: file
+Required: file-x86-arm
+Required: make
+Required: make-x86-arm
+Required: libfile-x86-arm
+Required: sqlite-x86-arm
+Required: rpm-x86-arm
+Required: rpm-libs-x86-arm
+Required: rpm-build-x86-arm
+
+Runscripts: rpm-x86-arm
+Runscripts: rpm-libs-x86-arm
+Runscripts: rpm-build-x86-arm
+
+Support: !rpmlint-mini
+Support: !rpmlint-mini-x86-arm
+Prefer: python-libs
+%endif
+
+
+%if %speedcommon
+# cross-compilation/speedup
+Preinstall: tizen-accelerator eglibc-x86-arm 
+Runscripts: tizen-accelerator
+Required: tizen-accelerator
+%endif
+
+%if %speedbash
+# bash
+Preinstall: ncurses-libs-x86-arm
+Preinstall: bash-x86-arm 
+Runscripts: bash-x86-arm
+%endif
+
+%if %speedbinutils
+Required: cross-arm-binutils-accel
+%endif
+
+%if %speedgcc
+Required: cross-arm-gcc-accel
+%endif
+
+Preinstall: rpm
+Preinstall: rpm-libs
+Required:   rpm
+Prefer:     rpm-libs
+Prefer:     rpm
+
+# now i586 land
+%else
+
+
+
+Ignore: ncurses-libs-x86 libncurses-x86
+Preinstall: rpm rpm-libs
+Required:   rpm
+%endif
+
+#
+# ARM End
+#
+
+Preinstall: setup filesystem
+
+Preinstall: bash bzip2 coreutils diffutils liblua
+Preinstall: eglibc eglibc-common libacl libattr
+Preinstall: libgcc libcap
+Preinstall: popt readline sed tar zlib sqlite
+
+Preinstall: ncurses-libs
+Preinstall: elfutils-libelf bzip2-libs libstdc++ setup libfile
+Preinstall: xz-libs 
+Preinstall: nss nspr
+Preinstall: nss-softokn-freebl
+
+Runscripts: setup
+VMinstall: perl libblkid e2fsprogs-libs libuuid perl-libs grep libpcre 
+Preinstall: 
+Required: binutils gcc eglibc rpm-build libtool lzo-devel
+Support: cpio gcc-c++ perl-libs perl findutils
+
+Support: perl-HTML-Tagset
+Support: perl-IO-Compress-Base
+Support: perl-Module-Pluggable
+Support: perl-Pod-Escapes
+Support: perl-TimeDate
+Support: perl-Compress-Raw-Zlib
+Support: perl-ExtUtils-ParseXS
+Support: perl-Pod-Simple
+Support: perl-Test-Simple
+Support: perl-IO-Compress-Zlib
+Support: perl-Test-Harness
+Support: perl-ExtUtils-MakeMaker
+Support: perl-CPAN
+
+Support: file findutils zlib bzip2 
+Support: gzip 
+Support: ncurses-libs
+Support: net-tools
+Support: make  patch sed  gawk tar grep coreutils pkgconfig autoconf automake
+Support: m4 libfile tzdata tizen-release
+Support: kernel-headers eglibc-headers
+Support: xz-lzma-compat
+
+Keep: binutils cpp  file findutils gawk gcc  gcc-c++
+Keep: gdbm gzip libada libunwind  eglibc-devel libpcre xz-lzma-compat 
+Keep: make  gmp libcap groff cpio
+Keep: patch rpm-build  nss nspr elfutils python grep libgcc gcc-c++ 
+Keep: eglibc-headers perl-libs
+Keep: pkgconfig glib2 tizen-rpm-config
+Keep: xz-lzma-compat
+Keep: mpc mpfr  tar sed
+Keep: cloog cloog-ppl ppl  
+Keep: nss-softokn-freebl
+Keep: setup
+
+# SLP
+Ignore: iso-codes:xml-common
+
+%if "%_repository" == "emulator"
+  Prefer: simulator-opengl-devel
+  Support: emulator-macros 
+  Optflags: i586 %{__global_cflags} -m32 -march=core2 -msse3 -mno-ssse3 -mfpmath=sse -mtune=generic -fasynchronous-unwind-tables -fno-omit-frame-pointer
+%else
+  %ifarch armv7el
+    Substitute: pvr-bin-mdfld simulator-opengl
+    Substitute: pvr-bin-mdfld-devel simulator-opengl-devel
+  %else
+    Prefer: libdrm
+    Substitute: simulator-opengl-devel pvr-bin-mdfld-devel
+    Substitute: simulator-opengl pvr-bin-mdfld
+    Prefer: pvr-bin-mdfld-devel pvr-bin-mdfld
+    Prefer: mesa-libEGL
+    Prefer: kernel-mfld-blackbay
+  %endif
+%endif
+
+
+Macros:
+%tizen_version 201
+%tizen 2.1
+%vendor tizen
+%_vendor tizen
+%_default_patch_fuzz   2
+
+
+
+# python main version
+%py_ver         %(echo `python -c "import sys; print sys.version[:3]"`)
+
+# directories
+%py_prefix      %(echo `python -c "import sys; print sys.prefix"`)
+%py_libdir      %{py_prefix}/lib/python%{py_ver}
+%py_incdir      /usr/include/python%{py_ver}
+%py_sitedir     %{py_libdir}/site-packages
+%py_dyndir      %{py_libdir}/lib-dynload
+
+# pure python modules compilation
+%py_comp        python -c "import compileall; import sys; compileall.compile_dir(sys.argv[1], ddir=sys.argv[1][len('$RPM_BUILD_ROOT'):])"
+%py_ocomp       python -O -c "import compileall; import sys; compileall.compile_dir(sys.argv[1], ddir=sys.argv[1][len('$RPM_BUILD_ROOT'):])"
+
+%ext_info .gz
+%ext_man .gz
+
+%info_add(:-:) test -x /sbin/install-info -a -f %{?2}%{?!2:%{_infodir}}/%{1}%ext_info && /sbin/install-info --info-dir=%{?2}%{?!2:%{_infodir}} %{?2}%{?!2:%{_infodir}}/%{1}%ext_info \
+%{nil}
+
+%info_del(:-:) test -x /sbin/install-info -a ! -f %{?2}%{?!2:%{_infodir}}/%{1}%ext_info && /sbin/install-info --quiet --delete --info-dir=%{?2}%{?!2:%{_infodir}} %{?2}%{?!2:%{_infodir}}/%{1}%ext_info \
+%{nil}
+
+%lang_package \
+%package locale \
+Summary: Translations and Locale for package %{name}\
+Group: Translations\
+AutoReqProv: 0\
+%description locale\
+This package provides translations for package %{name}.\
+%files locale -f %{name}.lang\
+%defattr(-,root,root,-)\
+%{nil}
+
+
+%docs_package \
+%package docs \
+Summary: Documentation for package %{name}\
+Group: Documentation\
+AutoReqProv: 0\
+%description docs\
+This package provides documentation for package %{name}.\
+%files docs -f documentation.list\
+%defattr(-,root,root,-)\
+%{nil}
+
+%devel_package \
+%package devel \
+Summary: Development files for package %{name}\
+Group: Development\
+%description devel\
+This package provides header files and other developer releated files for package %{name}.\
+%files devel \
+%{_includedir}/*\
+%{_libdir}/pkgconfig/*.pc\
+%{_libdir}/*.so\
+%{nil}
+
+
+%_smp_mflags -j4
+
+
+%remove_docs \
+  rm -rf %{?buildroot:%{buildroot}}%{_infodir} \
+  rm -rf %{?buildroot:%{buildroot}}%{_defaultdocdir} \
+  rm -rf %{?buildroot:%{buildroot}}%{_datadir}/doc/%{name} \
+  rm -rf %{?buildroot:%{buildroot}}%{_datadir}/gtk-doc \
+  rm -rf %{?buildroot:%{buildroot}}%{_datadir}/man \
+  find %{?buildroot:%{buildroot}} -regex ".*/man/man./.*\.[0-9]" | xargs rm -f -- \
+  find %{?buildroot:%{buildroot}} -regex ".*/man/../man./.*\.[0-9]" | xargs rm -f -- \
+  find %{?buildroot:%{buildroot}} -regex ".*/man/man./.*\.[0-9]pm" | xargs rm -f --
diff --git a/fixtures/specs/capi-system-power.spec b/fixtures/specs/capi-system-power.spec
new file mode 100644 (file)
index 0000000..22584cb
--- /dev/null
@@ -0,0 +1,32 @@
+#sbs-git:slp/api/power capi-system-power 0.1.0 0432661af455f52366bdcd809dc72a00854c763c
+Name:       capi-system-power
+Summary:    A power library in Tizen C API
+Version: 0.1.0
+Release:    7
+Group:      TO_BE/FILLED_IN
+License:    TO BE FILLED IN
+Source0:    %{name}-%{version}.tar.gz
+BuildRequires:  cmake
+BuildRequires:  pkgconfig(dlog)
+BuildRequires:  pkgconfig(pmapi)
+BuildRequires:  pkgconfig(glib-2.0)
+BuildRequires:  pkgconfig(capi-base-common)
+BuildRequires:  pkgconfig(vconf)
+
+Requires(post): /sbin/ldconfig  
+Requires(postun): /sbin/ldconfig
+
+%description
+
+
+%package devel
+Summary:  A power library in Tizen C API (Development)
+Group:    TO_BE/FILLED_IN
+Requires: %{name} = %{version}-%{release}
+
+%description devel
+
+
+%files
+
+%files devel
diff --git a/fixtures/specs/chicken.spec b/fixtures/specs/chicken.spec
new file mode 100644 (file)
index 0000000..e37f683
--- /dev/null
@@ -0,0 +1,13 @@
+Name:       systemd
+Summary:    A beautiful and smart chicken
+Version:    1.0
+Release:    1
+Group:      Development/Tools
+License:    GPLv2
+URL:        https://github.com/junchunx
+Source0:    %{name}-%{version}.tgz
+BuildRequires:  libtool
+
+%description
+Egg: I came first!
+Chicken: I came first!
diff --git a/fixtures/specs/egg.spec b/fixtures/specs/egg.spec
new file mode 100644 (file)
index 0000000..8c3609d
--- /dev/null
@@ -0,0 +1,13 @@
+Name:       libtool
+Summary:    A precious egg
+Version:    1.0
+Release:    1
+Group:      Development/Tools
+License:    GPLv2
+URL:        https://github.com/junchunx
+Source0:    %{name}-%{version}.tgz
+BuildRequires:  systemd
+
+%description
+Chicken: I came first!
+Egg: I came first!
diff --git a/fixtures/specs/fake-dev.spec b/fixtures/specs/fake-dev.spec
new file mode 100644 (file)
index 0000000..641aa39
--- /dev/null
@@ -0,0 +1,20 @@
+Name:       fake-dev
+Summary:    A fake tizen package for gbs test
+Version:    2.0
+Release:    3
+Group:      Development/Tools
+License:    GPLv2
+Source:     %{name}-%{version}.tgz
+
+%description
+A fake tizen package for gbs test
+* download and install gbs
+* use this package to test gbs build, remotebuild, export, import and so on
+%prep
+%setup -q
+
+%install
+mkdir -p %{buildroot}/%{_docdir}
+
+%files
+%doc README
diff --git a/fixtures/specs/fake-lib.spec b/fixtures/specs/fake-lib.spec
new file mode 100644 (file)
index 0000000..7caa07a
--- /dev/null
@@ -0,0 +1,21 @@
+Name:       fake-lib
+Summary:    A fake tizen package for gbs test
+Version:    1.0
+Release:    1
+Group:      Development/Tools
+License:    GPLv2
+URL:        https://github.com/junchunx
+Source0:    fake-%{version}.tbz2
+
+%description
+A fake tizen package for gbs test
+* download and install gbs
+* use this package to test gbs build, remotebuild, export, import and so on
+%prep
+%setup -q -n fake-%{version}
+
+%install
+mkdir -p %{buildroot}/%{_docdir}
+
+%files
+%doc README
diff --git a/fixtures/specs/fake.spec b/fixtures/specs/fake.spec
new file mode 100644 (file)
index 0000000..4404df6
--- /dev/null
@@ -0,0 +1,20 @@
+Name:       fake
+Summary:    A fake tizen package for gbs test
+Version:    1.0
+Release:    1
+Group:      Development/Tools
+License:    GPLv2
+Source0:    %{name}-%{version}.tbz2
+
+%description
+A fake tizen package for gbs test
+* download and install gbs
+* use this package to test gbs build, remotebuild, export, import and so on
+%prep
+%setup -q
+
+%install
+mkdir -p %{buildroot}/%{_docdir}
+
+%files
+%doc README
diff --git a/fixtures/specs/gdm.spec b/fixtures/specs/gdm.spec
new file mode 100644 (file)
index 0000000..aaeeb13
--- /dev/null
@@ -0,0 +1,49 @@
+Name:           gdm
+Version:        3.7.2
+Release:        0
+Summary:        The GNOME Display Manager
+License:        GPL-2.0+
+Group:          System/GUI/GNOME
+Url:            http://projects.gnome.org/gdm/
+Source:         http://download.gnome.org/sources/gdm/3.6/%{name}-%{version}.tar.xz
+Source1:        gdm.pamd
+Source2:        gdm-autologin.pamd
+Source3:        gdm-launch-environment.pamd
+Source6:        gdm-fingerprint.pamd
+Source7:        gdm-smartcard.pamd
+Requires:       gnome-settings-daemon
+Requires(post): dconf
+Recommends:     orca
+BuildRequires:  pwdutils
+BuildRequires:  yelp-tools
+BuildRoot:      %{_tmppath}/%{name}-%{version}-build
+Requires(post): glib2-tools
+Requires(postun): glib2-tools
+
+%description
+The GNOME Display Manager is a system service that is responsible for
+providing graphical log-ins and managing local and remote displays.
+
+%prep
+%setup -q
+
+%pre
+/usr/sbin/groupadd -r gdm 2> /dev/null || :
+/usr/sbin/useradd -r -o -g gdm -G video -s /bin/false \
+-c "Gnome Display Manager daemon" -d /var/lib/gdm gdm 2> /dev/null || :
+/usr/sbin/usermod -g gdm -G video -s /bin/false gdm 2> /dev/null
+
+%post
+%glib2_gsettings_schema_post
+%icon_theme_cache_post
+
+%posttrans
+# Create dconf database for gdm, to lockdown the gdm session
+dconf update
+
+%postun
+%glib2_gsettings_schema_postun
+%icon_theme_cache_postun
+
+%files
+%defattr(-,root,root)
diff --git a/fixtures/specs/json-c.spec b/fixtures/specs/json-c.spec
new file mode 100644 (file)
index 0000000..258167e
--- /dev/null
@@ -0,0 +1,26 @@
+Name:          json-c
+Version:       0.9
+Release:       1
+Summary:       A JSON implementation in C
+Group:         Development/Libraries
+License:       MIT
+URL:           http://oss.metaparadigm.com/json-c/
+Source0:       http://oss.metaparadigm.com/json-c/json-c-%{version}.tar.lzma
+
+%description
+JSON-C implements a reference counting object model that allows you to easily
+construct JSON objects in C, output them as JSON formatted strings and parse
+JSON formatted strings back into the C representation of JSON objects.
+
+%package devel
+Summary:       Development headers and library for json-c
+Group:         Development/Libraries
+Requires:      %{name} = %{version}-%{release}
+Requires:      pkgconfig
+
+%description devel
+This package contains the development headers and library for json-c.
+
+%files
+
+%files devel
diff --git a/fixtures/specs/package-groups.spec b/fixtures/specs/package-groups.spec
new file mode 100644 (file)
index 0000000..d722f3e
--- /dev/null
@@ -0,0 +1,24 @@
+Summary:        Tizen Package Groups
+Name:           package-groups
+Version:        1
+Release:        1
+License:        GPL-2.0
+Group:          System/Base
+URL:            http://www.tizen.org
+Source:         %{name}-%{version}.tar.bz2
+
+%description
+Tizen Package Groups
+
+%prep
+%setup -q
+
+%build
+touch patterns.xml
+
+%install
+install -d %{buildroot}/usr/share/package-groups
+install -m 644 patterns.xml %{buildroot}/usr/share/package-groups
+
+%files
+%{_datadir}/package-groups/*.xml
diff --git a/fixtures/specs/sw-tools.spec b/fixtures/specs/sw-tools.spec
new file mode 100644 (file)
index 0000000..03c380a
--- /dev/null
@@ -0,0 +1,28 @@
+%{!?python_sitelib: %define python_sitelib %(%{__python} -c "from distutils.sysconfig import get_python_lib; print get_python_lib()")}
+Name:          sw-tools
+Version:       0.1
+Release:       1
+Summary:       Generate binary update packs
+
+Group:         Development/Tools
+License:       GPL V2
+URL:           http://www.tizen.org
+Source0:       %{name}-%{version}.tar.bz2
+BuildRoot:     %{_tmppath}/%{name}-%{version}-%{release}-root
+
+BuildRequires: python-devel
+Requires:      yum
+Requires:      deltarpm
+Requires:   python-deltarpm
+
+%description
+This is a tool to help genearting binary update packs
+
+%prep
+%setup -q -n %{name}-%{version}
+
+%install
+mkdir -p %{buildroot}/%{_docdir}
+
+%files
+%{_docdir}/
diff --git a/fixtures/specs/tizen-accelerator.spec b/fixtures/specs/tizen-accelerator.spec
new file mode 100644 (file)
index 0000000..bba1025
--- /dev/null
@@ -0,0 +1,61 @@
+# spec file for cross-chroot accelerator
+#
+# Copyright (c) 2010  Jan-Simon Möller (jsmoeller@linuxfoundation.org)
+#
+Name:           tizen-accelerator
+ExclusiveArch:  %arm
+AutoReqProv:    0
+AutoReqProv:    off
+Provides:       ia32el
+Provides:       fake-ia32el
+Provides:       tizen-accelerator
+Version:        1.0.1
+Release:        1
+License:        GPL v2 or later
+Group:          Development/Tools/Building
+Summary:        This is a fake provides for ia32el, it inserts a file to /etc/ld.so.conf.d/
+BuildRoot:     %{_tmppath}/%{name}-%{version}-build
+Source1:        %{name}.conf
+Source1001: packaging/tizen-accelerator.manifest 
+BuildRequires:  -rpmlint-Factory -rpmlint-mini -post-build-checks tar
+Requires(post):        /bin/chmod
+
+%description
+Needed for cross-build speedup
+This is a fake provides for ia32el, it inserts a file to /etc/ld.so.conf.d/
+
+%prep
+
+%build
+cp %{SOURCE1001} .
+
+%install
+mkdir -p %buildroot/emul/ia32-linux
+mkdir -p %buildroot/emul/ia32-linux/etc
+mkdir -p %buildroot/emul/ia32-linux/lib
+mkdir -p %buildroot/emul/ia32-linux/usr
+mkdir -p %buildroot/emul/ia32-linux/usr/lib
+mkdir -p %buildroot/etc/ld.so.conf.d/
+cp %{S:1} %buildroot/etc/ld.so.conf.d/
+mkdir -p %buildroot/usr/share/%name/
+echo "%{version}" > %buildroot/usr/share/%name/version
+
+%clean
+rm -rf $RPM_BUILD_ROOT
+
+%post
+chmod 755 /emul
+chmod 755 /emul/ia32-linux
+chmod 755 /emul/ia32-linux/etc
+chmod 755 /emul/ia32-linux/lib
+chmod 755 /emul/ia32-linux/usr
+chmod 755 /emul/ia32-linux/usr/lib
+cd /lib && ln -sf ../emul/ia32-linux/lib/ld-linux.so.2 ld-linux.so.2
+#/emul/ia32-linux/sbin/ldconfig
+
+%files
+%manifest tizen-accelerator.manifest
+%defattr(-,root,root)
+/etc/ld.so.conf.d/*
+/usr/share/%name/version
+/emul
diff --git a/fixtures/specs/tizen-release.spec b/fixtures/specs/tizen-release.spec
new file mode 100644 (file)
index 0000000..26b6608
--- /dev/null
@@ -0,0 +1,34 @@
+%define release_name Tizen
+%define dist_version 1.2.0.90
+
+Summary:       Tizen release files
+Name:          tizen-release
+Version:       1.2.0.90
+Release:       1
+License:       GPLv2
+Group:         System/Base
+URL:           http://www.tizen.com
+Provides:      system-release = %{version}-%{release}
+BuildArch:     noarch
+%description
+Tizen release files such as various /etc/ files that define the release.
+
+%prep
+
+%build
+
+%install
+rm -rf $RPM_BUILD_ROOT
+install -d $RPM_BUILD_ROOT/etc
+echo "Tizen release %{dist_version} (%{release_name})" > $RPM_BUILD_ROOT/etc/tizen-release
+
+ln -s tizen-release $RPM_BUILD_ROOT/etc/system-release
+
+
+%clean
+rm -rf $RPM_BUILD_ROOT
+
+%files
+%config %attr(0644,root,root) /etc/tizen-release
+/etc/system-release
+
diff --git a/fixtures/specs/xorg-x11-filesystem.spec b/fixtures/specs/xorg-x11-filesystem.spec
new file mode 100644 (file)
index 0000000..4487a5d
--- /dev/null
@@ -0,0 +1,98 @@
+Name:       xorg-x11-filesystem
+Summary:    X.Org X11 filesystem layout
+Version:    7.3
+Release:    1
+Group:      System/Base
+License:    MIT
+BuildArch:  noarch
+URL:        http://www.redhat.com
+Requires:   filesystem
+Requires(pre): filesystem
+
+
+
+%description
+This package provides some directories which are required by other
+packages which comprise the modularized X.Org X11R7 X Window System
+release.  This package must be installed during OS installation
+or upgrade, in order to force the creation of these directories,
+and replace any legacy symbolic links that might be present in old
+locations, which could result in upgrade failures.
+
+
+
+
+%prep
+
+%build
+
+
+
+%install
+rm -rf %{buildroot}
+
+# NOTE: Do not replace these with _libdir or _includedir macros, they are
+#       intentionally explicit.
+mkdir -p "$RPM_BUILD_ROOT/usr/lib/X11"
+mkdir -p "$RPM_BUILD_ROOT/usr/include/X11"
+
+# whereas this is not
+mkdir -p "$RPM_BUILD_ROOT%{_datadir}/X11"
+
+mkdir -p "$RPM_BUILD_ROOT%{_bindir}"
+
+UPGRADE_CMD="%{_bindir}/xorg-x11-filesystem-upgrade"
+
+# NOTE: The quoted 'EOF' is required to disable variable interpolation
+cat > "$RPM_BUILD_ROOT/${UPGRADE_CMD}" <<'EOF'
+#!/bin/bash
+#
+# Modular X.Org X11R7 filesystem upgrade script.
+#
+# If any of the following dirs are symlinks, remove them and create a dir
+# in its place.  This is required, so that modular X packages get installed
+# into a real directory, and do not follow old compatibility symlinks
+# provided in previous releases of the operating system.
+#
+# NOTE: Do not replace these with _libdir or _includedir macros, they are
+#       intentionally explicit.
+for dir in /usr/include/X11 /usr/lib/X11 ; do
+[ -L "$dir" ] && rm -f -- "$dir" &> /dev/null
+done
+for dir in /usr/include/X11 /usr/lib/X11 ; do
+[ ! -d "$dir" ] && mkdir -p "$dir" &> /dev/null
+done
+exit 0
+EOF
+
+chmod 0755 "$RPM_BUILD_ROOT/${UPGRADE_CMD}"
+
+
+
+%pre
+# NOTE: Do not replace these with _libdir or _includedir macros, they are
+#       intentionally explicit.
+# Remove old symlinks if present, and replace them with directories.
+for dir in /usr/include/X11 /usr/lib/X11 ; do
+[ -L "$dir" ] && rm -f -- "$dir" &> /dev/null
+done
+for dir in /usr/include/X11 /usr/lib/X11 ; do
+[ ! -d "$dir" ] && mkdir -p "$dir" &> /dev/null
+done
+exit 0
+
+
+
+
+
+%files
+%defattr(-,root,root,-)
+# NOTE: These are explicitly listed intentionally, instead of using rpm
+#       macros, as these exact locations are required for compatibility
+#       regardless of what _libdir or _includedir point to.
+%dir /usr/lib/X11
+%dir /usr/include/X11
+%dir %{_datadir}/X11
+%{_bindir}/xorg-x11-filesystem-upgrade
+
+
diff --git a/fixtures/tools/assert b/fixtures/tools/assert
new file mode 100644 (file)
index 0000000..4dc762f
--- /dev/null
@@ -0,0 +1,72 @@
+#!/bin/bash
+
+GBS_ROOT_I686_0=~/GBS-ROOT/local/BUILD-ROOTS/scratch.i586.0
+GBS_ROOT_ARMV7L_0=~/GBS-ROOT/local/BUILD-ROOTS/scratch.armv7l.0
+GBS_RPMS_I686=~/GBS-ROOT/local/repos/tizen/i586/RPMS
+GBS_SRPMS_I686=~/GBS-ROOT/local/repos/tizen/i586/SRPMS
+GBS_RPMS_ARMV7L=~/GBS-ROOT/local/repos/tizen/armv7l/RPMS
+GBS_SRPMS_ARMV7L=~/GBS-ROOT/local/repos/tizen/armv7l/SRPMS
+GBS_LOCAL_REPOS=~/GBS-ROOT/local/repos
+# define default value for GBS_REPOURL if it is null or not defined
+: ${GBS_REPOURL:='http://linux-ftp.fi.intel.com/pub/mirrors/tizen/releases/2.2/latest'}
+
+
+#assert git packages under current dir are clean
+function AssertClean()
+{
+    find . -maxdepth 1 -type d| sed "1d"| xargs -i sh -c "cd {};git status| grep 'working directory clean'"
+}
+#assert git package clean
+# such as: AssertCleanWith fake sw-tools
+function AssertCleanWith()
+{
+    echo $*| xargs -n1| xargs -i sh -c "cd {} && git status| grep 'working directory clean'"
+}
+
+function AssertRPMsI()
+{
+    find . -maxdepth 1 -type d| sed -e "1d" -e "s|./||g"| xargs -i sh -c "ls ${GBS_RPMS_I686}| grep {}" && \
+    find . -maxdepth 1 -type d| sed -e "1d" -e "s|./||g"| xargs -i sh -c "ls ${GBS_SRPMS_I686}| grep {}"
+}
+
+function AssertRPMsIWith()
+{
+    echo $*|xargs -n1| xargs -I{} sh -c "ls ${GBS_RPMS_I686}| grep {}" && \
+    echo $*|xargs -n1| xargs -I{} sh -c "ls ${GBS_SRPMS_I686}| grep {}"
+}
+
+function AssertRPMsIWithout()
+{
+    ! AssertRPMsIWith $*
+}
+
+function AssertRPMsA()
+{
+    find . -maxdepth 1 -type d|sed -e "1d" -e "s|./||g"|xargs -i sh -c "ls ${GBS_RPMS_ARMV7L}| grep {}" && \
+    find . -maxdepth 1 -type d|sed -e "1d" -e "s|./||g"|xargs -i sh -c "ls ${GBS_SRPMS_ARMV7L}| grep {}"
+}
+
+function AssertRPMsAWith()
+{
+    echo $*|xargs -n1| xargs -I{} sh -c "ls ${GBS_RPMS_ARMV7L}| grep {}" && \
+    echo $*|xargs -n1| xargs -I{} sh -c "ls ${GBS_SRPMS_ARMV7L}| grep {}"
+}
+
+function AssertRPMsAWithout()
+{
+    ! AssertRPMsAWith $*
+}
+#Assert build root scratch.i686.0 with rpm xxx installed
+#later we can AssertRootI1With AssertRootI2With AssertRootI3With...
+function AssertRootI0With()
+{
+    echo $*| xargs -n1| xargs -I{} sh -c "sudo chroot $GBS_ROOT_I686_0 rpm -q {}"
+}
+#Assert build root scratch.armv7l.0 with rpm xxx installed
+#later we can AssertRootA1With AssertRootA2With AssertRootA3With...
+function AssertRootA0With()
+{
+    echo $*| xargs -n1| xargs -I{} sh -c "sudo chroot $GBS_ROOT_ARMV7L_0 rpm -q {}"
+}
+
+
diff --git a/fixtures/tools/create_proj b/fixtures/tools/create_proj
new file mode 100644 (file)
index 0000000..17b9608
--- /dev/null
@@ -0,0 +1,163 @@
+#!/bin/bash
+
+info() {
+    echo "$@"
+}
+
+error() {
+    echo "$@" >&2
+    exit 1
+}
+
+usage() {
+    echo "Usage: `basename $0` [options] <spec> [files ...]"
+    echo "Create dummy GIT project form spec for testing"
+    echo
+    echo "  spec"
+    echo "      path to spec file"
+    echo "  files"
+    echo "      files that will be copied to project/packaging dir"
+    echo
+    echo "  -h, --help"
+    echo "  -f, --force"
+    echo "      force to create project, delete existed project before creating"
+    echo "  -C DIR, --directory=DIR"
+    echo "      create project in DIR, if not given it will guess the project"
+    echo "  -t, --tizen"
+    echo "      create a standard tizen package including upstream and pristine-tar branch"
+    echo "      name from the spec file name and create the project as a"
+    echo "      subdir of cwd"
+}
+
+guess_project_dir() {
+    if [ -n "$output_dir" ]; then
+        proj_dir=$output_dir
+    else
+        proj_dir=$(basename $spec .spec)
+    fi
+}
+
+check_proj() {
+    if [ -e $proj_dir ]; then
+        if [ "$force" == 1 ]; then
+            info "overwriting project $proj_dir"
+            rm -rf $proj_dir
+        else
+            error "project $proj_dir exists"
+        fi
+    fi
+}
+
+
+make_proj() {
+    info "creating GIT project at $proj_dir using $@"
+
+    pack_dir=$proj_dir/packaging
+
+    local dest_spec=$PWD/$(basename $spec)
+
+    if [ "$tizen_pkg" == 1 ]; then
+        ###Create tarball with source git tree,no packaging dir
+        mkdir -p $proj_dir
+        pushd $proj_dir
+        echo 'this dummy project was created for gbs testing' > README
+
+        git init
+        git add .
+        git commit -m "Initial commit"
+
+        name=`awk '/^Name/ {print $2}' $dest_spec`
+        version=`awk '/^Version/ {print $2}' $dest_spec`
+        fmt=`awk '/^Source0/ {print $2}' $dest_spec|cut -d. -f2,3`
+        git archive --prefix="$name-$version/" --output "../$name-$version.$fmt" HEAD
+        popd
+
+        ###Remove source git tree after archiving
+        rm -rf $proj_dir
+
+        ###Import to non-native git tree with tarball and spec
+        gbs import $dest_spec
+
+        ###For multispec
+        if [ ${#@} -gt 1 ]; then
+            for fname in "$@"; do
+                cp $fname $pack_dir
+            done
+            pushd $proj_dir
+            git add .
+            git commit --amend -m "Imported vendor release 1.0-1"
+            popd
+        fi
+
+        ###Remove tarball
+        rm -f $name-$version.$fmt
+    else
+        ###Create native git tree
+        mkdir -p $pack_dir
+        for fname in "$@"; do
+            cp $fname $pack_dir
+        done
+        pushd $proj_dir
+        echo 'this dummy project was created for gbs testing' > README
+        git init
+        git add .
+        git commit -m "Initial commit"
+        popd
+    fi
+}
+
+### Main
+
+TEMP=$(getopt -o hfC:t --long help,force,directory:,tizen -n "$0" -- "$@")
+if [ $? -ne 0 ]; then
+    usage
+    exit 1
+fi
+
+eval set -- "$TEMP"
+while true; do
+    case "$1" in
+        -h|--help)
+            usage
+            exit 0
+            ;;
+        -f|--force)
+            force=1
+            shift
+            ;;
+         -C|--directory)
+            shift;
+            output_dir=$1
+            shift
+            ;;
+         -t|--tizen)
+            tizen_pkg=1
+            shift
+            ;;
+         --)
+            shift
+            break
+            ;;
+         *)
+            echo "Internal error!"
+            exit 1
+            ;;
+        esac
+done
+
+if [ ${#@} -lt 1 ]; then
+    error "spec file is required"
+fi
+
+for fname in "$@"; do
+    if [ ! -f "$fname" ]; then
+        error "No such file: $fname"
+    fi
+done
+
+spec=$1
+shift
+
+guess_project_dir "$@"
+check_proj $proj
+make_proj $spec "$@"
diff --git a/future_cases/gbs_cr_ks.case b/future_cases/gbs_cr_ks.case
new file mode 100644 (file)
index 0000000..d4620bd
--- /dev/null
@@ -0,0 +1,31 @@
+<testcase>
+  <summary>gbs createimage -K</summary>
+  <steps><![CDATA[
+tools/create_proj specs/fake.spec
+
+sudo rm -rf ~/GBS-ROOT/local/repos
+
+sudo rm -rf ~/GBS-ROOT/images
+
+gbs -c conf_fixtures/fakerepo.cfg build -A i586 fake --clean
+
+cp conf_fixtures/handset_blackbay.ks .
+
+#add local repo
+perl -i -pne "s#^(%packages)#repo --name=local --baseurl=file://$HOME/GBS-ROOT/local/repos/tizen/i586 --priority=1\n\1#" handset_blackbay.ks
+
+#add package rpm and fake, we can check fake whether in the image later
+perl -i -pne "s#^(%packages)#\1\nrpm\nfake#" handset_blackbay.ks
+
+if mic cr -h |grep -e "--tmpfs"; then
+    MIC_OPT="--tmpfs"
+fi
+
+gbs createimage -K handset_blackbay.ks $MIC_OPT
+
+#check if fake in img
+sudo mic chroot mic-output/platform.img rpm -q fake | tee log
+
+grep -i "fake-1.0-1.i586" log
+]]></steps>
+</testcase>
\ No newline at end of file
diff --git a/future_cases/gbs_cr_no_opt.case b/future_cases/gbs_cr_no_opt.case
new file mode 100644 (file)
index 0000000..596699c
--- /dev/null
@@ -0,0 +1,11 @@
+<testcase>
+  <summary>gbs createimage no option</summary>
+  <tracking>
+    <change>4491</change>
+  </tracking>
+  <steps><![CDATA[
+( ! gbs cr 2>&1 | tee log )
+
+grep -i "gbs createimage: error: argument -K/--ks-file is required" log
+]]></steps>
+</testcase>
\ No newline at end of file
diff --git a/future_cases/gbs_cr_out.case b/future_cases/gbs_cr_out.case
new file mode 100644 (file)
index 0000000..2291673
--- /dev/null
@@ -0,0 +1,9 @@
+<testcase>
+  <summary>gbs createimage -O</summary>
+  <steps><![CDATA[
+gbs createimage -K conf_fixtures/handset_blackbay.ks -O ./out
+
+#check img
+sudo mic chroot out/platform.img id
+]]></steps>
+</testcase>
\ No newline at end of file
diff --git a/future_cases/test_build_aarch64_support.case b/future_cases/test_build_aarch64_support.case
new file mode 100644 (file)
index 0000000..7734eb7
--- /dev/null
@@ -0,0 +1,21 @@
+<testcase>
+  <summary>test for arm arch64 support</summary>
+  <tracking>
+    <ticket>1507</ticket>
+  </tracking>
+  <steps><![CDATA[
+. tools/assert
+
+sudo /bin/rm -rf $GBS_LOCAL_REPOS
+
+cp specs/fake.spec .
+
+perl -i -pne 's/License:.*/License:  GPL-2.0+/' fake.spec
+
+tools/create_proj fake.spec
+
+gbs build -A aarch64 -R http://mirror.bj.intel.com/mirror/aarch64/ --skip-conf-repos -D conf_fixtures/aarch64.conf --clean fake
+
+test -n "`find ~/GBS-ROOT/local/repos -name '*fake*.rpm'`"
+]]></steps>
+</testcase>
\ No newline at end of file
diff --git a/future_cases/test_build_baselibs.case b/future_cases/test_build_baselibs.case
new file mode 100644 (file)
index 0000000..ada6f6e
--- /dev/null
@@ -0,0 +1,35 @@
+<testcase>
+  <summary>test --baselibs feature</summary>
+  <tracking>
+    <ticket>852</ticket>
+  </tracking>
+  <steps><![CDATA[
+. tools/assert
+
+sudo /bin/rm -rf $GBS_LOCAL_REPOS
+
+tools/create_proj specs/fake.spec
+
+cd fake/packaging
+
+echo "fake" >baselibs.conf
+
+echo "        +README" >>baselibs.conf
+
+git add baselibs.conf
+
+git commit -m 'add baselibs.conf'
+
+cd ../..
+
+gbs -c conf_fixtures/fakerepo.cfg build -A i586 --baselibs --clean fake
+
+AssertCleanWith fake
+
+AssertRPMsIWith fake
+
+ls ${GBS_RPMS_I686} |grep fake-32bit
+
+ls ${GBS_RPMS_I686} |grep fake-x86
+]]></steps>
+</testcase>
\ No newline at end of file
diff --git a/future_cases/test_build_dist_in_spec.case b/future_cases/test_build_dist_in_spec.case
new file mode 100644 (file)
index 0000000..7740d8a
--- /dev/null
@@ -0,0 +1,24 @@
+<testcase>
+  <summary>Check consistency of spec parser between gbp and depanneur(build)</summary>
+  <steps><![CDATA[
+. tools/assert
+
+sudo /bin/rm -rf $GBS_LOCAL_REPOS
+
+#remove cache
+sudo /bin/rm -rf ~/GBS-ROOT/local/sources
+
+cp specs/fake.spec .
+
+#Release:    1%{?dist}
+perl -i -pne 's/(Release:.*)/$1%\{\?dist\}/' fake.spec
+
+tools/create_proj fake.spec
+
+#on fedora release will be like "1.fc18"
+#build will fail if Build::Rpm::parse parse wrong
+gbs -c conf/base.cfg build -A i586 fake/
+
+AssertRPMsIWith fake
+]]></steps>
+</testcase>
\ No newline at end of file
diff --git a/packaging/.gitignore b/packaging/.gitignore
new file mode 100644 (file)
index 0000000..f7ecbec
--- /dev/null
@@ -0,0 +1,2 @@
+.osc/
+itest-cases-gbs*.tar.gz
diff --git a/packaging/Makefile b/packaging/Makefile
new file mode 100644 (file)
index 0000000..8cf8da0
--- /dev/null
@@ -0,0 +1,19 @@
+PKG_NAME := itest-cases-gbs
+SPECFILE = $(addsuffix .spec, $(PKG_NAME))
+PKG_VERSION := $(shell grep '^Version: ' $(SPECFILE)|awk '{print $$2}')
+
+TARBALL := $(PKG_NAME)_$(PKG_VERSION).tar.gz
+
+dsc: tarball
+       $(eval MD5=$(shell md5sum $(TARBALL) | sed "s/  / $(shell stat -c '%s' $(TARBALL)) /"))
+       sed  -i 's/^Version:.*/Version: $(PKG_VERSION)/' $(PKG_NAME).dsc
+       sed  -i 's/ [a-f0-9]\+ [0-9]\+ $(PKG_NAME).*tar.*/ $(MD5)/' $(PKG_NAME).dsc
+
+tarball:
+       cd .. && git archive --prefix $(PKG_NAME)-$(PKG_VERSION)/ HEAD \
+                               | gzip > packaging/$(TARBALL)
+
+clean:
+       rm -f $(PKG_NAME)*tar*
+
+all: tarball dsc
diff --git a/packaging/itest-cases-gbs.changes b/packaging/itest-cases-gbs.changes
new file mode 100644 (file)
index 0000000..22cc7d7
--- /dev/null
@@ -0,0 +1,5 @@
+* Wed Jul 03 2013 Huang Hao <hao.h.huang@intel.com> a7c12c5
+- Add packaging files
+- Adding changelog cases and corresponding fixtures
+- Initial commit
+
diff --git a/packaging/itest-cases-gbs.dsc b/packaging/itest-cases-gbs.dsc
new file mode 100644 (file)
index 0000000..117e720
--- /dev/null
@@ -0,0 +1,10 @@
+Format: 1.0
+Source: itest-cases-gbs
+Version: 0.9
+Binary: itest-cases-gbs
+Maintainer: Junchun Guan <junchunx.guan@intel.com>
+Architecture: all
+Standards-Version: 3.7.1
+Build-Depends: debhelper (>= 4.0.0)
+Files:
+ fbc83a8141fd0e82412e968513c58cfe 6939 itest-cases-gbs_0.9.tar.gz
diff --git a/packaging/itest-cases-gbs.spec b/packaging/itest-cases-gbs.spec
new file mode 100644 (file)
index 0000000..f06a36f
--- /dev/null
@@ -0,0 +1,34 @@
+Name:       itest-cases-gbs
+Summary:    Cases for gbs functional testing
+Version:    0.9
+Release:    1
+Group:      Development/Tools/Other
+License:    GPLv2
+Source0:    %{name}_%{version}.tar.gz
+
+BuildArch:  noarch
+%if 0%{?suse_version}
+BuildRequires:  sudo
+Requires:   mozilla-nss
+%endif
+
+Requires:   lzma
+Requires:   zip
+Requires:   p7zip
+
+%description
+gbs functional test cases in format of itest
+
+%prep
+%setup -q -n %{name}-%{version}
+
+%build
+make build
+
+%install
+make PREFIX=%{buildroot} install
+
+%files
+%defattr(-,root,root,-)
+/srv/itest/
+%{_sysconfdir}/sudoers.d/itest_cases_gbs
diff --git a/report.html b/report.html
new file mode 100644 (file)
index 0000000..a8b7de8
--- /dev/null
@@ -0,0 +1,18 @@
+<%inherit file="base.html" />
+
+<%block name="after_overview">
+
+
+<h1 id="deps">Dependencies</h1>
+<table class="right">
+%for pkg, ver in status.deps:
+    <tr>
+        <th>${pkg}</th>
+        <td>${ver}</td>
+    </tr>
+%endfor
+</table>
+
+
+</%block>
+
diff --git a/settings.py b/settings.py
new file mode 100644 (file)
index 0000000..c10924e
--- /dev/null
@@ -0,0 +1,55 @@
+import os
+import shutil
+import random
+import platform
+import subprocess
+from glob import glob
+
+from itest.utils import check_output
+
+
+CWD = os.path.dirname(os.path.abspath(__file__))
+
+# set osc certifications
+OSC_CERT_DIR = os.path.expanduser('~/.config/osc/trusted-certs')
+OSC_CERT_FROM = os.path.join(CWD, 'fixtures', 'conf_fixtures')
+OSC_CERTS = [name.split('/')[-1] for name in glob(r'%s/*_[0-9]*.pem' % OSC_CERT_FROM)]
+
+if not os.path.exists(OSC_CERT_DIR):
+    os.makedirs(OSC_CERT_DIR)
+
+for osc_cert in OSC_CERTS:
+    if not os.path.exists(os.path.join(OSC_CERT_DIR, osc_cert)):
+        shutil.copy(os.path.join(OSC_CERT_FROM, osc_cert), OSC_CERT_DIR)
+
+SUDO_PASSWD = os.environ.get('ITEST_SUDO_PASSWD', '123456')
+
+
+def sample_files(path, k):
+    files = [ os.path.join(path, name) for name in os.listdir(path) ]
+    idx = random.sample(range(0, len(files)), min(k, len(files)))
+    return [ files[i] for i in idx ]
+
+def random_tests():
+    path = os.path.join(CWD, 'cases')
+    def squrash(a, b):
+        a.extend(b)
+        return a
+    return reduce(squrash, [ sample_files(os.path.join(path, comp), 2)
+        for comp in os.listdir(path) if os.path.isdir(os.path.join(path, comp))])
+
+SUITES = {
+    'fast': '!build&&!remotebuild',
+    'daily': '!remotebuild',
+    'pre-release': [
+        'fast',
+        os.path.join(CWD, 'cases', 'build', 'test_build_debug_ia32.case'),
+        os.path.join(CWD, 'cases', 'build', 'test_build_incremental_arm.case'),
+        os.path.join(CWD, 'cases', 'remotebuild', 'test_rb_-B_--status_and_--buildlog_function.case'),
+        ],
+    'random': random_tests(),
+    'ref-updated': 'random',
+    'patchset-created': 'random',
+}
+
+TZ = 'Asia/Shanghai'
diff --git a/sudoers.itest_cases_gbs b/sudoers.itest_cases_gbs
new file mode 100644 (file)
index 0000000..9b8effb
--- /dev/null
@@ -0,0 +1,16 @@
+Cmnd_Alias GBS = /bin/gbs, /usr/bin/gbs, /usr/local/bin/gbs
+Cmnd_Alias TEST = /bin/test, /usr/bin/test
+Cmnd_Alias USER = /usr/sbin/useradd, /usr/sbin/userdel
+Cmnd_Alias GIT = /usr/bin/git config --system user.*
+Cmnd_Alias FILE_ATTR = /bin/chown, /bin/chmod
+Cmnd_Alias RM = /bin/rm -rf /home/build/testspace, /bin/rm -rf /tmp/itestuser*, /bin/rm -rf tmp_buildroot, /bin/rm -rf /home/build/GBS-ROOT/*, /bin/rm -rf /home/build/buildroot*, /bin/rm -rf /var/tmp/*, /bin/rm -rf /root/GBS-ROOT/*
+Cmnd_Alias SED = /bin/sed
+Cmnd_Alias TEE = /usr/bin/tee
+Cmnd_Alias TOUCH = /bin/touch
+Cmnd_Alias CHROOT = /usr/bin/chroot, /usr/sbin/chroot
+Cmnd_Alias MNT = /bin/mount, /bin/umount
+Cmnd_Alias SU = /bin/su
+Cmnd_Alias FIND = /usr/bin/find
+Cmnd_Alias SH = /bin/sh
+
+build ALL=(ALL) NOPASSWD: GBS, TEST, USER, GIT, FILE_ATTR, RM, SED, TEE, TOUCH, CHROOT, MNT, SU, FIND, SH