Commit Graph

324 Commits

Author SHA1 Message Date
Vincent Batts 83dff044b3 make: add a specific target for tags
Signed-off-by: Vincent Batts <vbatts@hashbangbash.com>
2016-12-07 20:03:41 -05:00
Vincent Batts e2575bffa5 Merge pull request #101 from vbatts/golang_vis
Golang implementation of vis() and unvis()
2016-12-07 16:28:06 -05:00
Vincent Batts 05a295f267
test: discovered vet issue, masked by tags
Signed-off-by: Vincent Batts <vbatts@hashbangbash.com>
2016-12-07 16:26:04 -05:00
Vincent Batts 812981d95d
vis: switch to the golang vis by default
and have the C vis()/unvis() available as a 'cvis' build tag.

Signed-off-by: Vincent Batts <vbatts@hashbangbash.com>
2016-12-07 16:16:30 -05:00
Vincent Batts 08b1000418
vis: adding a pure golang Vis()
The current Vis() and Unvis() are using the C implementation from
MTREE(8).

But that means that cgo is used, which is not always desired.

Signed-off-by: Vincent Batts <vbatts@hashbangbash.com>
2016-12-07 16:12:28 -05:00
Vincent Batts e42c679e89 Merge pull request #100 from vbatts/test
cli.test: add case from #90
2016-11-30 21:50:47 -05:00
Vincent Batts e2640e6dfa
cli.test: add case from #90
Closes #90

Signed-off-by: Vincent Batts <vbatts@hashbangbash.com>
2016-11-30 21:41:39 -05:00
Vincent Batts efe17f56ae Merge pull request #99 from vbatts/cli.test
cli.test: fail on cli tests
2016-11-29 13:59:59 +00:00
Vincent Batts f49f66f61e
cli.test: fail on cli tests
This cleans up the Makefile target, and drops the dependency to point to
the $root path of the repo.

Fixes https://github.com/vbatts/go-mtree/issues/98

Reported-by: Aleksa Sarai <asarai@suse.de>
Signed-off-by: Vincent Batts <vbatts@hashbangbash.com>
2016-11-22 10:57:47 -05:00
Vincent Batts 13131d516b Merge pull request #97 from vbatts/carry_pr91
cmd/gomtree/main.go: Handle Extra and Missing cases
2016-11-18 10:28:15 -05:00
Brent Baude 1b0ba0d70f cmd/gomtree/main.go: Handle Extra and Missing cases
The BSD format needed a slight tweak to handle mtree.Extra
and mtree.Missing cases.  It currently only handled the 'Modified'
cases and therefore was not showing missing or extra files during
validation.
2016-11-18 09:55:27 -05:00
Vincent Batts b6ed8e415d Merge pull request #95 from vbatts/carry_pr87
entries: comment with keyword metadata
2016-11-17 23:51:58 -05:00
Aleksa Sarai 408b615c3c entries: comment with keyword metadata
Since not every keyword applies to every type entry, include a comment
with the keywords the manifest was generated with.

Signed-off-by: Aleksa Sarai <asarai@suse.de>
Signed-off-by: Vincent Batts <vbatts@hashbangbash.com>
2016-11-17 23:45:45 -05:00
Vincent Batts a6df651d88 Merge pull request #94 from vbatts/readme
README: add info on running the tests
2016-11-17 23:29:08 -05:00
Vincent Batts 68a1a615b9 README: add info on running the tests
Signed-off-by: Vincent Batts <vbatts@hashbangbash.com>
2016-11-18 04:25:16 +00:00
Vincent Batts 71b81f3ced Merge pull request #88 from vbatts/xattr_bsd
xattr: tests for non-linux
2016-11-17 23:18:44 -05:00
Vincent Batts 81e5c5c8f0 Merge pull request #93 from vbatts/flags
Exclude non-directories
2016-11-17 22:47:36 -05:00
Vincent Batts e76196a6d6 xattr: tests for non-linux
Signed-off-by: Vincent Batts <vbatts@hashbangbash.com>
2016-11-18 03:47:11 +00:00
Vincent Batts c0a5cb25ec
-d: exclude non-directories
Adding flag, and supporting functionality for exluding entries that are
non-directories

