| Commit message (Collapse) | Author | Age | Files | Lines |
| |
|
|
|
|
|
|
| |
A pretty simple test case to avoid regressions in corner cases.
Signed-off-by: Jean Delvare <jdelvare@suse.de>
|
|
|
|
|
|
|
|
|
|
|
| |
Use a variable (QUILT_PC) instead of hard-coding ".pc" as the name of
the directory where quilt stores the state of the working tree
throughout the test suite. We still set that variable to ".pc" to
make it easier to investigate failed test cases, but at least this
allows us to promptly test that QUILT_PC can actually be set to any
other value and quilt still works.
Signed-off-by: Jean Delvare <jdelvare@suse.de>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
By default, we continue running tests even after a failure, to make
diagnostics easier. If a chdir command fails, there is a chance that
subsequent chdir commands could accidentally move outside the
temporary directory where the test is being run, and then we start
messing up with the host's files.
In general, the consequence is to leave garbage files and directories
behind. However, some of the files can have side effects (for example
a "series" file or a "patches" directory could confuse quilt later),
and in theory this could also lead to the corruption or deletion of
existing files, which is pretty bad.
So add a safety check after every chdir command that we are still
inside the test case's working directory. If not, stop the test
immediately.
Note: this is not about being 100% safe and bullet-proof. The only
way to achieve this would be to use chroot or even containers. We
still need to trust the test cases to not do anything nasty on
purpose. This is only protecting against good test cases going wild on
failure.
Signed-off-by: Jean Delvare <jdelvare@suse.de>
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
When editing the series file with certain editors, it is possible that
no trailing newline character is present on the last line. In such
case, adding a new patch at the end of the series would corrupt the
series file. Prevent that by ensuring that a newline character is
always present.
This fixes the second issue reported in bug #54295:
https://savannah.nongnu.org/bugs/?54295
Signed-off-by: Jean Delvare <jdelvare@suse.de>
|
|
|
|
|
|
|
| |
If the user hits Ctrl+C while a test is running, don't leave our
working directory behind.
Signed-off-by: Jean Delvare <jdelvare@suse.de>
|
|
|
|
|
|
| |
Being a little more verbose when mkdir or chdir fails, can't hurt.
Signed-off-by: Jean Delvare <jdelvare@suse.de>
|
|
|
|
|
| |
Increase the code path coverage of test case space-in-work-dir by
running one command from a subdirectory.
|
|
|
|
|
|
|
|
|
| |
Don't choke if the series file name contains a space or any other
special character. "$SERIES" was already quoted in various places, do
it consistently so that quilt will work in this situation. And add a
basic test case to verify that it actually works.
Signed-off-by: Jean Delvare <jdelvare@suse.de>
|
|
|
|
|
|
|
|
|
|
| |
When using an alternative QUILT_PATCHES value, we can't use %{P} in
the test case, because P is set in the Makefile before the test case
has a chance to redefine QUILT_PATCHES. Instead we have to make the
prefix optional in the output of the quilt commands, so that the test
will succeed regardless of QUILT_PATCHES_PREFIX being set or not.
Signed-off-by: Jean Delvare <jdelvare@suse.de>
|
|
|
|
|
|
|
|
|
|
|
| |
There is no point in defining P and _P in the Makefile to allow for
QUILT_PATCHES_PREFIX to be set or unset if we do not use these
variables consistently in the test suite. Replace hardcoded
"patches/" with %{P} or %{_P} throughout the test suite wherever
relevant so that unsetting QUILT_PATCHES_PREFIX in test.quiltrc
actually works.
Signed-off-by: Jean Delvare <jdelvare@suse.de>
|
|
|
|
|
|
|
|
|
| |
%{P} only makes sense when checking the output of a quilt command.
The value of QUILT_PATCHES_PREFIX can obviously not affect what the
user is writing on the command line, nor the output of other
commands.
Signed-off-by: Jean Delvare <jdelvare@suse.de>
|
|
|
|
|
|
|
|
|
|
| |
The basename call in function diff_file would fail if any component
of the path has a space in its name.
This fixes bug #50862:
https://savannah.nongnu.org/bugs/?50862
Signed-off-by: Jean Delvare <jdelvare@suse.de>
|
|
|
|
|
|
|
|
|
|
|
|
| |
When editing a patch header with certain editors, it is possible that
no trailing newline character is present on the last line. In such
case, the patch would be corrupted. Prevent that by ensuring that a
newline character is always present.
This fixes bug #50841:
https://savannah.nongnu.org/bugs/?50841
Signed-off-by: Jean Delvare <jdelvare@suse.de>
|
|
|
|
|
|
|
| |
/bin/sh may not include a line number in its error messages, fix the
filtering when it does not.
Signed-off-by: Jean Delvare <jdelvare@suse.de>
|
|
|
|
|
|
|
|
|
|
| |
Curly braces in perl regex are supposed to be escaped, recent
versions of perl complain when they aren't:
Unescaped left brace in regex is deprecated, passed through in regex; marked by <-- HERE in m/%{ <-- HERE (\w+)}/ at ./run line 114.
Unescaped left brace in regex is deprecated, passed through in regex; marked by <-- HERE in m/%{ <-- HERE \?}/ at ./run line 290.
Signed-off-by: Jean Delvare <jdelvare@suse.de>
|
|
|
|
|
|
|
|
| |
Add an option to keep the working directory after a test has failed.
Also include the test name in the working directory name to make it
easier to figure out which test failed later.
Signed-off-by: Jean Delvare <jdelvare@suse.de>
|
|
|
|
|
| |
"quilt refresh" reports diff failures to the user. "quilt diff"
should do the same.
|
|
|
|
|
|
|
|
| |
If QUILT_PATCHES or QUILT_SERIES are set both in ~/.quiltrc and
.pc/.quilt_patches (respectively .pc/.quilt_series), the former
currently takes precedence. This pretty much voids the value of
per-project settings. Project settings should have the highest
priority.
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
Let function cat_to_new_file optionally backup the destination file
before overwriting it. This has two advantages:
* This avoids duplicating code on the caller's side. Functions header
and refresh both need to perform a backup.
* This guarantees the consistency of the backup logic. At the moment,
the refresh command would handle the backup of a symlinked file
just fine while the header command would misbehave in that case.
Now that the header command handles symlinked patches properly, also
test it so that we don't break it accidentally later.
|
|
|
|
|
| |
Extend the hard-linked patch test case to also check the behavior
when updating the header of such a patch.
|
|
|
|
| |
Add a test case for backup failure to the test suite.
|
|
|
|
|
|
|
| |
"mv" may or may not overwrite a read-only file by default, depending
on whether or not it is considered to be interactive. Removing the
file explicitly before avoids that uncertainty and makes it easier to
play the test case manually.
|
|
|
|
|
|
| |
In the general case, when doing a backup copy of a patch on refresh,
the modification time of the file is preserved. We should do the same
when the patch is a symbolic link.
|
|
|
|
|
|
|
|
| |
We just changed the behavior of the refresh command to no longer
break symbolic links. While preserving the links is the right thing
to do in the general case, this approach fails if the patch file is
read-only. In that case we want to replace the link itself with the
refreshed patch, as we used to.
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
Change the core behavior of quilt to not remove symlinks to the patch
files.
Historical notes:
This is an 6 year old patch that is still actively used for the
Yocto Project and others.
http://lists.nongnu.org/archive/html/quilt-dev/2008-01/msg00004.html
Revised again here:
http://comments.gmane.org/gmane.comp.handhelds.openembedded/34224
[Edited by Jean Delvare: removed a compatibility option, we'll
introduce it only if users ask for it. Also cleaned up the test
case a bit.]
Signed-off-by: Jason Wessel <jason.wessel@windriver.com>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
There is one corner case which is not properly handled by the "edit"
command. If a patch deletes a file, and the user calls "quilt edit"
on that file but does not actually add anything back to it, "quilt
remove" is called on the file when the editor exits. This causes
the file to be restored to its original state before the patch deleted
it. The user never asked for that, so the file should be left to its
deleted state in this case. The file must only be removed from the
patch if it was not part of the patch originally.
The same problem would occur if the editor deleted the file. In
general text editors don't do that, they'd leave an empty file
instead, but nothing prevents them from actually deleting the file so
we should handle this case properly too.
|
|
|
|
|
|
|
|
|
|
|
| |
Commit f1c186ee renamed command "remove" to "revert". Commit bd1dfdab
changed the semantics of command "revert". Commit 6d2501ac restored
command "remove". However command "edit" is still calling command
"revert" to remove files from the patch when it should be using
command "remove".
This case was not covered by the test suite, which is why the bug was
not spotted earlier.
|
|
|
|
|
|
|
|
|
| |
Cover one more use case of the "edit" command in the test case: file
creation.
Also reorder some of the commands to make the tests easier to follow.
The intent is easier to understand when the result is tested after
each command.
|
|
|
|
|
| |
Merge the two revert test cases into a single, complete and commented
test file.
|
|
|
|
| |
Add coverage of the multi-line header case to the mail test case.
|
|
|
|
|
|
| |
If a patch file has hard links, refreshing it should break the links
so that the other copies are left unmodified. Test this behavior to
avoid breaking it accidentally.
|
|
|
|
|
| |
Add an option to automatically refresh each patch after is was
successfully applied.
|
|
|
|
|
| |
Add an option to automatically refresh each patch before it gets
unapplied.
|
|
|
|
|
|
|
|
| |
If the series file is inconsistent, "quilt pop" will disable the
consistency check as it updates the timestamp of the database file.
It's OK if all patches are popped. If not then the series file may
still be inconsistent. In that case, we want to update the timestamp
of the series file, to rearm the consistency check.
|
|
|
|
|
|
|
|
|
| |
"quilt push 0" returns the following cryptic message:
Now at patch patches/quilt
So add the same check we already have in command pop and detect when
nothing needs to be done, returning the more sane message:
No patch applied
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
Quilt allows manual changes to the series file to some degree. For
example, adding comments or reordering patches in the unapplied
section of the series file is OK. However, changing the order of
applied patches breaks a number of assumptions and can cause quilt to
produce unexpected or confusing results.
For example, starting from this:
+ patches/01.patch
= patches/02.patch
patches/03.patch
patches/04.patch
and moving the last patch at the beginning of the series file,
"quilt series -v" will print:
+ patches/04.patch
+ patches/01.patch
= patches/02.patch
patches/03.patch
That is, it will claim that 04.patch is applied, while it it not.
Likewise, 04.patch would be listed by neither "quilt applied" nor
"quilt unapplied".
While addressing all such cases would certainly be possible, that
would require a significant amount of work, and would come with
performance penalties. It would also be difficult to be certain that
all issues have been found and addressed. So it seems more reasonable
to simply spot such manual changes to the series file and ask the user
to pop all patches to start from a clean state as needed.
|
| |
|
|
|
|
|
|
| |
We already have a function to figure out which files are touched by
unapplied patches. The only thing missing to let the user call "quilt
files" on unapplied patches was two small spots of glue.
|
|
|
|
|
| |
Now that the patches command works with context patches, we can test
that.
|
|
|
|
|
|
|
| |
The version check is irrelevant when running "quilt setup", as it is
creating a brand new working tree anyway.
Reported by Petr Tesarik.
|
|
|
|
|
|
|
|
| |
diff might be called by a different name if the configure script was
invoked with the --with-diff argument. Make the permissions test in
faildiff.test match other names as well.
Signed-off-by: Kent R. Spillner <kspillner@acm.org>
|
| |
|
|
|
|
|
| |
Create directory "patches" so that quilt commands get the right root
even if patch-wrapper fails.
|
|
|
|
|
|
|
|
|
|
| |
The heuristic to find file names in unapplied patches fails miserably
on all patches with timestamps. We have to consider everything past
the last tab as the timestamp and strip it. The timestamp itself will
contain spaces so we can't split on that.
This fixes a regression introduced by commit 4df47975. It's hard to
believe this has been broken for over 4 years and nobody ever noticed.
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
Old versions of bash (at least version 3.2.51) don't properly handle
prefix stripping together with quoting when evaluating an array. So
strip the prefix before adding each file to opt_files. It's faster
anyway.
Same thing when diffing against a snapshot, strip the snapshot
directory prefix from file names before evaluating the quoted files
array.
This fixes a regression introduced in:
commit b0baeeb6b61132af92fd75df5f912554d295dee1
Author: Jean Delvare <jdelvare@suse.de>
Date: Fri Mar 25 18:48:49 2011 +0100
diff, refresh: Accept file names with spaces
(Only affecting the versions of bash which have the aforementioned bug.)
This also fixes a bug when called from a subdirectory and a file
passed as an argument starts with "./".
Extend the test suite to test both cases, so that such bugs can't
sneak in in the future.
|
|
|
|
|
| |
Test the top and previous of patches with unusual names. Also test a
few more unusual characters.
|
|
|
|
|
|
|
|
|
|
| |
In the case of a generated or manually tweaked series file, it can
happen that the same patch shows up twice in the series file. Check
for this before pushing any patch, otherwise we would corrupt quilt's
internal database.
This fixes bug #20628:
https://savannah.nongnu.org/bugs/?20628
|
|
|
|
| |
These instructions no longer works.
|
|
|
|
| |
%{P} already has a trailing slash.
|