summaryrefslogtreecommitdiffstats
path: root/bitbake/lib/bb/tests/fetch.py
diff options
context:
space:
mode:
Diffstat (limited to 'bitbake/lib/bb/tests/fetch.py')
-rw-r--r--bitbake/lib/bb/tests/fetch.py104
1 files changed, 104 insertions, 0 deletions
diff --git a/bitbake/lib/bb/tests/fetch.py b/bitbake/lib/bb/tests/fetch.py
index 62b88f1380..d711c77d35 100644
--- a/bitbake/lib/bb/tests/fetch.py
+++ b/bitbake/lib/bb/tests/fetch.py
@@ -20,6 +20,7 @@
20# 20#
21 21
22import unittest 22import unittest
23import hashlib
23import tempfile 24import tempfile
24import subprocess 25import subprocess
25import collections 26import collections
@@ -522,6 +523,109 @@ class FetcherLocalTest(FetcherTest):
522 with self.assertRaises(bb.fetch2.UnpackError): 523 with self.assertRaises(bb.fetch2.UnpackError):
523 self.fetchUnpack(['file://a;subdir=/bin/sh']) 524 self.fetchUnpack(['file://a;subdir=/bin/sh'])
524 525
526class FetcherNoNetworkTest(FetcherTest):
527 def setUp(self):
528 super().setUp()
529 # all test cases are based on not having network
530 self.d.setVar("BB_NO_NETWORK", "1")
531
532 def test_missing(self):
533 string = "this is a test file\n".encode("utf-8")
534 self.d.setVarFlag("SRC_URI", "md5sum", hashlib.md5(string).hexdigest())
535 self.d.setVarFlag("SRC_URI", "sha256sum", hashlib.sha256(string).hexdigest())
536
537 self.assertFalse(os.path.exists(os.path.join(self.dldir, "test-file.tar.gz")))
538 self.assertFalse(os.path.exists(os.path.join(self.dldir, "test-file.tar.gz.done")))
539 fetcher = bb.fetch.Fetch(["http://invalid.yoctoproject.org/test-file.tar.gz"], self.d)
540 with self.assertRaises(bb.fetch2.NetworkAccess):
541 fetcher.download()
542
543 def test_valid_missing_donestamp(self):
544 # create the file in the download directory with correct hash
545 string = "this is a test file\n".encode("utf-8")
546 with open(os.path.join(self.dldir, "test-file.tar.gz"), "wb") as f:
547 f.write(string)
548
549 self.d.setVarFlag("SRC_URI", "md5sum", hashlib.md5(string).hexdigest())
550 self.d.setVarFlag("SRC_URI", "sha256sum", hashlib.sha256(string).hexdigest())
551
552 self.assertTrue(os.path.exists(os.path.join(self.dldir, "test-file.tar.gz")))
553 self.assertFalse(os.path.exists(os.path.join(self.dldir, "test-file.tar.gz.done")))
554 fetcher = bb.fetch.Fetch(["http://invalid.yoctoproject.org/test-file.tar.gz"], self.d)
555 fetcher.download()
556 self.assertTrue(os.path.exists(os.path.join(self.dldir, "test-file.tar.gz.done")))
557
558 def test_invalid_missing_donestamp(self):
559 # create an invalid file in the download directory with incorrect hash
560 string = "this is a test file\n".encode("utf-8")
561 with open(os.path.join(self.dldir, "test-file.tar.gz"), "wb"):
562 pass
563
564 self.d.setVarFlag("SRC_URI", "md5sum", hashlib.md5(string).hexdigest())
565 self.d.setVarFlag("SRC_URI", "sha256sum", hashlib.sha256(string).hexdigest())
566
567 self.assertTrue(os.path.exists(os.path.join(self.dldir, "test-file.tar.gz")))
568 self.assertFalse(os.path.exists(os.path.join(self.dldir, "test-file.tar.gz.done")))
569 fetcher = bb.fetch.Fetch(["http://invalid.yoctoproject.org/test-file.tar.gz"], self.d)
570 with self.assertRaises(bb.fetch2.NetworkAccess):
571 fetcher.download()
572 # the existing file should not exist or should have be moved to "bad-checksum"
573 self.assertFalse(os.path.exists(os.path.join(self.dldir, "test-file.tar.gz")))
574
575 def test_nochecksums_missing(self):
576 self.assertFalse(os.path.exists(os.path.join(self.dldir, "test-file.tar.gz")))
577 self.assertFalse(os.path.exists(os.path.join(self.dldir, "test-file.tar.gz.done")))
578 # ssh fetch does not support checksums
579 fetcher = bb.fetch.Fetch(["ssh://invalid@invalid.yoctoproject.org/test-file.tar.gz"], self.d)
580 # attempts to download with missing donestamp
581 with self.assertRaises(bb.fetch2.NetworkAccess):
582 fetcher.download()
583
584 def test_nochecksums_missing_donestamp(self):
585 # create a file in the download directory
586 with open(os.path.join(self.dldir, "test-file.tar.gz"), "wb"):
587 pass
588
589 self.assertTrue(os.path.exists(os.path.join(self.dldir, "test-file.tar.gz")))
590 self.assertFalse(os.path.exists(os.path.join(self.dldir, "test-file.tar.gz.done")))
591 # ssh fetch does not support checksums
592 fetcher = bb.fetch.Fetch(["ssh://invalid@invalid.yoctoproject.org/test-file.tar.gz"], self.d)
593 # attempts to download with missing donestamp
594 with self.assertRaises(bb.fetch2.NetworkAccess):
595 fetcher.download()
596
597 def test_nochecksums_has_donestamp(self):
598 # create a file in the download directory with the donestamp
599 with open(os.path.join(self.dldir, "test-file.tar.gz"), "wb"):
600 pass
601 with open(os.path.join(self.dldir, "test-file.tar.gz.done"), "wb"):
602 pass
603
604 self.assertTrue(os.path.exists(os.path.join(self.dldir, "test-file.tar.gz")))
605 self.assertTrue(os.path.exists(os.path.join(self.dldir, "test-file.tar.gz.done")))
606 # ssh fetch does not support checksums
607 fetcher = bb.fetch.Fetch(["ssh://invalid@invalid.yoctoproject.org/test-file.tar.gz"], self.d)
608 # should not fetch
609 fetcher.download()
610 # both files should still exist
611 self.assertTrue(os.path.exists(os.path.join(self.dldir, "test-file.tar.gz")))
612 self.assertTrue(os.path.exists(os.path.join(self.dldir, "test-file.tar.gz.done")))
613
614 def test_nochecksums_missing_has_donestamp(self):
615 # create a file in the download directory with the donestamp
616 with open(os.path.join(self.dldir, "test-file.tar.gz.done"), "wb"):
617 pass
618
619 self.assertFalse(os.path.exists(os.path.join(self.dldir, "test-file.tar.gz")))
620 self.assertTrue(os.path.exists(os.path.join(self.dldir, "test-file.tar.gz.done")))
621 # ssh fetch does not support checksums
622 fetcher = bb.fetch.Fetch(["ssh://invalid@invalid.yoctoproject.org/test-file.tar.gz"], self.d)
623 with self.assertRaises(bb.fetch2.NetworkAccess):
624 fetcher.download()
625 # both files should still exist
626 self.assertFalse(os.path.exists(os.path.join(self.dldir, "test-file.tar.gz")))
627 self.assertFalse(os.path.exists(os.path.join(self.dldir, "test-file.tar.gz.done")))
628
525class FetcherNetworkTest(FetcherTest): 629class FetcherNetworkTest(FetcherTest):
526 @skipIfNoNetwork() 630 @skipIfNoNetwork()
527 def test_fetch(self): 631 def test_fetch(self):