Signed-off-by: Vincent Batts <vbatts@hashbangbash.com>
2016-11-17 22:43:02 -05:00
Vincent Batts 353436a031
main: group flag variables
Signed-off-by: Vincent Batts <vbatts@hashbangbash.com>
2016-11-17 22:00:23 -05:00
Vincent Batts f51a3381de Merge pull request #92 from vbatts/keyword
Keyword overhaul
2016-11-17 21:58:04 -05:00
Vincent Batts 21723a3974
*: fix comparison of missing keywords
Adding another test validated from the FreeBSD workflow.

Just because the keywords requested to be validated are not present in
the manifest, it is not an error.
Also, if the keywords from a new manifest are not present in a prior
manifest, then only compare the common keywords.

Fixes https://github.com/vbatts/go-mtree/issues/86

Signed-off-by: Vincent Batts <vbatts@hashbangbash.com>
2016-11-17 21:38:10 -05:00
Vincent Batts 4eec68be4b
*: make Keyword and KeyVal pervasive
Signed-off-by: Vincent Batts <vbatts@hashbangbash.com>
2016-11-17 21:38:01 -05:00
Vincent Batts 5d26726bb1
keyword: unify keyword synonyms
Signed-off-by: Vincent Batts <vbatts@hashbangbash.com>
2016-11-16 15:42:53 -05:00
Vincent Batts 627c6e9ddd
DirectoryHierarchy: UsedKeywords is a of the struct
Signed-off-by: Vincent Batts <vbatts@hashbangbash.com>
2016-11-16 14:43:05 -05:00
Vincent Batts a8e4475c5e
*: clean up
* Get rid of the isErr func in main()
* put main() logic closer to the top

Signed-off-by: Vincent Batts <vbatts@hashbangbash.com>
2016-11-16 14:22:12 -05:00
Vincent Batts 690c85d4e8 Merge pull request #48 from cyphar/core-manifest-diff
mtree: implement manifest comparisons
2016-11-11 12:01:49 -05:00
Vincent Batts 0fd0d3ed55 Merge pull request #85 from cyphar/fix-symlink-keyword
keywords: safely encode symlink keywords
2016-11-11 11:54:06 -05:00
Aleksa Sarai 704d91fc7c
keywords: safely encode symlink keywords
symlink(2) is a very dumb syscall, and allows you to put any damn value
you please inside a symlink. In addition, spaces are valid path
characters which causes issues with keyword parsing. So use Vis() and
Unvis() to safely store an encoded version of the path.

This also adds a cli test for this behaviour.

Signed-off-by: Aleksa Sarai <asarai@suse.de>
2016-11-12 01:52:37 +11:00
Aleksa Sarai 3bfdecf467
gomtree: add special cases for tar generation checking
Due to several unsolveable problems in tar generation, such as the
size=... keyword, we have to special case quite a few things in the
checking code. We might want to move this to mtree properly (but I'm
hesitant about ignoring errors that only happen for tar DHes).

Signed-off-by: Aleksa Sarai <asarai@suse.de>
2016-11-10 12:41:23 +11:00
Aleksa Sarai d214ab47e8
check: re-implement *Check() using Compare()
This removes all of the special handling code for both TarCheck() and
Check() so that everything now uses the new (generic) Compare() code. In
addition, the tests had to be modified to reflect the new classes of
errors.

Signed-off-by: Aleksa Sarai <asarai@suse.de>
2016-11-10 11:30:06 +11:00
Aleksa Sarai c4be8dfe32
compare: implement proper testing with tar
While the full testing is broken due to bugs in the tar DH generator, we
ignore known bugs in the tar generator to at least allow us to test some
of the other semantics of Compare.

Signed-off-by: Aleksa Sarai <asarai@suse.de>
2016-11-10 11:30:06 +11:00
Aleksa Sarai d7f49531f8
gomtree: switch to using compare
Switch the commandline to use the .Compare() API when checking
specification files against the state of a tar archive or other archive.
The main purpose is to completely remove the check.go code from being
necessary (outside of a wrapper).

Signed-off-by: Aleksa Sarai <asarai@suse.de>
2016-11-10 11:30:06 +11:00
Aleksa Sarai 26ff922da6
compare: implement mtree.DirectoryHierarchy comparisons
This is part of a patchset that refactors all of the checking logic into
comparison operations. Essentially, provide a Compare(...) function that
allows for two different manifests to be compared. Extra and missing
entries are supported in addition to the standard modified entry, and by
implementing as a manifest comparison there is no double-scanning of the
manifest source.

