Files
GitList/tests/unit/SCM/Diff/ParseTest.php
2022-01-14 23:17:34 -05:00

152 lines
5.2 KiB
PHP

<?php
declare(strict_types=1);
namespace GitList\SCM\Diff;
use PHPUnit\Framework\TestCase;
class ParseTest extends TestCase
{
public const RAW_DIFF_BLOCK = <<<DIFF
diff --git a/mm/cma.c b/mm/cma.c
index c960459..c17751c 100644
--- a/mm/cma.c
+++ b/mm/cma.c
@@ -23,7 +23,6 @@
# define DEBUG
#endif
#endif
-#define CREATE_TRACE_POINTS
#include <linux/memblock.h>
#include <linux/err.h>
@@ -33,56 +32,46 @@
#include <linux/slab.h>
#include <linux/log2.h>
#include <linux/cma.h>
-#include <linux/highmem.h>
-#include <linux/io.h>
-#include <trace/events/cma.h>
-#include "cma.h"
+struct cma {
+ unsigned long base_pfn;
+ unsigned long count;
+ unsigned long *bitmap;
+ unsigned int order_per_bit; /* Order of pages represented by one bit */
+ struct mutex lock;
+};
-struct cma cma_areas[MAX_CMA_AREAS];
-unsigned cma_area_count;
+static struct cma cma_areas[MAX_CMA_AREAS];
+static unsigned cma_area_count;
static DEFINE_MUTEX(cma_mutex);
-phys_addr_t cma_get_base(const struct cma *cma)
+phys_addr_t cma_get_base(struct cma *cma)
{
return PFN_PHYS(cma->base_pfn);
}
-unsigned long cma_get_size(const struct cma *cma)
+unsigned long cma_get_size(struct cma *cma)
{
return cma->count << PAGE_SHIFT;
}
-static unsigned long cma_bitmap_aligned_mask(const struct cma *cma,
- int align_order)
+static unsigned long cma_bitmap_aligned_mask(struct cma *cma, int align_order)
{
- if (align_order <= cma->order_per_bit)
- return 0;
- return (1UL << (align_order - cma->order_per_bit)) - 1;
+ return (1UL << (align_order >> cma->order_per_bit)) - 1;
}
DIFF;
public function testIsParsingRawDiffBlock(): void
{
$parse = new Parse();
$files = $parse->fromRawBlock(self::RAW_DIFF_BLOCK);
$this->assertCount(1, $files);
$this->assertEquals('mm/cma.c', $files[0]->getName());
$this->assertEquals(File::TYPE_NO_CHANGE, $files[0]->getType());
$this->assertEquals('c960459..c17751c', $files[0]->getIndex());
$this->assertEquals('a/mm/cma.c', $files[0]->getFrom());
$this->assertEquals('b/mm/cma.c', $files[0]->getTo());
$this->assertEquals(13, $files[0]->getAdditions());
$this->assertEquals(14, $files[0]->getDeletions());
$this->assertCount(2, $files[0]->getHunks());
// First hunk
$firstHunk = $files[0]->getHunks()[0];
$this->assertEquals(23, $firstHunk->getOldStart());
$this->assertEquals(7, $firstHunk->getOldCount());
$this->assertEquals(23, $firstHunk->getNewStart());
$this->assertEquals(6, $firstHunk->getNewCount());
$this->assertEquals('@@ -23,7 +23,6 @@', $firstHunk->getContents());
$this->assertCount(7, $firstHunk->getLines());
// Line 1
$this->assertEquals(' # define DEBUG', $firstHunk->getLines()[0]->getContents());
$this->assertEquals(Line::TYPE_NO_CHANGE, $firstHunk->getLines()[0]->getType());
$this->assertEquals(23, $firstHunk->getLines()[0]->getOldNumber());
// Line 2
$this->assertEquals(' #endif', $firstHunk->getLines()[1]->getContents());
$this->assertEquals(Line::TYPE_NO_CHANGE, $firstHunk->getLines()[1]->getType());
$this->assertEquals(24, $firstHunk->getLines()[1]->getOldNumber());
// Line 3
$this->assertEquals(' #endif', $firstHunk->getLines()[2]->getContents());
$this->assertEquals(Line::TYPE_NO_CHANGE, $firstHunk->getLines()[2]->getType());
$this->assertEquals(25, $firstHunk->getLines()[2]->getOldNumber());
// Line 4
$this->assertEquals('-#define CREATE_TRACE_POINTS', $firstHunk->getLines()[3]->getContents());
$this->assertEquals(Line::TYPE_DELETE, $firstHunk->getLines()[3]->getType());
$this->assertEquals(26, $firstHunk->getLines()[3]->getOldNumber());
// Line 5
$this->assertEquals('', $firstHunk->getLines()[4]->getContents());
$this->assertEquals(Line::TYPE_NO_CHANGE, $firstHunk->getLines()[4]->getType());
// Line 6
$this->assertEquals(' #include <linux/memblock.h>', $firstHunk->getLines()[5]->getContents());
$this->assertEquals(Line::TYPE_NO_CHANGE, $firstHunk->getLines()[5]->getType());
// Line 7
$this->assertEquals(' #include <linux/err.h>', $firstHunk->getLines()[6]->getContents());
$this->assertEquals(Line::TYPE_NO_CHANGE, $firstHunk->getLines()[6]->getType());
// Second hunk
$secondHunk = $files[0]->getHunks()[1];
$this->assertEquals(33, $secondHunk->getOldStart());
$this->assertEquals(56, $secondHunk->getOldCount());
$this->assertEquals(32, $secondHunk->getNewStart());
$this->assertEquals(46, $secondHunk->getNewCount());
$this->assertEquals('@@ -33,56 +32,46 @@', $secondHunk->getContents());
$this->assertCount(43, $secondHunk->getLines());
}
public function testIsClearingParserAccumulator(): void
{
$parse = new Parse();
$files = $parse->fromRawBlock(self::RAW_DIFF_BLOCK);
$files = $parse->fromRawBlock(self::RAW_DIFF_BLOCK);
$this->assertCount(1, $files);
}
public function testIsIgnoringEmptyRawBlock(): void
{
$parse = new Parse();
$files = $parse->fromRawBlock('');
$this->assertEmpty($files);
}
}