From d4fdf292a8d5b616f3418fda8d9dbf9e5243e6de Mon Sep 17 00:00:00 2001 From: Matthew Johnson Date: Thu, 1 Feb 2018 16:05:19 -0800 Subject: [PATCH] Add CreateManifests tests for renames in manifests Signed-off-by: Matthew Johnson --- swupd/create_manifests_test.go | 98 ++++++++++++++++++++++++++++++++++ swupd/helpers_test.go | 2 +- 2 files changed, 99 insertions(+), 1 deletion(-) diff --git a/swupd/create_manifests_test.go b/swupd/create_manifests_test.go index a011462..8292e90 100644 --- a/swupd/create_manifests_test.go +++ b/swupd/create_manifests_test.go @@ -5,6 +5,7 @@ import ( "io/ioutil" "path/filepath" "regexp" + "strings" "testing" ) @@ -618,3 +619,100 @@ func TestCreateManifestsIndexInclude(t *testing.T) { checkManifestContains(t, testDir, "10", "test-bundle2", "includes:\tos-core-update-index") } + +func TestCreateManifestsDirectRenames(t *testing.T) { + testDir := mustSetupTestDir(t, "directRenames") + defer removeIfNoErrors(t, testDir) + + mustInitStandardTest(t, testDir, "0", "10", []string{"test-bundle"}) + mustGenFile(t, testDir, "10", "test-bundle", "foo", strings.Repeat("foo", 100)) + mustCreateManifestsStandard(t, 10, testDir) + + mustInitStandardTest(t, testDir, "10", "20", []string{"test-bundle"}) + mustGenFile(t, testDir, "20", "test-bundle", "bar", strings.Repeat("foo", 100)) + mustCreateManifestsStandard(t, 20, testDir) + + re := regexp.MustCompile("F\\.\\.r\t.*\t20\t/bar\n") + checkManifestMatches(t, testDir, "20", "test-bundle", re) + re = regexp.MustCompile("\\.d\\.r\t.*\t20\t/foo\n") + checkManifestMatches(t, testDir, "20", "test-bundle", re) +} + +func TestCreateManifestsRenamesNewHash(t *testing.T) { + testDir := mustSetupTestDir(t, "renamesNewHash") + defer removeIfNoErrors(t, testDir) + + mustInitStandardTest(t, testDir, "0", "10", []string{"test-bundle"}) + mustGenFile(t, testDir, "10", "test-bundle", "foo", strings.Repeat("foo", 100)) + mustCreateManifestsStandard(t, 10, testDir) + + mustInitStandardTest(t, testDir, "10", "20", []string{"test-bundle"}) + mustGenFile(t, testDir, "20", "test-bundle", "foo33", strings.Repeat("foo", 100)+"ch-ch-ch-changes") + mustCreateManifestsStandard(t, 20, testDir) + + re := regexp.MustCompile("F\\.\\.r\t.*\t20\t/foo33\n") + checkManifestMatches(t, testDir, "20", "test-bundle", re) + re = regexp.MustCompile("\\.d\\.r\t.*\t20\t/foo\n") + checkManifestMatches(t, testDir, "20", "test-bundle", re) +} + +func TestCreateManifestsRenamesOrphanedDeletes(t *testing.T) { + testDir := mustSetupTestDir(t, "renamesOrphanedDeletes") + defer removeIfNoErrors(t, testDir) + mustInitStandardTest(t, testDir, "0", "10", []string{"test-bundle"}) + mustGenFile(t, testDir, "10", "test-bundle", "direct", strings.Repeat("foo", 100)) + mustGenFile(t, testDir, "10", "test-bundle", "hashchange", strings.Repeat("boo", 100)) + mustCreateManifestsStandard(t, 10, testDir) + + mustInitStandardTest(t, testDir, "10", "20", []string{"test-bundle"}) + mustGenFile(t, testDir, "20", "test-bundle", "direct1", strings.Repeat("foo", 100)) + mustGenFile(t, testDir, "20", "test-bundle", "hashchange1", strings.Repeat("roo", 100)) + mustCreateManifestsStandard(t, 20, testDir) + + mustInitStandardTest(t, testDir, "20", "30", []string{"test-bundle"}) + mustCreateManifestsStandard(t, 30, testDir) + + res := []*regexp.Regexp{ + regexp.MustCompile("\\.d\\.\\.\t.*\t20\t/direct\n"), + regexp.MustCompile("\\.d\\.\\.\t.*\t30\t/direct1\n"), + regexp.MustCompile("\\.d\\.\\.\t.*\t20\t/hashchange\n"), + regexp.MustCompile("\\.d\\.\\.\t.*\t30\t/hashchange1\n"), + } + checkManifestMatches(t, testDir, "30", "test-bundle", res...) +} + +func TestCreateRenamesOrphanedChain(t *testing.T) { + testDir := mustSetupTestDir(t, "renamesOrphanedChain") + defer removeIfNoErrors(t, testDir) + mustInitStandardTest(t, testDir, "0", "10", []string{"test-bundle"}) + mustGenFile(t, testDir, "10", "test-bundle", "direct", strings.Repeat("foo", 100)) + mustGenFile(t, testDir, "10", "test-bundle", "hashchange", strings.Repeat("boo", 100)) + mustCreateManifestsStandard(t, 10, testDir) + + mustInitStandardTest(t, testDir, "10", "20", []string{"test-bundle"}) + mustGenFile(t, testDir, "20", "test-bundle", "direct1", strings.Repeat("foo", 100)) + mustGenFile(t, testDir, "20", "test-bundle", "hashchange1", strings.Repeat("roo", 100)) + mustCreateManifestsStandard(t, 20, testDir) + + mustInitStandardTest(t, testDir, "20", "30", []string{"test-bundle"}) + mustGenFile(t, testDir, "30", "test-bundle", "direct2", strings.Repeat("foo", 100)) + mustGenFile(t, testDir, "30", "test-bundle", "hashchange2", strings.Repeat("goo", 100)) + mustCreateManifestsStandard(t, 30, testDir) + + res := []*regexp.Regexp{ + // direct deleted + regexp.MustCompile("\\.d\\.\\.\t.*\t20\tdirect\n"), + // direct1 is now rename-from + regexp.MustCompile("\\.d\\.r\t.*\t30\tdirect1\n"), + // direct2 is now rename-to + regexp.MustCompile("F\\.\\.r\t.*\t30\tdirect2\n"), + + // hashchange deleted + regexp.MustCompile("\\.d\\.\\.\t.*\t20\thashchange\n"), + // hashchange1 now rename-from + regexp.MustCompile("\\.d\\.r\t.*\t30\thashchange1\n"), + // hashchange2 now rename-to + regexp.MustCompile("F\\.\\.r\t.*\t30\thashchange2\n"), + } + checkManifestMatches(t, testDir, "30", "test-bundle", res...) +} diff --git a/swupd/helpers_test.go b/swupd/helpers_test.go index 08ca2db..5166a46 100644 --- a/swupd/helpers_test.go +++ b/swupd/helpers_test.go @@ -298,7 +298,7 @@ func checkManifestMatches(t *testing.T, testDir, ver, name string, res ...*regex for _, re := range res { if !re.Match(b) { - t.Errorf("%v not found in %s/Manifest.%s", re.String(), ver, name) + t.Errorf("%v not found in %s", re.String(), manFpath) } } }