The main annoyance is that we have to also include tar_time handling,
which has not been abstracted inside keywords.go. This is a bit ugly
right now, but works fine for the moment.

Signed-off-by: Aleksa Sarai <asarai@suse.de>
2016-11-10 11:30:06 +11:00
Aleksa Sarai 36372dd3c8
mtree: remove use of dhCreator for iterators
Fix a bug in the parser that caused all iterators to have to handle the
/set and /unset semantics separately. In addition, provide a helper
function to correctly generate the merged set of keywords for a
particular entry.

Signed-off-by: Aleksa Sarai <asarai@suse.de>
2016-11-10 11:30:06 +11:00
Vincent Batts 30ae0132eb Merge pull request #82 from vbatts/test
Add cli tests to the validation
2016-11-07 07:44:43 -08:00
Vincent Batts 0805fd4bb1
travis: use the whole validation
Signed-off-by: Vincent Batts <vbatts@hashbangbash.com>
2016-11-07 10:40:20 -05:00
Vincent Batts b83c40e7f9
test: add basic cli test
tar and filesystem check

Signed-off-by: Vincent Batts <vbatts@hashbangbash.com>
2016-11-07 10:40:12 -05:00
Vincent Batts 85eacd2163
Makefile: add easy target for validation
Hopefully soon adding integration tests for the cli

Signed-off-by: Vincent Batts <vbatts@hashbangbash.com>
2016-11-05 12:43:00 -04:00
Vincent Batts 4f26a7e254 Merge pull request #81 from cyphar/fix-keyword-nanosecond-time
keywords: correctly handle time keywords
2016-11-01 14:03:08 +00:00
Aleksa Sarai d0f7e8cb8b
keywords: correctly handle time keywords
Previously, the time generation code would inexplicably drop parts of
the nanotime -- potentially causing validation to succeed when it should
fail. This was probably do to a bug in the remainder logic, but instead
we should be using .Nanosecond() anyway.

After changing the time of a file with a test case like this:

    // Change the time to something known with nanosec != 0.
    chtime := time.Unix(100, 987654321)
    if err := os.Chtimes("somefile", chtime, chtime); err != nil {
	// panic
    }

timeKeywordFunc() would return the wrong value (time=100.000000021).
This fixes the issue and adds a test case.

Signed-off-by: Aleksa Sarai <asarai@suse.de>
2016-11-01 17:47:06 +11:00
Vincent Batts c5fc89d0f1 Merge pull request #80 from vbatts/bsd_compat
keywords: BSD compat for a few keywords
2016-10-31 18:13:33 +00:00
Vincent Batts 3732fa351f Merge pull request #79 from vbatts/bsd_flags
keywords: don't fail on presence of "flags"
2016-10-31 17:48:02 +00:00
Vincent Batts e45837faea
keywords: don't fail on presence of "flags"
BSD file's support "flags". These have some similarity with xattr, but
for specific features, rather than general purpose key/values.

Signed-off-by: Vincent Batts <vbatts@hashbangbash.com>
2016-10-31 13:25:11 -04:00
Vincent Batts b493e2920f keywords: BSD compat for a few keywords
Signed-off-by: Vincent Batts <vbatts@hashbangbash.com>
2016-10-31 14:10:42 +00:00
Vincent Batts 84f1e6ebc6 Merge pull request #78 from vbatts/update_golang
travis: update versions of golang
2016-10-31 13:47:21 +00:00
Vincent Batts 8672a4bc93
travis: update versions of golang
Signed-off-by: Vincent Batts <vbatts@hashbangbash.com>
2016-10-31 09:42:23 -04:00
Vincent Batts 8c6b32c842 Merge pull request #74 from vbatts/fix_digest_symlink
keywords: fix xattrs for broken symlinks
2016-09-01 15:54:19 -04:00
Vincent Batts c805a855bd
keywords: fix xattrs for broken symlinks
Signed-off-by: Vincent Batts <vbatts@hashbangbash.com>
2016-09-01 15:52:24 -04:00
Vincent Batts 3aa50a7a50 Merge pull request #73 from stephen679/tar_cleanup
tar: remove completed TODO's and dead code
2016-08-21 16:15:14 -04:00